summaryrefslogtreecommitdiff
path: root/c/src/lib/libbsp/arm/raspberrypi/startup/bspreset.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/raspberrypi/startup/bspreset.c')
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/startup/bspreset.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/bspreset.c b/c/src/lib/libbsp/arm/raspberrypi/startup/bspreset.c
new file mode 100644
index 0000000000..98c28bea9d
--- /dev/null
+++ b/c/src/lib/libbsp/arm/raspberrypi/startup/bspreset.c
@@ -0,0 +1,26 @@
+/**
+ * @file
+ *
+ * @ingroup raspberrypi
+ *
+ * @brief Raspberry pi restart chip function
+ */
+
+#include <bsp/bootcard.h>
+#include <bsp/raspberrypi.h>
+#include <bsp.h>
+#include <rtems.h>
+
+void bsp_reset(void)
+{
+ uint32_t rstc;
+
+ BCM2835_REG(BCM2835_PM_WDOG) = BCM2835_PM_PASSWD_MAGIC | 20;
+ rstc = BCM2835_REG(BCM2835_PM_RSTC);
+ rstc &= ~BCM2835_PM_RSTC_WRCFG;
+ rstc |= BCM2835_PM_PASSWD_MAGIC | BCM2835_PM_RSTC_WRCFG_FULL;
+ BCM2835_REG(BCM2835_PM_RSTC) = rstc;
+ BCM2835_REG(BCM2835_PM_WDOG) = BCM2835_PM_PASSWD_MAGIC | 1;
+
+ while (1) ;
+}