summaryrefslogtreecommitdiff
path: root/boot/at91dataflashboot
diff options
context:
space:
mode:
Diffstat (limited to 'boot/at91dataflashboot')
-rw-r--r--boot/at91dataflashboot/Config.in25
-rw-r--r--boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch22
-rw-r--r--boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch43
-rw-r--r--boot/at91dataflashboot/at91dataflashboot.mk45
4 files changed, 135 insertions, 0 deletions
diff --git a/boot/at91dataflashboot/Config.in b/boot/at91dataflashboot/Config.in
new file mode 100644
index 000000000..25b9723c8
--- /dev/null
+++ b/boot/at91dataflashboot/Config.in
@@ -0,0 +1,25 @@
+menuconfig BR2_TARGET_DATAFLASHBOOT
+ depends on BR2_arm
+ bool "AT91 DataFlashBoot"
+
+if BR2_TARGET_DATAFLASHBOOT
+
+choice
+ prompt "Target Architecture"
+ default BR2_TARGET_DATAFLASHBOOT_AT91RM9200
+ help
+ Select Chip for which Dataflash boot should be built
+ Currently only AT91RM9200 Supported
+
+config BR2_TARGET_DATAFLASHBOOT_AT91RM9200
+ bool "AT91RM9200"
+
+config BR2_TARGET_DATAFLASHBOOT_AT91SAM9261
+ bool "AT91SAM9261"
+
+config BR2_TARGET_DATAFLASHBOOT_AT91SAM9261S
+ bool "AT91SAM9261S"
+
+endchoice
+
+endif # BR2_TARGET_DATAFLASHBOOT
diff --git a/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch b/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch
new file mode 100644
index 000000000..41d97ad20
--- /dev/null
+++ b/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch
@@ -0,0 +1,22 @@
+Disable the automatic installation of at91dataflashboot since it tries
+to install things to /tftpboot, which is not possible when not
+building as root.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: at91dataflashboot-1.05/Makefile
+===================================================================
+--- at91dataflashboot-1.05.orig/Makefile
++++ at91dataflashboot-1.05/Makefile
+@@ -40,7 +40,7 @@
+
+ I=config.h com.h dataflash.h embedded_services.h main.h stdio.h include/AT91RM9200.h include/lib_AT91RM9200.h
+
+-all: clean $(BINNAME) $(LSSNAME) install
++all: clean $(BINNAME) $(LSSNAME)
+ $(SIZE) $(OUTNAME)
+
+ # C objects here
diff --git a/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch b/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch
new file mode 100644
index 000000000..e38905f7c
--- /dev/null
+++ b/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch
@@ -0,0 +1,43 @@
+Get at91dataflashboot to build with EABI toolchains, by providing the
+__aeabi_uidiv and __aeabi_uidivmod symbols. The code is based on
+U-Boot's code.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ _udivsi3.S | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+Index: DataflashBoot-1.05/_udivsi3.S
+===================================================================
+--- DataflashBoot-1.05.orig/_udivsi3.S
++++ DataflashBoot-1.05/_udivsi3.S
+@@ -12,8 +12,11 @@
+ .text
+ .globl __udivsi3
+ .type __udivsi3 ,function
++ .globl __aeabi_uidiv
++ .type __aeabi_uidiv ,function
+ .align 0
+ __udivsi3 :
++ __aeabi_uidiv:
+ cmp divisor, #0
+ beq Ldiv0
+ mov curbit, #1
+@@ -68,6 +71,17 @@
+ mov r0, #0 @ about as wrong as it could be
+ ldmia sp!, {pc}
+ .size __udivsi3 , . - __udivsi3
++
++.globl __aeabi_uidivmod
++__aeabi_uidivmod:
++
++ stmfd sp!, {r0, r1, ip, lr}
++ bl __aeabi_uidiv
++ ldmfd sp!, {r1, r2, ip, lr}
++ mul r3, r0, r2
++ sub r1, r1, r3
++ mov pc, lr
++
+ /* # 235 "libgcc1.S" */
+ /* # 320 "libgcc1.S" */
+ /* # 421 "libgcc1.S" */
diff --git a/boot/at91dataflashboot/at91dataflashboot.mk b/boot/at91dataflashboot/at91dataflashboot.mk
new file mode 100644
index 000000000..d11f842d8
--- /dev/null
+++ b/boot/at91dataflashboot/at91dataflashboot.mk
@@ -0,0 +1,45 @@
+#############################################################
+#
+# DataFlashBoot
+#
+#############################################################
+DATAFLASHBOOT_VERSION:=1.05
+DATAFLASHBOOT_NAME:=DataflashBoot-$(DATAFLASHBOOT_VERSION)
+DATAFLASHBOOT_SITE:=ftp://www.at91.com/pub/buildroot/
+DATAFLASHBOOT_SOURCE:=$(DATAFLASHBOOT_NAME).tar.bz2
+DATAFLASHBOOT_DIR:=$(BUILD_DIR)/at91dataflashboot-$(DATAFLASHBOOT_VERSION)
+DATAFLASHBOOT_BINARY:=$(DATAFLASHBOOT_NAME).bin
+
+$(DL_DIR)/$(DATAFLASHBOOT_SOURCE):
+ $(call DOWNLOAD,$(DATAFLASHBOOT_SITE),$(DATAFLASHBOOT_SOURCE))
+
+$(DATAFLASHBOOT_DIR)/.unpacked: $(DL_DIR)/$(DATAFLASHBOOT_SOURCE)
+ mkdir -p $(@D)
+ $(BZCAT) $(DL_DIR)/$(DATAFLASHBOOT_SOURCE) | tar $(TAR_STRIP_COMPONENTS)=1 -C $(@D) $(TAR_OPTIONS) -
+ touch $(DATAFLASHBOOT_DIR)/.unpacked
+
+$(DATAFLASHBOOT_DIR)/.patched: $(DATAFLASHBOOT_DIR)/.unpacked
+ toolchain/patch-kernel.sh $(@D) boot/at91dataflashboot \
+ at91dataflashboot-$(DATAFLASHBOOT_VERSION)-\*.patch
+
+$(DATAFLASHBOOT_DIR)/$(DATAFLASHBOOT_BINARY): $(DATAFLASHBOOT_DIR)/.patched
+ ls $(DATAFLASHBOOT_DIR)/.unpacked
+ make -C $(DATAFLASHBOOT_DIR) CROSS_COMPILE=$(TARGET_CROSS)
+
+dataflashboot-clean:
+ make -C $(DATAFLASHBOOT_DIR) clean
+
+dataflashboot-dirclean:
+ rm -rf $(DATAFLASHBOOT_DIR)
+
+dataflash: $(DATAFLASHBOOT_DIR)/$(DATAFLASHBOOT_BINARY)
+ cp $(DATAFLASHBOOT_DIR)/$(DATAFLASHBOOT_BINARY) $(BINARIES_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(BR2_TARGET_DATAFLASHBOOT),y)
+TARGETS+=dataflash
+endif