kirkwood: add support for Iomega Storcenter ix2-200
authorAdemar Arvati Filho <arvati@hotmail.com>
Fri, 6 Jul 2018 00:56:58 +0000 (00:56 +0000)
committerJohn Crispin <john@phrozen.org>
Mon, 30 Jul 2018 13:21:00 +0000 (15:21 +0200)
Iomega Storcenter ix2-200 is a dual SATA NAS powered by a Marvell
 Kirkwood SoC clocked at 1GHz. It has 256MB of RAM and 32MB of
 flash memory, 3x USB 2.0 and 1x 1Gbit/s NIC

Specification:
- SoC: Marvell Kirkwood 88F6281
- CPU/Speed: 1000Mhz
- Flash-Chip: Hynix NAND
- Flash size: 32 MiB,erase size:16 KiB,page size:512,OOB size:16
- RAM: 256MB
- LAN: 1x 1000 Mbps Ethernet
- WiFi: none
- 3x USB 2.0
- UART: for serial console

Installation instructions - easy steps:
1. download factory.bin and copy into tftp server
2. access uboot environment with serial cable and run
    ```
    setenv mainlineLinux yes
    setenv arcNumber 1682
    setenv console 'console=ttyS0,115200n8'
    setenv mtdparts 'mtdparts=orion_nand:0x100000@0x000000(u-boot)ro,0x20000@0xA0000(u-boot environment)ro,0x300000@0x100000(kernel),0x1C00000@0x400000(ubi)'
    setenv bootargs_root 'root='
    setenv bootcmd 'setenv bootargs ${console} ${mtdparts} ${bootargs_root}; nand read.e 0x800000 0x100000 0x300000; bootm 0x00800000'
    saveenv
    setenv serverip 192.168.1.1
    setenv ipaddr 192.168.1.13
    tftpboot 0x00800000 factory.bin
    nand erase 0x100000 $(filesize)
    nand write 0x00800000 0x100000 $(filesize)
    run bootcmd
    ```
3. access openwrt by dhcp ip address assigned by your router (p.ex: 192.168.1.13)

Installation steps nand bad blocks proof:
1. download initramfs-uImage and copy into usb ext2 partition
    ```
    mkfs.ext2 -L ext2 /dev/sdh1
    mount -t ext2 /dev/sdh1 /mnt
    cp initramfs-uImage /mnt/initramfs.bin
    umount /mnt
    ```
2. access uboot environment with serial cable and run
    ```
    setenv mainlineLinux yes
    setenv arcNumber 1682
    setenv console 'console=ttyS0,115200n8'
    setenv mtdparts 'mtdparts=orion_nand:0x100000@0x000000(u-boot)ro,0x20000@0xA0000(u-boot environment)ro,0x300000@0x100000(kernel),0x1C00000@0x400000(ubi)'
    setenv bootargs_root 'root='
    setenv bootcmd 'setenv bootargs ${console} ${mtdparts} ${bootargs_root}; nand read.e 0x800000 0x100000 0x300000; bootm 0x00800000'
    saveenv
    usb reset; ext2load usb 0:1 0x00800000 /initramfs.bin; bootm 0x00800000
    ```
3. log into openwrt and sysupgrade to install into flash
    ```
    sysupgrade -n /tmp/sysupgrade.bin
    ```
4. access openwrt by dhcp ip address assigned by your router (p.ex: 192.168.1.13)

Signed-off-by: Ademar Arvati Filho <arvati@hotmail.com>
package/boot/uboot-envtools/files/kirkwood
target/linux/kirkwood/base-files/etc/board.d/01_leds
target/linux/kirkwood/base-files/etc/board.d/02_network
target/linux/kirkwood/base-files/etc/diag.sh
target/linux/kirkwood/base-files/etc/init.d/hwmon_fancontrol [new file with mode: 0755]
target/linux/kirkwood/base-files/etc/init.d/nsa310_fancontrol [deleted file]
target/linux/kirkwood/image/Makefile
target/linux/kirkwood/patches-4.14/103-iomega-ix2-200.patch [new file with mode: 0644]
target/linux/kirkwood/patches-4.9/103-iomega-ix2-200.patch [new file with mode: 0644]

