From 3b33adeb9987b52264e56d006784da497eda16f2 Mon Sep 17 00:00:00 2001
From: Luka Perkov <luka@openwrt.org>
Date: Thu, 19 Sep 2013 00:50:46 +0000
Subject: [PATCH] lantiq: add support for ZyXEL P2601HNFX

SVN-Revision: 38049
---
 .../base-files/etc/uci-defaults/02_network    |   6 +
 target/linux/lantiq/dts/P2601HNFX.dts         | 189 ++++++++++++++++++
 target/linux/lantiq/image/Makefile            |   5 +-
 target/linux/lantiq/xway/profiles/zyxel.mk    |  10 +
 4 files changed, 209 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/lantiq/dts/P2601HNFX.dts
 create mode 100644 target/linux/lantiq/xway/profiles/zyxel.mk

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 a5cf212dde..2cf16f3418 100644
--- a/target/linux/lantiq/base-files/etc/uci-defaults/02_network
+++ b/target/linux/lantiq/base-files/etc/uci-defaults/02_network
@@ -90,6 +90,12 @@ H201L)
 	ucidef_add_switch "switch0" "1" "1"
 	ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4t"
 	;;
+
+P2601HNFX)
+	ucidef_set_interface_lan "eth0.1"
+	ucidef_add_switch "switch0" "1" "1"
+	ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5t"
+	;;
 esac
 
 [ -z "$(ls /lib/modules/`uname -r`/ltq_atm*)" ] || set_atm_wan "$vpi" "$vci" "$encaps" "$payload"
diff --git a/target/linux/lantiq/dts/P2601HNFX.dts b/target/linux/lantiq/dts/P2601HNFX.dts
new file mode 100644
index 0000000000..905f89474d
--- /dev/null
+++ b/target/linux/lantiq/dts/P2601HNFX.dts
@@ -0,0 +1,189 @@
+/dts-v1/;
+
+/include/ "ar9.dtsi"
+
+/ {
+	model = "P2601HNFX - ZyXEL P-2601HN-Fx";
+
+	chosen {
+		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
+	};
+
+	memory@0 {
+		reg = <0x0 0x4000000>;
+	};
+
+	fpi@10000000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		localbus@0 {
+			#address-cells = <2>;
+			#size-cells = <1>;
+			ranges = <0 0 0x0 0x3ffffff
+				  1 0 0x4000000 0x4000010>;
+			compatible = "lantiq,localbus", "simple-bus";
+
+			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>;
+					read-only;
+				};
+
+				partition@60000 {
+					label = "firmware";
+					reg = <0x60000 0xfa0000>;
+				};
+			};
+		};
+
+		gpio: pinmux@E100B10 {
+			compatible = "lantiq,pinctrl-xr9";
+			pinctrl-names = "default";
+			pinctrl-0 = <&state_default>;
+
+			#gpio-cells = <2>;
+			gpio-controller;
+			reg = <0xE100B10 0xA0>;
+
+			state_default: pinmux {
+				stp {
+					lantiq,groups = "stp";
+					lantiq,function = "stp";
+				};
+				exin {
+					lantiq,groups = "exin1";
+					lantiq,function = "exin";
+				};
+				pci {
+					lantiq,groups = "gnt1";
+					lantiq,function = "pci";
+				};
+				conf_out {
+					lantiq,pins = "io4", "io5", "io6";
+					lantiq,open-drain;
+					lantiq,pull = <0>;
+				};
+				mdio {
+					lantiq,groups = "mdio";
+					lantiq,function = "mdio";
+				};
+			};
+		};
+
+		etop@E180000 {
+			phy-mode = "rmii";
+		};
+
+		ifxhcd@E101000 {
+			status = "okay";
+			gpios = <&gpio 9 0>;
+		};
+
+		stp: stp@E100BB0 {
+			#gpio-cells = <2>;
+			compatible = "lantiq,gpio-stp-xway";
+			gpio-controller;
+			reg = <0xE100BB0 0x40>;
+
+			lantiq,shadow = <0xfff>;
+			lantiq,groups = <0x3>;
+		};
+
+		pci@E105400 {
+			lantiq,bus-clock = <33333333>;
+			interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
+			interrupt-map = <0x7000 0 0 1 &icu0 29 1>;
+			gpios-reset = <&gpio 21 0>;
+			req-mask = <0x1>;
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 53 1>;
+			linux,code = <0x198>;
+		};
+		wps {
+			label = "wps";
+			gpios = <&gpio 54 1>;
+			linux,code = <0x211>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		power {
+			label = "power";
+			gpios = <&stp 11 1>;
+			default-state = "on";
+		};
+		power2 {
+			label = "power2";
+			gpios = <&gpio 29 1>;
+		};
+		online {
+			label = "online";
+			gpios = <&stp 13 1>;
+		};
+		online2 {
+			label = "online2";
+			gpios = <&stp 12 1>;
+		};
+		dsl {
+			label = "dsl";
+			gpios = <&stp 14 1>;
+		};
+		phone {
+			label = "phone";
+			gpios = <&stp 9 1>;
+		};
+		phone2 {
+			label = "phone2";
+			gpios = <&stp 8 1>;
+		};
+		wifi {
+			label = "wifi";
+			gpios = <&stp 15 1>;
+		};
+		wifi2 {
+			label = "wifi2";
+			gpios = <&stp 10 1>;
+		};
+	};
+
+	gpio_export {
+		compatible = "gpio-export";
+		#size-cells = <0>;
+
+		switch {
+			gpio-export,name = "switch";
+			gpio-export,output = <1>;
+			gpios = <&gpio 50 0>;
+		};
+		usb {
+			gpio-export,name = "wifi";
+			gpio-export,output = <1>;
+			gpios = <&gpio 9 0>;
+		};
+	};
+};
diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile
index c34b6b0dfa..1123074da8 100644
--- a/target/linux/lantiq/image/Makefile
+++ b/target/linux/lantiq/image/Makefile
@@ -7,7 +7,7 @@
 
 # boards missing since devicetree update
 #EASY50712 ARV3527P GIGASX76X BTHOMEHUBV2B BTHOMEHUBV2BOPENRG
