apalis-tk1/t30: colibri_t30: display reset reason
authorDominik Sliwa <dominik.sliwa@toradex.com>
Thu, 1 Aug 2019 08:06:37 +0000 (11:06 +0300)
committerTom Warren <twarren@nvidia.com>
Fri, 9 Aug 2019 17:01:35 +0000 (10:01 -0700)
Display proper reset reason after the SoC info.

Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
arch/arm/mach-tegra/sys_info.c

index 9975f33e0b9431b348e41df39fa77ac2ec5a8e97..5dc998a52b24412628337cd7c16d2e4dcf027894 100644 (file)
@@ -6,24 +6,36 @@
 
 #include <common.h>
 #include <linux/ctype.h>
+#if defined(CONFIG_TEGRA124) || defined(CONFIG_TEGRA30)
+#include <asm/arch-tegra/pmc.h>
 
-static void upstring(char *s)
+static char *get_reset_cause(void)
 {
-       while (*s) {
-               *s = toupper(*s);
-               s++;
+       struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
+
+       switch (pmc->pmc_reset_status) {
+       case 0x00:
+               return "POR";
+       case 0x01:
+               return "WATCHDOG";
+       case 0x02:
+               return "SENSOR";
+       case 0x03:
+               return "SW_MAIN";
+       case 0x04:
+               return "LP0";
        }
+       return "UNKNOWN";
 }
+#endif
 
 /* Print CPU information */
 int print_cpuinfo(void)
 {
-       char soc_name[10];
-
-       strncpy(soc_name, CONFIG_SYS_SOC, 10);
-       upstring(soc_name);
-       puts(soc_name);
-       puts("\n");
+       printf("SoC: %s\n", CONFIG_SYS_SOC);
+#if defined(CONFIG_TEGRA124) || defined(CONFIG_TEGRA30)
+       printf("Reset cause: %s\n", get_reset_cause());
+#endif
 
        /* TBD: Add printf of major/minor rev info, stepping, etc. */
        return 0;