]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/arm/cpu/armv7/am33xx/sys_info.c
Unified codebase for TX28, TX48, TX51, TX53
[karo-tx-uboot.git] / arch / arm / cpu / armv7 / am33xx / sys_info.c
index 507b6180e62f1afc500bd11e1dd10c5730097414..5eb7de7452c5672c0db917eb8345747b25ed968d 100644 (file)
@@ -26,7 +26,7 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/clock.h>
 
-struct ctrl_stat *cstat = (struct ctrl_stat *)CTRL_BASE;
+static struct ctrl_stat *cstat = (struct ctrl_stat *)CTRL_BASE;
 
 /**
  * get_cpu_rev(void) - extract rev info
@@ -71,7 +71,7 @@ u32 get_board_rev(void)
 u32 get_device_type(void)
 {
        int mode;
-       mode = readl(&cstat->statusreg) & (DEVICE_MASK);
+       mode = readl(&cstat->statusreg) & DEVICE_MASK;
        return mode >>= 8;
 }
 
@@ -81,10 +81,27 @@ u32 get_device_type(void)
 u32 get_sysboot_value(void)
 {
        int mode;
-       mode = readl(&cstat->statusreg) & (SYSBOOT_MASK);
+       mode = readl(&cstat->statusreg) & SYSBOOT_MASK;
        return mode;
 }
 
+#define SYSBOOT_FREQ_SHIFT     22
+#define SYSBOOT_FREQ_MASK      (3 << SYSBOOT_FREQ_SHIFT)
+
+static unsigned long bootfreqs[] = {
+       19200000,
+       24000000,
+       25000000,
+       26000000,
+};
+
+u32 get_sysboot_freq(void)
+{
+       int mode;
+       mode = readl(&cstat->statusreg) & SYSBOOT_FREQ_MASK;
+       return bootfreqs[mode >> SYSBOOT_FREQ_SHIFT];
+}
+
 #ifdef CONFIG_DISPLAY_CPUINFO
 /**
  * Print CPU information
@@ -92,15 +109,15 @@ u32 get_sysboot_value(void)
 int print_cpuinfo(void)
 {
        char *cpu_s, *sec_s;
-       int arm_freq, ddr_freq;
+       unsigned long clk;
+       const struct cm_wkuppll *cmwkup = (struct cm_wkuppll *)CM_WKUP;
 
        switch (get_cpu_type()) {
-       case AM335X:
+       case AM335X_ID:
                cpu_s = "AM335X";
                break;
        default:
                cpu_s = "Unknown cpu type";
-               break;
        }
 
        switch (get_device_type()) {
@@ -120,10 +137,26 @@ int print_cpuinfo(void)
                sec_s = "?";
        }
 
-       printf("AM%s-%s rev %d\n",
+       printf("%s-%s rev %d\n",
                        cpu_s, sec_s, get_cpu_rev());
 
-       /* TODO: Print ARM and DDR frequencies  */
+       clk = get_sysboot_freq();
+       printf("OSC clk: %4lu.%03lu MHz\n",
+               clk / 1000000, clk / 1000 % 1000);
+       clk = clk_get_rate(cmwkup, mpu);
+       printf("MPU clk: %4lu.%03lu MHz\n",
+               clk / 1000000, clk / 1000 % 1000);
+       clk = clk_get_rate(cmwkup, ddr);
+       printf("DDR clk: %4lu.%03lu MHz\n",
+               clk / 1000000, clk / 1000 % 1000);
+       clk = clk_get_rate(cmwkup, per);
+       printf("PER clk: %4lu.%03lu MHz\n",
+               clk / 1000000, clk / 1000 % 1000);
+#ifdef CONFIG_LCD
+       clk = clk_get_rate(cmwkup, disp);
+       printf("LCD clk: %4lu.%03lu MHz\n",
+               clk / 1000000, clk / 1000 % 1000);
+#endif
 
        return 0;
 }