index 1612384..b5f7ddc 100644 (file)
@@ -15,6 +15,7 @@ board=$(board_name)
 case "$board" in
 cloudengines,pogoe02|\
 cloudengines,pogoplugv4|\
+iom,ix2-200|\
 linksys,viper|\
 raidsonic,ib-nas62x0|\
 seagate,dockstar|\
index 4e72e34..5cfc4cf 100755 (executable)
@@ -14,6 +14,9 @@ case "$board" in
        ucidef_set_led_default "health" "health" "pogo_e02:green:health" "1"
        ucidef_set_led_default "fault" "fault" "pogo_e02:orange:fault" "1"
        ;;
+"iom,ix2-200")
+       ucidef_set_led_timer "health" "health" "status:white:rebuild_led" "200" "800"
+       ;;
 "linksys,audi")
        ucidef_set_led_default "power" "power" "audi:green:power" "1"
        ;;
index 5d66e0f..15e51d8 100755 (executable)
@@ -17,6 +17,7 @@ case "$board" in
 "cloudengines,pogoe02"|\
 "cloudengines,pogoplugv4"|\
 "iom,iconnect-1.1"|\
+"iom,ix2-200"|\
 "raidsonic,ib-nas62x0"|\
 "seagate,dockstar"|\
 "seagate,goflexhome"|\
index 0667ad2..fc61846 100755 (executable)
@@ -15,6 +15,9 @@ get_status_led() {
        cloudengines,pogoplugv4)
                status_led="pogoplugv4:green:health"
                ;;
+       iom,ix2-200)
+               status_led="status:white:power_led"
+               ;;
        linksys,audi)
                status_led="audi:green:power"
                ;;
diff --git a/target/linux/kirkwood/base-files/etc/init.d/hwmon_fancontrol b/target/linux/kirkwood/base-files/etc/init.d/hwmon_fancontrol
new file mode 100755 (executable)
index 0000000..0adc5d0
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh /etc/rc.common
+
+START=98
+boot() {
+. /lib/functions.sh
+
+#configuring (lm85/lm63) onboard temp/fan controller to run the fan on its own
+#for more information, please read https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface
+
+case $(board_name) in
+zyxel,nsa310b)
+       path_to_hwmon='/sys/devices/platform/ocp@f1000000/f1011000.i2c/i2c-0/0-002e/hwmon/hwmon0'
+       echo 2 > "$path_to_hwmon/pwm1_enable" # fan is on pwm1
+       echo 1 > "$path_to_hwmon/pwm1_auto_channels" # temp1 is the only one that changes
+       echo 23000 > "$path_to_hwmon/temp1_auto_temp_min"
+       echo 43000 > "$path_to_hwmon/temp1_auto_temp_max" # next step is 49600 millicelsius, or 50 celsius, 43 celsius is better
+       ;;
+iom,ix2-200)
+       path_to_hwmon='/sys/class/hwmon/hwmon0'
+       echo 2 > "$path_to_hwmon/pwm1_enable" # fan is on pwm1
+       ;;
+esac
+}
diff --git a/target/linux/kirkwood/base-files/etc/init.d/nsa310_fancontrol b/target/linux/kirkwood/base-files/etc/init.d/nsa310_fancontrol
deleted file mode 100755 (executable)
index 10eb5aa..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=98
-boot() {
-. /lib/functions.sh
-
-#configuring lm85 onboard temp/fan controller to run the fan on its own
-#for more information, please read https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface
-
-path_to_hwmon='/sys/devices/platform/ocp@f1000000/f1011000.i2c/i2c-0/0-002e/hwmon/hwmon0'
-
-case $(board_name) in
-       zyxel,nsa310b)
-       echo 2 > "$path_to_hwmon/pwm1_enable" # fan is on pwm1
-       echo 1 > "$path_to_hwmon/pwm1_auto_channels" # temp1 is the only one that changes
-       echo 23000 > "$path_to_hwmon/temp1_auto_temp_min"
-       echo 43000 > "$path_to_hwmon/temp1_auto_temp_max" # next step is 49600 millicelsius, or 50 celsius, 43 celsius is better
-               ;;
-esac
-}
index fdf8609..84e749f 100644 (file)
@@ -62,6 +62,22 @@ define Device/iom_iconnect-1.1
 endef
 TARGET_DEVICES += iom_iconnect-1.1
 
