From: Ben Skeggs Date: Mon, 27 Aug 2012 06:22:49 +0000 (+1000) Subject: drm/nvc0/copy: check PUNITS to determine which copy engines are disabled X-Git-Tag: v3.5.5~69 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=df6a5ea44759e88b7c025704cd9cb6a6e64188a4;p=karo-tx-linux.git drm/nvc0/copy: check PUNITS to determine which copy engines are disabled commit 14f0458a41e033dee31ba605137419385c03fc78 upstream. On some Fermi chipsets (NVCE particularly) PCOPY1 doesn't exist. And if what I've seen on Kepler is true of Fermi too, chipsets of the same type can have different PCOPY units available. This should fix a v3.5 regression reported by a number of people effecting suspend/resume on NVC8/NVCE chipsets. Signed-off-by: Ben Skeggs Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c index 19706f0532ea..22a90a005ba7 100644 --- a/drivers/gpu/drm/nouveau/nouveau_state.c +++ b/drivers/gpu/drm/nouveau/nouveau_state.c @@ -737,9 +737,11 @@ nouveau_card_init(struct drm_device *dev) } break; case NV_C0: - nvc0_copy_create(dev, 1); + if (!(nv_rd32(dev, 0x022500) & 0x00000200)) + nvc0_copy_create(dev, 1); case NV_D0: - nvc0_copy_create(dev, 0); + if (!(nv_rd32(dev, 0x022500) & 0x00000100)) + nvc0_copy_create(dev, 0); break; default: break;