summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/mediatek/common/cpu_id.c15
-rw-r--r--src/soc/mediatek/common/include/soc/cpu_id.h11
-rw-r--r--src/soc/mediatek/mt8186/Makefile.inc1
-rw-r--r--src/soc/mediatek/mt8186/include/soc/efuse.h3
4 files changed, 30 insertions, 0 deletions
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 <console/console.h>
+#include <device/mmio.h>
+#include <soc/cpu_id.h>
+#include <soc/efuse.h>
+
+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