diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2014-06-12 13:32:59 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2014-06-17 14:34:13 +1000 |
commit | c4b2deb04bb1f24497c8914dd180317cfde1c466 (patch) | |
tree | 31890fcb3f321af1fc9491f77ac1f0893a779ef3 | |
parent | d3249fceef802f27e0f7d2d1fb8a9be0abf24f1d (diff) |
ibus/gk104: increase various random timeouts
Fixes (at least) PTHERM accesses timing out at higher clock speeds.
Values and registers taken from what the binary driver does.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | nvkm/subdev/ibus/nve0.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/nvkm/subdev/ibus/nve0.c b/nvkm/subdev/ibus/nve0.c index 7120124d..ebef970a 100644 --- a/nvkm/subdev/ibus/nve0.c +++ b/nvkm/subdev/ibus/nve0.c @@ -95,6 +95,23 @@ nve0_ibus_intr(struct nouveau_subdev *subdev) } static int +nve0_ibus_init(struct nouveau_object *object) +{ + struct nve0_ibus_priv *priv = (void *)object; + int ret = nouveau_ibus_init(&priv->base); + if (ret == 0) { + nv_mask(priv, 0x122318, 0x0003ffff, 0x00001000); + nv_mask(priv, 0x12231c, 0x0003ffff, 0x00000200); + nv_mask(priv, 0x122310, 0x0003ffff, 0x00000800); + nv_mask(priv, 0x122348, 0x0003ffff, 0x00000100); + nv_mask(priv, 0x1223b0, 0x0003ffff, 0x00000fff); + nv_mask(priv, 0x122348, 0x0003ffff, 0x00000200); + nv_mask(priv, 0x122358, 0x0003ffff, 0x00002880); + } + return ret; +} + +static int nve0_ibus_ctor(struct nouveau_object *parent, struct nouveau_object *engine, struct nouveau_oclass *oclass, void *data, u32 size, struct nouveau_object **pobject) @@ -117,7 +134,7 @@ nve0_ibus_oclass = { .ofuncs = &(struct nouveau_ofuncs) { .ctor = nve0_ibus_ctor, .dtor = _nouveau_ibus_dtor, - .init = _nouveau_ibus_init, + .init = nve0_ibus_init, .fini = _nouveau_ibus_fini, }, }; |