From: Maarten Lankhorst Date: Sat, 12 Jan 2013 12:03:16 +0000 (+0100) Subject: drm/nouveau: use different register to wait for secret scrubber X-Git-Tag: drm-fsl-dcu-for-next~8209^2~1^2~2 X-Git-Url: http://git.agner.ch/gitweb/?a=commitdiff_plain;h=1e98380cbd3894de2b3c1ea182d62e946555f7d0;p=linux-drm-fsl-dcu.git drm/nouveau: use different register to wait for secret scrubber Fixes long delay when waiting for scrubber on some secret engines. The exit interrupt seems to not always be generated, so use secret scrubber active register instead. Later fuc engines also no longer generate an interrupt, so don't wait there. Signed-off-by: Maarten Lankhorst Signed-off-by: Ben Skeggs --- diff --git a/drivers/gpu/drm/nouveau/core/core/falcon.c b/drivers/gpu/drm/nouveau/core/core/falcon.c index 6b0843c33877..e05c15777588 100644 --- a/drivers/gpu/drm/nouveau/core/core/falcon.c +++ b/drivers/gpu/drm/nouveau/core/core/falcon.c @@ -73,8 +73,11 @@ _nouveau_falcon_init(struct nouveau_object *object) nv_debug(falcon, "data limit: %d\n", falcon->data.limit); /* wait for 'uc halted' to be signalled before continuing */ - if (falcon->secret) { - nv_wait(falcon, 0x008, 0x00000010, 0x00000010); + if (falcon->secret && falcon->version < 4) { + if (!falcon->version) + nv_wait(falcon, 0x008, 0x00000010, 0x00000010); + else + nv_wait(falcon, 0x180, 0x80000000, 0); nv_wo32(falcon, 0x004, 0x00000010); }