-#WBMR P2601HNFX
+#WBMR
 
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/image.mk
@@ -258,6 +258,9 @@ Image/Build/Profile/GR7000=$(call Image/Build/$(1),$(1),GR7000)
 Image/BuildKernel/Profile/H201L=$(call Image/BuildKernel/Template,H201L)
 Image/Build/Profile/H201L=$(call Image/Build/$(1),$(1),H201L)
 
+Image/BuildKernel/Profile/P2601HNFX=$(call Image/BuildKernel/Template,P2601HNFX)
+Image/Build/Profile/P2601HNFX=$(call Image/Build/$(1),$(1),P2601HNFX)
+
 endif
 
 
diff --git a/target/linux/lantiq/xway/profiles/zyxel.mk b/target/linux/lantiq/xway/profiles/zyxel.mk
new file mode 100644
index 0000000000..b2c6ef5bb1
--- /dev/null
+++ b/target/linux/lantiq/xway/profiles/zyxel.mk
@@ -0,0 +1,10 @@
+define Profile/P2601HNFX
+  NAME:=ZyXEL P-2601HN-Fx
+  PACKAGES:= kmod-rt2800-usb wpad-mini \
+	kmod-ltq-adsl-ar9-mei kmod-ltq-adsl-ar9 \
+	kmod-ltq-adsl-ar9-fw-b kmod-ltq-atm-ar9 \
+	ltq-adsl-app ppp-mod-pppoe \
+	kmod-ltq-deu-ar9 kmod-ltq-hcd-ar9 \
+	swconfig
+endef
+$(eval $(call Profile,P2601HNFX))
-- 
2.30.2