From: John Crispin <john@openwrt.org>
Date: Sun, 30 Mar 2014 09:16:15 +0000 (+0000)
Subject: lantiq: add support for Arcadyan ARV7519PW
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=e733242a2399fb444997a6c10f45f15d2166c872;p=openwrt%2Fstaging%2Fsvanheule.git

lantiq: add support for Arcadyan ARV7519PW

This patch adds almost full support for this board.

- WiFi is still not working
- USB will not power up. According to some reports, it may be a passive port

Signed-off-by: Antonios Vamporakis <ant@area128.com>

SVN-Revision: 40319
---

diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index 2d5e09d015..a849584fcf 100644
--- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -29,7 +29,7 @@ case "$FIRMWARE" in
 "RT2860.eeprom" )
 	local board=$(lantiq_board_id)
 	case $board in
-	ARV7510PW22|ARV7525PW|ARV752DPW|ARV752DPW22)
+	ARV7510PW22|ARV7519PW|ARV7525PW|ARV752DPW|ARV752DPW22)
 		rt2x00_eeprom_extract "board_config" 1040 512
 		;;
 	*)
diff --git a/target/linux/lantiq/base-files/etc/uci-defaults/02_network b/target/linux/lantiq/base-files/etc/uci-defaults/02_network
index 4903eb92d0..329fa2d72e 100644
--- a/target/linux/lantiq/base-files/etc/uci-defaults/02_network
+++ b/target/linux/lantiq/base-files/etc/uci-defaults/02_network
@@ -74,6 +74,15 @@ ARV4519PW|ARV7510PW22|ARV7518PW|ARV752DPW22)
 	ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5"
 	;;
 
+# rtl8306g
+ARV7519PW)
+	lan_mac=$(mtd_get_mac_binary board_config 22)
+	wan_mac=$(macaddr_add "$lan_mac" 1)
+	ucidef_set_interface_lan "eth0.1"
+	ucidef_add_switch "switch0" "1" "1"
+	ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4t"
+	;;
+
 WBMR)
 	ucidef_set_interface_lan "eth0.1"
 	ucidef_add_switch "switch0" "1" "1"
