From 39d90a2194ddcc8e6114d84b81b84ba94ecc1930 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Wed, 26 Nov 2014 08:51:10 +1000 Subject: devinit: bump priv ring timeouts before executing scripts Signed-off-by: Ben Skeggs --- nvkm/include/core/device.h | 2 +- nvkm/subdev/devinit/nv50.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'nvkm') diff --git a/nvkm/include/core/device.h b/nvkm/include/core/device.h index 0e0ce4366..2ec2e50d3 100644 --- a/nvkm/include/core/device.h +++ b/nvkm/include/core/device.h @@ -16,6 +16,7 @@ enum nv_subdev_type { * to during POST. */ NVDEV_SUBDEV_DEVINIT, + NVDEV_SUBDEV_IBUS, NVDEV_SUBDEV_GPIO, NVDEV_SUBDEV_I2C, NVDEV_SUBDEV_DEVINIT_LAST = NVDEV_SUBDEV_I2C, @@ -31,7 +32,6 @@ enum nv_subdev_type { NVDEV_SUBDEV_TIMER, NVDEV_SUBDEV_FB, NVDEV_SUBDEV_LTC, - NVDEV_SUBDEV_IBUS, NVDEV_SUBDEV_INSTMEM, NVDEV_SUBDEV_VM, NVDEV_SUBDEV_BAR, diff --git a/nvkm/subdev/devinit/nv50.c b/nvkm/subdev/devinit/nv50.c index 0de7fa6e8..968334d1d 100644 --- a/nvkm/subdev/devinit/nv50.c +++ b/nvkm/subdev/devinit/nv50.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include "nv50.h" @@ -91,6 +92,7 @@ int nv50_devinit_init(struct nouveau_object *object) { struct nouveau_bios *bios = nouveau_bios(object); + struct nouveau_ibus *ibus = nouveau_ibus(object); struct nv50_devinit_priv *priv = (void *)object; struct nvbios_outp info; struct dcb_output outp; @@ -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); if (ret) return ret; -- cgit v1.2.1