diff options
Diffstat (limited to 'src/ec/google/wilco/commands.c')
-rw-r--r-- | src/ec/google/wilco/commands.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/ec/google/wilco/commands.c b/src/ec/google/wilco/commands.c index 626f9ddc2c..791141e814 100644 --- a/src/ec/google/wilco/commands.c +++ b/src/ec/google/wilco/commands.c @@ -224,3 +224,29 @@ void die_notify(void) wilco_ec_mailbox(WILCO_EC_MSG_DEFAULT, KB_ERR_CODE, &err_code, 1, NULL, 0); } + +/* + * EC CPU ID data struct + * MBOX[2] = 0xFF + * MBOX[3] = CPUID_Low + * MBOX[4] = CPUID_Mid + * MBOX[5] = CPUID_High + * MBOX[6] = CPU_Core + * MBOX[7] = GPU_Core + * MBOX[8] = Reserved + */ +int wilco_ec_set_cpuid(uint32_t cpuid, uint8_t cpu_cores, uint8_t gpu_cores) +{ + uint8_t cpu_id[7] = {0}, i; + + cpu_id[0] = 0xff; + for (i = 1; i < 4; i++) { + cpu_id[i] = cpuid & 0xff; + cpuid = cpuid >> 8; + } + cpu_id[4] = cpu_cores; + cpu_id[5] = gpu_cores; + + return wilco_ec_mailbox(WILCO_EC_MSG_DEFAULT, KB_CPU_ID, cpu_id, + ARRAY_SIZE(cpu_id), NULL, 0); +} |