@@ -333,9 +333,13 @@ static void etnaviv_hw_identify(struct etnaviv_gpu *gpu)
333
333
gpu -> identity .revision = etnaviv_field (chipIdentity ,
334
334
VIVS_HI_CHIP_IDENTITY_REVISION );
335
335
} else {
336
+ u32 chipDate = gpu_read (gpu , VIVS_HI_CHIP_DATE );
336
337
337
338
gpu -> identity .model = gpu_read (gpu , VIVS_HI_CHIP_MODEL );
338
339
gpu -> identity .revision = gpu_read (gpu , VIVS_HI_CHIP_REV );
340
+ gpu -> identity .product_id = gpu_read (gpu , VIVS_HI_CHIP_PRODUCT_ID );
341
+ gpu -> identity .customer_id = gpu_read (gpu , VIVS_HI_CHIP_CUSTOMER_ID );
342
+ gpu -> identity .eco_id = gpu_read (gpu , VIVS_HI_CHIP_ECO_ID );
339
343
340
344
/*
341
345
* !!!! HACK ALERT !!!!
@@ -350,7 +354,6 @@ static void etnaviv_hw_identify(struct etnaviv_gpu *gpu)
350
354
351
355
/* Another special case */
352
356
if (etnaviv_is_model_rev (gpu , GC300 , 0x2201 )) {
353
- u32 chipDate = gpu_read (gpu , VIVS_HI_CHIP_DATE );
354
357
u32 chipTime = gpu_read (gpu , VIVS_HI_CHIP_TIME );
355
358
356
359
if (chipDate == 0x20080814 && chipTime == 0x12051100 ) {
@@ -373,6 +376,12 @@ static void etnaviv_hw_identify(struct etnaviv_gpu *gpu)
373
376
gpu -> identity .model = chipModel_GC3000 ;
374
377
gpu -> identity .revision &= 0xffff ;
375
378
}
379
+
380
+ if (etnaviv_is_model_rev (gpu , GC1000 , 0x5037 ) && (chipDate == 0x20120617 ))
381
+ gpu -> identity .eco_id = 1 ;
382
+
383
+ if (etnaviv_is_model_rev (gpu , GC320 , 0x5303 ) && (chipDate == 0x20140511 ))
384
+ gpu -> identity .eco_id = 1 ;
376
385
}
377
386
378
387
dev_info (gpu -> dev , "model: GC%x, revision: %x\n" ,
0 commit comments