From 54c096527a43bf70a8cf158e081274158534e829 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Fri, 21 Dec 2012 13:47:55 +0000
Subject: [PATCH] more devicetree fixes

SVN-Revision: 34824
---
 target/linux/lantiq/image/EASY80920.dtsi |   2 +-
 target/linux/lantiq/image/FRITZ3370.dts  | 278 +++++++++++++++++++++++
 target/linux/lantiq/image/Makefile       |   3 +
 target/linux/lantiq/image/WBMR.dts       |   8 +-
 target/linux/lantiq/image/ar9.dtsi       |   4 +-
 target/linux/lantiq/image/vr9.dtsi       |  41 +++-
 target/linux/lantiq/xway/profiles/avm.mk |  11 +-
 7 files changed, 341 insertions(+), 6 deletions(-)
 create mode 100644 target/linux/lantiq/image/FRITZ3370.dts

diff --git a/target/linux/lantiq/image/EASY80920.dtsi b/target/linux/lantiq/image/EASY80920.dtsi
index 03cebd7120..e32ad53d37 100644
--- a/target/linux/lantiq/image/EASY80920.dtsi
+++ b/target/linux/lantiq/image/EASY80920.dtsi
@@ -254,7 +254,7 @@
 			#address-cells = <3>;
 			#size-cells = <2>;
 			#interrupt-cells = <1>;
-			compatible = "lantiq,pci-xway";
+			compatible = "lantiq,pci-xway1";
 			bus-range = <0x0 0x0>;
 			ranges = <0x2000000 0 0x8000000 0x8000000 0 0x2000000   /* pci memory */
 				0x1000000 0 0x00000000 0xAE00000 0 0x200000>; /* io space */
