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 | |
parent | d37d16488c7f41306daf0d6bc6ba948b3ee547a5 (diff) | |
download | mtk-20170518-dc7efaefb53d4671893add07934839eb8d44934d.zip mtk-20170518-dc7efaefb53d4671893add07934839eb8d44934d.tar.gz mtk-20170518-dc7efaefb53d4671893add07934839eb8d44934d.tar.bz2 |
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')
7 files changed, 74 insertions, 0 deletions
diff --git a/target/linux/apm821xx/base-files/etc/board.d/01_leds b/target/linux/apm821xx/base-files/etc/board.d/01_leds index d5f4cc9..bcc7a9f 100755 --- a/target/linux/apm821xx/base-files/etc/board.d/01_leds +++ b/target/linux/apm821xx/base-files/etc/board.d/01_leds @@ -16,6 +16,9 @@ mr24) ucidef_set_led_wlan "wlan4" "WLAN4" "mr24:green:wifi4" "phy0tpt" ;; +mbl) + ;; + *) ;; esac diff --git a/target/linux/apm821xx/base-files/etc/board.d/02_network b/target/linux/apm821xx/base-files/etc/board.d/02_network index 4d53b2f..9525d8c 100755 --- a/target/linux/apm821xx/base-files/etc/board.d/02_network +++ b/target/linux/apm821xx/base-files/etc/board.d/02_network @@ -9,6 +9,7 @@ board_config_update board=$(apm821xx_board_name) case "$board" in +mbl | \ mr24) ucidef_set_interface_lan "eth0" ;; diff --git a/target/linux/apm821xx/base-files/etc/diag.sh b/target/linux/apm821xx/base-files/etc/diag.sh index 58301f8..bea66eb 100755 --- a/target/linux/apm821xx/base-files/etc/diag.sh +++ b/target/linux/apm821xx/base-files/etc/diag.sh @@ -5,6 +5,10 @@ get_status_led() { case $(apm821xx_board_name) in + mbl) + status_led="mbl:green:power" + ;; + mr24) status_led="mr24:green:power" ;; diff --git a/target/linux/apm821xx/base-files/lib/apm821xx.sh b/target/linux/apm821xx/base-files/lib/apm821xx.sh index 82f85c5..98e88cf 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 0000000..7c651b8 --- /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 ddf775f..d5b0986 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 0000000..d734751 --- /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 +} |