From d5666b98fa7a5e9441cf0c0977eb03f1b3611555 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Mon, 13 Jun 2016 21:50:13 +0200
Subject: [PATCH] lantiq: fix fritz7320 wifi support

Signed-off-by: John Crispin <john@phrozen.org>
---
 .../linux/lantiq/base-files/etc/board.d/01_leds |  3 +++
 target/linux/lantiq/dts/FRITZ7320.dts           | 10 +++++++++-
 ...ntiq-wifi-and-ethernet-eeprom-handling.patch | 17 +++++++++++++----
 target/linux/lantiq/xway/profiles/avm.mk        |  3 ++-
 4 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/target/linux/lantiq/base-files/etc/board.d/01_leds b/target/linux/lantiq/base-files/etc/board.d/01_leds
index c365468030..08c384297d 100755
--- a/target/linux/lantiq/base-files/etc/board.d/01_leds
+++ b/target/linux/lantiq/base-files/etc/board.d/01_leds
@@ -42,6 +42,9 @@ P2812HNUF*)
 ARV7519RW22)
 	ucidef_set_led_netdev "lan" "lan" "arv7519rw22:green:lan" "eth0.1"
 	;;
+FRITZ7320)
+	ucidef_set_led_netdev "wifi" "wifi" "fritz7320:green:wlan" "wlan0"
+	;;
 WBMR300)
 	ucidef_set_led_switch "lan1" "LAN1" "wbmr300:green:lan1" "switch0" "0x08"
 	ucidef_set_led_switch "lan2" "LAN2" "wbmr300:green:lan2" "switch0" "0x04"
diff --git a/target/linux/lantiq/dts/FRITZ7320.dts b/target/linux/lantiq/dts/FRITZ7320.dts
index 475da7ac8e..acb88b60a0 100644
--- a/target/linux/lantiq/dts/FRITZ7320.dts
+++ b/target/linux/lantiq/dts/FRITZ7320.dts
@@ -37,7 +37,7 @@
 					#address-cells = <1>;
 					#size-cells = <1>;
 
-					partition@0 {
+					ath9k_cal: partition@0 {
 						label = "urlader";
 						reg = <0x00000 0x20000>;
 						read-only;
@@ -63,6 +63,14 @@
 			};
 		};
 
+		ath9k_eep {
+			compatible = "ath9k,eeprom";
+			ath,eep-flash = <&ath9k_cal 0x985>;
+			ath,device-id = /bits/ 16 <0xff1d 0x2d>;
+			ath,eep-endian;
+			ath,eep-swap;
+		};
+
 		gpio: pinmux@E100B10 {
 			pinctrl-names = "default";
 			pinctrl-0 = <&state_default>;
diff --git a/target/linux/lantiq/patches-4.4/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch b/target/linux/lantiq/patches-4.4/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
index 91a884d2ea..07e6a001eb 100644
--- a/target/linux/lantiq/patches-4.4/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
+++ b/target/linux/lantiq/patches-4.4/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
@@ -30,7 +30,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +#endif /* _PCI_ATH_FIXUP */
 --- a/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h
 +++ b/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h
-@@ -104,5 +104,8 @@ int xrx200_gphy_boot(struct device *dev,
+@@ -104,5 +104,8 @@
  extern void ltq_pmu_enable(unsigned int module);
  extern void ltq_pmu_disable(unsigned int module);
  
@@ -41,7 +41,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  #endif /* _LTQ_XWAY_H__ */
 --- a/arch/mips/lantiq/xway/Makefile
 +++ b/arch/mips/lantiq/xway/Makefile
-@@ -2,4 +2,7 @@ obj-y := prom.o sysctrl.o clk.o reset.o
+@@ -2,4 +2,7 @@
  
  obj-y += vmmc.o tffs.o
  
@@ -51,7 +51,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  obj-$(CONFIG_XRX200_PHY_FW) += xrx200_phy_fw.o
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/ath_eep.c
-@@ -0,0 +1,298 @@
+@@ -0,0 +1,307 @@
 +/*
 + *  Copyright (C) 2011 Luca Olivetti <luca@ventoso.org>
 + *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
@@ -104,6 +104,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +	const __be32 *list;
 +	const char *part;
 +	phandle phandle;
++	u16 dev_ids[2] = { 0 };
 +
 +	if ((list = of_get_property(np, "ath,eep-flash", &i)) && i == 2 *
 +			sizeof(*list) && (phandle = be32_to_cpup(list++)) &&
@@ -188,6 +189,14 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +
 +	}
 +
++	if (!of_property_read_u16_array(np, "ath,device-id", dev_ids, 2)) {
++		struct pci_dev *d = NULL;
++
++		while ((d = pci_get_device(PCI_VENDOR_ID_ATHEROS,
++					   dev_ids[0], d)) != NULL)
++		        d->device = dev_ids[1];
++	}
++
 +	if (!of_property_read_u32(np, "ath,led-pin", &led_pin)) {
 +		ath9k_pdata.led_pin = led_pin;
 +		dev_info(&pdev->dev, "using led pin %d.\n", led_pin);
@@ -615,7 +624,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +device_initcall(of_ralink_eeprom_init);
 --- a/drivers/net/ethernet/lantiq_etop.c
 +++ b/drivers/net/ethernet/lantiq_etop.c
-@@ -840,7 +840,11 @@ ltq_etop_init(struct net_device *dev)
+@@ -840,7 +840,11 @@
  	if (err)
  		goto err_hw;
  
diff --git a/target/linux/lantiq/xway/profiles/avm.mk b/target/linux/lantiq/xway/profiles/avm.mk
index 2922b0862e..72d97ded22 100644
--- a/target/linux/lantiq/xway/profiles/avm.mk
+++ b/target/linux/lantiq/xway/profiles/avm.mk
@@ -4,7 +4,8 @@ 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-usb-dwc2
+	kmod-ltq-deu-ar9 kmod-usb-dwc2 \
+	kmod-ath9k wpad-mini
 endef
 
 $(eval $(call Profile,FRITZ7320))
-- 
2.30.2