From: Lucas Stach Date: Wed, 6 Jan 2016 13:36:40 +0000 (+0100) Subject: drm/etnaviv: fix workaround for GC500 X-Git-Tag: v4.5-rc1~74^2~4^2 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=c33246d793b5bb9d8be7c67918136c310185c23d;p=linux.git drm/etnaviv: fix workaround for GC500 The hardware description macros define the mask and shifts the wrong way around for the intended use, leading to the condition never being true and the chip revision ending up with the wrong value. Reported-by: Dan Carpenter Signed-off-by: Lucas Stach Acked-by: Christian Gmeiner --- diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c index d39093dc37e6..056a72e6ed26 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -251,9 +251,12 @@ static void etnaviv_hw_identify(struct etnaviv_gpu *gpu) chipIdentity = gpu_read(gpu, VIVS_HI_CHIP_IDENTITY); /* Special case for older graphic cores. */ - if (VIVS_HI_CHIP_IDENTITY_FAMILY(chipIdentity) == 0x01) { + if (((chipIdentity & VIVS_HI_CHIP_IDENTITY_FAMILY__MASK) + >> VIVS_HI_CHIP_IDENTITY_FAMILY__SHIFT) == 0x01) { gpu->identity.model = 0x500; /* gc500 */ - gpu->identity.revision = VIVS_HI_CHIP_IDENTITY_REVISION(chipIdentity); + gpu->identity.revision = + (chipIdentity & VIVS_HI_CHIP_IDENTITY_REVISION__MASK) + >> VIVS_HI_CHIP_IDENTITY_REVISION__SHIFT; } else { gpu->identity.model = gpu_read(gpu, VIVS_HI_CHIP_MODEL);