summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-28 10:27:51 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-02 07:46:13 +0200
commit0000791312ecc9ef0de7ed9646a57f7a64547e2b (patch)
treed7f05d4603675fb192be1a9168fd4ab1593b8efd
parentbsp/qoriq: Add DCFG to memory map (diff)
downloadrtems-0000791312ecc9ef0de7ed9646a57f7a64547e2b.tar.bz2
bsp/qoriq: Add and use qoriq_reset_qman_and_bman()
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h11
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c2
2 files changed, 13 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h b/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
index 755cc65e61..28228cb7bc 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
+++ b/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
@@ -529,6 +529,17 @@ extern uint8_t qoriq_bman_portal[2][16777216];
extern uint8_t qoriq_qman_portal[2][16777216];
#endif
+static inline void qoriq_reset_qman_and_bman(void)
+{
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
+ qoriq.dcfg.qmbm_warmrst = 0x3;
+
+ while ((qoriq.dcfg.qmbm_warmrst & 0x3) != 0) {
+ /* Wait for reset done */
+ }
+#endif
+}
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
index 7df5135b55..4159050e5d 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
@@ -34,6 +34,8 @@ static RTEMS_NO_RETURN void do_restart(void *addr)
void (*restart)(uintptr_t);
uintptr_t fdt;
+ qoriq_reset_qman_and_bman();
+
restart = addr;
fdt = (uintptr_t) bsp_fdt_get();