[openwrt/openwrt] ramips: add support for D-Link DIR-853 A3

LEDE Commits lede-commits at lists.infradead.org
Sun Jul 11 15:24:27 PDT 2021


adrian pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/6639623e75b84de5cf4a657be7a80383309e290d

commit 6639623e75b84de5cf4a657be7a80383309e290d
Author: Karim Dehouche <karimdplay at gmail.com>
AuthorDate: Tue Aug 18 11:19:16 2020 +0400

    ramips: add support for D-Link DIR-853 A3
    
    Specifications:
    * SoC: MT7621AT
    * RAM: 256MB
    * Flash: 128MB NAND flash
    * WiFi: MT7615DN (2.4GHz+5Ghz) with DBDC
    * LAN: 5x1000M
    * Firmware layout is Uboot with extra 96 bytes in header
    * Base PCB is DIR-1360 REV1.0
    * LEDs Power Blue+Orange,Wan Blue+Orange,WPS Blue,"2.4G"Blue, "5G" Blue,
      USB Blue
    * Buttons Reset,WPS, Wifi
    
    MAC addresses on OEM firmware:
    
    lan      factory 0xe000   f4:*:*:a8:*:65  (label)
    wan      factory 0xe006   f4:*:*:a8:*:68
    2.4 GHz  [not on flash]   f6:*:*:c8:*:66
    5.0 GHz  factory 0x4      f4:*:*:a8:*:66
    
    The increment of the 4th byte for the 2.4g address appears to vary.
    Reported cases:
    
           5g                 2.4g         increment
     f4:XX:XX:a8:XX:66  f6:XX:XX:c8:XX:66  +0x20
     x0:xx:xx:68:xx:xx  x2:xx:xx:48:xx:xx  -0x20
     x4:xx:xx:6a:xx:xx  x6:xx:xx:4a:xx:xx  -0x20
    
    Since increment is inconsistent and there is no obvious pattern
    in swapping bytes, and the 2.4g address has local bit set anyway,
    it seems safer to use the LAN address with flipped byte here in
    order to prevent collisions between OpenWrt devices and OEM devices
    for this interface. This way we at least use an address as base
    that is definitely owned by the device at hand.
    
    Flashing instruction:
    
    The Dlink "Emergency Room" cannot be accessed through the reset
    button on this device. You can either use console or use the
    encrypted factory image availble in the openwrt forum.
    
    Once the encrypted image is flashed throuh the stock Dlink web
    interface, the sysupgrade images can be used.
    
    Header pins needs to be soldered near the WPS and Wifi buttons.
    
    The layout for the pins is (VCC,RX,TX,GND). No need to connect the VCC.
    
    the settings are:
    
    Bps/Par/Bits          : 57600 8N1
    Hardware Flow Control : No
    Software Flow Control : No
    
    Connect your client computer to LAN1 of the device
    Set your client IP address manually to 192.168.0.101 / 255.255.255.0.
    Call the recovery page or tftp for the device at http://192.168.0.1
    Use the provided emergency web GUI to upload and flash a new firmware to
    the device
    
    At the time of adding support the wireless config needs to be set up by
    editing the wireless config file:
    
     * Setting the country code is mandatory, otherwise the router loses
       connectivity at the next reboot. This is mandatory and can be done
       from luci. After setting the country code the router boots correctly.
       A reset with the reset button will fix the issue and the user has to
       reconfigure.
    
     * This is minor since the 5g interface does not come up online although
       it is not set as disabled. 2 options here:
    
       1- Either run the "wifi" command. Can be added from LUCI in system -
          startup - local startup and just add wifi above "exit 0".
    
       2- Or add the serialize option in the wireless config file as shown
          below. This one would work and bring both interfaces automatically
          at every boot:
    
          config wifi-device 'radio0'
              option serialize '1'
    
          config wifi-device 'radio1'
              option serialize '1'
    
    Signed-off-by: Karim Dehouche <karimdplay at gmail.com>
    [rebase, improve MAC table, update wireless config comment, fix
     2.4g macaddr setup]
    Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/ramips/dts/mt7621_dlink_dir-853-a3.dts   | 204 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |   7 +
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   9 +-
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |   5 +
 .../mt7621/base-files/lib/upgrade/platform.sh      |   1 +
 5 files changed, 223 insertions(+), 3 deletions(-)

