diff options
Diffstat (limited to 'target/linux/oxnas/base-files')
-rwxr-xr-x | target/linux/oxnas/base-files/etc/board.d/01_leds | 27 | ||||
-rwxr-xr-x | target/linux/oxnas/base-files/etc/board.d/02_network | 22 | ||||
-rw-r--r-- | target/linux/oxnas/base-files/etc/diag.sh | 41 | ||||
-rwxr-xr-x | target/linux/oxnas/base-files/init.d/set-irq-affinity | 22 | ||||
-rwxr-xr-x | target/linux/oxnas/base-files/lib/oxnas.sh | 66 | ||||
-rw-r--r-- | target/linux/oxnas/base-files/lib/preinit/01_preinit_do_oxnas.sh | 9 | ||||
-rw-r--r-- | target/linux/oxnas/base-files/lib/upgrade/platform.sh | 18 |
7 files changed, 205 insertions, 0 deletions
diff --git a/target/linux/oxnas/base-files/etc/board.d/01_leds b/target/linux/oxnas/base-files/etc/board.d/01_leds new file mode 100755 index 0000000000..5d665093f6 --- /dev/null +++ b/target/linux/oxnas/base-files/etc/board.d/01_leds @@ -0,0 +1,27 @@ +#!/bin/sh + +. /lib/functions/uci-defaults.sh + +board=$(board_name) +board_config_update + +case $board in + akitio) + ucidef_set_led_default "status" "status" "akitio:red:status" "0" + ;; + stg212) + ucidef_set_led_default "power" "power" "zyxel:blue:status" "1" + ucidef_set_led_usbdev "usb" "USB" "zyxel:orange:copy" "1-1" + ;; + kd20) + ucidef_set_led_default "power" "power" "kd20:blue:status" "1" + ;; + pogoplug-pro | pogoplug-v3) + ucidef_set_led_default "power" "power" "pogoplug:blue:internal" "1" + ;; + +esac + +board_config_flush + +exit 0 diff --git a/target/linux/oxnas/base-files/etc/board.d/02_network b/target/linux/oxnas/base-files/etc/board.d/02_network new file mode 100755 index 0000000000..7ecaed51bf --- /dev/null +++ b/target/linux/oxnas/base-files/etc/board.d/02_network @@ -0,0 +1,22 @@ +#!/bin/sh + +. /lib/functions/uci-defaults.sh +. /lib/functions/system.sh +. /lib/oxnas.sh + +board_config_update + +lan_mac="" + +case "$(board_name)" in + kd20) + lan_mac="$(legacy_boot_mac_adr)" + ;; +esac + +ucidef_set_interface_lan "eth0" "dhcp" +[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" "$lan_mac" + +board_config_flush + +exit 0 diff --git a/target/linux/oxnas/base-files/etc/diag.sh b/target/linux/oxnas/base-files/etc/diag.sh new file mode 100644 index 0000000000..fd3bc3b336 --- /dev/null +++ b/target/linux/oxnas/base-files/etc/diag.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# Copyright (C) 2009-2013 OpenWrt.org + +. /lib/functions.sh +. /lib/functions/leds.sh + +get_status_led() { + case $(board_name) in + akitio) + status_led="akitio:red:status" + ;; + stg212) + status_led="zyxel:blue:status" + ;; + kd20) + status_led="kd20:blue:status" + ;; + pogoplug-pro | pogoplug-v3) + status_led="pogoplug:blue:internal" + ;; + esac +} + +set_state() { + get_status_led + + case "$1" in + preinit) + status_led_blink_preinit + ;; + failsafe) + status_led_blink_failsafe + ;; + preinit_regular) + status_led_blink_preinit_regular + ;; + done) + status_led_on + ;; + esac +} diff --git a/target/linux/oxnas/base-files/init.d/set-irq-affinity b/target/linux/oxnas/base-files/init.d/set-irq-affinity new file mode 100755 index 0000000000..8ab066ff4c --- /dev/null +++ b/target/linux/oxnas/base-files/init.d/set-irq-affinity @@ -0,0 +1,22 @@ +#!/bin/sh /etc/rc.common + +START=99 + +get_irq() { + local name="$1" + grep -m 1 "$name" /proc/interrupts | cut -d: -f1 | sed 's, *,,' +} + +set_irq_affinity() { + local name="$1" + local val="$2" + local irq="$(get_irq "$name")" + [ -n "$irq" ] || return + echo "$val" > "/proc/irq/$irq/smp_affinity" +} + +start() { + set_irq_affinity ehci_hcd 2 + set_irq_affinity xhci_hcd 2 + set_irq_affinity sata 2 +} diff --git a/target/linux/oxnas/base-files/lib/oxnas.sh b/target/linux/oxnas/base-files/lib/oxnas.sh new file mode 100755 index 0000000000..671dd05fa2 --- /dev/null +++ b/target/linux/oxnas/base-files/lib/oxnas.sh @@ -0,0 +1,66 @@ +#!/bin/sh +# +# Copyright (C) 2013 OpenWrt.org +# + +OXNAS_BOARD_NAME= +OXNAS_MODEL= + +bootloader_cmdline_var() { + local param + local pval + for arg in $(cat /proc/device-tree/chosen/bootloader-args); do + param="$(echo $arg | cut -d'=' -f 1)" + pval="$(echo $arg | cut -d'=' -f 2-)" + + if [ "$param" = "$1" ]; then + echo "$pval" + fi + done +} + +legacy_boot_mac_adr() { + local macstr + local oIFS + macstr="$(bootloader_cmdline_var mac_adr)" + oIFS="$IFS" + IFS="," + set -- $macstr + printf "%02x:%02x:%02x:%02x:%02x:%02x" $1 $2 $3 $4 $5 $6 + IFS="$oIFS" +} + +oxnas_board_detect() { + local machine + local name + + machine=$(cat /proc/device-tree/model) + + case "$machine" in + *"Akitio MyCloud mini"*) + name="akitio" + ;; + *"MitraStar Technology Corp. STG-212"*) + name="stg212" + ;; + *"Shuttle KD20"*) + name="kd20" + ;; + *"Pogoplug Pro"*) + name="pogoplug-pro" + ;; + *"Pogoplug V3"*) + name="pogoplug-v3" + ;; + esac + + [ -z "$name" ] && name="unknown" + + [ -z "$OXNAS_BOARD_NAME" ] && OXNAS_BOARD_NAME="$name" + [ -z "$OXNAS_MODEL" ] && OXNAS_MODEL="$machine" + + [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/" + + echo "$OXNAS_BOARD_NAME" > /tmp/sysinfo/board_name + echo "$OXNAS_MODEL" > /tmp/sysinfo/model +} diff --git a/target/linux/oxnas/base-files/lib/preinit/01_preinit_do_oxnas.sh b/target/linux/oxnas/base-files/lib/preinit/01_preinit_do_oxnas.sh new file mode 100644 index 0000000000..ca7bce1054 --- /dev/null +++ b/target/linux/oxnas/base-files/lib/preinit/01_preinit_do_oxnas.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +do_oxnas() { + . /lib/oxnas.sh + + oxnas_board_detect +} + +boot_hook_add preinit_main do_oxnas diff --git a/target/linux/oxnas/base-files/lib/upgrade/platform.sh b/target/linux/oxnas/base-files/lib/upgrade/platform.sh new file mode 100644 index 0000000000..059d75f9a9 --- /dev/null +++ b/target/linux/oxnas/base-files/lib/upgrade/platform.sh @@ -0,0 +1,18 @@ +# +# Copyright (C) 2014 OpenWrt.org +# + +REQUIRE_IMAGE_METADATA=1 + +platform_check_image() { + local board=$(board_name) + + [ "$ARGC" -gt 1 ] && return 1 + + nand_do_platform_check $board $1 + return $? +} + +platform_do_upgrade() { + nand_do_upgrade $1 +} |