diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2014-11-25 17:51:10 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2014-12-02 00:44:06 -0500 |
commit | c49c0b4411c1ce7362777771ecb025e90d999e0d (patch) | |
tree | 3d69d340fc5a68a105ab1bd65c510608d6bdd9e5 /drivers/gpu/drm/nouveau | |
parent | 15606cb466836c3ca28404ccdeea5515a7579bd2 (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.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c | 9 |
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 | |||
91 | nv50_devinit_init(struct nouveau_object *object) | 92 | nv50_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; |