From 083ef3fefecd024b2b9cdc496e1f7811c225041e Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Fri, 9 Sep 2016 00:57:31 +0200
Subject: [PATCH] ramips: add support for Mercury MAC1200R v2

MT7628AN + MT7612E, 8MB SPI flash, 64MB DDR RAM
reset button GPIO is still missing (anyone?)
bootloader password is 'slp'

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 .../ramips/base-files/etc/board.d/02_network  |  5 +
 target/linux/ramips/base-files/etc/diag.sh    |  1 +
 target/linux/ramips/base-files/lib/ramips.sh  |  3 +
 .../ramips/base-files/lib/upgrade/platform.sh |  1 +
 target/linux/ramips/dts/MAC1200RV2.dts        | 94 +++++++++++++++++++
 target/linux/ramips/image/mt7628.mk           |  7 ++
 6 files changed, 111 insertions(+)
 create mode 100644 target/linux/ramips/dts/MAC1200RV2.dts

diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 32bfa77f70..e9df34524b 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -72,6 +72,7 @@ ramips_setup_interfaces()
 	dir-615-h1|\
 	firewrt|\
 	hlk-rm04|\
+	mac1200rv2|\
 	miwifi-mini|\
 	miwifi-nano|\
 	mt7621|\
@@ -313,6 +314,10 @@ ramips_setup_macs()
 		wan_mac=$(mtd_get_mac_binary factory 4)
 		lan_mac=$(mtd_get_mac_binary factory 46)
 		;;
+	mac1200rv2)
+		lan_mac=$(mtd_get_mac_binary factory_info 13)
+		wan_mac=$(macaddr_add "$lan_mac" 1)
+		;;
 	m3|\
 	m4|\
 	x5|\
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 5693f6307e..969594d8a6 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -65,6 +65,7 @@ get_status_led() {
 	dir-620-d1|\
 	hpm|\
 	hw550-3g|\
+	mac1200rv2|\
 	miniembwifi|\
 	mofi3500-3gn|\
 	rut5xx|\
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 1e9fa90b5d..98bc68c397 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -250,6 +250,9 @@ ramips_board_detect() {
 	*"Memory 2 Move")
 		name="m2m"
 		;;
+	*"Mercury MAC1200R v2")
+		name="mac1200rv2"
+		;;
 	*"MicroWRT")
 		name="microwrt"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index d7f5a73e77..e3a74e0928 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -76,6 +76,7 @@ platform_check_image() {
 	m2m|\
 	m3|\
 	m4|\
+	mac1200rv2|\
 	microwrt|\
 	miniembplug|\
 	miniembwifi|\
diff --git a/target/linux/ramips/dts/MAC1200RV2.dts b/target/linux/ramips/dts/MAC1200RV2.dts
new file mode 100644
index 0000000000..9576081c82
--- /dev/null
+++ b/target/linux/ramips/dts/MAC1200RV2.dts
@@ -0,0 +1,94 @@
+/dts-v1/;
+
+/include/ "mt7628an.dtsi"
+
+/ {
+	compatible = "mercury,mac1200rv2", "mediatek,mt7628an-soc";
+	model = "Mercury MAC1200R v2";
+
+	chosen {
+		bootargs = "console=ttyS0,57600";
+	};
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x2000000>;
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		status {
+			label = "mac1200rv2:green:status";
+			gpios = <&gpio0 11 1>;
+		};
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	m25p80@0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "w25q128";
+		reg = <0 0>;
+		linux,modalias = "m25p80", "w25q128";
+		spi-max-frequency = <10000000>;
+		m25p,chunked-io = <32>;
+
+		partition@0 {
+			label = "u-boot";
+			reg = <0x0 0x1d800>;
+		};
+
+		factory: partition@0x1d800 {
+			label = "factory_info";
+			reg = <0x1d800 0x800>;
+			read-only;
+		};
+
+		art: partition@0x1e000 {
+			label = "art";
+			reg = <0x1e000 0x2000>;
+			read-only;
+		};
+
+		partition@20000 {
+			label = "config";
+			reg = <0x20000 0x10000>;
+		};
+
+		partition@30000 {
+			label = "u-boot2";
+			reg = <0x30000 0x10000>;
+		};
+
+		partition@40000 {
+			label = "firmware";
+			reg = <0x40000 0x7c0000>;
+		};
+	};
+};
+
+&ethernet {
+	pinctrl-names = "default";
+	mtd-mac-address = <&factory 0xd>;
+	ralink,port-map = "llllw";
+};
+
+&wmac {
+	status = "okay";
+	ralink,mtd-eeprom = <&art 0x0>;
+};
+
+&pcie {
+	status = "okay";
+	pcie-bridge {
+		mt76@0,0 {
+			reg = <0x0000 0 0 0 0>;
+			device_type = "pci";
+			mediatek,mtd-eeprom = <&art 0x1000>;
+			mediatek,2ghz = <0>;
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt7628.mk b/target/linux/ramips/image/mt7628.mk
index fa7d1e77f2..0647acf3ad 100644
--- a/target/linux/ramips/image/mt7628.mk
+++ b/target/linux/ramips/image/mt7628.mk
@@ -33,3 +33,10 @@ define Device/duzun-dm06
   DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-ledtrig-usbdev
 endef
 TARGET_DEVICES += duzun-dm06
+
+define Device/mac1200r-v2
+  DTS := MAC1200RV2
+  IMAGE_SIZE := $(ralink_default_fw_size_8M)
+  DEVICE_TITLE := Mercury MAC1200R v2.0
+endef
+TARGET_DEVICES += mac1200r-v2
-- 
GitLab