diff --git a/target/linux/lantiq/image/FRITZ3370.dts b/target/linux/lantiq/image/FRITZ3370.dts
new file mode 100644
index 0000000000..f0c7e34610
--- /dev/null
+++ b/target/linux/lantiq/image/FRITZ3370.dts
@@ -0,0 +1,278 @@
+/dts-v1/;
+
+/include/ "vr9.dtsi"
+
+/ {
+	model = "FRITZ3370 - Fritz!Box WLAN 3370";
+
+	chosen {
+		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
+	};
+
+	memory@0 {
+		reg = <0x0 0x4000000>;
+	};
+	
+	fpi@10000000 {
+		localbus@0 {
+			nand-parts@0 {
+				compatible = "gen_nand", "lantiq,nand-xway";
+				bank-width = <2>;
+				reg = <1 0x0 0x2000000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				partition@0 {
+					label = "linux";
+					reg = <0x00000 0x400000>;
+				};
+
+				partition@400000 {
+					label = "filesystem";
+					reg = <0x400000 0x3000000>;
+				};
+
+				partition@3400000 {
+					label = "reserved-kernel";
+					reg = <0x3400000 0x400000>;
+				};
+				partition@3800000 {
+					label = "reserved";
+					reg = <0x3800000 0x3000000>;
+				};
+				partition@6800000 {
+					label = "config";
+					reg = <0x6800000 0x200000>;
+				};
+				partition@6a00000 {
+					label = "nand-filesystem";
+					reg = <0x6a00000 0x1600000>;
+				};
+			};
+		};
+
+		spi@E100800 {
+			compatible = "lantiq,spi-xway-broken";
+			reg = <0xE100800 0x100>;
+			interrupt-parent = <&icu0>;
+			interrupts = <22 23 24>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "s25fl129p0";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "mx25l3205d";
+				spi-max-frequency = <1000000>;
+
+				partition@0 {
+					reg = <0x0 0x20000>;
+					label = "SPI (RO) U-Boot Image";
+					read-only;
+				};
+
+				partition@20000 {
+					reg = <0x20000 0x10000>;
+					label = "ENV_MAC";
+					read-only;
+				};
+
+				partition@30000 {
+					reg = <0x30000 0x10000>;
+					label = "DPF";
+					read-only;
+				};
+
+				partition@40000 {
+					reg = <0x40000 0x10000>;
+					label = "NVRAM";
+					read-only;
+				};
+
+				partition@500000 {
+					reg = <0x50000 0x003a0000>;
+					label = "kernel";
+				};
+			};
+		};
+
+		gpio: pinmux@E100B10 {
+			pinctrl-names = "default";
+			pinctrl-0 = <&state_default>;
+
+			state_default: pinmux {
+				spi {
+					lantiq,groups = "spi", "spi_cs4";
+					lantiq,function = "spi";
+				};
+				nand_out {
+					lantiq,groups = "nand cle", "nand ale",	"nand rd", "ebu a23", "ebu a24";
+					lantiq,function = "ebu";
+					lantiq,direction = <1>;
+					lantiq,pull = <0>;
+				};
+				nand_in {
+					lantiq,groups = "nand rdy";
+					lantiq,function = "ebu";
+					lantiq,direction = <0>;
+					lantiq,open-drain = <1>;
+					lantiq,pull = <2>;
+				};
+				mdio {
+					lantiq,groups = "mdio";
+					lantiq,function = "mdio";
+				};
+				phy-rst {
+					lantiq,pins = "io37", "io44";
+					lantiq,pull = <0>;
+					lantiq,open-drain = <0>;
+					lantiq,output = <1>;
+				};
+				pcie-rst {
+					lantiq,pins = "io38";
+					lantiq,pull = <0>;
+					lantiq,output = <1>;
+				};
+			};
+		};
+
+		eth@E108000 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "lantiq,xrx200-net";
+			reg = <	0xE108000 0x3000 /* switch */
+				0xE10B100 0x70 /* mdio */
+				0xE10B1D8 0x30 /* mii */
+				0xE10B308 0x30 /* pmac */
+			>;
+			interrupt-parent = <&icu0>;
+			interrupts = <73 72>;
+
+			lan: interface@0 {
+				compatible = "lantiq,xrx200-pdi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0>;
+				mac-address = [ 00 11 22 33 44 55 ];
+
+				ethernet@0 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <0>;
+					phy-mode = "rgmii";
+					phy-handle = <&phy0>;
+					gpios = <&gpio 37 0>;
+				};
+				ethernet@1 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <1>;
+					phy-mode = "rgmii";
+					phy-handle = <&phy1>;
+					gpios = <&gpio 44 0>;
+				};
+				ethernet@2 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <2>;
+					phy-mode = "gmii";
+					phy-handle = <&phy11>;
+				};
+				ethernet@3 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <4>;
+					phynmode0 = "gmii";
+					phy-handle = <&phy13>;
+				};
+			};
+
+			mdio@0 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "lantiq,xrx200-mdio";
+				phy0: ethernet-phy@0 {
+					reg = <0x0>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+					lantiq,c45-reg-init = <1 0 0 0>; 
+				};
+				phy1: ethernet-phy@1 {
+					reg = <0x1>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+					lantiq,c45-reg-init = <1 0 0 0>; 
+				};
+				phy11: ethernet-phy@11 {
+					reg = <0x11>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+					lantiq,c45-reg-init = <1 0 0 0>; 
+				};
+				phy13: ethernet-phy@13 {
+					reg = <0x13>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+					lantiq,c45-reg-init = <1 0 0 0>; 
+				};
+			};
+		};
+
+		ifxhcd@E101000 {
+			status = "okay";
+			gpios = <&gpio 5 0
+				&gpio 14 0>;
+			lantiq,portmask = <0x3>;
+		};
+	};
+
+	gphy-xrx200 {
+		compatible = "lantiq,phy-xrx200";
+		firmware = "lantiq/vr9_phy11g_a1x.bin";
+		phys = [ 00 01 ];
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+		power {
+			label = "power";
+			gpios = <&gpio 1 0>;
+			linux,code = <0x100>;
+		}; 
+/*		wifi {
+			label = "wifi";
+			gpios = <&gpio 29 0>;
+			linux,code = <0x101>;
+		};*/
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		
+		power {
+			label = "power";
+			gpios = <&gpio 32 1>;
+		};
+		power2 {
+			label = "power2";
+			gpios = <&gpio 33 1>;
+		};
+		info_red {
+			label = "info_red";
+			gpios = <&gpio 34 1>;
+		};
+		wifi {
+			label = "wifi";
+			gpios = <&gpio 35 1>;
+		};
+		dsl {
+			label = "dsl";
+			gpios = <&gpio 36 1>;
+		};
+		lan {
+			label = "lan";
+			gpios = <&gpio 38 1>;
+		};
+		info_green {
+			label = "info_green";
+			gpios = <&gpio 47 1>;
+		};
+	};
+};
diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile
index 2c206339f4..440c1486c4 100644
--- a/target/linux/lantiq/image/Makefile
+++ b/target/linux/lantiq/image/Makefile
@@ -183,6 +183,9 @@ Image/Build/Profile/EASY80920NAND=$(call Image/Build/$(1),$(1),EASY80920NAND)
 Image/BuildKernel/Profile/EASY80920NOR=$(call Image/BuildKernel/Template,EASY80920NOR)
 Image/Build/Profile/EASY80920NOR=$(call Image/Build/$(1),$(1),EASY80920NOR)
 
+Image/BuildKernel/Profile/FRITZ3370=$(call Image/BuildKernelEVA/Template,FRITZ3370)
+Image/Build/Profile/FRITZ3370=$(call Image/BuildEVA/$(1),$(1),FRITZ3370)
+
 endif
 
 
diff --git a/target/linux/lantiq/image/WBMR.dts b/target/linux/lantiq/image/WBMR.dts
index d9c976741f..1291c86d80 100644
--- a/target/linux/lantiq/image/WBMR.dts
+++ b/target/linux/lantiq/image/WBMR.dts
@@ -39,6 +39,12 @@
 					reg = <0x60000 0x1f20000>;
 				};
 
