diff --git a/src/soc/mediatek/common/cpu_id.c b/src/soc/mediatek/common/cpu_id.c new file mode 100644 index 0000000000..e31adcdf3f --- /dev/null +++ b/src/soc/mediatek/common/cpu_id.c @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include +#include + +u32 get_cpu_id(void) +{ + u32 id = read32(&mtk_efuse->cpu_id_reg); + + printk(BIOS_INFO, "CPU: %#x\n", id); + + return id; +} diff --git a/src/soc/mediatek/common/include/soc/cpu_id.h b/src/soc/mediatek/common/include/soc/cpu_id.h new file mode 100644 index 0000000000..9453a15864 --- /dev/null +++ b/src/soc/mediatek/common/include/soc/cpu_id.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef SOC_MEDIATEK_COMMON_CPU_ID_H +#define SOC_MEDIATEK_COMMON_CPU_ID_H + +#define MTK_CPU_ID_MT8186G 0x81861001 +#define MTK_CPU_ID_MT8186T 0x81862001 + +u32 get_cpu_id(void); + +#endif /* SOC_MEDIATEK_COMMON_CPU_ID_H */ diff --git a/src/soc/mediatek/mt8186/Makefile.inc b/src/soc/mediatek/mt8186/Makefile.inc index cd207773ac..c8dbbc9593 100644 --- a/src/soc/mediatek/mt8186/Makefile.inc +++ b/src/soc/mediatek/mt8186/Makefile.inc @@ -1,6 +1,7 @@ ifeq ($(CONFIG_SOC_MEDIATEK_MT8186),y) # for bootblock, verstage, romstage, ramstage +all-y += ../common/cpu_id.c all-y += ../common/flash_controller.c all-y += ../common/gpio.c ../common/gpio_op.c gpio.c all-y += ../common/i2c.c i2c.c diff --git a/src/soc/mediatek/mt8186/include/soc/efuse.h b/src/soc/mediatek/mt8186/include/soc/efuse.h index fe3dfff9aa..3804b464d8 100644 --- a/src/soc/mediatek/mt8186/include/soc/efuse.h +++ b/src/soc/mediatek/mt8186/include/soc/efuse.h @@ -9,9 +9,12 @@ struct efuse_regs { uint32_t reserved[130]; uint32_t adc_cali_reg; + uint32_t reserved1[357]; + uint32_t cpu_id_reg; }; check_member(efuse_regs, adc_cali_reg, 0x208); +check_member(efuse_regs, cpu_id_reg, 0x7a0); static struct efuse_regs *const mtk_efuse = (void *)EFUSEC_BASE; #endif