aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/image
diff options
context:
space:
mode:
authorVladimir Vid <vladimir.vid@sartura.hr>2019-07-22 13:08:18 +0200
committerLuka Perkov <luka.perkov@sartura.hr>2019-08-24 23:11:15 +0200
commit7dff6a8c89e30e660ef077d31ec0358a04161271 (patch)
treeab5b7fde846145b8ab0531ae41c78596a25b178c /target/linux/mvebu/image
parent52cbe6b9c0865c8398c2fd23d1cf56a1afdb66f7 (diff)
downloadupstream-7dff6a8c89e30e660ef077d31ec0358a04161271.tar.gz
upstream-7dff6a8c89e30e660ef077d31ec0358a04161271.tar.bz2
upstream-7dff6a8c89e30e660ef077d31ec0358a04161271.zip
mvebu: uDPU: add sysupgrade support
This patch adds sysupgrade, uboot-env and networking support for Methode uDPU device. Device features 4 partitions: ----------------------------------------- | boot | recovery | rootfs | misc | | (ext4) | (ext4) | (fsf2) | (f2fs) | _________________________________________ Idea was to use f2fs only but the u-boot currently lacks support so first 2 partition are ext4 to be u-boot readable, and this was a reason why custom build and sysupgrade sections were required. On the sysupgrade, boot and rootfs partitions are updated, firmare image and user configuration is saved on the misc partition and if the upgrade was successfull, recovery partition will be updated on after the reboot from preinit script. If the sysupgrade fails for any reason, device will fallback to recovery initramfs image. Signed-off-by: Vladimir Vid <vladimir.vid@sartura.hr>
Diffstat (limited to 'target/linux/mvebu/image')
-rw-r--r--target/linux/mvebu/image/Makefile9
-rw-r--r--target/linux/mvebu/image/cortex-a53.mk10
-rw-r--r--target/linux/mvebu/image/udpu.bootscript38
3 files changed, 54 insertions, 3 deletions
diff --git a/target/linux/mvebu/image/Makefile b/target/linux/mvebu/image/Makefile
index 57e5a30491..b4b77b70b4 100644
--- a/target/linux/mvebu/image/Makefile
+++ b/target/linux/mvebu/image/Makefile
@@ -68,6 +68,15 @@ define Build/omnia-medkit-initramfs
--file=$@ -C $(dir $(IMAGE_KERNEL))boot/ .
endef
+define Build/uDPU-firmware
+ (rm -fR $@-fw; mkdir -p $@-fw)
+ $(CP) $(BIN_DIR)/$(IMAGE_PREFIX)-initramfs.itb $@-fw/recovery.itb
+ $(CP) $@-boot.scr $@-fw/boot.scr
+ (cd $(TARGET_DIR); $(TAR) -cvzf $@-fw/rootfs.tgz .)
+ (cd $@.boot; $(TAR) -cvzf $@-fw/boot.tgz .)
+ (cd $@-fw; $(TAR) -cvzf $(KDIR_TMP)/$(IMAGE_PREFIX)-firmware.tgz .)
+endef
+
define Device/Default
PROFILES := Default
BOARD_NAME = $$(DEVICE_DTS)
diff --git a/target/linux/mvebu/image/cortex-a53.mk b/target/linux/mvebu/image/cortex-a53.mk
index 228155ec11..e0b2b5e186 100644
--- a/target/linux/mvebu/image/cortex-a53.mk
+++ b/target/linux/mvebu/image/cortex-a53.mk
@@ -35,7 +35,7 @@ define Device/marvell_armada-3720-db
endef
TARGET_DEVICES += marvell_armada-3720-db
-define Device/methode_uDPU
+define Device/methode_udpu
$(call Device/Default-arm64)
DEVICE_TITLE := Methode micro-DPU (uDPU)
DEVICE_DTS := armada-3720-uDPU
@@ -44,8 +44,12 @@ define Device/methode_uDPU
KERNEL_INITRAMFS_SUFFIX := .itb
DEVICE_PACKAGES := f2fs-tools e2fsprogs fdisk ethtool kmod-usb2 kmod-usb3 \
kmod-e100 kmod-e1000 kmod-e1000e kmod-igb kmod-ixgbevf \
- kmod-mdio-gpio kmod-switch-mvsw61xx
+ kmod-mdio-gpio kmod-switch-mvsw61xx kmod-i2c-pxa
+ IMAGE_NAME = $$(IMAGE_PREFIX)-$$(2)
+ IMAGES := firmware.tgz
+ IMAGE/firmware.tgz := boot-scr | boot-img-ext4 | uDPU-firmware | append-metadata
+ BOOT_SCRIPT := udpu
endef
-TARGET_DEVICES += methode_uDPU
+TARGET_DEVICES += methode_udpu
endif
diff --git a/target/linux/mvebu/image/udpu.bootscript b/target/linux/mvebu/image/udpu.bootscript
new file mode 100644
index 0000000000..1da35a793e
--- /dev/null
+++ b/target/linux/mvebu/image/udpu.bootscript
@@ -0,0 +1,38 @@
+# Bootscript for Methode uDPU device
+# Device and variables may vary between different revisions
+# of device, so we need to make sure everything is set correctly.
+
+# Set the LED's correctly
+gpio clear 12; gpio clear 40; gpio clear 45;
+
+# Find eMMC device,
+if mmc dev 0; then
+ setenv mmcdev 0
+ setenv rootdev 'root=/dev/mmcblk0p3'
+elif mmc dev 1; then
+ setenv mmcdev 1
+ setenv rootdev 'root=/dev/mmcblk1p3'
+fi
+
+# Set the variables if necessary
+if test ${kernel_addr_r}; then
+ setenv kernel_addr_r 0x5000000
+fi
+
+if test ${fdt_add_r}; then
+ setenv fdt_addr_r 0x4f00000
+fi
+
+setenv console 'console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000'
+setenv bootargs ${console} $rootdev rw rootwait
+
+load mmc ${mmcdev}:1 ${fdt_addr_r} @DTB@.dtb
+load mmc ${mmcdev}:1 ${kernel_addr_r} Image
+
+booti ${kernel_addr_r} - ${fdt_addr_r}
+
+# If the boot command fails, fallback to recovery image
+echo '-- Boot failed, falling back to the recovery image --'
+setenv bootargs $console
+load mmc ${mmcdev}:2 ${kernel_addr_r} recovery.itb
+bootm ${kernel_addr_r}