diff options
author | Joakim Axelsson <joakim.axelsson@stericsson.com> | 2010-10-25 10:56:38 +0200 |
---|---|---|
committer | Michael BRANDT <michael.brandt@stericsson.com> | 2010-12-08 16:19:53 +0100 |
commit | af78cad05fbf943619f6446b12203552b02aba11 (patch) | |
tree | daa496a29b972347f3a55e04c0d1acc36e2f37aa /cpu | |
parent | 0257e280fdf5861b8e9d625df517a938c2531a95 (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.c | 14 | ||||
-rw-r--r-- | cpu/arm_cortexa9/db8500/cpu.c | 36 |
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 */ + |