summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>2016-09-06 22:51:16 +0200
committerKlaus Goger <klaus.goger@theobroma-systems.com>2016-09-18 15:57:25 +0200
commit7a050793220758e948380641e3406699369cead1 (patch)
treea1534ab1d133f7c46ad84fe35789276cd7a3470f /arch
parentae07c5c0cc8173d198fd2a420ac31958a1bbbf32 (diff)
sunxi: Support chip-id reading on sun9i (A80)
The chip-id on the sun9i resides in the SID block, but at an offset from what we'd expect with older variants.
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/cpu/armv7/sunxi/cpu_info.c8
-rw-r--r--arch/arm/include/asm/arch-sunxi/cpu_sun9i.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/cpu/armv7/sunxi/cpu_info.c b/arch/arm/cpu/armv7/sunxi/cpu_info.c
index b9bc70ca86..86340e5792 100644
--- a/arch/arm/cpu/armv7/sunxi/cpu_info.c
+++ b/arch/arm/cpu/armv7/sunxi/cpu_info.c
@@ -83,6 +83,12 @@ int print_cpuinfo(void)
}
#endif
+#if defined(CONFIG_MACH_SUN9I)
+#define SUNXI_SID_CHIPID_OFFSET 0x200
+#else
+#define SUNXI_SID_CHIPID_OFFSET 0
+#endif
+
int sunxi_get_sid(unsigned int *sid)
{
#ifdef CONFIG_AXP221_POWER
@@ -91,7 +97,7 @@ int sunxi_get_sid(unsigned int *sid)
int i;
for (i = 0; i< 4; i++)
- sid[i] = readl(SUNXI_SID_BASE + 4 * i);
+ sid[i] = readl(SUNXI_SID_BASE + SUNXI_SID_CHIPID_OFFSET + 4 * i);
return 0;
#else
diff --git a/arch/arm/include/asm/arch-sunxi/cpu_sun9i.h b/arch/arm/include/asm/arch-sunxi/cpu_sun9i.h
index ec37bb9afb..63dcbdf08f 100644
--- a/arch/arm/include/asm/arch-sunxi/cpu_sun9i.h
+++ b/arch/arm/include/asm/arch-sunxi/cpu_sun9i.h
@@ -24,6 +24,7 @@
#define SUNXI_TSC_BASE (REGS_AHB0_BASE + 0x4000)
#define SUNXI_GTBUS_BASE (REGS_AHB0_BASE + 0x9000)
+#define SUNXI_SID_BASE (REGS_AHB0_BASE + 0xE000)
#define SUNXI_MMC0_BASE (REGS_AHB0_BASE + 0x0f000)
#define SUNXI_MMC1_BASE (REGS_AHB0_BASE + 0x10000)