diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh index c9b7ded..6f12f28 100755 --- a/target/linux/ramips/base-files/etc/diag.sh +++ b/target/linux/ramips/base-files/etc/diag.sh @@ -185,6 +185,10 @@ get_status_led() { na930) status_led="na930:blue:power" ;; + y1 | \ + y1s) + status_led="lenovo:blue:power" + ;; esac } diff --git a/target/linux/ramips/base-files/etc/uci-defaults/01_leds b/target/linux/ramips/base-files/etc/uci-defaults/01_leds index e92a12e..cbd3ea2 100755 --- a/target/linux/ramips/base-files/etc/uci-defaults/01_leds +++ b/target/linux/ramips/base-files/etc/uci-defaults/01_leds @@ -195,6 +195,12 @@ case $board in set_usb_led "wr8305rt:usb" set_wifi_led "wr8305rt:wifi" ;; + y1 |\ + y1s) + ucidef_set_led_default "power" "power" "lenovo:blue:power" "1" + set_usb_led "lenovo:blue:usb" + set_wifi_led "lenovo:blue:wifi" + ;; esac ucidef_commit_leds diff --git a/target/linux/ramips/base-files/etc/uci-defaults/02_network b/target/linux/ramips/base-files/etc/uci-defaults/02_network index 40c60fe..3ebf544 100755 --- a/target/linux/ramips/base-files/etc/uci-defaults/02_network +++ b/target/linux/ramips/base-files/etc/uci-defaults/02_network @@ -177,6 +177,13 @@ ramips_setup_interfaces() ucidef_add_switch_vlan "switch0" "2" "4 6t" ;; + y1 |\ + y1s) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5 6t" + ucidef_add_switch_vlan "switch0" "2" "0 6t" + ;; d105 | \ na930 | \ omni-emb-hpm|\ @@ -242,7 +249,9 @@ ramips_setup_macs() dir-300-b7 | \ dir-320-b1 | \ psr-680w |\ - sl-r7205) + sl-r7205 |\ + y1 |\ + y1s) lan_mac=$(cat /sys/class/net/eth0/address) lan_mac=$(macaddr_setbit_la "$lan_mac") wan_mac=$(macaddr_add "$lan_mac" 1) diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index f7e04b7..cadebdf 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -319,6 +319,12 @@ ramips_board_detect() { *"ZBT WR8305RT") name="wr8305rt" ;; + *"Lenovo Y1") + name="y1" + ;; + *"Lenovo Y1S") + name="y1s" + ;; *) name="generic" ;; diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index 4a70691..798a1cc 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -95,7 +95,9 @@ platform_check_image() { wrtnode |\ x5 |\ x8 |\ - zbt-wa05) + zbt-wa05 |\ + y1 |\ + y1s) [ "$magic" != "27051956" ] && { echo "Invalid image type." return 1 diff --git a/target/linux/ramips/dts/Y1.dts b/target/linux/ramips/dts/Y1.dts new file mode 100644 index 0000000..0b7b082 --- /dev/null +++ b/target/linux/ramips/dts/Y1.dts @@ -0,0 +1,43 @@ +/dts-v1/; + +/include/ "Y1.dtsi" + +/ { + compatible = "lenovo,Y1", "ralink,mt7620a-soc"; + model = "Lenovo Y1"; + + ethernet@10100000 { + pinctrl-names = "default"; + pinctrl-0 = <&ephy_pins>; + mtd-mac-address = <&factory 0x4>; + ralink,port-map = "llllw"; + }; + + gpio-leds { + compatible = "gpio-leds"; + power1 { + label = "lenovo:blue:power"; + gpios = <&gpio0 9 1>; + }; + wlan1 { + label = "lenovo:blue:wifi"; + gpios = <&gpio3 0 1>; + }; + wlan2 { + label = "lenovo:blue:wifi5g"; + gpios = <&gpio2 10 1>; + }; + usb { + label = "lenovo:blue:usb"; + gpios = <&gpio2 12 1>; + }; + lan { + label = "lenovo:blue:lan"; + gpios = <&gpio2 15 1>; + }; + internet { + label = "lenovo:blue:internet"; + gpios = <&gpio2 11 1>; + }; + }; +}; diff --git a/target/linux/ramips/dts/Y1.dtsi b/target/linux/ramips/dts/Y1.dtsi new file mode 100644 index 0000000..06db2bb --- /dev/null +++ b/target/linux/ramips/dts/Y1.dtsi @@ -0,0 +1,105 @@ +/include/ "mt7620a.dtsi" + +/ { + chosen { + bootargs = "console=ttyS0,115200"; + }; + + palmbus@10000000 { + sysc@0 { + ralink,gpiomux = "i2c", "jtag"; + ralink,uartmux = "gpio"; + ralink,wdtmux = <1>; + }; + + gpio0: gpio@600 { + status = "okay"; + }; + + gpio2: gpio@660 { + status = "okay"; + }; + + gpio3: gpio@688 { + status = "okay"; + }; + + + spi@b00 { + status = "okay"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "w25q128"; + reg = <0 0>; + linux,modalias = "m25p80", "w25q128"; + 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 0xfb0000>; + }; + }; + }; + }; + + ehci@101c0000 { + status = "okay"; + }; + + ohci@101c1000 { + status = "okay"; + }; + + pcie@10140000 { + status = "okay"; + }; + + wmac@10180000 { + ralink,mtd-eeprom = <&factory 0>; + }; + + pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "uartf", "wled", "nd_sd"; + ralink,function = "gpio"; + }; + pa { + ralink,group = "pa"; + ralink,function = "pa"; + }; + }; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + reset { + label = "reset"; + gpios = <&gpio0 11 1>; + linux,code = <0x198>; + }; + }; +}; diff --git a/target/linux/ramips/dts/Y1S.dts b/target/linux/ramips/dts/Y1S.dts new file mode 100644 index 0000000..9ecac37 --- /dev/null +++ b/target/linux/ramips/dts/Y1S.dts @@ -0,0 +1,79 @@ +/dts-v1/; + +/include/ "Y1.dtsi" + +/ { + compatible = "lenovo,Y1S", "ralink,mt7620a-soc"; + model = "Lenovo Y1S"; + + ethernet@10100000 { + status = "okay"; + mtd-mac-address = <&factory 0x4>; + pinctrl-names = "default"; + pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>; + + ralink,port-map = "wllll"; + + port@4 { + status = "okay"; + phy-handle = <&phy4>; + phy-mode = "rgmii"; + }; + + port@5 { + status = "okay"; + phy-handle = <&phy5>; + phy-mode = "rgmii"; + }; + + mdio-bus { + status = "okay"; + + phy4: ethernet-phy@4 { + reg = <4>; + phy-mode = "rgmii"; + }; + + phy5: ethernet-phy@5 { + reg = <5>; + phy-mode = "rgmii"; + }; + }; + }; + + gsw@10110000 { + ralink,port4 = "gmac"; + }; + + gpio-leds { + compatible = "gpio-leds"; + power1 { + label = "lenovo:yellow:power"; + gpios = <&gpio0 14 1>; + }; + power2 { + label = "lenovo:blue:power"; + gpios = <&gpio0 9 1>; + }; + wlan1 { + label = "lenovo:yellow:wifi"; + gpios = <&gpio3 0 1>; + }; + wlan2 { + label = "lenovo:blue:wifi"; + gpios = <&gpio2 10 1>; + }; + usb1 { + label = "lenovo:yellow:usb"; + gpios = <&gpio2 13 1>; + }; + usb2 { + label = "lenovo:blue:usb"; + gpios = <&gpio2 12 1>; + }; + internet { + label = "lenovo:blue:internet"; + gpios = <&gpio2 11 1>; + }; + }; +}; diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index 62992cd..f9cdff0 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -716,6 +716,8 @@ Image/Build/Profile/DIR-810L=$(call BuildFirmware/CustomFlash/$(1),$(1),dir-810l na930_mtd_size=20971520 Image/Build/Profile/NA930=$(call BuildFirmware/CustomFlash/$(1),$(1),na930,NA930,$(na930_mtd_size)) Image/Build/Profile/MZK-750DHP=$(call BuildFirmware/Default8M/$(1),$(1),mzk-750dhp,MZK-750DHP) +Image/Build/Profile/Y1=$(call BuildFirmware/Default16M/$(1),$(1),Lenovo-y1,Y1) +Image/Build/Profile/Y1S=$(call BuildFirmware/Default16M/$(1),$(1),Lenovo-y1s,Y1S) ifeq ($(SUBTARGET),mt7620a) define Image/Build/Profile/Default @@ -730,6 +732,8 @@ define Image/Build/Profile/Default $(call Image/Build/Profile/WHR1166D,$(1)) $(call Image/Build/Profile/MZK-750DHP,$(1)) $(call Image/Build/Profile/NA930,$(1)) + $(call Image/Build/Profile/Y1,$(1)) + $(call Image/Build/Profile/Y1S,$(1)) endef endif diff --git a/target/linux/ramips/mt7620a/config-3.10 b/target/linux/ramips/mt7620a/config-3.10 index 6805dd9..1a9889e 100644 --- a/target/linux/ramips/mt7620a/config-3.10 +++ b/target/linux/ramips/mt7620a/config-3.10 @@ -1,6 +1,7 @@ CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y CONFIG_ARCH_DISCARD_MEMBLOCK=y CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_ARCH_HAS_RESET_CONTROLLER=y CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_REQUIRE_GPIOLIB=y @@ -78,6 +79,7 @@ CONFIG_HAVE_PERF_EVENTS=y CONFIG_HW_HAS_PCI=y CONFIG_HW_RANDOM=m CONFIG_HZ_PERIODIC=y +CONFIG_ICPLUS_PHY=y CONFIG_IMAGE_CMDLINE_HACK=y CONFIG_INET_LRO=y CONFIG_INITRAMFS_SOURCE=""