From 20b09a2125f5b35ade1f3e9cebb15fe03e3b4e3c Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Sat, 17 Nov 2018 08:47:40 +0000 Subject: [PATCH] ramips: add support for Lava LR-25G001 The Lava LR-25G001 Wireless Router is based on the MT7620A SoC. Specification: - MediaTek MT7620A (580 Mhz) - 64 MB of RAM - 16 MB of FLASH - 1x 802.11bgn radio - 1x 802.11ac radio (MT7610EN) - 5x 10/100/1000 Mbps AR8337 Switch (1 WAN AND 4 LAN) - 2x external, detachable antennas - 1x USB 2.0 - UART (J3) header on PCB (57600 8n1) - 8x LED (3x GPIO-controlled), 2x button - JBOOT bootloader Known issues: - Work only three Gigabit ports (3/5, 1 WAN and 2LAN) Installation: Apply factory image via http web-gui or JBOOT recovery page How to revert to OEM firmware: - push the reset button and turn on the power. Wait until LED start blinking (~10sec.) - upload original factory image via JBOOT http (IP: 192.168.123.254) Signed-off-by: Pawel Dembicki --- .../ramips/base-files/etc/board.d/01_leds | 4 + .../ramips/base-files/etc/board.d/02_network | 4 +- .../etc/hotplug.d/firmware/10-rt2x00-eeprom | 3 +- .../ramips/base-files/lib/upgrade/platform.sh | 3 +- target/linux/ramips/dts/LR-25G001.dts | 182 ++++++++++++++++++ target/linux/ramips/image/mt7620.mk | 15 ++ target/linux/ramips/mt7620/config-4.14 | 2 + 7 files changed, 210 insertions(+), 3 deletions(-) create mode 100644 target/linux/ramips/dts/LR-25G001.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 29d3c31275a..2f83f221f1c 100755 --- a/target/linux/ramips/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/base-files/etc/board.d/01_leds @@ -195,6 +195,10 @@ kn_rf|\ kng_rc) set_wifi_led "$boardname:green:wifi" ;; +lava,lr-25g001) + ucidef_set_led_netdev "wlan2g" "WiFi 2.4GHz" "$boardname:green:wlan2g" "wlan1" + ucidef_set_led_netdev "wlan5g" "WiFi 5GHz" "$boardname:green:wlan5g" "wlan0" + ;; linkits7688) ucidef_set_led_wlan "wifi" "wifi" "linkit-smart-7688:orange:wifi" "phy0tpt" ;; 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 6d5db45c504..043607df5bb 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -353,6 +353,7 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" \ "4:lan" "6@eth0" ;; + lava,lr-25g001|\ tew-691gr|\ tew-692gr|\ wlr-6000) @@ -475,7 +476,8 @@ ramips_setup_macs() ;; dlink,dwr-116-a1|\ dlink,dwr-118-a2|\ - dlink,dwr-921-c1) + dlink,dwr-921-c1|\ + lava,lr-25g001) wan_mac=$(jboot_config_read -m -i $(find_mtd_part "config") -o 0xE000) lan_mac=$(macaddr_add "$wan_mac" 1) ;; diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom index 711b8388bad..aee446d156d 100644 --- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom +++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom @@ -56,7 +56,8 @@ case "$FIRMWARE" in case $board in dlink,dwr-116-a1|\ dlink,dwr-118-a2|\ - dlink,dwr-921-c1) + dlink,dwr-921-c1|\ + lava,lr-25g001) wan_mac=$(jboot_config_read -m -i $(find_mtd_part "config") -o 0xE000) wifi_mac=$(macaddr_add "$wan_mac" 1) jboot_eeprom_extract "config" 0xE000 diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index f54f2fbe770..ecc4650f68d 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -295,7 +295,8 @@ platform_check_image() { dlink,dwr-116-a1|\ dlink,dwr-118-a2|\ dlink,dwr-921-c1|\ - dwr-512-b) + dwr-512-b|\ + lava,lr-25g001) [ "$magic" != "0404242b" ] && { echo "Invalid image type." return 1 diff --git a/target/linux/ramips/dts/LR-25G001.dts b/target/linux/ramips/dts/LR-25G001.dts new file mode 100644 index 00000000000..a89a6e57fb7 --- /dev/null +++ b/target/linux/ramips/dts/LR-25G001.dts @@ -0,0 +1,182 @@ +/dts-v1/; + +#include "mt7620a.dtsi" + +#include +#include + +/ { + compatible = "lava,lr-25g001", "ralink,mt7620a-soc"; + model = "LAVA LR-25G001"; + + aliases { + led-boot = &led_status; + led-failsafe = &led_status; + led-running = &led_status; + led-upgrade = &led_status; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + poll-interval = <20>; + + wps { + label = "wps"; + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + reset { + label = "reset"; + gpios = <&gpio0 1 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + led_status: status { + label = "lava,lr-25g001:green:status"; + gpios = <&gpio0 14 GPIO_ACTIVE_LOW>; + }; + + wifi2g { + label = "lava,lr-25g001:green:wifi2g"; + gpios = <&gpio0 11 GPIO_ACTIVE_LOW>; + }; + + wifi5g { + label = "lava,lr-25g001:green:wifi5g"; + gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; + }; + }; + + gpio_export { + compatible = "gpio-export"; + #size-cells = <0>; + + usbpower { + gpio-export,name = "usbpower"; + gpio-export,output = <1>; + gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&gpio0 { + status = "okay"; +}; + +&spi0 { + status = "okay"; + + mx25l12805d@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <10000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "jboot"; + reg = <0x0 0x10000>; + read-only; + }; + + partition@10000 { + label = "firmware"; + reg = <0x10000 0xfe0000>; + }; + + config: partition@ff0000 { + label = "config"; + reg = <0xff0000 0x10000>; + read-only; + }; + }; + }; +}; + +&ehci { + status = "okay"; +}; + +&ohci { + status = "okay"; +}; + +ðernet { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>; + + port@5 { + status = "okay"; + phy-mode = "rgmii"; + mediatek,fixed-link = <1000 1 1 1>; + }; + + mdio-bus { + status = "okay"; + mediatek,mdio-mode = <1>; + + phy0: ethernet-phy@0 { + reg = <0>; + phy-mode = "rgmii"; + qca,ar8327-initvals = < + 0x04 0x87300000 /* PORT0 PAD MODE CTRL */ + 0x0c 0x00000000 /* PORT6 PAD MODE CTRL */ + 0x7c 0x0000007e /* PORT0_STATUS */ + 0x94 0x00000000 /* PORT6_STATUS */ + + >; + }; + + phy1: ethernet-phy@1 { + reg = <1>; + phy-mode = "rgmii"; + }; + + phy2: ethernet-phy@2 { + reg = <2>; + phy-mode = "rgmii"; + }; + + phy3: ethernet-phy@3 { + reg = <3>; + phy-mode = "rgmii"; + }; + + phy4: ethernet-phy@4 { + reg = <4>; + phy-mode = "rgmii"; + }; + + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + mt76x0e@0,0 { + reg = <0x0000 0 0 0 0>; + mtd-mac-address = <&config 0xe07e>; + mtd-mac-address-increment = <(2)>; + mediatek,mtd-eeprom = <&config 0xe08a>; + }; +}; + +&pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "uartf", "i2c"; + ralink,function = "gpio"; + }; + }; +}; diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk index 61a6e56937a..5e3d37b5c84 100644 --- a/target/linux/ramips/image/mt7620.mk +++ b/target/linux/ramips/image/mt7620.mk @@ -352,6 +352,21 @@ define Device/microwrt endef TARGET_DEVICES += microwrt +define Device/lava_lr-25g001 + DTS := LR-25G001 + DEVICE_TITLE := LAVA LR-25G001 + DLINK_ROM_ID := LVA6E3804001 + DLINK_FAMILY_MEMBER := 0x6E38 + DLINK_FIRMWARE_SIZE := 0xFE0000 + KERNEL := $(KERNEL_DTB) + IMAGES += factory.bin + IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata + IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory + DEVICE_PACKAGES := jboot-tools kmod-usb2 kmod-mt76 kmod-mt76x0-common \ + kmod-mt76x0e +endef +TARGET_DEVICES += lava_lr-25g001 + define Device/miwifi-mini DTS := MIWIFI-MINI IMAGE_SIZE := $(ralink_default_fw_size_16M) diff --git a/target/linux/ramips/mt7620/config-4.14 b/target/linux/ramips/mt7620/config-4.14 index 1162ed47b28..e1a8e0c73bb 100644 --- a/target/linux/ramips/mt7620/config-4.14 +++ b/target/linux/ramips/mt7620/config-4.14 @@ -1,3 +1,4 @@ +CONFIG_AR8216_PHY=y CONFIG_ARCH_BINFMT_ELF_STATE=y CONFIG_ARCH_CLOCKSOURCE_DATA=y CONFIG_ARCH_DISCARD_MEMBLOCK=y @@ -57,6 +58,7 @@ CONFIG_DTB_RT_NONE=y # CONFIG_DTB_VOCORE2 is not set CONFIG_DTC=y CONFIG_EARLY_PRINTK=y +CONFIG_ETHERNET_PACKET_MANGLE=y CONFIG_FIXED_PHY=y CONFIG_GENERIC_ATOMIC64=y CONFIG_GENERIC_CLOCKEVENTS=y -- 2.30.2