From 5722b32acf21fc6d928333fc1333d397f75c1f86 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Wed, 18 Sep 2013 16:31:37 +0000
Subject: [PATCH] ralink: DIR-300 B7 and DIR-320/NRU B1 on Ralink RT5350

https://dev.openwrt.org/ticket/14129

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 38040
---
 target/linux/ramips/base-files/etc/diag.sh    |   2 +-
 .../etc/hotplug.d/firmware/10-rt2x00-eeprom   |   2 +
 .../base-files/etc/uci-defaults/01_leds       |   2 +
 .../base-files/etc/uci-defaults/02_network    |   4 +
 .../base-files/lib/preinit/06_set_iface_mac   |   4 +-
 target/linux/ramips/base-files/lib/ramips.sh  |   6 +
 .../ramips/base-files/lib/upgrade/platform.sh |   2 +
 target/linux/ramips/dts/DIR-300-B7.dts        |  96 ++++++++++++++
 target/linux/ramips/dts/DIR-320-B1.dts        | 119 ++++++++++++++++++
 target/linux/ramips/image/Makefile            |   5 +
 10 files changed, 240 insertions(+), 2 deletions(-)
 create mode 100644 target/linux/ramips/dts/DIR-300-B7.dts
 create mode 100644 target/linux/ramips/dts/DIR-320-B1.dts

diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index c0fdc88877..c8f73e7971 100755
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -27,7 +27,7 @@ get_status_led() {
 	d105)
 		status_led="d105:red:power"
 		;;
-	dir-300-b1 | dir-600-b1 | dir-600-b2 | dir-610-a1 | dir-615-h1 | dir-615-d | dir-620-a1| dir-620-d1)
+	dir-300-b1 | dir-600-b1 | dir-600-b2 | dir-610-a1 | dir-615-h1 | dir-615-d | dir-620-a1| dir-620-d1| dir-300-b7| dir-320-b1)
 		status_led="d-link:green:status"
 		;;
 	dir-645)
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index a80ea4ff49..a56781787d 100644
--- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -68,6 +68,8 @@ case "$FIRMWARE" in
 	br6524n | \
 	carambola | \
 	d105 | \
+	dir-300-b7 | \
+	dir-320-b1 | \
 	dir-610-a1 | \
 	dir-615-h1 | \
 	dir-620-a1 | \
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/01_leds b/target/linux/ramips/base-files/etc/uci-defaults/01_leds
index 64c7c5e469..7f9ca40722 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/01_leds
+++ b/target/linux/ramips/base-files/etc/uci-defaults/01_leds
@@ -78,6 +78,8 @@ case $board in
 		ucidef_set_led_default "power" "POWER" "dlink:green:power" "1"
 		;;
 	dir-610-a1 |\
+	dir-300-b7 |\
+	dir-320-b1 |\
 	esr-9753)
 		set_wifi_led "rt2800pci-phy0::radio"
 		;;
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/02_network b/target/linux/ramips/base-files/etc/uci-defaults/02_network
index e444ef246d..0184ef4df7 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/02_network
+++ b/target/linux/ramips/base-files/etc/uci-defaults/02_network
@@ -78,6 +78,8 @@ ramips_setup_interfaces()
 		;;
 
 	dir-610-a1 | \
+	dir-300-b7 | \
+	dir-320-b1 | \
 	dir-615-h1 | \
 	mzk-w300nh2)
 		ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
@@ -177,6 +179,8 @@ ramips_setup_macs()
 	ip2202 | \
 	mpr-a1 | \
 	mpr-a2 | \
+	dir-300-b7 | \
+	dir-320-b1 | \
 	mzk-w300nh2 | \
 	nw718 | \
 	psr-680w | \
