summaryrefslogtreecommitdiff
path: root/cpu
diff options
context:
space:
mode:
authorJoakim Axelsson <joakim.axelsson@stericsson.com>2010-10-25 10:56:38 +0200
committerMichael BRANDT <michael.brandt@stericsson.com>2010-12-08 16:19:53 +0100
commitaf78cad05fbf943619f6446b12203552b02aba11 (patch)
treedaa496a29b972347f3a55e04c0d1acc36e2f37aa /cpu
parent0257e280fdf5861b8e9d625df517a938c2531a95 (diff)
db8500: Display cpu info.
Enable CONFIG_DISPLAY_CPUINFO and implement print_cpuinfo() in cpu/arm_cortexa9/db8500.c. ST-Ericsson ID: None Signed-off-by: Joakim Axelsson <joakim.axelsson@stericsson.com> Change-Id: Id4f67b223fabc4a8007229f8db12bd2a7362f8c2 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/7115 Reviewed-by: QATOOLS Reviewed-by: Michael BRANDT <michael.brandt@stericsson.com> Tested-by: Michael BRANDT <michael.brandt@stericsson.com>
Diffstat (limited to 'cpu')
-rw-r--r--cpu/arm_cortexa9/db8500/clock.c14
-rw-r--r--cpu/arm_cortexa9/db8500/cpu.c36
2 files changed, 50 insertions, 0 deletions
diff --git a/cpu/arm_cortexa9/db8500/clock.c b/cpu/arm_cortexa9/db8500/clock.c
index 5f771dc0d..7e8be8e7a 100644
--- a/cpu/arm_cortexa9/db8500/clock.c
+++ b/cpu/arm_cortexa9/db8500/clock.c
@@ -191,6 +191,20 @@ static uint32_t get_pll_freq_khz(uint32_t inclk_khz, uint32_t freq_reg)
return phi;
}
+u32 db8500_clock_cpu_khz(void)
+{
+ u32 reg, phi;
+
+ reg = readl(PRCM_ARM_CHGCLKREQ_REG);
+ if (reg & 1)
+ return 0; /* External clock */
+
+ reg = readl(PRCM_PLLARM_FREQ_REG);
+ phi = get_pll_freq_khz(38400, reg);
+
+ return phi;
+}
+
int do_clkinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
uint32_t inclk_khz;
diff --git a/cpu/arm_cortexa9/db8500/cpu.c b/cpu/arm_cortexa9/db8500/cpu.c
index 8dbdf372a..eb25b247f 100644
--- a/cpu/arm_cortexa9/db8500/cpu.c
+++ b/cpu/arm_cortexa9/db8500/cpu.c
@@ -92,3 +92,39 @@ int arch_cpu_init(void)
}
#endif /* CONFIG_ARCH_CPU_INIT */
+#ifdef CONFIG_DISPLAY_CPUINFO
+int print_cpuinfo(void)
+{
+ char *version, *clock;
+ char clockbuf[24];
+ uint32_t arm_khz;
+
+ /* CPU version: Match most likly CPU first */
+ if (cpu_is_u8500v2())
+ version = "v2";
+ else if (cpu_is_u8500v11())
+ version = "v1.1";
+ else if (cpu_is_u8500v1())
+ version = "v1";
+ else if (u8500_is_earlydrop())
+ version = "ED";
+ else
+ version = "Unknown";
+
+ /* CPU clock speed */
+ arm_khz = db8500_clock_cpu_khz();
+ if (arm_khz == 0)
+ clock = "External clock";
+ else {
+ sprintf(clockbuf, "%u.%u Mhz",
+ arm_khz / 1000, arm_khz % 1000);
+ clock = clockbuf;
+ }
+
+ printf("CPU:\tST-Ericsson db8500 %s (Dual ARM Cortex A9) %s\n",
+ version, clock);
+
+ return 0;
+}
+#endif /* CONFIG_DISPLAY_CPUINFO */
+