2
0
Эх сурвалжийг харах

ramips: add support for DLINK DIR-510L

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 [email protected] http://192.168.123.254/upg
    where XXXXX.bin is name of firmware file.

Signed-off-by: Pawel Dembicki <[email protected]>
[fixed whitespace issue in 10-rt2x00-eeprom]
Signed-off-by: Petr Štetiar <[email protected]>
Pawel Dembicki 7 жил өмнө
parent
commit
67fced9ba3

+ 2 - 0
target/linux/ramips/base-files/etc/board.d/02_network

@@ -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|\

+ 4 - 0
target/linux/ramips/base-files/etc/board.d/03_gpio_switches

@@ -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"
 	;;

+ 1 - 0
target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom

@@ -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|\

+ 142 - 0
target/linux/ramips/dts/DIR-510L.dts

@@ -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";
+		};
+	};
+};
+

+ 12 - 0
target/linux/ramips/image/mt7620.mk

@@ -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