[openwrt/openwrt] ath79: add support for D-Link DIR-629 A1

LEDE Commits lede-commits at lists.infradead.org
Wed Jan 25 15:33:14 PST 2023


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/cfb296b79a9568386267828374eb5f2dd3ba0d37

commit cfb296b79a9568386267828374eb5f2dd3ba0d37
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Thu Jan 19 14:20:59 2023 +0000

    ath79: add support for D-Link DIR-629 A1
    
    Specifications:
      SOC:      QCA9588 CPU 720 MHz AHB 200 MHz
      Switch:   AR8236
      RAM:      64 MiB DDR2-600
      Flash:    8 MiB
      WLAN:     Wi-Fi4 2.4 GHz 3*3
      LAN:      LAN ports *4
      WAN:      WAN port *1
      Buttons:  reset *1 + wps *1
      LEDs: ethernet *5, power, wlan, wps
    
    MAC Address:
      use      address               source
      label    70:62:b8:xx:xx:96     lan && wlan
      lan      70:62:b8:xx:xx:96     mfcdata at 0x35
      wan      70:62:b8:xx:xx:97     mfcdata at 0x6a
      wlan     70:62:b8:xx:xx:96     mfcdata at 0x51
    
    Install via Web UI:
      Apply factory image in the stock firmware's Web UI.
    
    Install via Emergency Room Mode:
      DIR-629 A1 will enter recovery mode when the system fails to boot or
      press reset button for about 10 seconds.
    
      First, set IP address to 192.168.0.1 and server IP to 192.168.0.10.
      Then we can open http://192.168.0.1 in the web browser to upload
      OpenWrt factory image or stock firmware. Some modern browsers may
      need to turn on compatibility mode.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 .../linux/ath79/dts/qca9558_dlink_dir-629-a1.dts   | 170 +++++++++++++++++++++
 .../generic/base-files/etc/board.d/02_network      |   4 +
 .../base-files/etc/uci-defaults/09_fix-checksum    |   1 +
 target/linux/ath79/image/generic.mk                |  13 ++
 4 files changed, 188 insertions(+)

diff --git a/target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts b/target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts
new file mode 100644
index 0000000000..41b0039e93
--- /dev/null
+++ b/target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts
@@ -0,0 +1,170 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca955x.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	compatible = "dlink,dir-629-a1", "qca,qca9558";
+	model = "D-Link DIR-629 A1";
+
+	aliases {
+		label-mac-device = &eth0;
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+		serial0 = &uart;
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led-0 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		led_power: led-1 {
+			label = "green:power";
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_POWER;
+			gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
+		};
+
+		led-2 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WPS;
+			gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	phy-mode = "mii";
+
+	nvmem-cells = <&macaddr_mfcdata_35>;
+	nvmem-cell-names = "mac-address-ascii";
+
+	fixed-link {
+		speed = <100>;
+		full-duplex;
+	};
+};
+
+&mdio0 {
+	status = "okay";
+
+	switch0 at 1f {
+		compatible = "qca,ar8236";
+		reg = <0x1f>;
+	};
+};
+
+&spi {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <30000000>;
+		m25p,fast-read;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x000000 0x040000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "u-boot-env";
+				reg = <0x040000 0x008000>;
+				read-only;
+			};
+
+			partition at 48000 {
+				label = "mfcdata";
+				reg = <0x048000 0x008000>;
+				read-only;
+
+				compatible = "nvmem-cells";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				macaddr_mfcdata_35: macaddr at 35 {
+					reg = <0x35 0x11>;
+				};
+
+				macaddr_mfcdata_51: macaddr at 51 {
+					reg = <0x51 0x11>;
+				};
+			};
+
+			partition at 50000 {
+				label = "devconf";
+				reg = <0x050000 0x010000>;
+				read-only;
+			};
+
+			partition at 60000 {
+				label = "langpack";
+				reg = <0x060000 0x020000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "art";
+				reg = <0x080000 0x010000>;
+				read-only;
+
+				compatible = "nvmem-cells";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				cal_art_1000: calibration at 1000 {
+					reg = <0x1000 0x440>;
+				};
+			};
+
+			partition at 90000 {
+				compatible = "seama";
+				label = "firmware";
+				reg = <0x090000 0x770000>;
+			};
+		};
+	};
+};
+
+&wmac {
+	status = "okay";
+
+	nvmem-cells = <&cal_art_1000>, <&macaddr_mfcdata_51>;
+	nvmem-cell-names = "calibration", "mac-address-ascii";
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index 20352095a4..610e70e500 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -278,6 +278,7 @@ ath79_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0 at eth0" "1:lan:2" "2:lan:1"
 		;;
+	dlink,dir-629-a1|\
 	dlink,dir-825-c1|\
 	dlink,dir-835-a1|\
 	dlink,dir-842-c1|\
@@ -623,6 +624,9 @@ ath79_setup_macs()
 	dlink,dap-3662-a1)
 		label_mac=$(mtd_get_mac_ascii bdcfg "wlanmac")
 		;;
+	dlink,dir-629-a1)
+		wan_mac=$(mtd_get_mac_text "mfcdata" 0x6a)
+		;;
 	dlink,dir-825-b1|\
 	trendnet,tew-673gru)
 		lan_mac=$(mtd_get_mac_text "caldata" 0xffa0)
diff --git a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
index 92048fd810..4d961f26d2 100644
--- a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
+++ b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
@@ -21,6 +21,7 @@ dlink,dap-3320-a1|\
 dlink,dap-3662-a1)
 	fixwrgg
 	;;
+dlink,dir-629-a1|\
 qihoo,c301)
 	fix_seama_header
 	;;
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 7712247d39..3e32a08295 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1010,6 +1010,19 @@ define Device/dlink_dir-505
 endef
 TARGET_DEVICES += dlink_dir-505
 
+define Device/dlink_dir-629-a1
+  $(Device/seama)
+  SOC := qca9558
+  IMAGE_SIZE := 7616k
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := DIR-629
+  DEVICE_VARIANT := A1
+  DEVICE_PACKAGES := -uboot-envtools
+  SEAMA_MTDBLOCK := 6
+  SEAMA_SIGNATURE := wrgn83_dlob.hans_dir629
+endef
+TARGET_DEVICES += dlink_dir-629-a1
+
 define Device/dlink_dir-825-b1
   SOC := ar7161
   DEVICE_VENDOR := D-Link




More information about the lede-commits mailing list