diff --git a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
index 44cab3aa19..0c4ee13930 100644
--- a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
+++ b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
@@ -13,6 +13,7 @@ preinit_set_mac_address() {
 	3g-6200nl |\
 	3g300m | \
 	dir-620-d1 |\
+	dir-300-b7 | \
 	w150m | \
 	mzk-w300nh2 |\
 	wl-330n |\
@@ -28,7 +29,8 @@ preinit_set_mac_address() {
 	freestation5 |\
 	mpr-a1 | \
 	mpr-a2 | \
-	nw718 |\
+	dir-300-b7 | \
+	dir-320-b1 | \
 	psr-680w |\
 	rt-n56u |\
 	sl-r7205)
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 066f3bdb40..a92e8189b9 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -67,6 +67,12 @@ ramips_board_detect() {
 	*"DIR-300 B1")
 		name="dir-300-b1"
 		;;
+	*"DIR-300 B7")
+		name="dir-300-b7"
+		;;
+	*"DIR-320/NRU B1")
+		name="dir-320-b1"
+		;;
 	*"DIR-600 B1")
 		name="dir-600-b1"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index 4545af009c..cc8ca89aa5 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -30,6 +30,8 @@ platform_check_image() {
 	carambola | \
 	d105 | \
 	dir-300-b1 | \
+	dir-300-b7 | \
+	dir-320-b1 | \
 	dir-600-b1 | \
 	dir-600-b2 | \
 	dir-615-h1 | \
diff --git a/target/linux/ramips/dts/DIR-300-B7.dts b/target/linux/ramips/dts/DIR-300-B7.dts
new file mode 100644
index 0000000000..22c4cb2c6b
--- /dev/null
+++ b/target/linux/ramips/dts/DIR-300-B7.dts
@@ -0,0 +1,96 @@
+/dts-v1/;
+
+/include/ "rt5350.dtsi"
+
+/ {
+	compatible = "DIR-300-B7", "ralink,rt5350-soc";
+	model = "D-Link DIR-300 B7";
+
+	palmbus@10000000 {
+		spi@b00 {
+			status = "okay";
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "s25fl064k";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "s25fl064k";
+				spi-max-frequency = <10000000>;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0 0x30000>;
+					read-only;
+				};
+
+				partition@30000 {
+					label = "u-boot-env";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "factory";
+					reg = <0x40000 0x10000>;
+					read-only;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0x7b0000>;
+				};
+			};
+		};
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+        esw@10110000 {
+                ralink,portmap = <0x2f>;
+                ralink,led_polarity = <0x17>;
+        };
+
+        gpio-leds {
+                compatible = "gpio-leds";
+                status {
+                        label = "d-link:green:status";
+                        gpios = <&gpio0 9 1>;
+                };
+                wps {
+                        label = "d-link:blue:wps";
+                        gpios = <&gpio0 13 1>;
+                };
+        };
+
+        gpio-keys-polled {
+                gpio-keys-polled {
+                compatible = "gpio-keys-polled";
+                #address-cells = <1>;
+                #size-cells = <0>;
+                poll-interval = <20>;
+                        reset {
+                                label = "reset";
+                                gpios = <&gpio0 10 1>;
+                                linux,code = <0x198>;
+                        };
+                        wps {
+                                label = "wps";
+                                gpios = <&gpio0 0 1>;
+                                linux,code = <0x211>;
+                        };
+                };
+        };
+
+        wmac@10180000 {
+                status = "okay";
+		ralink,led-polarity = <1>;
+        };
+};
+
diff --git a/target/linux/ramips/dts/DIR-320-B1.dts b/target/linux/ramips/dts/DIR-320-B1.dts
new file mode 100644
index 0000000000..2d8e402f69
--- /dev/null
+++ b/target/linux/ramips/dts/DIR-320-B1.dts
@@ -0,0 +1,119 @@
+/dts-v1/;
+
+/include/ "rt5350.dtsi"
+
+/ {
+	compatible = "DIR-320-B1", "ralink,rt5350-soc";
+	model = "D-Link DIR-320 B1";
+
+	palmbus@10000000 {
+		spi@b00 {
+			status = "okay";
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "s25fl064k";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "s25fl064k";
+				spi-max-frequency = <10000000>;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0 0x30000>;
+					read-only;
+				};
+
+				partition@30000 {
+					label = "u-boot-env";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "factory";
+						reg = <0x40000 0x10000>;
+					read-only;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0x7b0000>;
+				};
+			};
+		};
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+	esw@10110000 {
+		ralink,portmap = <0x2f>;
+		ralink,led_polarity = <0x17>;
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		status {
+			label = "d-link:green:status";
+			gpios = <&gpio0 9 1>;
+		};
+		usb {
+			label = "d-link:green:usb";
+			gpios = <&gpio0 14 1>;
+		};		
+		wps {
+			label = "d-link:green:wps";
+			gpios = <&gpio0 13 1>;
+		};
+	};
+
+	gpio-keys-polled {
+		gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+			reset {
+				label = "reset";
+				gpios = <&gpio0 10 1>;
+				linux,code = <0x198>;
+			};
+			wps {
+				label = "wps";
+				gpios = <&gpio0 0 1>;
+				linux,code = <0x211>;
+			};
+		};
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c0000 {
+		status = "okay";
+	};
+
+	gpio_export {
+		compatible = "gpio-export";
+		#size-cells = <0>;
+
+		usb {
+			gpio-export,name = "usb";
+			gpio-export,output = <1>;
+			gpios = <&gpio0 7 0>;
+		};
+	
+		root_hub {
+			gpio-export,name = "root_hub";
+			gpio-export,output = <1>;
+			gpios = <&gpio0 12 0>;
+		};
+	};
+}; 
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 2891aaf1ef..f4bb5686e8 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -388,6 +388,9 @@ Image/Build/Profile/MOFI3500-3GN=$(call BuildFirmware/Default8M/$(1),$(1),mofi35
 Image/Build/Profile/MPRA1=$(call BuildFirmware/Default4M/$(1),$(1),mpr-a1,MPRA1,Linux Kernel Image)
 Image/Build/Profile/MPRA2=$(call BuildFirmware/Default8M/$(1),$(1),mpr-a2,MPRA2,Linux Kernel Image)
 
+Image/Build/Profile/DIR-300-B7=$(call BuildFirmware/Default4M/$(1),$(1),dir-300-b7,DIR-300-B7)
+Image/Build/Profile/DIR-320-B1=$(call BuildFirmware/Default4M/$(1),$(1),dir-320-b1,DIR-320-B1)
+
 Image/Build/Profile/NBG-419N=$(call BuildFirmware/Default4M/$(1),$(1),nbg-419n,NBG-419N)
 
 Image/Build/Profile/MZKW300NH2=$(call BuildFirmware/Edimax/$(1),$(1),mzk-w300nh2,MZK-W300NH2,$(mzkw300nh2_mtd_size),CSYS,RN52,0x50000,0xc0000)
@@ -506,6 +509,8 @@ define Image/Build/Profile/Default
 	$(call Image/Build/Profile/D105,$(1))
 	$(call Image/Build/Profile/DIR-300-B1,$(1))
 	$(call Image/Build/Profile/DIR-600-B1,$(1))
+	$(call Image/Build/Profile/DIR-300-B7,$(1))
+	$(call Image/Build/Profile/DIR-320-B1,$(1))
 	$(call Image/Build/Profile/DIR-600-B2,$(1))
 	$(call Image/Build/Profile/DIR610A1,$(1))
 	$(call Image/Build/Profile/DIR-615-D,$(1))
-- 
GitLab