Skip to content

Commit e322312

Browse files
committed
kboot_gpu: Do not try to set cs/afr pstates on <G14X
Signed-off-by: Asahi Lina <[email protected]>
1 parent 86d75d4 commit e322312

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

src/kboot_gpu.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ static int fdt_set_aux_opp(void *dt, int gpu, const char *prop, const struct aux
438438

439439
int 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

Comments
 (0)