uboot/arch/arm/mach-rockchip/cpu-info.c
<<
>>
Prefs
   1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
   2/*
   3 * (C) Copyright 2019 Amarula Solutions(India)
   4 * Author: Jagan Teki <jagan@amarulasolutions.com>
   5 */
   6
   7#include <common.h>
   8#include <env.h>
   9#include <init.h>
  10#include <asm/io.h>
  11#include <asm/arch-rockchip/clock.h>
  12#include <asm/arch-rockchip/cru.h>
  13#include <asm/arch-rockchip/hardware.h>
  14#include <linux/err.h>
  15
  16char *get_reset_cause(void)
  17{
  18        struct rockchip_cru *cru = rockchip_get_cru();
  19        char *cause = NULL;
  20
  21        if (IS_ERR(cru))
  22                return cause;
  23
  24        switch (cru->glb_rst_st) {
  25        case GLB_POR_RST:
  26                cause = "POR";
  27                break;
  28        case FST_GLB_RST_ST:
  29        case SND_GLB_RST_ST:
  30                cause = "RST";
  31                break;
  32        case FST_GLB_TSADC_RST_ST:
  33        case SND_GLB_TSADC_RST_ST:
  34                cause = "THERMAL";
  35                break;
  36        case FST_GLB_WDT_RST_ST:
  37        case SND_GLB_WDT_RST_ST:
  38                cause = "WDOG";
  39                break;
  40        default:
  41                cause = "unknown reset";
  42        }
  43
  44        return cause;
  45}
  46
  47#if CONFIG_IS_ENABLED(DISPLAY_CPUINFO)
  48int print_cpuinfo(void)
  49{
  50        char *cause = get_reset_cause();
  51
  52        printf("SoC: Rockchip %s\n", CONFIG_SYS_SOC);
  53        printf("Reset cause: %s\n", cause);
  54
  55        /**
  56         * reset_reason env is used by rk3288, due to special use case
  57         * to figure it the boot behavior. so keep this as it is.
  58         */
  59        env_set("reset_reason", cause);
  60
  61        /* TODO print operating temparature and clock */
  62
  63        return 0;
  64}
  65#endif
  66