diff options
author | Christian Lamparter <chunkeey@googlemail.com> | 2016-07-20 15:44:54 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2016-07-22 09:48:12 +0200 |
commit | dc7efaefb53d4671893add07934839eb8d44934d (patch) | |
tree | 712375d1b97a8cea26ce5a97ac5cff14146937a3 /target/linux/apm821xx/base-files/lib | |
parent | d37d16488c7f41306daf0d6bc6ba948b3ee547a5 (diff) | |
download | upstream-dc7efaefb53d4671893add07934839eb8d44934d.tar.gz upstream-dc7efaefb53d4671893add07934839eb8d44934d.tar.bz2 upstream-dc7efaefb53d4671893add07934839eb8d44934d.zip |
apm821xx: add support for the Western Digital MyBook Live Series
Hardware Highlights:
This patch adds support for Western Digital MyBook Live Series:
CPU: AMCC PowerPC UNKNOWN (PVR=12c41c83) at 800 MHz (PLB=200, OPB=100, EBC=100 MHz)
32 kB I-Cache 32 kB D-Cache, 256 kB L2-Cache, 32 kB OnChip Memory
Board: Apollo-3G - APM82181 Board, 1*SATA
DRAM: 256 MB (2x NT5TU64M16GG-AC)
FLASH: 512 kB (SST 39VF040)
Ethernet: 1xRGMII - 1 Gbit - Broadcom PHY BCM54610
WARNING: The serial port needs a TTL/RS-232 v3.3 level converter!
The MyBook Live Duo additionally features a 1x USB 2.0 host port
and can support a second hard-drive.
This target produces two images for a target.
1. ext4 image
The extracted/raw image can be directly installed on
the internal HDD via "dd if=img.ext4 of=/dev/sdX".
This can either be done in place with the stock MyBook Live
firmware via ssh. Or by removing the HDD and writing the image
with a different PC.
The the compressed images are useful for sysupgrade.
2. recovery.tar image for TFTP and Serial.
extract the recovery.tar to a TFTP server directory.
On the MyBook Live (Duo) serial port - Hit Enter during u-boot and insert:
# setenv serverip 192.168.1.254; setenv ipaddr 192.168.1.1; run net_self
Where 192.168.1.254 is your TFTP server.
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Diffstat (limited to 'target/linux/apm821xx/base-files/lib')
4 files changed, 66 insertions, 0 deletions
diff --git a/target/linux/apm821xx/base-files/lib/apm821xx.sh b/target/linux/apm821xx/base-files/lib/apm821xx.sh index 82f85c56be..98e88cff6e 100755 --- a/target/linux/apm821xx/base-files/lib/apm821xx.sh +++ b/target/linux/apm821xx/base-files/lib/apm821xx.sh @@ -14,6 +14,10 @@ apm821xx_board_detect() { name="mr24" ;; + *"MyBook Live"*) + name="mbl" + ;; + *) name="unknown" ;; diff --git a/target/linux/apm821xx/base-files/lib/preinit/79_move_config b/target/linux/apm821xx/base-files/lib/preinit/79_move_config new file mode 100644 index 0000000000..7c651b8a13 --- /dev/null +++ b/target/linux/apm821xx/base-files/lib/preinit/79_move_config @@ -0,0 +1,13 @@ +#!/bin/sh + +BOOTPART=/dev/sda1 + +move_config() { + if [ -b $BOOTPART ]; then + mkdir -p /boot + mount -t ext4 -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/apm821xx/base-files/lib/upgrade/platform.sh b/target/linux/apm821xx/base-files/lib/upgrade/platform.sh index ddf775f4ae..d5b0986dd5 100755 --- a/target/linux/apm821xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/apm821xx/base-files/lib/upgrade/platform.sh @@ -11,6 +11,11 @@ platform_check_image() { [ "$#" -gt 1 ] && return 1 case "$board" in + mbl) + mbl_do_platform_check $board "$1" + return $?; + ;; + mr24) merakinand_do_platform_check $board "$1" return $?; @@ -41,6 +46,10 @@ platform_do_upgrade() { local board=$(apm821xx_board_name) case "$board" in + mbl) + mbl_do_upgrade "$ARGV" + ;; + *) default_do_upgrade "$ARGV" ;; @@ -51,6 +60,10 @@ platform_copy_config() { local board=$(apm821xx_board_name) case "$board" in + mbl) + mbl_copy_config + ;; + *) ;; esac diff --git a/target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh b/target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh new file mode 100644 index 0000000000..d7347516cb --- /dev/null +++ b/target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh @@ -0,0 +1,36 @@ +. /lib/functions.sh + +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"' +} + +mbl_do_platform_check() { + local board="$1" + local file="$2" + local magic + + magic=$(get_magic_at "$file" 510) + + [ "$magic" != "55aa" ] && { + echo "Failed to verify MBR boot signature." + return 1 + } + + return 0; +} + +mbl_do_upgrade() { + sync + get_image "$1" | dd of=/dev/sda bs=2M conv=fsync + sleep 1 +} + +mbl_copy_config() { + mkdir -p /boot + [ -f /boot/uImage ] || mount -t ext4 -o rw,noatime /dev/sda1 /boot + cp -af "$CONF_TAR" /boot/ + sync + umount /boot +} |