aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq807x/base-files
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ipq807x/base-files')
-rw-r--r--target/linux/ipq807x/base-files/etc/board.d/02_network1
-rw-r--r--target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata1
-rw-r--r--target/linux/ipq807x/base-files/lib/upgrade/buffalo.sh55
-rw-r--r--target/linux/ipq807x/base-files/lib/upgrade/platform.sh8
4 files changed, 65 insertions, 0 deletions
diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network
index a8d9d5d6cf..43c67a0f31 100644
--- a/target/linux/ipq807x/base-files/etc/board.d/02_network
+++ b/target/linux/ipq807x/base-files/etc/board.d/02_network
@@ -11,6 +11,7 @@ ipq807x_setup_interfaces()
local board="$1"
case "$board" in
+ buffalo,wxr-5950ax12|\
dynalink,dl-wrx36|\
xiaomi,ax9000)
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
diff --git a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
index 304d3a71b8..eec286e269 100644
--- a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
+++ b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
@@ -9,6 +9,7 @@ board=$(board_name)
case "$FIRMWARE" in
"ath11k/IPQ8074/hw2.0/cal-ahb-c000000.wifi.bin")
case "$board" in
+ buffalo,wxr-5950ax12|\
edgecore,eap102|\
edimax,cax1800|\
dynalink,dl-wrx36|\
diff --git a/target/linux/ipq807x/base-files/lib/upgrade/buffalo.sh b/target/linux/ipq807x/base-files/lib/upgrade/buffalo.sh
new file mode 100644
index 0000000000..d0ed258890
--- /dev/null
+++ b/target/linux/ipq807x/base-files/lib/upgrade/buffalo.sh
@@ -0,0 +1,55 @@
+. /lib/functions.sh
+
+# Prepare UBI devices for OpenWrt installation
+# - rootfs (mtd22)
+# - remove "ubi_rootfs" volume (rootfs on stock)
+# - remove "fw_hash" volume (firmware hash)
+# - user_property (mtd24)
+# - remove "user_property_ubi" volume (user configuration)
+# - remove "extra_property" volume (gzipped syslog)
+buffalo_upgrade_prepare() {
+ local ubi_rootdev ubi_propdev
+
+ if ! ubi_rootdev="$(nand_attach_ubi rootfs)" || \
+ ! ubi_propdev="$(nand_attach_ubi user_property)"; then
+ echo "failed to attach UBI volume \"rootfs\" or \"user_property\", rebooting..."
+ reboot -f
+ fi
+
+ ubirmvol /dev/$ubi_rootdev -N ubi_rootfs &> /dev/null || true
+ ubirmvol /dev/$ubi_rootdev -N fw_hash &> /dev/null || true
+
+ ubirmvol /dev/$ubi_propdev -N user_property_ubi &> /dev/null || true
+ ubirmvol /dev/$ubi_propdev -N extra_property &> /dev/null || true
+}
+
+# Re-create small dummy ubi_rootfs volume and update
+# fw_hash volume to pass the checking by U-Boot
+# - rootfs (mtd22)
+# - re-create "ubi_rootfs" volume
+# - re-create and update "fw_hash" volume
+# - rootfs_recover (mtd23)
+# - update "fw_hash" volume
+buffalo_upgrade_optvol() {
+ local ubi_rootdev ubi_rcvrdev
+ local hashvol_root hashvol_rcvr
+
+ if ! ubi_rootdev="$(nand_attach_ubi rootfs)" || \
+ ! ubi_rcvrdev="$(nand_attach_ubi rootfs_recover)"; then
+ echo "failed to attach UBI volume \"rootfs\" or \"rootfs_recover\", rebooting..."
+ reboot -f
+ fi
+
+ ubimkvol /dev/$ubi_rootdev -N ubi_rootfs -S 1
+ ubimkvol /dev/$ubi_rootdev -N fw_hash -S 1 -t static
+
+ if ! hashvol_root="$(nand_find_volume $ubi_rootdev fw_hash)" || \
+ ! hashvol_rcvr="$(nand_find_volume $ubi_rcvrdev fw_hash)"; then
+ echo "\"fw_hash\" volume in \"rootfs\" or \"rootfs_recover\" not found, rebooting..."
+ reboot -f
+ fi
+
+ echo -n "00000000000000000000000000000000" > /tmp/dummyhash.txt
+ ubiupdatevol /dev/$hashvol_root /tmp/dummyhash.txt
+ ubiupdatevol /dev/$hashvol_rcvr /tmp/dummyhash.txt
+}
diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
index 4a6a91b5f5..683015898a 100644
--- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
@@ -43,6 +43,14 @@ platform_pre_upgrade() {
platform_do_upgrade() {
case "$(board_name)" in
+ buffalo,wxr-5950ax12)
+ CI_KERN_UBIPART="rootfs"
+ CI_ROOT_UBIPART="user_property"
+ buffalo_upgrade_prepare
+ nand_do_flash_file "$1" || nand_do_upgrade_failed
+ nand_do_restore_config || nand_do_upgrade_failed
+ buffalo_upgrade_optvol
+ ;;
dynalink,dl-wrx36)
nand_do_upgrade "$1"
;;