[coreboot-gerrit] Patch set updated for coreboot: 2d8cf97 tegra132: Add support for pmc_rst_status get and print

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Sat Mar 28 07:27:26 CET 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9106

-gerrit

commit 2d8cf9734dc5e66547aabb2d6a429b9ed3e1d070
Author: Furquan Shaikh <furquan at google.com>
Date:   Tue Sep 30 20:34:18 2014 -0700

    tegra132: Add support for pmc_rst_status get and print
    
    BUG=None
    BRANCH=None
    TEST=Compiles successfully and pmc rst status POR is seen.
    
    Change-Id: Ic09cb46d9be7670e467543e42b251efb1a4313d0
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 5dbfae6bbc0f4f30e216e37b515f4120f7833a38
    Original-Change-Id: Id0c2b208222deaf099b8938ba583551979588d52
    Original-Signed-off-by: Furquan Shaikh <furquan at google.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/220721
    Original-Tested-by: Furquan Shaikh <furquan at chromium.org>
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    Original-Commit-Queue: Furquan Shaikh <furquan at chromium.org>
---
 src/soc/nvidia/tegra132/Makefile.inc |  1 +
 src/soc/nvidia/tegra132/bootblock.c  |  2 ++
 src/soc/nvidia/tegra132/pmc.h        | 10 ++++++++++
 src/soc/nvidia/tegra132/power.c      | 22 ++++++++++++++++++++++
 src/soc/nvidia/tegra132/power.h      |  3 +++
 5 files changed, 38 insertions(+)

diff --git a/src/soc/nvidia/tegra132/Makefile.inc b/src/soc/nvidia/tegra132/Makefile.inc
index 7603c70..38d7bc7 100644
--- a/src/soc/nvidia/tegra132/Makefile.inc
+++ b/src/soc/nvidia/tegra132/Makefile.inc
@@ -8,6 +8,7 @@ bootblock-y += i2c.c
 bootblock-y += dma.c
 bootblock-y += monotonic_timer.c
 bootblock-y += padconfig.c
+bootblock-y += power.c
 bootblock-y += funitcfg.c
 bootblock-y += reset.c
 bootblock-y += ../tegra/gpio.c
diff --git a/src/soc/nvidia/tegra132/bootblock.c b/src/soc/nvidia/tegra132/bootblock.c
index 7afe7b5..6481eb3 100644
--- a/src/soc/nvidia/tegra132/bootblock.c
+++ b/src/soc/nvidia/tegra132/bootblock.c
@@ -64,6 +64,8 @@ void main(void)
 
 	printk(BIOS_INFO, "T132 bootblock: Clock init done\n");
 
+	pmc_print_rst_status();
+
 	bootblock_mainboard_init();
 
 	printk(BIOS_INFO, "T132 bootblock: Mainboard bootblock init done\n");
diff --git a/src/soc/nvidia/tegra132/pmc.h b/src/soc/nvidia/tegra132/pmc.h
index 60d97c3..119b3be 100644
--- a/src/soc/nvidia/tegra132/pmc.h
+++ b/src/soc/nvidia/tegra132/pmc.h
@@ -317,6 +317,16 @@ struct tegra_pmc_regs {
 check_member(tegra_pmc_regs, scratch119, 0x6fc);
 
 enum {
+	PMC_RST_STATUS_SOURCE_MASK = 0x7,
+	PMC_RST_STATUS_SOURCE_POR = 0x0,
+	PMC_RST_STATUS_SOURCE_WATCHDOG = 0x1,
+	PMC_RST_STATUS_SOURCE_SENSOR = 0x2,
+	PMC_RST_STATUS_SOURCE_SW_MAIN = 0x3,
+	PMC_RST_STATUS_SOURCE_LP0 = 0x4,
+	PMC_RST_STATUS_NUM_SOURCES = 0x5,
+};
+
+enum {
 	PMC_PWRGATE_TOGGLE_PARTID_MASK = 0x1f,
 	PMC_PWRGATE_TOGGLE_PARTID_SHIFT = 0,
 	PMC_PWRGATE_TOGGLE_START = 0x1 << 8
diff --git a/src/soc/nvidia/tegra132/power.c b/src/soc/nvidia/tegra132/power.c
index 5c7cc05..679845c 100644
--- a/src/soc/nvidia/tegra132/power.c
+++ b/src/soc/nvidia/tegra132/power.c
@@ -19,6 +19,7 @@
  */
 
 #include <arch/io.h>
+#include <assert.h>
 #include <console/console.h>
 #include <soc/addressmap.h>
 
@@ -55,3 +56,24 @@ void power_ungate_partition(uint32_t id)
 
 	printk(BIOS_INFO, "Ungated power partition %d.\n", id);
 }
+
+uint8_t pmc_rst_status(void)
+{
+	return read32(&pmc->rst_status) & PMC_RST_STATUS_SOURCE_MASK;
+}
+
+static const char *pmc_rst_status_str[PMC_RST_STATUS_NUM_SOURCES] = {
+	[PMC_RST_STATUS_SOURCE_POR] = "POR",
+	[PMC_RST_STATUS_SOURCE_WATCHDOG] = "Watchdog",
+	[PMC_RST_STATUS_SOURCE_SENSOR] = "Sensor",
+	[PMC_RST_STATUS_SOURCE_SW_MAIN] = "SW Main",
+	[PMC_RST_STATUS_SOURCE_LP0] = "LP0",
+};
+
+void pmc_print_rst_status(void)
+{
+	uint8_t rst_status = pmc_rst_status();
+	assert(rst_status < PMC_RST_STATUS_NUM_SOURCES);
+	printk(BIOS_INFO, "PMC Reset Status: %s\n",
+	       pmc_rst_status_str[rst_status]);
+}
diff --git a/src/soc/nvidia/tegra132/power.h b/src/soc/nvidia/tegra132/power.h
index b36f91f..0dbcc5e 100644
--- a/src/soc/nvidia/tegra132/power.h
+++ b/src/soc/nvidia/tegra132/power.h
@@ -24,4 +24,7 @@
 
 void power_ungate_partition(uint32_t id);
 
+uint8_t pmc_rst_status(void);
+void pmc_print_rst_status(void);
+
 #endif	/* __SOC_NVIDIA_TEGRA132_POWER_H__ */



More information about the coreboot-gerrit mailing list