+				partition@0x1fc0000 {
+					label = "board";
+					reg = <0x1fc0000 0x20000>;
+					read-only;
+				};
+
 				partition@0x1fe0000 {
 					label = "calibration";
 					reg = <0x1fe0000 0x20000>;
@@ -109,7 +115,7 @@
 		eject {
 			label = "eject";
 			gpios = <&gpio 34 1>;
-			linux,code = <0x108>;
+			linux,code = <0xf7>;
 		};
 		movie {
 			label = "movie";
diff --git a/target/linux/lantiq/image/ar9.dtsi b/target/linux/lantiq/image/ar9.dtsi
index 2398563595..63c7d61678 100644
--- a/target/linux/lantiq/image/ar9.dtsi
+++ b/target/linux/lantiq/image/ar9.dtsi
@@ -120,7 +120,7 @@
 		};
 
 		deu@E103100 {
-			compatible = "lantiq,deu-ar9";
+			compatible = "lantiq,deu-arx100";
 			reg = <0xE103100 0xf00>;
 		};
 
@@ -174,6 +174,6 @@
 	};
 
 	adsl {
-		compatible = "lantiq,adsl-ar9";
+		compatible = "lantiq,adsl-arx100";
 	};
 };
diff --git a/target/linux/lantiq/image/vr9.dtsi b/target/linux/lantiq/image/vr9.dtsi
index 4c1923be84..c7a28d77aa 100644
--- a/target/linux/lantiq/image/vr9.dtsi
+++ b/target/linux/lantiq/image/vr9.dtsi
@@ -80,6 +80,14 @@
 		ranges = <0x0 0x10000000 0xEEFFFFF>;
 		reg = <0x10000000 0xEF00000>;
 
+		localbus@0 {
+			#address-cells = <2>;
+			#size-cells = <1>;
+			ranges = <0 0 0x0 0x3ffffff /* addrsel0 */
+				1 0 0x4000000 0x4000010>; /* addsel1 */
+			compatible = "lantiq,localbus", "simple-bus";
+		};
+
 		gptu@E100A00 {
 			compatible = "lantiq,gptu-xway";
 			reg = <0xE100A00 0x100>;
@@ -87,6 +95,21 @@
                         interrupts = <126 127 128 129 130 131>;
 		};
 
+		asc0: serial@E100400 {
+			compatible = "lantiq,asc";
+			reg = <0xE100400 0x400>;
+			interrupt-parent = <&icu0>;
+			interrupts = <104 105 106>;
+			status = "disabled";
+		};
+
+		gpio: pinmux@E100B10 {
+			compatible = "lantiq,pinctrl-xr9";
+			#gpio-cells = <2>;
+			gpio-controller;
+			reg = <0xE100B10 0xA0>;
+		};
+
 		asc1: serial@E100C00 {
 			compatible = "lantiq,asc";
 			reg = <0xE100C00 0x400>;
@@ -94,6 +117,11 @@
 			interrupts = <112 113 114>;
 		};
 
+		deu@E103100 {
+			compatible = "lantiq,deu-xrx200";
+			reg = <0xE103100 0xf00>;
+		};
+
 		dma0: dma@E104100 {
 			compatible = "lantiq,dma-xway";
 			reg = <0xE104100 0x800>;
@@ -113,8 +141,14 @@
 			interrupts = <62 91>;
 		};
 
+		mei@E116000 {
+			compatible = "lantiq,mei-xrx200";
+			interrupt-parent = <&icu0>;
+			interrupts = <63>;
+		};
+
 		ppe@E234000 {
-			compatible = "lantiq,atm-xrx200";
+			compatible = "lantiq,ppe-xrx200";
 			interrupt-parent = <&icu0>;
 			interrupts = <96>;
 		};
@@ -135,7 +169,12 @@
 				0x1000000 0 0x00000000 0xAE00000 0 0x200000>; /* io space */
 			reg = <0x7000000 0x8000         /* config space */
 				0xE105400 0x400>;       /* pci bridge */
+			status = "disabled";
 		};
 
 	};
+
+	vdsl {
+		compatible = "lantiq,vdsl-vrx200";
+	};
 };
diff --git a/target/linux/lantiq/xway/profiles/avm.mk b/target/linux/lantiq/xway/profiles/avm.mk
index 75db65e31b..f0a93d8f7d 100644
--- a/target/linux/lantiq/xway/profiles/avm.mk
+++ b/target/linux/lantiq/xway/profiles/avm.mk
@@ -4,7 +4,16 @@ define Profile/FRITZ7320
 	kmod-ltq-adsl-ar9-mei kmod-ltq-adsl-ar9 \
 	kmod-ltq-adsl-ar9-fw-b kmod-ltq-atm-ar9 \
 	ltq-adsl-app ppp-mod-pppoa \
-	kmod-ltq-deu-ar9
+	kmod-ltq-deu-ar9 kmod-ltq-hcd-ar9
 endef
 
 $(eval $(call Profile,FRITZ7320))
+
+define Profile/FRITZ3370
+  NAME:=Fritz!Box WLan - FRITZ3370
+  PACKAGES:=kmod-ath9k wpad-mini \
+	kmod-ltq-deu-vr9 kmod-ltq-hcd-vr9 \
+	ppp-mod-pppoa
+endef
+
+$(eval $(call Profile,FRITZ3370))
-- 
2.34.1