diff --git a/src/soc/mediatek/common/cpu_segment_id.c b/src/soc/mediatek/common/cpu_segment_id.c new file mode 100644 index 0000000000..f7cdc8ad34 --- /dev/null +++ b/src/soc/mediatek/common/cpu_segment_id.c @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ + +#include +#include +#include +#include + +u32 get_cpu_segment_id(void) +{ + u32 id = read32(&mtk_efuse->cpu_seg_id_reg); + + printk(BIOS_INFO, "CPU Segment ID: %#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 index 9453a15864..173518fc42 100644 --- a/src/soc/mediatek/common/include/soc/cpu_id.h +++ b/src/soc/mediatek/common/include/soc/cpu_id.h @@ -5,7 +5,11 @@ #define MTK_CPU_ID_MT8186G 0x81861001 #define MTK_CPU_ID_MT8186T 0x81862001 +#define MTK_CPU_ID_MT8189 0x81890000 +#define MTK_CPU_SEG_ID_MT8189G 0x20 +#define MTK_CPU_SEG_ID_MT8189H 0x21 u32 get_cpu_id(void); +u32 get_cpu_segment_id(void); #endif /* SOC_MEDIATEK_COMMON_CPU_ID_H */ diff --git a/src/soc/mediatek/mt8189/include/soc/efuse.h b/src/soc/mediatek/mt8189/include/soc/efuse.h new file mode 100644 index 0000000000..031dd5ef78 --- /dev/null +++ b/src/soc/mediatek/mt8189/include/soc/efuse.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ + +#ifndef __SOC_MEDIATEK_MT8189_INCLUDE_SOC_EFUSE_H__ +#define __SOC_MEDIATEK_MT8189_INCLUDE_SOC_EFUSE_H__ + +#include +#include + +struct efuse_regs { + u32 reserved1[488]; + u32 cpu_id_reg; + u32 reserved2[15]; + u32 cpu_seg_id_reg; +}; +check_member(efuse_regs, cpu_id_reg, 0x7A0); +check_member(efuse_regs, cpu_seg_id_reg, 0x7E0); + +static struct efuse_regs *const mtk_efuse = (void *)EFUSEC_BASE; + +#endif /*__SOC_MEDIATEK_MT8189_INCLUDE_SOC_EFUSE_H__*/