summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2017-04-16 18:11:26 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2017-04-16 18:11:26 +0200
commit910cee4c6dd1362574acf182419b5d2d2625ee06 (patch)
treed0c6666c1b0806abebc43585af30544ffc8ecabd
parent5cc97866f5b2b1aac415c644556539affd73fc77 (diff)
add rpi3 aarch64 sample, not yet fully working
-rw-r--r--package/bcm28xx-bootloader/Makefile6
-rw-r--r--package/bcm28xx-vc/Makefile2
-rwxr-xr-xscripts/install.sh18
-rw-r--r--target/aarch64/Makefile21
-rw-r--r--target/aarch64/kernel/raspberry-pi3-6410
-rw-r--r--target/aarch64/systems/raspberry-pi3-6426
-rw-r--r--target/config/Config.in.kernelversion4
7 files changed, 73 insertions, 14 deletions
diff --git a/package/bcm28xx-bootloader/Makefile b/package/bcm28xx-bootloader/Makefile
index 2168f5c80..a86b8fea8 100644
--- a/package/bcm28xx-bootloader/Makefile
+++ b/package/bcm28xx-bootloader/Makefile
@@ -11,7 +11,7 @@ PKG_SECTION:= base/boot
PKG_URL:= https://github.com/raspberrypi/firmware
PKG_SITES:= https://github.com/raspberrypi/firmware.git
-PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3
+PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi3-64
PKG_CHOICES_BCM28XX_BOOTLOADER:= DEFAULT EXTRA CUTDOWN
PKGCD_DEFAULT:= default bootloader
@@ -89,6 +89,10 @@ ifeq ($(ADK_TARGET_HARDWARE_RPI3_SERIAL),y)
printf "dtoverlay=pi3-disable-bt.dtb\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
endif
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3_64),y)
+ printf "arm_control=0x200\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+endif
ifeq ($(ADK_PACKAGE_BCM28XX_DEBUGTOOL),y)
$(INSTALL_DIR) $(IDIR_BCM28XX_DEBUGTOOL)/opt/vc/bin
$(INSTALL_BIN) ./files/vcdbg \
diff --git a/package/bcm28xx-vc/Makefile b/package/bcm28xx-vc/Makefile
index 3b3b23582..d7ed69610 100644
--- a/package/bcm28xx-vc/Makefile
+++ b/package/bcm28xx-vc/Makefile
@@ -26,7 +26,7 @@ PKGSC_BCM28XX_VC_GL_LIBS:=libs/video
PKGSS_BCM28XX_VC_GL_LIBS:=bcm28xx-vc-libs
PKGSD_BCM28XX_VC_GL_LIBS:=videocore gl library
-PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3
+PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi3-64
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/scripts/install.sh b/scripts/install.sh
index 698a4eaa1..dbdcfa6ad 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -144,7 +144,7 @@ tgt=$2
src=$3
case $target {
-(banana-pro|pcengines-apu|raspberry-pi|raspberry-pi2|raspberry-pi3|solidrun-imx6|solidrun-clearfog|default) ;;
+(banana-pro|pcengines-apu|raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|solidrun-imx6|solidrun-clearfog|default) ;;
(*)
print -u2 "Unknown target '$target', exiting"
exit 1 ;;
@@ -167,7 +167,7 @@ case $ostype {
basedev=$tgt
rootpart=${basedev}s1
datapart=${basedev}s2
- if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+ if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
bootpart=${basedev}s1
rootpart=${basedev}s2
datapart=${basedev}s3
@@ -194,7 +194,7 @@ case $ostype {
basedev=$tgt
rootpart=${basedev}1
datapart=${basedev}2
- if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+ if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
bootpart=${basedev}1
rootpart=${basedev}2
datapart=${basedev}3
@@ -257,7 +257,7 @@ syspartno=0
# data - flexible (parameter)
# system - everything else
-if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
syspartno=1
bootfssz=100
if (( grub )); then
@@ -314,7 +314,7 @@ fi
#(( partofs = ((coreendsec / secs) + 1) * secs ))
# we just use 2048 all the time, since some loaders are longer
partofs=2048
-if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
(( spartofs = partofs + (100 * 2048) ))
else
spartofs=$partofs
@@ -425,7 +425,7 @@ if (( datafssz )); then
dd of="$T/firsttrack" conv=notrunc bs=1 seek=$((0x1CE)) 2>/dev/null
fi
-if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 ]]; then
# move system and data partition from #0/#1 to #1/#2
dd if="$T/firsttrack" bs=1 skip=$((0x1BE)) count=32 of="$T/x" 2>/dev/null
dd of="$T/firsttrack" conv=notrunc bs=1 seek=$((0x1CE)) if="$T/x" 2>/dev/null
@@ -515,7 +515,7 @@ case $target {
dd if="$fwdir/SPL" of="$tgt" bs=1024 seek=1 > /dev/null 2>&1
dd if="$fwdir/u-boot.img" of="$tgt" bs=1024 seek=69 > /dev/null 2>&1
;;
-(raspberry-pi|raspberry-pi2|raspberry-pi3)
+(raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64)
(( noformat )) || create_fs "$bootpart" ADKBOOT vfat
;;
}
@@ -532,7 +532,7 @@ if (( datafssz )); then
((keep)) || create_fs "$datapart" ADKDATA ext4
((keep)) || tune_fs "$datapart"
case $target {
- (raspberry-pi|raspberry-pi2|raspberry-pi3)
+ (raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64)
echo "/dev/mmcblk0p3 /data ext4 rw 0 0" >> "$R"/etc/fstab
;;
(banana-pro|solidrun-imx6|solidrun-clearfog)
@@ -542,7 +542,7 @@ if (( datafssz )); then
fi
case $target {
-(raspberry-pi|raspberry-pi2|raspberry-pi3)
+(raspberry-pi|raspberry-pi2|raspberry-pi3|raspberry-pi3-64)
mount_fs "$bootpart" "$B" vfat
for x in "$R"/boot/*; do
[[ -e "$x" ]] && mv -f "$R"/boot/* "$B/"
diff --git a/target/aarch64/Makefile b/target/aarch64/Makefile
index 34a2b8ecd..c96264c39 100644
--- a/target/aarch64/Makefile
+++ b/target/aarch64/Makefile
@@ -20,6 +20,10 @@ endif
ifeq ($(ADK_TARGET_FS),archive)
targethelp:
@echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
+ @echo "Use following command to install it on SD card:"
+ @echo "sudo ./scripts/install.sh $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+endif
ifeq ($(ADK_TARGET_QEMU),y)
@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
@echo "Use following command to create a QEMU Image:"
@@ -57,9 +61,24 @@ kernel-strip:
kernel-install: kernel-strip
@cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
+dtb-install:
+ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
+ env $(KERNEL_MAKE_ENV) $(MAKE) -C "${LINUX_DIR}" $(KERNEL_MAKE_OPTS) \
+ dtbs $(MAKE_TRACE)
+ mkdir -p $(FW_DIR)/overlays
+ for x in $(LINUX_DIR)/arch/arm64/boot/dts/overlays/*.dtbo; do \
+ [[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm64/boot/dts/overlays/*.dtbo $(FW_DIR)/overlays; \
+ break; \
+ done
+ for x in $(LINUX_DIR)/arch/arm64/boot/dts/broadcom/*.dtb; do \
+ [[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm64/boot/dts/broadcom/*.dtb $(FW_DIR); \
+ break; \
+ done
+endif
+
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),archive)
-imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) targethelp
+imageinstall: dtb-install $(FW_DIR)/$(ROOTFSTARBALL) targethelp
endif
ifeq ($(ADK_TARGET_FS),initramfs)
imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
diff --git a/target/aarch64/kernel/raspberry-pi3-64 b/target/aarch64/kernel/raspberry-pi3-64
new file mode 100644
index 000000000..6d9ace351
--- /dev/null
+++ b/target/aarch64/kernel/raspberry-pi3-64
@@ -0,0 +1,10 @@
+CONFIG_ARM64=y
+CONFIG_ARCH_BCM2835=y
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_BCMA=y
+CONFIG_MAILBOX=y
+CONFIG_BCM2835_MBOX=y
+CONFIG_RASPBERRYPI_POWER=y
+CONFIG_RASPBERRYPI_FIRMWARE=y
diff --git a/target/aarch64/systems/raspberry-pi3-64 b/target/aarch64/systems/raspberry-pi3-64
new file mode 100644
index 000000000..03f1d755d
--- /dev/null
+++ b/target/aarch64/systems/raspberry-pi3-64
@@ -0,0 +1,26 @@
+config ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
+ bool "Raspberry PI 3 (AARCH64)"
+ depends on ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_AARCH64_CORTEX_A53
+ select ADK_TARGET_BOARD_BCM28XX
+ select ADK_TARGET_WITH_VGA
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_CPU_FREQ
+ select ADK_TARGET_WITH_USB
+ select ADK_TARGET_WITH_INPUT
+ select ADK_TARGET_WITH_SD
+ select ADK_TARGET_WITH_I2C
+ select ADK_TARGET_WITH_SPI
+ select ADK_TARGET_WITH_SMP
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_WITH_WIFI
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_WITH_SOUND
+ select ADK_TARGET_WITH_SDIO
+ select ADK_PACKAGE_BCM28XX_BOOTLOADER
+ select ADK_TARGET_WITH_ROOT_RW
+ select ADK_TARGET_KERNEL_IMAGE
+ help
+ Raspberry PI 3 (AARCH64)
+
diff --git a/target/config/Config.in.kernelversion b/target/config/Config.in.kernelversion
index fe135aa5b..60c1be2cf 100644
--- a/target/config/Config.in.kernelversion
+++ b/target/config/Config.in.kernelversion
@@ -232,7 +232,7 @@ config ADK_TARGET_KERNEL_GIT_REPO_NAME
config ADK_TARGET_KERNEL_GIT
string "git version"
depends on ADK_TARGET_KERNEL_VERSION_GIT
- default "cd6413a82a66de6ecce828ce67df4f6e3290ea86" if ADK_TARGET_BOARD_BCM28XX
+ default "72134397d72079a533c8fc742701fdc7f5ae7c5b" if ADK_TARGET_BOARD_BCM28XX
default "6a2f2e4198eaff63ee75f6085ce9f966c47b4441" if ADK_TARGET_ARCH_LM32
default "1d008423ab5fd12459f53342e4d17585ec63cfe4" if ADK_TARGET_SYSTEM_KINETIS_K70
default "902739f3353150ac9eb69ad995098f3079d862a3" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
@@ -242,7 +242,7 @@ config ADK_TARGET_KERNEL_GIT
config ADK_TARGET_KERNEL_GIT_VER
string "kernel version"
depends on ADK_TARGET_KERNEL_VERSION_GIT
- default "4.9.17" if ADK_TARGET_BOARD_BCM28XX
+ default "4.9.22" if ADK_TARGET_BOARD_BCM28XX
default "3.14.79" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "4.4.37" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
default "2.6.33" if ADK_TARGET_SYSTEM_KINETIS_K70