+define Device/iom_ix2_200
+  DEVICE_TITLE := Iomega StorCenter ix2-200
+  DEVICE_DTS := kirkwood-iomega_ix2_200
+  DEVICE_PACKAGES += kmod-gpio-button-hotplug kmod-i2c-mv64xxx kmod-hwmon-lm63
+  DEVICE_TYPE:=nas
+  PAGESIZE := 512
+  SUBPAGESIZE := 256
+  BLOCKSIZE := 16KiB
+  KERNEL_SIZE := 3072k
+  KERNEL_IN_UBI := 0
+  UBINIZE_OPTS := -E 5  
+  IMAGE_SIZE := 32505856
+  IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | check-size $$$$(IMAGE_SIZE)
+endef
+TARGET_DEVICES += iom_ix2_200
+
 define Device/linksys_audi
   DEVICE_TITLE := Linksys EA3500 (Audi)
   DEVICE_PACKAGES := kmod-mwl8k swconfig wpad-mini kmod-gpio-button-hotplug
diff --git a/target/linux/kirkwood/patches-4.14/103-iomega-ix2-200.patch b/target/linux/kirkwood/patches-4.14/103-iomega-ix2-200.patch
new file mode 100644 (file)
index 0000000..5b479ab
--- /dev/null
@@ -0,0 +1,33 @@
+--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
++++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
+@@ -185,18 +185,18 @@
+       };
+       partition@a0000 {
+-              label = "env";
++              label = "u-boot environment";
+               reg = <0xa0000 0x20000>;
+               read-only;
+       };
+       partition@100000 {
+-              label = "uImage";
++              label = "kernel";
+               reg = <0x100000 0x300000>;
+       };
+       partition@400000 {
+-              label = "rootfs";
++              label = "ubi";
+               reg = <0x400000 0x1C00000>;
+       };
+ };
+@@ -210,7 +210,7 @@
+ };
+ &eth0 {
+-      status = "okay";
++      status = "disabled";
+       ethernet0-port@0 {
+               speed = <1000>;
+               duplex = <1>;
\ No newline at end of file
diff --git a/target/linux/kirkwood/patches-4.9/103-iomega-ix2-200.patch b/target/linux/kirkwood/patches-4.9/103-iomega-ix2-200.patch
new file mode 100644 (file)
index 0000000..5b479ab
--- /dev/null
@@ -0,0 +1,33 @@
+--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
++++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
+@@ -185,18 +185,18 @@
+       };
+       partition@a0000 {
+-              label = "env";
++              label = "u-boot environment";
+               reg = <0xa0000 0x20000>;
+               read-only;
+       };
+       partition@100000 {
+-              label = "uImage";
++              label = "kernel";
+               reg = <0x100000 0x300000>;
+       };
+       partition@400000 {
+-              label = "rootfs";
++              label = "ubi";
+               reg = <0x400000 0x1C00000>;
+       };
+ };
+@@ -210,7 +210,7 @@
+ };
+ &eth0 {
+-      status = "okay";
++      status = "disabled";
+       ethernet0-port@0 {
+               speed = <1000>;
+               duplex = <1>;
\ No newline at end of file