aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Gorski <jonas.gorski@gmail.com>2016-09-26 12:02:40 +0200
committerJonas Gorski <jonas.gorski@gmail.com>2016-09-26 13:04:53 +0200
commit6859098d97aaa4e60a795f5887911958ca134ed0 (patch)
tree408a95b82c94b1679023a9e6d2d8275b356b50aa
parentc359d7e81bd0f73bd3931abf5d87589a97cc37df (diff)
downloadupstream-6859098d97aaa4e60a795f5887911958ca134ed0.tar.gz
upstream-6859098d97aaa4e60a795f5887911958ca134ed0.tar.bz2
upstream-6859098d97aaa4e60a795f5887911958ca134ed0.zip
mvebu: add sysupgrade support for clearfog
Add and enable sysupgrade support for clearfog boards, based on how the brcm2708 target does it. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> Acked-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--target/linux/mvebu/base-files/lib/preinit/79_move_config18
-rw-r--r--target/linux/mvebu/base-files/lib/upgrade/clearfog.sh32
-rw-r--r--target/linux/mvebu/base-files/lib/upgrade/linksys.sh19
-rwxr-xr-xtarget/linux/mvebu/base-files/lib/upgrade/platform.sh16
-rw-r--r--target/linux/mvebu/image/Makefile2
5 files changed, 79 insertions, 8 deletions
diff --git a/target/linux/mvebu/base-files/lib/preinit/79_move_config b/target/linux/mvebu/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000000..b0ee62a809
--- /dev/null
+++ b/target/linux/mvebu/base-files/lib/preinit/79_move_config
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Copyright (C) 2015 OpenWrt.org
+
+BOOTPART=/dev/mmcblk0p1
+
+move_config() {
+ if [ -b $BOOTPART ]; then
+ insmod nls_cp437
+ insmod nls_iso8859-1
+ insmod fat
+ insmod vfat
+ mkdir -p /boot
+ mount -t vfat -o rw,noatime $BOOTPART /boot
+ [ -f /boot/sysupgrade.tgz ] && mv -f /boot/sysupgrade.tgz /
+ fi
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/mvebu/base-files/lib/upgrade/clearfog.sh b/target/linux/mvebu/base-files/lib/upgrade/clearfog.sh
new file mode 100644
index 0000000000..5388b22198
--- /dev/null
+++ b/target/linux/mvebu/base-files/lib/upgrade/clearfog.sh
@@ -0,0 +1,32 @@
+get_magic_at() {
+ local file="$1"
+ local pos="$2"
+ get_image "$file" | dd bs=1 count=2 skip="$pos" 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"'
+}
+
+platform_check_image_clearfog() {
+ local file="$1"
+ local magic
+
+ magic=$(get_magic_at "$file" 510)
+ [ "$magic" != "55aa" ] && {
+ echo "Failed to verify MBR boot signature."
+ return 1
+ }
+
+ return 0;
+}
+
+platform_do_upgrade_clearfog() {
+ sync
+ get_image "$1" | dd of=/dev/mmcblk0 bs=2M conv=fsync
+ sleep 1
+}
+
+platform_copy_config_clearfog() {
+ mkdir -p /boot
+ [ -f /boot/kernel.img ] || mount -t vfat -o rw,noatime /dev/mmcblk0p1 /boot
+ cp -af "$CONF_TAR" /boot/
+ sync
+ umount /boot
+}
diff --git a/target/linux/mvebu/base-files/lib/upgrade/linksys.sh b/target/linux/mvebu/base-files/lib/upgrade/linksys.sh
index fc403332bd..baa29dc335 100644
--- a/target/linux/mvebu/base-files/lib/upgrade/linksys.sh
+++ b/target/linux/mvebu/base-files/lib/upgrade/linksys.sh
@@ -74,13 +74,18 @@ platform_do_upgrade_linksys() {
}
linksys_preupgrade() {
- export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /usr/sbin/fw_printenv /usr/sbin/fw_setenv"
- export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /bin/mkdir /bin/touch"
- export RAMFS_COPY_DATA="${RAMFS_COPY_DATA} /etc/fw_env.config /var/lock/fw_printenv.lock"
+ local board=$(mvebu_board_name)
- [ -f /tmp/sysupgrade.tgz ] && {
- cp /tmp/sysupgrade.tgz /tmp/syscfg/sysupgrade.tgz
- }
+ case "$board" in
+ armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+ export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /usr/sbin/fw_printenv /usr/sbin/fw_setenv"
+ export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /bin/mkdir /bin/touch"
+ export RAMFS_COPY_DATA="${RAMFS_COPY_DATA} /etc/fw_env.config /var/lock/fw_printenv.lock"
+
+ [ -f /tmp/sysupgrade.tgz ] && {
+ cp /tmp/sysupgrade.tgz /tmp/syscfg/sysupgrade.tgz
+ }
+ ;;
+ esac
}
-append sysupgrade_pre_upgrade linksys_preupgrade
diff --git a/target/linux/mvebu/base-files/lib/upgrade/platform.sh b/target/linux/mvebu/base-files/lib/upgrade/platform.sh
index 2f699a745f..5652e98a4e 100755
--- a/target/linux/mvebu/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mvebu/base-files/lib/upgrade/platform.sh
@@ -20,6 +20,10 @@ platform_check_image() {
}
return 0;
;;
+ armada-388-clearfog)
+ platform_check_image_clearfog "$ARGV"
+ return $?
+ ;;
esac
echo "Sysupgrade is not yet supported on $board."
@@ -33,11 +37,23 @@ platform_do_upgrade() {
armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-shelby|armada-xp-linksys-mamba)
platform_do_upgrade_linksys "$ARGV"
;;
+ armada-388-clearfog)
+ platform_do_upgrade_clearfog "$ARGV"
+ ;;
*)
default_do_upgrade "$ARGV"
;;
esac
}
+platform_copy_config() {
+ local board=$(mvebu_board_name)
+
+ case "$board" in
+ armada-388-clearfog)
+ platform_copy_config_clearfog "$ARGV"
+ ;;
+ esac
+}
disable_watchdog() {
killall watchdog
diff --git a/target/linux/mvebu/image/Makefile b/target/linux/mvebu/image/Makefile
index 377f098cc5..b0cc1648ef 100644
--- a/target/linux/mvebu/image/Makefile
+++ b/target/linux/mvebu/image/Makefile
@@ -175,7 +175,7 @@ define Device/armada-388-clearfog
KERNEL_INSTALL := 1
KERNEL := dtb | kernel-bin
DEVICE_TITLE := SolidRun ClearFog
- DEVICE_PACKAGES := mkf2fs e2fsprogs swconfig
+ DEVICE_PACKAGES := mkf2fs e2fsprogs swconfig kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1
IMAGES := bundle.tar.gz sdcard.img.gz
IMAGE/bundle.tar.gz := clearfog-bundle
IMAGE/sdcard.img.gz := boot-scr | boot-img | sdcard-img | gzip