ramips: add support for DLINK DIR-510L
authorPawel Dembicki <paweldembicki@gmail.com>
Mon, 19 Mar 2018 18:15:29 +0000 (19:15 +0100)
committerPetr Štetiar <ynezz@true.cz>
Sun, 24 Mar 2019 00:44:24 +0000 (01:44 +0100)
The DIR-510L Wireless Router are based on the MT7620A SoC.

Specification:

-MediaTek MT7620A (580 Mhz)
-128 MB of RAM
-16 MB of FLASH
-802.11bgn radio
-1x 10/100 Mbps Ethernet
-2x internal, non-detachable antennas
-UART (J3) header on PCB (57600 8n1)
-1x bi-color LED (GPIO-controlled), 2x button
-JBOOT bootloader

Known issues:
-Ethernet port is used as LAN
-No communication with charger IC. (uart bitbang needed)

Installation:
Apply factory image via d-link http web-gui.

How to revert to OEM firmware:
1.) Push the reset button and turn on the power. Wait until LED start blinking (~10sec.)
2.) Upload original factory image via JBOOT http (IP: 192.168.123.254)
3.) If http doesn't work, it can be done with curl command:
    curl -F FN=@XXXXX.bin http://192.168.123.254/upg
    where XXXXX.bin is name of firmware file.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
[fixed whitespace issue in 10-rt2x00-eeprom]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
target/linux/ramips/base-files/etc/board.d/02_network
target/linux/ramips/base-files/etc/board.d/03_gpio_switches
target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
target/linux/ramips/dts/DIR-510L.dts [new file with mode: 0644]
target/linux/ramips/image/mt7620.mk

index bf71aef5ec2c0b09277322fe1942c807cff1ea7c..bb5ff483c4282f2611f9617e55d700dcda033511 100755 (executable)
@@ -365,6 +365,7 @@ ramips_setup_interfaces()
                ucidef_add_switch "switch0" \
                        "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "5:wan" "6@eth0"
                ;;
+       dlink,dir-510l|\
        re350-v1)
                ucidef_add_switch "switch0" \
                        "0:lan" "6@eth0"
@@ -513,6 +514,7 @@ ramips_setup_macs()
                lan_mac=$(mtd_get_mac_ascii factory lanmac)
                wan_mac=$(mtd_get_mac_ascii factory wanmac)
                ;;
+       dlink,dir-510l|\
        dlink,dwr-116-a1|\
        dlink,dwr-118-a1|\
        dlink,dwr-118-a2|\
index a5f9124d12a57c81781a9a6f87712d267c1bebdd..80e3c4c41f0378b290d1b754c812e349b7c2a02e 100755 (executable)
@@ -7,6 +7,10 @@ board_config_update
 board=$(board_name)
 
 case "$board" in
+dlink,dir-510l)
+       ucidef_add_gpio_switch "usb_enable1" "USB 1A enable" "12" "0"
+       ucidef_add_gpio_switch "usb_enable05" "USB 0.5A enable" "13" "1"
+       ;;
 mikrotik,rb750gr3)
        ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "17"
        ;;
index 96a239719113575da1e6ceafddfb0dfa4a98b8f1..fc044c123eaf5577ded354e817a4bd6981f6d1f5 100644 (file)
@@ -54,6 +54,7 @@ board=$(board_name)
 case "$FIRMWARE" in
 "soc_wmac.eeprom")
        case $board in
+       dlink,dir-510l|\
        dlink,dwr-116-a1|\
        dlink,dwr-118-a1|\
        dlink,dwr-118-a2|\
diff --git a/target/linux/ramips/dts/DIR-510L.dts b/target/linux/ramips/dts/DIR-510L.dts
new file mode 100644 (file)
index 0000000..885e64f
--- /dev/null
@@ -0,0 +1,142 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7620a.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       compatible = "dlink,dir-510l", "ralink,mt7620a-soc";
+       model = "D-Link DIR-510L";
+
+       aliases {
+               led-boot = &led_status;
+               led-failsafe = &led_status;
+               led-running = &led_status;
+               led-upgrade = &led_status;
+       };
+
+       chosen {
+               bootargs = "console=ttyS1,57600";
+       };
+
+       keys {
+               compatible = "gpio-keys-polled";
+               poll-interval = <20>;
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_status: status {
+                       label = "dir-510l:green:status";
+                       gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
+               };
+
+               status-red {
+                       label = "dir-510l:red:status";
+                       gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
+               };
+
+       };
+};
+
+&ethernet {
+       mediatek,portmap = "llllw";
+};
+
+&uart {
+       status = "okay";
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "jboot";
+                               reg = <0x0 0x10000>;
+                               read-only;
+                       };
+
+                       partition@10000 {
+                               label = "recovery";
+                               reg = <0x10000 0x200000>;
+                               read-only;
+                       };
+
+                       partition@210000 {
+                               compatible = "amit,jimage";
+                               label = "firmware";
+                               reg = <0x210000 0xde0000>;
+                       };
+
+                       config: partition@ff0000 {
+                               label = "config";
+                               reg = <0xff0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&ehci {
+       status = "okay";
+};
+
+&ohci {
+       status = "okay";
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       mt76x0e@0,0 {
+               reg = <0x0000 0 0 0 0>;
+               mtd-mac-address = <&config 0xe490>;
+               mtd-mac-address-increment = <(2)>;
+               mediatek,mtd-eeprom = <&config 0xe05d>;
+       };
+};
+
+&gsw {
+       mediatek,port4 = "ephy";
+};
+
+&pinctrl {
+       state_default: pinctrl0 {
+               default {
+                       ralink,group = "i2c", "uartf";
+                       ralink,function = "gpio";
+               };
+       };
+};
+
index 234b6df09868f890f976e635f5671e0f61074d0f..da90568df0de9860af2ed5d64206df2291f38198 100644 (file)
@@ -190,6 +190,18 @@ define Device/dir-810l
 endef
 TARGET_DEVICES += dir-810l
 
+define Device/dlink_dir-510l
+  $(Device/amit_jboot)
+  DTS := DIR-510L
+  DEVICE_TITLE := D-Link DIR-510L
+  DEVICE_PACKAGES += kmod-mt76x0e
+  DLINK_ROM_ID := DLK6E3805001
+  DLINK_FAMILY_MEMBER := 0x6E38
+  DLINK_FIRMWARE_SIZE := 0xDE0000
+  DLINK_IMAGE_OFFSET := 0x210000
+endef
+TARGET_DEVICES += dlink_dir-510l
+
 define Device/dlink_dwr-116-a1
   $(Device/amit_jboot)
   DTS := DWR-116-A1