Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c33246d7 authored by Lucas Stach's avatar Lucas Stach
Browse files

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: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Acked-by: default avatarChristian Gmeiner <christian.gmeiner@gmail.com>
parent ed94add0
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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);