summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-09 13:04:39 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-09 13:06:51 +0200
commitf57f513d9bb0f0b92e37c0d7f73cbb751f046df2 (patch)
tree7ed77bc4cceae72665e3150e5b10646fb9a1ba08 /c
parentbsp/qoriq: Set M and G bits in ENTRY_DEV_CACHED() (diff)
downloadrtems-f57f513d9bb0f0b92e37c0d7f73cbb751f046df2.tar.bz2
bsp/qoriq: Add portal clear functions
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/Makefile.am1
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h3
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/portal.c43
3 files changed, 47 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/Makefile.am b/c/src/lib/libbsp/powerpc/qoriq/Makefile.am
index 25def4fe12..f834aa834e 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/qoriq/Makefile.am
@@ -75,6 +75,7 @@ libbsp_a_SOURCES += \
startup/mmu.c \
startup/mmu-tlb1.S \
startup/mmu-config.c \
+ startup/portal.c \
startup/restart.S \
startup/bsppredriverhook.c \
startup/bspstart.c \
diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h b/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
index 28228cb7bc..456a3b54bd 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
+++ b/c/src/lib/libbsp/powerpc/qoriq/include/qoriq.h
@@ -527,6 +527,9 @@ extern volatile qoriq_ccsr qoriq;
#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
extern uint8_t qoriq_bman_portal[2][16777216];
extern uint8_t qoriq_qman_portal[2][16777216];
+
+void qoriq_clear_ce_portal(void *base, size_t size);
+void qoriq_clear_ci_portal(void *base, size_t size);
#endif
static inline void qoriq_reset_qman_and_bman(void)
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/portal.c b/c/src/lib/libbsp/powerpc/qoriq/startup/portal.c
new file mode 100644
index 0000000000..f20eaf4d28
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/portal.c
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2016 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Dornierstr. 4
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <bsp/qoriq.h>
+
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
+
+#include <libcpu/powerpc-utility.h>
+
+void qoriq_clear_ce_portal(void *base, size_t size)
+{
+ size_t offset;
+
+ for (offset = 0; offset < size; offset += 64) {
+ ppc_data_cache_block_clear_to_zero_2(base, offset);
+ ppc_data_cache_block_flush_2(base, offset);
+ }
+}
+
+void qoriq_clear_ci_portal(void *base, size_t size)
+{
+ uint32_t zero;
+ size_t offset;
+
+ zero = 0;
+
+ for (offset = 0; offset < size; offset += 4) {
+ ppc_write_word(zero, (char *) base + offset);
+ }
+}
+
+#endif