aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-11-25 17:51:10 -0500
committerBen Skeggs <bskeggs@redhat.com>2014-12-02 00:44:06 -0500
commitc49c0b4411c1ce7362777771ecb025e90d999e0d (patch)
tree3d69d340fc5a68a105ab1bd65c510608d6bdd9e5 /drivers/gpu/drm/nouveau
parent15606cb466836c3ca28404ccdeea5515a7579bd2 (diff)
drm/nouveau/devinit: bump priv ring timeouts before executing scripts
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau')
-rw-r--r--drivers/gpu/drm/nouveau/core/include/core/device.h2
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/core/include/core/device.h b/drivers/gpu/drm/nouveau/core/include/core/device.h
index 0e0ce436600f..2ec2e50d3676 100644
--- a/drivers/gpu/drm/nouveau/core/include/core/device.h
+++ b/drivers/gpu/drm/nouveau/core/include/core/device.h
@@ -16,6 +16,7 @@ enum nv_subdev_type {
16 * to during POST. 16 * to during POST.
17 */ 17 */
18 NVDEV_SUBDEV_DEVINIT, 18 NVDEV_SUBDEV_DEVINIT,
19 NVDEV_SUBDEV_IBUS,
19 NVDEV_SUBDEV_GPIO, 20 NVDEV_SUBDEV_GPIO,
20 NVDEV_SUBDEV_I2C, 21 NVDEV_SUBDEV_I2C,
21 NVDEV_SUBDEV_DEVINIT_LAST = NVDEV_SUBDEV_I2C, 22 NVDEV_SUBDEV_DEVINIT_LAST = NVDEV_SUBDEV_I2C,
@@ -31,7 +32,6 @@ enum nv_subdev_type {
31 NVDEV_SUBDEV_TIMER, 32 NVDEV_SUBDEV_TIMER,
32 NVDEV_SUBDEV_FB, 33 NVDEV_SUBDEV_FB,
33 NVDEV_SUBDEV_LTC, 34 NVDEV_SUBDEV_LTC,
34 NVDEV_SUBDEV_IBUS,
35 NVDEV_SUBDEV_INSTMEM, 35 NVDEV_SUBDEV_INSTMEM,
36 NVDEV_SUBDEV_VM, 36 NVDEV_SUBDEV_VM,
37 NVDEV_SUBDEV_BAR, 37 NVDEV_SUBDEV_BAR,
diff --git a/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c b/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c
index 0de7fa6e8764..968334d1dca4 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c
@@ -26,6 +26,7 @@
26#include <subdev/bios/dcb.h> 26#include <subdev/bios/dcb.h>
27#include <subdev/bios/disp.h> 27#include <subdev/bios/disp.h>
28#include <subdev/bios/init.h> 28#include <subdev/bios/init.h>
29#include <subdev/ibus.h>
29#include <subdev/vga.h> 30#include <subdev/vga.h>
30 31
31#include "nv50.h" 32#include "nv50.h"
@@ -91,6 +92,7 @@ int
91nv50_devinit_init(struct nouveau_object *object) 92nv50_devinit_init(struct nouveau_object *object)
92{ 93{
93 struct nouveau_bios *bios = nouveau_bios(object); 94 struct nouveau_bios *bios = nouveau_bios(object);
95 struct nouveau_ibus *ibus = nouveau_ibus(object);
94 struct nv50_devinit_priv *priv = (void *)object; 96 struct nv50_devinit_priv *priv = (void *)object;
95 struct nvbios_outp info; 97 struct nvbios_outp info;
96 struct dcb_output outp; 98 struct dcb_output outp;
@@ -105,6 +107,13 @@ nv50_devinit_init(struct nouveau_object *object)
105 } 107 }
106 } 108 }
107 109
110 /* some boards appear to require certain priv register timeouts
111 * to be bumped before runing devinit scripts. not a clue why
112 * the vbios engineers didn't make the scripts just work...
113 */
114 if (priv->base.post && ibus)
115 nv_ofuncs(ibus)->init(nv_object(ibus));
116
108 ret = nouveau_devinit_init(&priv->base); 117 ret = nouveau_devinit_init(&priv->base);
109 if (ret) 118 if (ret)
110 return ret; 119 return ret;