Browse Source

mvebu: Add bootscript for espressobin to support mainline firmware

The generic bootscript is tailored around a downstream firmware and
doesn't work on a firmware built from mainline components.

Add a bootscript which:
* sets $console since mainline u-boot doesn't do that
* uses distro boot variables, so OpenWRT can be booted off any supported
  device when using a mainline firmware
* sets missing distro boot variables for the downstream firmware

Booting with a downstream firmware is unchanged.
Booting with a mainline firmware now works.

Signed-off-by: Andre Heider <[email protected]>
(cherry picked from commit c43b45863e38fb18a486601c1601f1485d649c0b)
Andre Heider 5 years ago
parent
commit
7fbee0c7b2

+ 4 - 0
target/linux/mvebu/image/cortex-a53.mk

@@ -4,6 +4,7 @@ define Device/globalscale_espressobin
   $(call Device/Default-arm64)
   DEVICE_TITLE := ESPRESSObin (Marvell Armada 3700 Community Board)
   DEVICE_DTS := armada-3720-espressobin
+  BOOT_SCRIPT := espressobin
 endef
 TARGET_DEVICES += globalscale_espressobin
 
@@ -11,6 +12,7 @@ define Device/globalscale_espressobin-emmc
   $(call Device/Default-arm64)
   DEVICE_TITLE := ESPRESSObin eMMC (Marvell Armada 3700 Community Board)
   DEVICE_DTS := armada-3720-espressobin-emmc
+  BOOT_SCRIPT := espressobin
 endef
 TARGET_DEVICES += globalscale_espressobin-emmc
 
@@ -18,6 +20,7 @@ define Device/globalscale_espressobin-v7
   $(call Device/Default-arm64)
   DEVICE_TITLE := ESPRESSObin V7 (Marvell Armada 3700 Community Board)
   DEVICE_DTS := armada-3720-espressobin-v7
+  BOOT_SCRIPT := espressobin
 endef
 TARGET_DEVICES += globalscale_espressobin-v7
 
@@ -25,6 +28,7 @@ define Device/globalscale_espressobin-v7-emmc
   $(call Device/Default-arm64)
   DEVICE_TITLE := ESPRESSObin V7 eMMC (Marvell Armada 3700 Community Board)
   DEVICE_DTS := armada-3720-espressobin-v7-emmc
+  BOOT_SCRIPT := espressobin
 endef
 TARGET_DEVICES += globalscale_espressobin-v7-emmc
 

+ 34 - 0
target/linux/mvebu/image/espressobin.bootscript

@@ -0,0 +1,34 @@
+# Bootscript for Globalscale ESPRESSOBin Board
+
+# Set distro variables if necessary for compability with downstream firmware
+if test -z "${kernel_addr_r}"; then
+	setenv kernel_addr_r 0x7000000
+fi
+
+if test -z "${fdt_add_r}"; then
+	setenv fdt_addr_r 0x6f00000
+fi
+
+if test -z "${devtype}"; then
+	setenv devtype mmc
+fi
+
+if test -z "${devnum}"; then
+	if mmc dev 0; then
+		setenv devnum 0
+	elif mmc dev 1; then
+		setenv devnum 1
+	fi
+fi
+
+# figure out partition uuid to pass to the kernel as root=
+part uuid ${devtype} ${devnum}:2 uuid
+
+setenv console "console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000"
+setenv bootargs "root=PARTUUID=${uuid} rw rootwait ${console}"
+
+echo "Booting Linux from ${devtype} ${devnum} with args: ${bootargs}"
+load ${devtype} ${devnum}:1 ${fdt_addr_r} @[email protected]
+load ${devtype} ${devnum}:1 ${kernel_addr_r} Image
+
+booti ${kernel_addr_r} - ${fdt_addr_r}