diff --git a/target/linux/lantiq/dts/ARV7519PW.dts b/target/linux/lantiq/dts/ARV7519PW.dts
new file mode 100644
index 0000000000..1478192663
--- /dev/null
+++ b/target/linux/lantiq/dts/ARV7519PW.dts
@@ -0,0 +1,213 @@
+/dts-v1/;
+
+/include/ "danube.dtsi"
+
+/ {
+	model = "ARV7519PW - Astoria Networks";
+
+	chosen {
+		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
+	};
+
+	memory@0 {
+		reg = <0x0 0x4000000>;
+	};
+
+	sram@1F000000 {
+		vmmc@107000 {
+			status = "okay";
+		};
+	};
+
+	fpi@10000000 {
+		localbus@0 {
+			nor-boot@0 {
+				compatible = "lantiq,nor";
+				bank-width = <2>;
+				reg = <0 0x0 0x2000000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				partition@0 {
+					label = "uboot";
+					reg = <0x00000 0x40000>;
+					read-only;
+				};
+
+				partition@40000 {
+					label = "uboot_env";
+					reg = <0x40000 0x20000>;
+				};
+
+				partition@60000 {
+					label = "firmware";
+					reg = <0x60000 0xf80000>;
+				};
+
+				partition@fe0000 {
+					label = "board_config";
+					reg = <0xfe0000 0x20000>;
+					read-only;
+				};
+			};
+
+			mac_addr {
+				compatible = "lantiq,eth-mac";
+				reg = <0 0xfe0016 0x6>;
+				mac-increment = <2>;
+			};
+		};
+
+		gpio: pinmux@E100B10 {
+			pinctrl-names = "default";
+			pinctrl-0 = <&state_default>;
+
+			state_default: pinmux {
+				ebu {
+					lantiq,groups = "ebu cs1";
+					lantiq,function = "ebu";
+				};
+				pci_in {
+					lantiq,groups = "req1";
+					lantiq,function = "pci";
+					lantiq,open-drain = <1>;
+					lantiq,pull = <2>;
+					lantiq,output = <0>;
+				};
+				pci_out {
+					lantiq,groups = "gnt1";
+					lantiq,function = "pci";
+					lantiq,pull = <0>;
+					lantiq,output = <1>;
+				};
+				pci_rst {
+					lantiq,pins = "io21";
+					lantiq,pull = <2>;
+					lantiq,output = <1>;
+				};
+				switch_rst {
+					lantiq,pins = "io19";
+					lantiq,pull = <2>;
+					lantiq,output = <1>;
+				};
+			};
+		};
+
+		etop@E180000 {
+			phy-mode = "mii";
+		};
+
+		/* warning: passive port
+		only works with active devices */
+		ifxhcd@E101000 {
+			status = "okay";
+		};
+
+		pci@E105400 {
+			status = "okay";
+			lantiq,external-clock;
+			gpio-reset = <&gpio 21 0>;
+			req-mask = <0xf>;
+		};    
+	};
+
+	ralink_eep {
+		compatible = "ralink,eeprom";
+		ralink,eeprom = "RT2860.eeprom";
+        };
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+
+		rfkill {
+			label = "rfkill";
+			gpios = <&gpio 11 1>;
+			linux,code = <0xf7>;
+		};
+		reset {
+			label = "reset";
+			gpios = <&gpio 28 1>;
+			linux,code = <0x198>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		power {
+			label = "power";
+			gpios = <&gpio 2 1>;
+			default-state = "off";
+		};
+		power2 {
+			label = "power2";
+			gpios = <&gpio 14 1>;
+		};
+		online {
+			label = "online";
+			gpios = <&gpio 3 1>;
+		};
+		online2 {
+			label = "online2";
+			gpios = <&gpio 30 1>;
+		};
+		wifi {
+			label = "wifi";
+			gpios = <&gpio 12 1>;
+		};
+		wifi2 {
+			label = "wifi2";
+			gpios = <&gpio 10 1>;
+		};
+		wifi3 {
+			label = "wifi3";
+			gpios = <&gpio 6 1>;
+		};
+		voice {
+			label = "voice";
+			gpios = <&gpio 31 1>;
+		};
+		wps {
+			label = "wps";
+			gpios = <&gpio 15 1>;
+		};
+		wps2 {
+			label = "wps2";
+			gpios = <&gpio 7 1>;
+		};
+		wps3 {
+			label = "wps3";
+			gpios = <&gpio 23 1>;
+		};
+		dsl {
+			label = "dsl";
+			gpios = <&gpio 4 1>;
+		};
+		lan {
+			label = "lan";
+			gpios = <&gpio 1 1>;
+		};
+		tv {
+			label = "tv";
+			gpios = <&gpio 20 1>;
+		};
+		upgrade {
+			label = "upgrade";
+			gpios = <&gpio 29 1>;
+		};
+	};
+
+	/* is there another way to "reserve" the GPIO? */
+	gpio_export {
+		compatible = "gpio-export";
+		#size-cells = <0>;
+
+		switch {
+			gpio-export,name = "switch";
+			gpio-export,output = <1>;
+			gpios = <&gpio 19 0>;
+		};
+	};
+};
diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile
index 4550fc4619..cd36d12ca1 100644
--- a/target/linux/lantiq/image/Makefile
+++ b/target/linux/lantiq/image/Makefile
@@ -269,6 +269,9 @@ Image/Build/Profile/ARV7510PW22=$(call Image/Build/$(1),$(1),ARV7510PW22)
 Image/BuildKernel/Profile/ARV7518PW=$(call Image/BuildKernel/Template,ARV7518PW)
 Image/Build/Profile/ARV7518PW=$(call Image/Build/$(1),$(1),ARV7518PW)
 
+Image/BuildKernel/Profile/ARV7519PW=$(call Image/BuildKernel/Template,ARV7519PW)
+Image/Build/Profile/ARV7519PW=$(call Image/Build/$(1),$(1),ARV7519PW)
+
 Image/BuildKernel/Profile/ARV752DPW=$(call Image/BuildKernel/Template,ARV752DPW)
 Image/Build/Profile/ARV752DPW=$(call Image/Build/$(1),$(1),ARV752DPW)
 
diff --git a/target/linux/lantiq/xway/profiles/arv.mk b/target/linux/lantiq/xway/profiles/arv.mk
index 9b172f266e..30cc7780bb 100644
--- a/target/linux/lantiq/xway/profiles/arv.mk
+++ b/target/linux/lantiq/xway/profiles/arv.mk
@@ -92,6 +92,18 @@ endef
 
 $(eval $(call Profile,ARV7518PW))
 
+define Profile/ARV7519PW
+  NAME:=Astoria - ARV7519PW
+  PACKAGES:=kmod-ltq-hcd-danube kmod-ledtrig-usbdev \
+	kmod-ltq-adsl-danube-mei kmod-ltq-adsl-danube \
+	kmod-ltq-adsl-danube-fw-a kmod-ltq-atm-danube \
+	ltq-adsl-app ppp-mod-pppoa \
+  	kmod-rt2800-pci wpad-mini \
+	swconfig
+endef
+
+$(eval $(call Profile,ARV7519PW))
+
 define Profile/ARV4520PW
   NAME:=Easybox 800, WAV-281 - ARV4520PW
   PACKAGES:=kmod-ltq-hcd-danube kmod-ledtrig-usbdev \