summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSichen Zhao <1473996754@qq.com>2017-07-11 18:51:19 +0800
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-07-12 08:38:20 +0200
commitf6115d7cd2d1551a05cd257ac9f00476c61e5e0d (patch)
tree202b00720c825d4c873d17778e31f9a26e2f457b
parentAdd interrupt vector set/get affinity (diff)
downloadrtems-f6115d7cd2d1551a05cd257ac9f00476c61e5e0d.tar.bz2
bsp/beagle: Add FDT support for Beaglebone Black
-rw-r--r--c/src/lib/libbsp/arm/beagle/Makefile.am1
-rw-r--r--c/src/lib/libbsp/arm/beagle/configure.ac9
-rw-r--r--c/src/lib/libbsp/arm/beagle/include/bsp.h6
-rw-r--r--c/src/lib/libbsp/arm/beagle/startup/bspstart.c6
-rwxr-xr-xc/src/lib/libbsp/arm/shared/start/start.S5
5 files changed, 26 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/arm/beagle/Makefile.am b/c/src/lib/libbsp/arm/beagle/Makefile.am
index 8e10ee2fd2..e7c44a11fc 100644
--- a/c/src/lib/libbsp/arm/beagle/Makefile.am
+++ b/c/src/lib/libbsp/arm/beagle/Makefile.am
@@ -76,6 +76,7 @@ libbsp_a_LIBADD =
# Shared
libbsp_a_SOURCES += ../../shared/bootcard.c
+libbsp_a_SOURCES += ../../shared/src/bsp-fdt.c
libbsp_a_SOURCES += ../../shared/bspclean.c
libbsp_a_SOURCES += ../../shared/bspgetworkarea.c
libbsp_a_SOURCES += ../../shared/bsppredriverhook.c
diff --git a/c/src/lib/libbsp/arm/beagle/configure.ac b/c/src/lib/libbsp/arm/beagle/configure.ac
index b0c99a3e7c..f5352b55bc 100644
--- a/c/src/lib/libbsp/arm/beagle/configure.ac
+++ b/c/src/lib/libbsp/arm/beagle/configure.ac
@@ -18,6 +18,15 @@ RTEMS_PROG_CC_FOR_TARGET
RTEMS_CANONICALIZE_TOOLS
RTEMS_PROG_CCAS
+RTEMS_BSPOPTS_SET([BSP_START_COPY_FDT_FROM_U_BOOT],[*],[1])
+RTEMS_BSPOPTS_HELP([BSP_START_COPY_FDT_FROM_U_BOOT],[copy the U-Boot provided FDT to an internal storage])
+
+RTEMS_BSPOPTS_SET([BSP_FDT_BLOB_SIZE_MAX],[*],[262144])
+RTEMS_BSPOPTS_HELP([BSP_FDT_BLOB_SIZE_MAX],[maximum size of the FDT blob in bytes])
+
+RTEMS_BSPOPTS_SET([BSP_FDT_BLOB_READ_ONLY],[*],[1])
+RTEMS_BSPOPTS_HELP([BSP_FDT_BLOB_READ_ONLY],[place the FDT blob into the read-only data area])
+
RTEMS_BSPOPTS_SET([IS_DM3730],[beagleboard*],[1])
RTEMS_BSPOPTS_HELP([IS_DM3730],[true if SOC is DM3730])
diff --git a/c/src/lib/libbsp/arm/beagle/include/bsp.h b/c/src/lib/libbsp/arm/beagle/include/bsp.h
index d9fd2ae7fb..1a69b5e308 100644
--- a/c/src/lib/libbsp/arm/beagle/include/bsp.h
+++ b/c/src/lib/libbsp/arm/beagle/include/bsp.h
@@ -187,6 +187,10 @@ static inline void flush_data_cache(void)
#define BSP_GPIO_PINS_PER_BANK 32
#endif
+#if BSP_START_COPY_FDT_FROM_U_BOOT
+#define BSP_FDT_IS_SUPPORTED
+#endif
+
/* i2c stuff */
typedef struct {
uint32_t rx_or_tx;
@@ -357,4 +361,4 @@ static inline void write_ttbr0(uint32_t bar)
*/
BSP_START_TEXT_SECTION void beagle_setup_mmu_and_cache(void);
-#endif /* LIBBSP_ARM_BEAGLE_BSP_H */ \ No newline at end of file
+#endif /* LIBBSP_ARM_BEAGLE_BSP_H */
diff --git a/c/src/lib/libbsp/arm/beagle/startup/bspstart.c b/c/src/lib/libbsp/arm/beagle/startup/bspstart.c
index b1565640c6..3cc6935474 100644
--- a/c/src/lib/libbsp/arm/beagle/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/beagle/startup/bspstart.c
@@ -15,6 +15,7 @@
#include <bsp.h>
#include <bsp/bootcard.h>
#include <bsp/irq-generic.h>
+#include <bsp/fdt.h>
void bsp_start(void)
{
@@ -27,3 +28,8 @@ void bsp_start(void)
bsp_interrupt_initialize();
printk("\nRTEMS Beagleboard: %s\n", type);
}
+
+uint32_t bsp_fdt_map_intr(uint32_t intr)
+{
+ return intr;
+}
diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S
index c5263ece7b..547cce3d2c 100755
--- a/c/src/lib/libbsp/arm/shared/start/start.S
+++ b/c/src/lib/libbsp/arm/shared/start/start.S
@@ -183,6 +183,11 @@ _start:
bl bsp_start_init_registers_core
#endif
+#ifdef BSP_START_COPY_FDT_FROM_U_BOOT
+ mov r0, r6
+ bl bsp_fdt_copy
+#endif
+
#ifdef RTEMS_SMP
/* Read MPIDR and get current processor index */
mrc p15, 0, r0, c0, c0, 5