From 190ee7d86b450083fea4236d588d0d88a50e1311 Mon Sep 17 00:00:00 2001 From: Vitaly Chekryzhev <13hakta@gmail.com> Date: Mon, 28 Nov 2016 23:41:51 +0500 Subject: [PATCH] ramips: add support for ZyXEL Keenetic Omni / Omni II Factory image can be installed via Zyxel WebUI. Signed-off-by: Vitaly Chekryzhev <13hakta@gmail.com> --- .../ramips/base-files/etc/board.d/01_leds | 2 + .../ramips/base-files/etc/board.d/02_network | 5 + target/linux/ramips/base-files/etc/diag.sh | 2 + target/linux/ramips/base-files/lib/ramips.sh | 6 + .../ramips/base-files/lib/upgrade/platform.sh | 2 + target/linux/ramips/dts/kn_rc.dts | 120 ++++++++++++++++++ target/linux/ramips/dts/kn_rf.dts | 120 ++++++++++++++++++ target/linux/ramips/image/mt7620.mk | 20 +++ 8 files changed, 277 insertions(+) create mode 100644 target/linux/ramips/dts/kn_rc.dts create mode 100644 target/linux/ramips/dts/kn_rf.dts diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds index 99720391a0..4a7b9f69c7 100755 --- a/target/linux/ramips/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/base-files/etc/board.d/01_leds @@ -207,6 +207,8 @@ ht-tm02) ucidef_set_led_netdev "eth" "Ethernet" "$board:green:lan" "eth0" set_wifi_led "$board:blue:wlan" ;; +kn_rc|\ +kn_rf|\ kng_rc) set_usb_led "$board:green:usb" set_wifi_led "$board:green:wifi" diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network index 2af5c45d8a..63bf123b73 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -203,6 +203,11 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" \ "1:lan" "2:lan" "3:lan" "4:lan" "5:lan" "0:wan" "6@eth0" ;; + kn_rc|\ + kn_rf) + ucidef_add_switch "switch" \ + "0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "6@eth0" + ;; kng_rc) ucidef_add_switch "switch1" \ "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "7t@eth0" diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh index abbe147d84..0b0b8d9777 100644 --- a/target/linux/ramips/base-files/etc/diag.sh +++ b/target/linux/ramips/base-files/etc/diag.sh @@ -24,6 +24,8 @@ get_status_led() { dir-860l-b1|\ e1700|\ fonera20n|\ + kn_rc|\ + kn_rf|\ kng_rc|\ mzk-750dhp|\ mzk-dp150n|\ diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index 3793e5824f..cc6f00fd55 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -595,6 +595,12 @@ ramips_board_detect() { *"ZBT-WR8305RT") name="zbt-wr8305rt" ;; + *"ZyXEL Keenetic Omni") + name="kn_rc" + ;; + *"ZyXEL Keenetic Omni II") + name="kn_rf" + ;; *"ZyXEL Keenetic Viva") name="kng_rc" ;; diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index 3c1fb4168c..2151cf945c 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -71,6 +71,8 @@ platform_check_image() { jhr-n805r|\ jhr-n825r|\ jhr-n926r|\ + kn_rc|\ + kn_rf|\ kng_rc|\ linkits7688|\ linkits7688d|\ diff --git a/target/linux/ramips/dts/kn_rc.dts b/target/linux/ramips/dts/kn_rc.dts new file mode 100644 index 0000000000..c63c1a3914 --- /dev/null +++ b/target/linux/ramips/dts/kn_rc.dts @@ -0,0 +1,120 @@ +/dts-v1/; + +#include "mt7620n.dtsi" + +#include +#include + +/ { + model = "ZyXEL Keenetic Omni"; + + gpio-leds { + compatible = "gpio-leds"; + + wan { + label = "kn_rc:green:wan"; + gpios = <&gpio0 38 GPIO_ACTIVE_LOW>; + }; + + usb { + label = "kn_rc:green:usb"; + gpios = <&gpio0 39 GPIO_ACTIVE_LOW>; + }; + + wifi { + label = "kn_rc:green:wifi"; + gpios = <&gpio0 72 GPIO_ACTIVE_LOW>; + }; + + power { + label = "kn_rc:green:power"; + gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; + }; + }; + + gpio-keys-polled { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + + reset { + label = "reset"; + gpios = <&gpio0 1 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + fn { + label = "fn"; + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +&spi0 { + status = "okay"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <10000000>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition@30000 { + label = "u-boot-env"; + reg = <0x30000 0x10000>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + label = "firmware"; + reg = <0x50000 0x7b0000>; + }; + }; +}; + +&pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "i2c", "wdt", "pa", "spi refclk", "wled"; + ralink,function = "gpio"; + }; + }; +}; + +ðernet { + mtd-mac-address = <&factory 0x4>; + ralink,port-map = "wllll"; +}; + +&wmac { + ralink,mtd-eeprom = <&factory 0>; +}; + +&ehci { + status = "okay"; +}; + +&ohci { + status = "okay"; +}; diff --git a/target/linux/ramips/dts/kn_rf.dts b/target/linux/ramips/dts/kn_rf.dts new file mode 100644 index 0000000000..22b16b05cc --- /dev/null +++ b/target/linux/ramips/dts/kn_rf.dts @@ -0,0 +1,120 @@ +/dts-v1/; + +#include "mt7620n.dtsi" + +#include +#include + +/ { + model = "ZyXEL Keenetic Omni II"; + + gpio-leds { + compatible = "gpio-leds"; + + wan { + label = "kn_rc:green:wan"; + gpios = <&gpio0 38 GPIO_ACTIVE_LOW>; + }; + + usb { + label = "kn_rc:green:usb"; + gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; + }; + + wifi { + label = "kn_rc:green:wifi"; + gpios = <&gpio0 72 GPIO_ACTIVE_LOW>; + }; + + power { + label = "kn_rc:green:power"; + gpios = <&gpio0 39 GPIO_ACTIVE_LOW>; + }; + }; + + gpio-keys-polled { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + + reset { + label = "reset"; + gpios = <&gpio0 1 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + fn { + label = "fn"; + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +&spi0 { + status = "okay"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <10000000>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition@30000 { + label = "u-boot-env"; + reg = <0x30000 0x10000>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + label = "firmware"; + reg = <0x50000 0x7b0000>; + }; + }; +}; + +&pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "i2c", "wdt", "pa", "spi refclk", "wled"; + ralink,function = "gpio"; + }; + }; +}; + +ðernet { + mtd-mac-address = <&factory 0x4>; + ralink,port-map = "wllll"; +}; + +&wmac { + ralink,mtd-eeprom = <&factory 0>; +}; + +&ehci { + status = "okay"; +}; + +&ohci { + status = "okay"; +}; diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk index 3f81d77832..0bd6c9dcd8 100644 --- a/target/linux/ramips/image/mt7620.mk +++ b/target/linux/ramips/image/mt7620.mk @@ -430,6 +430,26 @@ define Device/dch-m225 endef TARGET_DEVICES += dch-m225 +define Device/kn_rc + DTS := kn_rc + DEVICE_TITLE := ZyXEL Keenetic Omni + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport + IMAGES += factory.bin + IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | check-size $$$$(IMAGE_SIZE) | \ + zyimage -d 4882 -v "ZyXEL Keenetic Omni" +endef +TARGET_DEVICES += kn_rc + +define Device/kn_rf + DTS := kn_rf + DEVICE_TITLE := ZyXEL Keenetic Omni II + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport + IMAGES += factory.bin + IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | check-size $$$$(IMAGE_SIZE) | \ + zyimage -d 2102034 -v "ZyXEL Keenetic Omni II" +endef +TARGET_DEVICES += kn_rf + define Device/kng_rc DTS := kng_rc IMAGE_SIZE := $(ralink_default_fw_size_16M)