summaryrefslogtreecommitdiff
path: root/target/linux/apm821xx/base-files
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@googlemail.com>2016-07-20 15:44:54 +0200
committerFelix Fietkau <nbd@nbd.name>2016-07-22 09:48:12 +0200
commitdc7efaefb53d4671893add07934839eb8d44934d (patch)
tree712375d1b97a8cea26ce5a97ac5cff14146937a3 /target/linux/apm821xx/base-files
parentd37d16488c7f41306daf0d6bc6ba948b3ee547a5 (diff)
downloadmtk-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')
-rwxr-xr-xtarget/linux/apm821xx/base-files/etc/board.d/01_leds3
-rwxr-xr-xtarget/linux/apm821xx/base-files/etc/board.d/02_network1
-rwxr-xr-xtarget/linux/apm821xx/base-files/etc/diag.sh4
-rwxr-xr-xtarget/linux/apm821xx/base-files/lib/apm821xx.sh4
-rw-r--r--target/linux/apm821xx/base-files/lib/preinit/79_move_config13
-rwxr-xr-xtarget/linux/apm821xx/base-files/lib/upgrade/platform.sh13
-rw-r--r--target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh36
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
+}