diff --git a/target/linux/ramips/dts/mt7621_dlink_dir-853-a3.dts b/target/linux/ramips/dts/mt7621_dlink_dir-853-a3.dts
new file mode 100644
index 0000000000..738bcdc7d6
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_dlink_dir-853-a3.dts
@@ -0,0 +1,204 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "dlink,dir-853-a3", "mediatek,mt7621-soc";
+	model = "D-Link DIR-853 A3";
+
+	aliases {
+		label-mac-device = &gmac0;
+		led-boot = &led_power_orange;
+		led-failsafe = &led_power_blue;
+		led-running = &led_power_blue;
+		led-upgrade = &led_net_orange;
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		wifi {
+			label = "wifi";
+			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_orange: power_orange {
+			label = "orange:power";
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+		};
+
+		led_power_blue: power_blue {
+			label = "blue:power";
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		led_net_orange: net_orange {
+			label = "orange:net";
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+		};
+
+		net_blue {
+			label = "blue:net";
+			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+		};
+
+		usb_blue {
+			label = "blue:usb";
+			gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
+			trigger-sources = <&xhci_ehci_port1>;
+			linux,default-trigger = "usbport";
+		};
+
+		wlan2g {
+			label = "blue:wlan2g";
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0radio";
+		};
+
+		wlan5g {
+			label = "blue:wlan5g";
+			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1radio";
+		};
+	};
+};
+
+&nand {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition at 0 {
+			label = "u-boot";
+			reg = <0x0 0x80000>;
+			read-only;
+		};
+
+		partition at 80000 {
+			label = "config";
+			reg = <0x80000 0x80000>;
+			read-only;
+		};
+
+		factory: partition at 100000 {
+			label = "factory";
+			reg = <0x100000 0x40000>;
+			read-only;
+		};
+
+		partition at 140000 {
+			label = "config2";
+			reg = <0x140000 0x40000>;
+			read-only;
+		};
+
+		partition at 180000 {
+			label = "firmware";
+			compatible = "openwrt,uimage", "denx,uimage";
+			openwrt,padding = <96>;
+			reg = <0x180000 0x2800000>;
+		};
+
+		partition at 2980000 {
+			label = "private";
+			reg = <0x2980000 0x2000000>;
+			read-only;
+		};
+
+		partition at 4980000 {
+			label = "firmware2";
+			reg = <0x4980000 0x2800000>;
+		};
+
+		partition at 7180000 {
+			label = "mydlink";
+			reg = <0x7180000 0x600000>;
+			read-only;
+		};
+
+		partition at 7780000 {
+			label = "reserved";
+			reg = <0x7780000 0x880000>;
+			read-only;
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie0 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x0>;
+		/* 5 GHz (phy1) does not take the address from calibration data,
+		   but setting it manually here works */
+		mtd-mac-address = <&factory 0x4>;
+	};
+};
+
+&gmac0 {
+	mtd-mac-address = <&factory 0xe000>;
+};
+
+&switch0 {
+	ports {
+		port at 0 {
+			status = "okay";
+			label = "lan4";
+		};
+
+		port at 1 {
+			status = "okay";
+			label = "lan3";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan1";
+		};
+
+		port at 4 {
+			status = "okay";
+			label = "wan";
+			mtd-mac-address = <&factory 0xe006>;
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "i2c", "uart2", "uart3", "jtag", "wdt";
+		function = "gpio";
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 853741f9af..ea0c3fc619 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -342,6 +342,13 @@ define Device/dlink_dir-2660-a1
 endef
 TARGET_DEVICES += dlink_dir-2660-a1
 
+define Device/dlink_dir-853-a3
+  $(Device/dlink_dir-xx60-a1)
+  DEVICE_MODEL := DIR-853
+  DEVICE_VARIANT := A3
+endef
+TARGET_DEVICES += dlink_dir-853-a3
+
 define Device/dlink_dir-853-r1
   $(Device/dlink_dir-8xx-r1)
   DEVICE_MODEL := DIR-853
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index 9545d8d0c7..d01ba53568 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -23,9 +23,6 @@ d-team,newifi-d2)
 	ucidef_set_led_netdev "wlan2g" "WiFi 2.4GHz" "blue:wlan2g" "wlan0"
 	ucidef_set_led_netdev "wlan5g" "WiFi 5GHz" "blue:wlan5g" "wlan1"
 	;;
-dlink,dir-853-r1)
-	ucidef_set_led_netdev "internet" "internet" "blue:net" "wan"
-	;;
 d-team,pbr-m1|\
 gehua,ghl-r-001|\
 jcg,y2|\
@@ -37,6 +34,12 @@ dlink,dir-2640-a1|\
 dlink,dir-2660-a1)
 	ucidef_set_led_netdev "wan" "wan" "white:net" "wan"
 	;;
+dlink,dir-853-a3)
+	ucidef_set_led_netdev "wan" "wan" "blue:net" "wan"
+	;;
+dlink,dir-853-r1)
+	ucidef_set_led_netdev "internet" "internet" "blue:net" "wan"
+	;;
 dlink,dir-860l-b1|\
 dlink,dir-867-a1|\
 dlink,dir-878-a1|\
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index ee847e947b..4349a3592d 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -10,6 +10,11 @@ PHYNBR=${DEVPATH##*/phy}
 board=$(board_name)
 
 case "$board" in
+	dlink,dir-853-a3)
+		[ "$PHYNBR" = "0" ] && \
+			macaddr_setbit_la "$(mtd_get_mac_binary factory 0xe000)" \
+				> /sys${DEVPATH}/macaddress
+		;;
 	dlink,dir-853-r1)
 		[ "$PHYNBR" = "0" ] && \
 			base_mac=$(mtd_get_mac_binary factory 0x4)
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index 18fea53aee..ef9b680f32 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -56,6 +56,7 @@ platform_do_upgrade() {
 	dlink,dir-1960-a1|\
 	dlink,dir-2640-a1|\
 	dlink,dir-2660-a1|\
+	dlink,dir-853-a3|\
 	hiwifi,hc5962|\
 	jcg,q20|\
 	linksys,e5600|\



More information about the lede-commits mailing list