[openwrt/openwrt] ramips: add support for D-Link DIR-878 A1

LEDE Commits lede-commits at lists.infradead.org
Mon Jul 13 16:45:36 EDT 2020


ynezz pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/d7233b0a6a9b8cb9207a74a8cb3d0525170cf504

commit d7233b0a6a9b8cb9207a74a8cb3d0525170cf504
Author: Mathieu Martin-Borret <mathieu.mb at protonmail.com>
AuthorDate: Fri Jul 10 13:49:20 2020 +1000

    ramips: add support for D-Link DIR-878 A1
    
    Specifications:
    
        SoC: MT7621AT
        RAM: 128MB
        Flash: 16MB NOR SPI flash
        WiFi: MT7615N (2.4GHz) and MT7615N (5Ghz)
        LAN: 5x1000M
        Firmware layout is Uboot with extra 96 bytes in header
        Base PCB is AP-MTKH7-0002
        LEDs Power Green,Power Orange,Internet Green,Internet Orange
        LEDs "2.4G" Green & "5G" Green connected directly to wifi module
        Buttons Reset,WPS,WIFI
    
    Flashing instructions:
    
    Upload image via emergency recovery mode
    Push and hold reset button (on the back of the device) until power led
    starts flashing (about 10 secs or so) while powering the device on.
    Give it ~30 seconds, to boot the recovery mode GUI
    Connect your client computer to LAN1 of the device
    Set your client IP address manually to 192.168.0.2 / 255.255.255.0.
    Call the recovery page 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. Some browsers/OS combinations are known not to work, so if
    you don't see the percentage complete displayed and moving within a few
    seconds, restart the procedure from scratch and try anoher one,
    or try the command line way.
    
    Alternative method using command line on Linux:
    curl -v -i -F "firmware=@openwrt-xxxx-squashfs-factory.bin" 192.168.0.1
    
    Signed-off-by: Mathieu Martin-Borret <mathieu.mb at protonmail.com>
    [use of generic uimage-padhdr in image generation code]
    Signed-off-by: Petr Štetiar <ynezz at true.cz>
---
 .../linux/ramips/dts/mt7621_dlink_dir-878-a1.dts   | 181 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  15 ++
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   3 +-
 3 files changed, 198 insertions(+), 1 deletion(-)

diff --git a/target/linux/ramips/dts/mt7621_dlink_dir-878-a1.dts b/target/linux/ramips/dts/mt7621_dlink_dir-878-a1.dts
new file mode 100644
index 0000000000..15c46cb5f7
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_dlink_dir-878-a1.dts
@@ -0,0 +1,181 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "dlink,dir-878-a1", "mediatek,mt7621-soc";
+	model = "D-Link DIR-878 A1";
+
+	aliases {
+		led-boot = &led_power_orange;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_net_orange;
+		label-mac-device = &gmac0;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,57600";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_orange: power_orange {
+			label = "dir-878-a1:orange:power";
+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+		};
+
+		led_power_green: power_green {
+			label = "dir-878-a1:green:power";
+			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+		};
+
+		led_net_orange: net_orange {
+			label = "dir-878-a1:orange:net";
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+		};
+
+		net_green {
+			label = "dir-878-a1:green:net";
+			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 15 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>;
+		};
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			factory: partition at 40000 {
+				label = "factory";
+				reg = <0x40000 0x20000>;
+				read-only;
+			};
+
+			partition at 60000 {
+				compatible = "sge,uimage";
+				label = "firmware";
+				reg = <0x60000 0xfa0000>;
+			};
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie0 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x0000>;
+		ieee80211-freq-limit = <2400000 2500000>;
+
+		led {
+			led-active-low;
+		};
+	};
+};
+
+&pcie1 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x8000>;
+		ieee80211-freq-limit = <5000000 6000000>;
+
+		led {
+			led-active-low;
+		};
+	};
+};
+
+&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", "uart3", "jtag", "wdt";
+		function = "gpio";
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 9e5bd811b0..48561d5ff9 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -236,6 +236,21 @@ define Device/dlink_dir-860l-b1
 endef
 TARGET_DEVICES += dlink_dir-860l-b1
 
+define Device/dlink_dir-878-a1
+  IMAGE_SIZE := 16000k
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := DIR-878
+  DEVICE_VARIANT := A1
+  DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware wpad-basic
+  KERNEL_INITRAMFS := $$(KERNEL) | uimage-padhdr 96
+  IMAGES += factory.bin
+  IMAGE/sysupgrade.bin := append-kernel | append-rootfs | uimage-padhdr 96 |\
+	pad-rootfs | append-metadata | check-size
+  IMAGE/factory.bin := append-kernel | append-rootfs | uimage-padhdr 96 |\
+	check-size
+endef
+TARGET_DEVICES += dlink_dir-878-a1
+
 define Device/d-team_newifi-d2
   $(Device/uimage-lzma-loader)
   IMAGE_SIZE := 32448k
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 a0f9b2b10d..02f264fb42 100755
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -26,7 +26,8 @@ d-team,pbr-m1|\
 gehua,ghl-r-001)
 	ucidef_set_led_netdev "internet" "internet" "$boardname:blue:internet" "wan"
 	;;
-dlink,dir-860l-b1)
+dlink,dir-860l-b1|\
+dlink,dir-878-a1)
 	ucidef_set_led_netdev "wan" "wan" "$boardname:green:net" "wan"
 	;;
 gnubee,gb-pc1|\



More information about the lede-commits mailing list