提交 c49c0b44 编写于 作者: B Ben Skeggs

drm/nouveau/devinit: bump priv ring timeouts before executing scripts

Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
上级 15606cb4
...@@ -16,6 +16,7 @@ enum nv_subdev_type { ...@@ -16,6 +16,7 @@ enum nv_subdev_type {
* to during POST. * to during POST.
*/ */
NVDEV_SUBDEV_DEVINIT, NVDEV_SUBDEV_DEVINIT,
NVDEV_SUBDEV_IBUS,
NVDEV_SUBDEV_GPIO, NVDEV_SUBDEV_GPIO,
NVDEV_SUBDEV_I2C, NVDEV_SUBDEV_I2C,
NVDEV_SUBDEV_DEVINIT_LAST = NVDEV_SUBDEV_I2C, NVDEV_SUBDEV_DEVINIT_LAST = NVDEV_SUBDEV_I2C,
...@@ -31,7 +32,6 @@ enum nv_subdev_type { ...@@ -31,7 +32,6 @@ enum nv_subdev_type {
NVDEV_SUBDEV_TIMER, NVDEV_SUBDEV_TIMER,
NVDEV_SUBDEV_FB, NVDEV_SUBDEV_FB,
NVDEV_SUBDEV_LTC, NVDEV_SUBDEV_LTC,
NVDEV_SUBDEV_IBUS,
NVDEV_SUBDEV_INSTMEM, NVDEV_SUBDEV_INSTMEM,
NVDEV_SUBDEV_VM, NVDEV_SUBDEV_VM,
NVDEV_SUBDEV_BAR, NVDEV_SUBDEV_BAR,
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <subdev/bios/dcb.h> #include <subdev/bios/dcb.h>
#include <subdev/bios/disp.h> #include <subdev/bios/disp.h>
#include <subdev/bios/init.h> #include <subdev/bios/init.h>
#include <subdev/ibus.h>
#include <subdev/vga.h> #include <subdev/vga.h>
#include "nv50.h" #include "nv50.h"
...@@ -91,6 +92,7 @@ int ...@@ -91,6 +92,7 @@ int
nv50_devinit_init(struct nouveau_object *object) nv50_devinit_init(struct nouveau_object *object)
{ {
struct nouveau_bios *bios = nouveau_bios(object); struct nouveau_bios *bios = nouveau_bios(object);
struct nouveau_ibus *ibus = nouveau_ibus(object);
struct nv50_devinit_priv *priv = (void *)object; struct nv50_devinit_priv *priv = (void *)object;
struct nvbios_outp info; struct nvbios_outp info;
struct dcb_output outp; struct dcb_output outp;
...@@ -105,6 +107,13 @@ nv50_devinit_init(struct nouveau_object *object) ...@@ -105,6 +107,13 @@ nv50_devinit_init(struct nouveau_object *object)
} }
} }
/* some boards appear to require certain priv register timeouts
* to be bumped before runing devinit scripts. not a clue why
* the vbios engineers didn't make the scripts just work...
*/
if (priv->base.post && ibus)
nv_ofuncs(ibus)->init(nv_object(ibus));
ret = nouveau_devinit_init(&priv->base); ret = nouveau_devinit_init(&priv->base);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册