@@ -438,6 +438,7 @@ static int fdt_set_aux_opp(void *dt, int gpu, const char *prop, const struct aux
438438
439439int dt_set_gpu (void * dt )
440440{
441+ bool has_cs_afr = false;
441442 int (* calc_power )(u32 count , u32 table_count , const struct perf_state * core ,
442443 const struct perf_state * sram , const struct aux_perf_states * cs , u32 * max_pwr ,
443444 float * core_leak , float * sram_leak , float * cs_leak , float * afr_leak );
@@ -448,12 +449,14 @@ int dt_set_gpu(void *dt)
448449 case T8103 :
449450 calc_power = calc_power_t8103 ;
450451 break ;
452+ case T6020 :
453+ case T6021 :
454+ has_cs_afr = true;
455+ /* fallthrough */
451456 case T6000 :
452457 case T6001 :
453458 case T6002 :
454459 case T8112 :
455- case T6020 :
456- case T6021 :
457460 calc_power = calc_power_t600x ;
458461 break ;
459462 default :
@@ -512,6 +515,12 @@ int dt_set_gpu(void *dt)
512515 perf_states_afr = adt_getprop (adt , sgx , "afr-perf-states" , NULL );
513516 perf_states_cs = adt_getprop (adt , sgx , "cs-perf-states" , NULL );
514517
518+ if (has_cs_afr && !perf_states_cs )
519+ bail ("ADT: GPU: cs-perf-states not found\n" );
520+
521+ if (has_cs_afr && !perf_states_afr )
522+ bail ("ADT: GPU: afr-perf-states not found\n" );
523+
515524 u32 max_pwr [MAX_PSTATES ];
516525 float core_leak [MAX_CLUSTERS ];
517526 float sram_leak [MAX_CLUSTERS ];
@@ -572,7 +581,7 @@ int dt_set_gpu(void *dt)
572581 bail ("FDT: GPU: Expected %d operating points, but found %d\n" , perf_state_count , i );
573582
574583 u32 dies = 1 ;
575- if (perf_states_cs ) {
584+ if (has_cs_afr ) {
576585 int ret = fdt_set_aux_opp (dt , gpu , "apple,cs-opp" , perf_states_cs , dies );
577586 if (ret )
578587 return ret ;
@@ -587,7 +596,7 @@ int dt_set_gpu(void *dt)
587596 printf ("\n" );
588597 }
589598
590- if (perf_states_afr ) {
599+ if (has_cs_afr ) {
591600 int ret = fdt_set_aux_opp (dt , gpu , "apple,afr-opp" , perf_states_afr , dies );
592601 if (ret )
593602 return ret ;
0 commit comments