mac80211: update to wireless-testing 2011-06-22
authorFelix Fietkau <nbd@openwrt.org>
Fri, 24 Jun 2011 19:53:13 +0000 (19:53 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 24 Jun 2011 19:53:13 +0000 (19:53 +0000)
SVN-Revision: 27275

61 files changed:
package/mac80211/Makefile
package/mac80211/patches/000-linux_3.0_support.patch [deleted file]
package/mac80211/patches/001-disable_b44.patch
package/mac80211/patches/002-disable_rfkill.patch
package/mac80211/patches/005-disable_ssb_build.patch
package/mac80211/patches/006-disable_bcma_build.patch [new file with mode: 0644]
package/mac80211/patches/007-remove_misc_drivers.patch
package/mac80211/patches/010-no_pcmcia.patch
package/mac80211/patches/011-no_sdio.patch
package/mac80211/patches/013-disable_b43_nphy.patch
package/mac80211/patches/015-remove-rt2x00-options.patch
package/mac80211/patches/017-remove_ath9k_rc.patch
package/mac80211/patches/018-revert_printk_va_format.patch
package/mac80211/patches/019-remove_ath5k_pci_option.patch
package/mac80211/patches/020-netlink_seq.patch [new file with mode: 0644]
package/mac80211/patches/110-disable_usb_compat.patch
package/mac80211/patches/300-pending_work.patch
package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch
package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch
package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch
package/mac80211/patches/430-ath5k_disable_fast_cc.patch
package/mac80211/patches/500-ath9k_eeprom_debugfs.patch
package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch
package/mac80211/patches/511-ath9k_increase_bcbuf.patch
package/mac80211/patches/512-ath9k_reduce_rxbuf.patch
package/mac80211/patches/530-ath9k_noise_dbm_fixup.patch
package/mac80211/patches/540-ath9k-define-mac-version-for-AR9330.patch [deleted file]
package/mac80211/patches/541-ath9k-define-device-id-for-AR9330.patch [deleted file]
package/mac80211/patches/542-ath9k-add-MAC-revision-detection-for-AR9330.patch [deleted file]
package/mac80211/patches/543-ath9k-add-platform-device-id-for-AR9330.patch [deleted file]
package/mac80211/patches/544-ath9k-add-AR9330-initvals.patch [deleted file]
package/mac80211/patches/545-ath9k-initialize-mode-registers-for-AR9330.patch [deleted file]
package/mac80211/patches/546-ath9k-initialize-tx-gain-table-for-AR9330.patch [deleted file]
package/mac80211/patches/547-ath9k-initialize-rx-gain-table-for-AR9330.patch [deleted file]
package/mac80211/patches/548-ath9k-add-AR9330-specific-PLL-initialization.patch [deleted file]
package/mac80211/patches/549-ath9k-use-different-BB-watchdog-timeout-value-for-AR.patch [deleted file]
package/mac80211/patches/550-ath9k-don-t-enable-LDPC-for-AR9330.patch [deleted file]
package/mac80211/patches/551-ath9k-read-spur-frequency-information-from-eeprom-fo.patch [deleted file]
package/mac80211/patches/552-ath9k-fix-channel-frequency-calculation-for-AR9340.patch [deleted file]
package/mac80211/patches/553-ath9k-configure-RF-channel-frequency-for-AR9330.patch [deleted file]
package/mac80211/patches/554-ath9k-enable-TX-RX-data-byte-swap-for-AR9330.patch [deleted file]
package/mac80211/patches/555-ath9k-skip-internal-regulator-configuration-for-AR93.patch [deleted file]
package/mac80211/patches/556-ath9k-enable-tuning-capacitance-configuration-for-AR.patch [deleted file]
package/mac80211/patches/557-ath9k-use-correct-EEPROM-base-for-AR9330.patch [deleted file]
package/mac80211/patches/558-ath9k-configure-xpa-bias-level-for-AR9330.patch [deleted file]
package/mac80211/patches/559-ath9k-set-NF-limits-for-AR9330.patch [deleted file]
package/mac80211/patches/560-ath9k-enable-antenna-diversity-for-AR9330.patch [deleted file]
package/mac80211/patches/561-ath9k-use-correct-max_streams-for-AR9330.patch [deleted file]
package/mac80211/patches/562-ath9k-add-a-missing-case-statement-to-ath_ant_div_co.patch [deleted file]
package/mac80211/patches/563-ath9k-fix-antenna-diversity-configuration-for-non-AR.patch [deleted file]
package/mac80211/patches/564-ath9k-remove-superfluous-parentheses.patch [deleted file]
package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch [deleted file]
package/mac80211/patches/566-ath9k-set-diversity-group-for-AR9330.patch [deleted file]
package/mac80211/patches/567-ath9k-fix-few-register-offsets-for-AR9330.patch [deleted file]
package/mac80211/patches/568-ath9k-configure-diversity-based-on-eeprom-contents-f.patch [deleted file]
package/mac80211/patches/569-ath9k-configure-internal-regulator-for-AR9330.patch [deleted file]
package/mac80211/patches/570-ath9k-add-external_reset-callback-to-ath9k_platfom_d.patch [deleted file]
package/mac80211/patches/571-ath9k-enable-support-for-AR9330.patch [deleted file]
package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
package/mac80211/patches/800-b43-gpio-mask-module-option.patch
package/mac80211/patches/810-b43_no_pio.patch

index 42e05030218afca41b356c8bbc52908221321890..329ca8cd28a5f28749ae49e92d4c4cd731db829f 100644 (file)
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=2011-05-27
-PKG_RELEASE:=2
+PKG_VERSION:=2011-06-22
+PKG_RELEASE:=1
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
-PKG_MD5SUM:=3a382b03333aff304dbe8ee94fce6b5a
+PKG_MD5SUM:=3ffdd5cecedcf4236f599bdbc55ba10d
 
 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
diff --git a/package/mac80211/patches/000-linux_3.0_support.patch b/package/mac80211/patches/000-linux_3.0_support.patch
deleted file mode 100644 (file)
index 226d511..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
---- a/compat/Makefile
-+++ b/compat/Makefile
-@@ -6,31 +6,31 @@ obj-$(CONFIG_COMPAT_FIRMWARE_CLASS) += c
- compat-y += main.o
- # Compat kernel compatibility code
--compat-$(CONFIG_COMPAT_KERNEL_14) += compat-2.6.14.o
--compat-$(CONFIG_COMPAT_KERNEL_18) += compat-2.6.18.o
--compat-$(CONFIG_COMPAT_KERNEL_19) += compat-2.6.19.o
--compat-$(CONFIG_COMPAT_KERNEL_21) += compat-2.6.21.o
--compat-$(CONFIG_COMPAT_KERNEL_22) += compat-2.6.22.o
--compat-$(CONFIG_COMPAT_KERNEL_23) += compat-2.6.23.o
--compat-$(CONFIG_COMPAT_KERNEL_24) += compat-2.6.24.o
--compat-$(CONFIG_COMPAT_KERNEL_25) += \
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_14) += compat-2.6.14.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_18) += compat-2.6.18.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_19) += compat-2.6.19.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_21) += compat-2.6.21.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_22) += compat-2.6.22.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_23) += compat-2.6.23.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_24) += compat-2.6.24.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_25) += \
-       compat-2.6.25.o \
-       pm_qos_params.o
--compat-$(CONFIG_COMPAT_KERNEL_26) += compat-2.6.26.o
--compat-$(CONFIG_COMPAT_KERNEL_27) += compat-2.6.27.o
--compat-$(CONFIG_COMPAT_KERNEL_28) += compat-2.6.28.o
--compat-$(CONFIG_COMPAT_KERNEL_29) += compat-2.6.29.o
--compat-$(CONFIG_COMPAT_KERNEL_32) += compat-2.6.32.o
--compat-$(CONFIG_COMPAT_KERNEL_33) += compat-2.6.33.o
--compat-$(CONFIG_COMPAT_KERNEL_35) += compat-2.6.35.o
--compat-$(CONFIG_COMPAT_KERNEL_36) += \
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_26) += compat-2.6.26.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_27) += compat-2.6.27.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_28) += compat-2.6.28.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_29) += compat-2.6.29.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_32) += compat-2.6.32.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_33) += compat-2.6.33.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_35) += compat-2.6.35.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_36) += \
-       compat-2.6.36.o \
-       kfifo.o
--compat-$(CONFIG_COMPAT_KERNEL_37) += compat-2.6.37.o
--compat-$(CONFIG_COMPAT_KERNEL_38) += compat-2.6.38.o
--compat-$(CONFIG_COMPAT_KERNEL_39) += \
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_37) += compat-2.6.37.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_38) += compat-2.6.38.o
-+compat-$(CONFIG_COMPAT_KERNEL_2_6_39) += \
-       compat-2.6.39.o \
-       kstrtox.o
---- a/include/linux/compat-2.6.34.h
-+++ b/include/linux/compat-2.6.34.h
-@@ -251,6 +251,8 @@ static inline int usb_disable_autosuspen
- #define rcu_dereference_raw(p)        rcu_dereference(p)
-+#define KEY_WPS_BUTTON                0x211   /* WiFi Protected Setup key */
-+
- #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) */
- #endif /* LINUX_26_34_COMPAT_H */
---- a/include/linux/compat-2.6.40.h
-+++ /dev/null
-@@ -1,29 +0,0 @@
--#ifndef LINUX_26_40_COMPAT_H
--#define LINUX_26_40_COMPAT_H
--
--#include <linux/version.h>
--
--#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40))
--
--#include <linux/rcupdate.h>
--
--/*
-- * This is not part of The 2.6.37 kernel yet but we
-- * we use it to optimize the backport code we
-- * need to implement. Instead of using ifdefs
-- * to check what version of the check we use
-- * we just replace all checks on current code
-- * with this. I'll submit this upstream too, that
-- * way all we'd have to do is to implement this
-- * for older kernels, then we would not have to
-- * edit the upstrema code for backport efforts.
-- */
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
--#define br_port_exists(dev)   (dev->priv_flags & IFF_BRIDGE_PORT)
--#else
--#define br_port_exists(dev)   (dev->br_port)
--#endif
--
--#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40)) */
--
--#endif /* LINUX_26_40_COMPAT_H */
---- a/include/linux/compat-2.6.h
-+++ b/include/linux/compat-2.6.h
-@@ -32,6 +32,7 @@
- #include <linux/compat-2.6.37.h>
- #include <linux/compat-2.6.38.h>
- #include <linux/compat-2.6.39.h>
--#include <linux/compat-2.6.40.h>
-+#include <linux/compat-3.0.h>
-+#include <linux/compat-3.1.h>
- #endif /* LINUX_26_COMPAT_H */
---- /dev/null
-+++ b/include/linux/compat-3.0.h
-@@ -0,0 +1,31 @@
-+#ifndef LINUX_3_0_COMPAT_H
-+#define LINUX_3_0_COMPAT_H
-+
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0))
-+
-+/*
-+ * since commit 1c5cae815d19ffe02bdfda1260949ef2b1806171
-+ * "net: call dev_alloc_name from register_netdevice" dev_alloc_name is
-+ * called automatically. This is not implemented in older kernel
-+ * versions so it will result in device wrong names.
-+ */
-+static inline int register_netdevice_name(struct net_device *dev)
-+{
-+      int err;
-+
-+      if (strchr(dev->name, '%')) {
-+              err = dev_alloc_name(dev, dev->name);
-+              if (err < 0)
-+                      return err;
-+      }
-+
-+      return register_netdevice(dev);
-+}
-+
-+#define register_netdevice(dev) register_netdevice_name(dev)
-+
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0)) */
-+
-+#endif /* LINUX_3_0_COMPAT_H */
---- /dev/null
-+++ b/include/linux/compat-3.1.h
-@@ -0,0 +1,27 @@
-+#ifndef LINUX_3_1_COMPAT_H
-+#define LINUX_3_1_COMPAT_H
-+
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+
-+/*
-+ * This is not part of The 2.6.37 kernel yet but we
-+ * we use it to optimize the backport code we
-+ * need to implement. Instead of using ifdefs
-+ * to check what version of the check we use
-+ * we just replace all checks on current code
-+ * with this. I'll submit this upstream too, that
-+ * way all we'd have to do is to implement this
-+ * for older kernels, then we would not have to
-+ * edit the upstrema code for backport efforts.
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+#define br_port_exists(dev)   (dev->priv_flags & IFF_BRIDGE_PORT)
-+#else
-+#define br_port_exists(dev)   (dev->br_port)
-+#endif
-+
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)) */
-+
-+#endif /* LINUX_3_1_COMPAT_H */
---- a/config.mk
-+++ b/config.mk
-@@ -14,20 +14,28 @@ else
- include $(KLIB_BUILD)/.config
- endif
--# We will warn when you don't have MQ support or NET_SCHED enabled.
--#
--# We could consider just quiting if MQ and NET_SCHED is disabled
--# as I suspect all users of this package want 802.11e (WME) and
--# 802.11n (HT) support.
- ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)
--COMPAT_LATEST_VERSION = 39
--KERNEL_SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
-+
-+COMPAT_LATEST_VERSION = 1
-+
-+KERNEL_VERSION := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^\([0-9]\)\..*/\1/p')
-+
-+ifneq ($(KERNEL_VERSION),2)
-+KERNEL_SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^3\.\([0-9]\+\).*/\1/p')
-+else
-+COMPAT_26LATEST_VERSION = 39
-+KERNEL_26SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
-+COMPAT_26VERSIONS := $(shell I=$(COMPAT_26LATEST_VERSION); while [ "$$I" -gt $(KERNEL_26SUBLEVEL) ]; do echo $$I; I=$$(($$I - 1)); done)
-+$(foreach ver,$(COMPAT_26VERSIONS),$(eval CONFIG_COMPAT_KERNEL_2_6_$(ver)=y))
-+KERNEL_SUBLEVEL := -1
-+endif
-+
- COMPAT_VERSIONS := $(shell I=$(COMPAT_LATEST_VERSION); while [ "$$I" -gt $(KERNEL_SUBLEVEL) ]; do echo $$I; I=$$(($$I - 1)); done)
--$(foreach ver,$(COMPAT_VERSIONS),$(eval CONFIG_COMPAT_KERNEL_$(ver)=y))
-+$(foreach ver,$(COMPAT_VERSIONS),$(eval CONFIG_COMPAT_KERNEL_3_$(ver)=y))
--ifdef CONFIG_COMPAT_KERNEL_24
-+ifdef CONFIG_COMPAT_KERNEL_2_6_24
- $(error "ERROR: compat-wireless by default supports kernels >= 2.6.24, try enabling only one driver though")
--endif #CONFIG_COMPAT_KERNEL_24
-+endif #CONFIG_COMPAT_KERNEL_2_6_24
- ifeq ($(CONFIG_CFG80211),y)
- $(error "ERROR: your kernel has CONFIG_CFG80211=y, you should have it CONFIG_CFG80211=m if you want to use this thing.")
-@@ -37,7 +45,7 @@ endif
- # 2.6.27 has FTRACE_DYNAMIC borked, so we will complain if
- # you have it enabled, otherwise you will very likely run into
- # a kernel panic.
--ifeq ($(KERNEL_SUBLEVEL),27)
-+ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_SUBLEVEL) -eq 27 && echo yes),yes)
- ifeq ($(CONFIG_DYNAMIC_FTRACE),y)
- $(error "ERROR: Your 2.6.27 kernel has CONFIG_DYNAMIC_FTRACE, please upgrade your distribution kernel as newer ones should not have this enabled (and if so report a bug) or remove this warning if you know what you are doing")
- endif
-@@ -54,7 +62,7 @@ endif
- #
- # In kernel 2.6.32 both attributes were removed.
- #
--ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 27 -a $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes)
-+ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_SUBLEVEL) -ge 27 -a $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes)
- ifeq ($(CONFIG_MAC80211),)
- $(error "ERROR: Your >=2.6.27 and <= 2.6.31 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.")
- endif
-@@ -62,6 +70,11 @@ endif
- ifneq ($(KERNELRELEASE),) # This prevents a warning
-+# We will warn when you don't have MQ support or NET_SCHED enabled.
-+#
-+# We could consider just quiting if MQ and NET_SCHED is disabled
-+# as I suspect all users of this package want 802.11e (WME) and
-+# 802.11n (HT) support.
- ifeq ($(CONFIG_NET_SCHED),)
-  QOS_REQS_MISSING+=CONFIG_NET_SCHED
- endif
-@@ -92,20 +105,20 @@ else
- endif
- # The Bluetooth compatibility only builds on kernels >= 2.6.27 for now
--ifndef CONFIG_COMPAT_KERNEL_27
-+ifndef CONFIG_COMPAT_KERNEL_2_6_27
- ifeq ($(CONFIG_BT),y)
- # we'll ignore compiling bluetooth
- else
-  CONFIG_COMPAT_BLUETOOTH=y
-  CONFIG_COMPAT_BLUETOOTH_MODULES=m
- endif
--endif #CONFIG_COMPAT_KERNEL_27
-+endif #CONFIG_COMPAT_KERNEL_2_6_27
--ifdef CONFIG_COMPAT_KERNEL_33
-+ifdef CONFIG_COMPAT_KERNEL_2_6_33
- ifdef CONFIG_FW_LOADER
-  CONFIG_COMPAT_FIRMWARE_CLASS=m
- endif #CONFIG_FW_LOADER
--endif #CONFIG_COMPAT_KERNEL_33
-+endif #CONFIG_COMPAT_KERNEL_2_6_33
- # Wireless subsystem stuff
- CONFIG_MAC80211=m
-@@ -165,9 +178,9 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
- ifdef CONFIG_ISDN_CAPI
- CONFIG_BT_CMTP=m
- endif #CONFIG_ISDN_CAPI
--ifndef CONFIG_COMPAT_KERNEL_28
-+ifndef CONFIG_COMPAT_KERNEL_2_6_28
- CONFIG_COMPAT_BT_HIDP=m
--endif #CONFIG_COMPAT_KERNEL_28
-+endif #CONFIG_COMPAT_KERNEL_2_6_28
- CONFIG_BT_HCIUART=M
- CONFIG_BT_HCIUART_H4=y
-@@ -345,11 +358,11 @@ CONFIG_MWL8K=m
- CONFIG_ATL1=m
- CONFIG_ATL2=m
- CONFIG_ATL1E=m
--ifdef CONFIG_COMPAT_KERNEL_27
-+ifdef CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_ATL1C=n
--else #CONFIG_COMPAT_KERNEL_27
-+else #CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_ATL1C=m
--endif #CONFIG_COMPAT_KERNEL_27
-+endif #CONFIG_COMPAT_KERNEL_2_6_27
- ifdef CONFIG_WIRELESS_EXT
- CONFIG_HERMES=m
-@@ -379,13 +392,13 @@ endif #CONFIG_PCI
- ifdef CONFIG_PCMCIA
--ifdef CONFIG_COMPAT_KERNEL_27
-+ifdef CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS=n
- CONFIG_LIBERTAS_CS=n
--else #CONFIG_COMPAT_KERNEL_27
-+else #CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS_CS=m
- NEED_LIBERTAS=y
--endif #CONFIG_COMPAT_KERNEL_27
-+endif #CONFIG_COMPAT_KERNEL_2_6_27
- endif #CONFIG_PCMCIA
- ## end of PCMCIA
-@@ -395,10 +408,10 @@ CONFIG_EEPROM_93CX6=m
- # USB Drivers
- ifdef CONFIG_USB
--ifndef CONFIG_COMPAT_KERNEL_29
-+ifndef CONFIG_COMPAT_KERNEL_2_6_29
- CONFIG_COMPAT_ZD1211RW=m
- # CONFIG_ZD1211RW_DEBUG=y
--endif #CONFIG_COMPAT_KERNEL_29
-+endif #CONFIG_COMPAT_KERNEL_2_6_29
- # Sorry, rndis_wlan uses cancel_work_sync which is new and can't be done in compat...
-@@ -407,12 +420,12 @@ endif #CONFIG_COMPAT_KERNEL_29
- # is only wireless RNDIS chip known to date.
- # Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER
- # it also requires new RNDIS_HOST and CDC_ETHER modules which we add
--ifdef CONFIG_COMPAT_KERNEL_29
-+ifdef CONFIG_COMPAT_KERNEL_2_6_29
- CONFIG_USB_COMPAT_USBNET=n
- CONFIG_USB_NET_COMPAT_RNDIS_HOST=n
- CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n
- CONFIG_USB_NET_COMPAT_CDCETHER=n
--else #CONFIG_COMPAT_KERNEL_29
-+else #CONFIG_COMPAT_KERNEL_2_6_29
- CONFIG_USB_COMPAT_USBNET=m
- ifdef CONFIG_USB_NET_CDCETHER
- CONFIG_USB_NET_COMPAT_RNDIS_HOST=m
-@@ -423,7 +436,7 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=m
- CONFIG_USB_NET_COMPAT_RNDIS_WLAN=m
- endif #CONFIG_USB_NET_CDCETHER
- CONFIG_USB_NET_COMPAT_CDCETHER=m
--endif #CONFIG_COMPAT_KERNEL_29
-+endif #CONFIG_COMPAT_KERNEL_2_6_29
- CONFIG_P54_USB=m
-@@ -434,14 +447,14 @@ endif #CONFIG_MAC80211_LEDS
- CONFIG_AT76C50X_USB=m
--ifndef CONFIG_COMPAT_KERNEL_29
-+ifndef CONFIG_COMPAT_KERNEL_2_6_29
- CONFIG_CARL9170=m
- ifdef CONFIG_MAC80211_LEDS
- CONFIG_CARL9170_LEDS=y
- endif #CONFIG_MAC80211_LEDS
- # CONFIG_CARL9170_DEBUGFS=y
- # CONFIG_CARL9170_WPC=y
--endif #CONFIG_COMPAT_KERNEL_29
-+endif #CONFIG_COMPAT_KERNEL_2_6_29
- # This activates a threading fix for usb urb.
- # this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351
-@@ -467,15 +480,15 @@ ifdef CONFIG_CRC_ITU_T
- CONFIG_RT73USB=m
- endif #CONFIG_CRC_ITU_T
--ifdef CONFIG_COMPAT_KERNEL_27
-+ifdef CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS_THINFIRM_USB=n
- CONFIG_LIBERTAS_USB=n
- NEED_LIBERTAS=n
--else #CONFIG_COMPAT_KERNEL_27
-+else #CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS_THINFIRM_USB=m
- CONFIG_LIBERTAS_USB=m
- NEED_LIBERTAS=y
--endif #CONFIG_COMPAT_KERNEL_27
-+endif #CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_ORINOCO_USB=m
-@@ -490,7 +503,7 @@ CONFIG_RTL8192CU=m
- endif #CONFIG_USB end of USB driver list
- ifdef CONFIG_SPI_MASTER
--ifndef CONFIG_COMPAT_KERNEL_25
-+ifndef CONFIG_COMPAT_KERNEL_2_6_25
- ifdef CONFIG_CRC7
- CONFIG_WL1251_SPI=m
-@@ -498,15 +511,15 @@ CONFIG_WL12XX_SPI=m
- endif #CONFIG_CRC7
- CONFIG_P54_SPI=m
--ifdef CONFIG_COMPAT_KERNEL_27
-+ifdef CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS_SPI=n
- NEED_LIBERTAS=n
--else #CONFIG_COMPAT_KERNEL_27
-+else #CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS_SPI=m
- NEED_LIBERTAS=y
--endif #CONFIG_COMPAT_KERNEL_27
-+endif #CONFIG_COMPAT_KERNEL_2_6_27
--endif #CONFIG_COMPAT_KERNEL_25
-+endif #CONFIG_COMPAT_KERNEL_2_6_25
- endif #CONFIG_SPI_MASTER end of SPI driver list
- ifdef CONFIG_MMC
-@@ -519,23 +532,23 @@ ifdef CONFIG_WL12XX_PLATFORM_DATA
- CONFIG_COMPAT_WL1251_SDIO=m
- endif #CONFIG_WL12XX_PLATFORM_DATA
--ifndef CONFIG_COMPAT_KERNEL_32
-+ifndef CONFIG_COMPAT_KERNEL_2_6_32
- ifdef CONFIG_WL12XX_PLATFORM_DATA
- CONFIG_COMPAT_WL12XX_SDIO=m
- endif #CONFIG_WL12XX_PLATFORM_DATA
--endif #CONFIG_COMPAT_KERNEL_32
-+endif #CONFIG_COMPAT_KERNEL_2_6_32
- endif #CONFIG_CRC7
- CONFIG_MWIFIEX_SDIO=m
--ifdef CONFIG_COMPAT_KERNEL_27
-+ifdef CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS_SDIO=n
- NEED_LIBERTAS=n
--else #CONFIG_COMPAT_KERNEL_27
-+else #CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS_SDIO=m
- NEED_LIBERTAS=y
--endif #CONFIG_COMPAT_KERNEL_27
-+endif #CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_IWM=m
- # CONFIG_IWM_DEBUG=y
-@@ -574,13 +587,13 @@ CONFIG_RT2800_LIB=m
- CONFIG_RT2X00_LIB_FIRMWARE=y
- CONFIG_RT2X00_LIB_CRYPTO=y
- # CONFIG_RT2X00_LIB_SOC=y
--ifdef CONFIG_COMPAT_KERNEL_25
-+ifdef CONFIG_COMPAT_KERNEL_2_6_25
- CONFIG_RT2X00_LIB_LEDS=n
--else #CONFIG_COMPAT_KERNEL_25
-+else #CONFIG_COMPAT_KERNEL_2_6_25
- ifdef CONFIG_LEDS_CLASS
- CONFIG_RT2X00_LIB_LEDS=y
- endif #CONFIG_LEDS_CLASS
--endif #CONFIG_COMPAT_KERNEL_25
-+endif #CONFIG_COMPAT_KERNEL_2_6_25
- # CONFIG_RT2X00_DEBUG=y
- # CONFIG_RT2X00_LIB_DEBUGFS
- endif
-@@ -608,24 +621,24 @@ endif #CONFIG_CRC7
- CONFIG_MWIFIEX=m
--ifdef CONFIG_COMPAT_KERNEL_27
-+ifdef CONFIG_COMPAT_KERNEL_2_6_27
- CONFIG_LIBERTAS=n
--else #CONFIG_COMPAT_KERNEL_27
-+else #CONFIG_COMPAT_KERNEL_2_6_27
- ifeq ($(NEED_LIBERTAS),y)
- CONFIG_LIBERTAS_THINFIRM=m
- CONFIG_LIBERTAS=m
- CONFIG_LIBERTAS_MESH=y
- # CONFIG_LIBERTAS_DEBUG=y
- endif
--endif #CONFIG_COMPAT_KERNEL_27
-+endif #CONFIG_COMPAT_KERNEL_2_6_27
- # We need the backported rfkill module on kernel < 2.6.31.
- # In more recent kernel versions use the in kernel rfkill module.
--ifdef CONFIG_COMPAT_KERNEL_31
-+ifdef CONFIG_COMPAT_KERNEL_2_6_31
- CONFIG_RFKILL_BACKPORT=m
- ifdef CONFIG_LEDS_TRIGGERS
- CONFIG_RFKILL_BACKPORT_LEDS=y
- endif #CONFIG_LEDS_TRIGGERS
- CONFIG_RFKILL_BACKPORT_INPUT=y
--endif #CONFIG_COMPAT_KERNEL_31
-+endif #CONFIG_COMPAT_KERNEL_2_6_31
---- a/scripts/admin-update.sh
-+++ b/scripts/admin-update.sh
-@@ -18,7 +18,7 @@
- GIT_URL="git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git"
- GIT_COMPAT_URL="git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat.git"
--INCLUDE_NET_BT="hci_core.h l2cap.h bluetooth.h rfcomm.h hci.h mgmt.h"
-+INCLUDE_NET_BT="hci_core.h l2cap.h bluetooth.h rfcomm.h hci.h mgmt.h smp.h"
- NET_BT_DIRS="bluetooth bluetooth/bnep bluetooth/cmtp bluetooth/rfcomm bluetooth/hidp"
- INCLUDE_LINUX="ieee80211.h nl80211.h"
-@@ -259,7 +259,7 @@ DRIVERS_BT="drivers/bluetooth"
- # Drivers that belong the the wireless directory
- DRIVER_FILES="adm8211.c  adm8211.h"
- DRIVER_FILES="$DRIVER_FILES rndis_wlan.c"
--DRIVER_FILES="$DRIVER_FILES mac80211_hwsim.c"
-+DRIVER_FILES="$DRIVER_FILES mac80211_hwsim.c mac80211_hwsim.h"
- DRIVER_FILES="$DRIVER_FILES at76c50x-usb.c at76c50x-usb.h"
- DRIVER_FILES="$DRIVER_FILES mwl8k.c"
---- a/scripts/gen-compat-autoconf.sh
-+++ b/scripts/gen-compat-autoconf.sh
-@@ -148,11 +148,11 @@ kernel_version_req $OLDEST_KERNEL_SUPPOR
- for i in $(egrep '^CONFIG_|^ifdef CONFIG_|^ifndef CONFIG_|^endif #CONFIG_|^else #CONFIG_' $COMPAT_CONFIG | sed 's/ /+/'); do
-       case $i in
-       'ifdef+CONFIG_'* )
--              echo "#$i" | sed -e 's/+/ /' -e 's/\(ifdef CONFIG_COMPAT_KERNEL_\)\([0-9]*\)/if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,\2))/' -e 's/\(#ifdef \)\(CONFIG_[^:space:]*\)/#if defined(\2) || defined(\2_MODULE)/'
-+              echo "#$i" | sed -e 's/+/ /' -e 's/\(ifdef CONFIG_COMPAT_KERNEL_3_\)\([0-9]*\)/if (LINUX_VERSION_CODE < KERNEL_VERSION(3,\2,0))/' -e 's/\(ifdef CONFIG_COMPAT_KERNEL_2_6_\)\([0-9]*\)/if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,\2))/' -e 's/\(#ifdef \)\(CONFIG_[^:space:]*\)/#if defined(\2) || defined(\2_MODULE)/'
-               continue
-               ;;
-       'ifndef+CONFIG_'* )
--              echo "#$i" | sed -e 's/+/ /' -e 's/\(ifndef CONFIG_COMPAT_KERNEL_\)\([0-9]*\)/if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,\2))/' -e 's/\(#ifndef \)\(CONFIG_[^:space:]*\)/#if !defined(\2) && !defined(\2_MODULE)/'
-+              echo "#$i" | sed -e 's/+/ /' -e 's/\(ifndef CONFIG_COMPAT_KERNEL_3_\)\([0-9]*\)/if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,\2,0))/' -e 's/\(ifndef CONFIG_COMPAT_KERNEL_2_6_\)\([0-9]*\)/if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,\2))/' -e 's/\(#ifndef \)\(CONFIG_[^:space:]*\)/#if !defined(\2) && !defined(\2_MODULE)/'
-               continue
-               ;;
-       'else+#CONFIG_'* | 'endif+#CONFIG_'* )
-@@ -184,8 +184,9 @@ done
- # Deal with special cases. CONFIG_MAC80211_QOS is such a case.
- # We handle this specially for different kernels we support.
- if [ -f $KLIB_BUILD/Makefile ]; then
--      SUBLEVEL=$(make -C $KLIB_BUILD kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
--      if [ $SUBLEVEL -le 22 ]; then
-+      MAJORLEVEL=$(make -C $KLIB_BUILD kernelversion | sed -n 's/^\([0-9]\)\..*/\1/p')
-+      SUBLEVEL=$(make -C $KLIB_BUILD kernelversion | sed -n 's/^\(2\.6\|[3-9]\)\.\([0-9]\+\).*/\2/p')
-+      if [ $MAJORLEVEL -eq 2 -a $SUBLEVEL -le 22 ]; then
-               define_config CONFIG_MAC80211_QOS y
-       else # kernel >= 2.6.23
-               # CONFIG_MAC80211_QOS on these kernels requires
index 8bab0d56363c581a2609423d16dc0467a6f4315a..7e6018fa9d7b7b72bd3cb89bc168f5668415b1fd 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -327,8 +327,8 @@ endif #CONFIG_SSB
+@@ -337,8 +337,8 @@ CONFIG_BCMA_HOST_PCI=y
  
  CONFIG_P54_PCI=m
  
index a894028d4b8d201a803d9faa0935bb7055efdc67..1cb319e39ed39d75b0ae4c1d2c21597d91073801 100644 (file)
@@ -9,7 +9,7 @@
  
  ifeq ($(CONFIG_MAC80211),y)
  $(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular")
-@@ -635,10 +635,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
+@@ -646,10 +646,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
  # We need the backported rfkill module on kernel < 2.6.31.
  # In more recent kernel versions use the in kernel rfkill module.
  ifdef CONFIG_COMPAT_KERNEL_2_6_31
index 7a33f68846d5a2739762011c4c57471b8f1d5387..b067956cff22a67a4e670ecdb8e2a861a343bc72 100644 (file)
@@ -4,8 +4,8 @@
  obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/
  
  obj-$(CONFIG_COMPAT_NETWORK_MODULES) += drivers/net/
--obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/ssb/ drivers/misc/eeprom/
-+obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/misc/eeprom/
+-obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/ssb/ drivers/bcma/ drivers/misc/eeprom/
++obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/bcma/ drivers/misc/eeprom/
  
  ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),)
  obj-$(CONFIG_COMPAT_STAGING) += drivers/staging/ath6kl/
  else
  include $(KLIB_BUILD)/.config
  endif
-@@ -311,19 +310,18 @@ CONFIG_IPW2200_QOS=y
+@@ -314,7 +313,8 @@ CONFIG_IPW2200_QOS=y
  # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
  endif #CONFIG_WIRELESS_EXT
  
 -ifdef CONFIG_SSB
--# Sonics Silicon Backplane
--CONFIG_SSB_SPROM=y
--
--CONFIG_SSB_BLOCKIO=y
--CONFIG_SSB_PCIHOST=y
--CONFIG_SSB_B43_PCI_BRIDGE=y
--ifdef CONFIG_PCMCIA
--CONFIG_SSB_PCMCIAHOST=y
--endif #CONFIG_PCMCIA
--# CONFIG_SSB_DEBUG=y
--CONFIG_SSB_DRIVER_PCICORE=y
++# disabled
++ifdef __CONFIG_SSB
+ # Sonics Silicon Backplane
+ CONFIG_SSB_SPROM=y
+@@ -327,7 +327,7 @@ endif #CONFIG_PCMCIA
+ # CONFIG_SSB_DEBUG=y
+ CONFIG_SSB_DRIVER_PCICORE=y
+ CONFIG_B43_SSB=y
 -endif #CONFIG_SSB
-+# ifdef CONFIG_SSB
-+# # Sonics Silicon Backplane
-+# CONFIG_SSB_SPROM=y
-+# CONFIG_SSB_BLOCKIO=y
-+# CONFIG_SSB_PCIHOST=y
-+# CONFIG_SSB_B43_PCI_BRIDGE=y
-+# ifdef CONFIG_PCMCIA
-+# CONFIG_SSB_PCMCIAHOST=y
-+# endif #CONFIG_PCMCIA
-+# # CONFIG_SSB_DEBUG=y
-+# CONFIG_SSB_DRIVER_PCICORE=y
-+# endif #CONFIG_SSB
- CONFIG_P54_PCI=m
-@@ -524,7 +522,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv
++endif #__CONFIG_SSB
+ CONFIG_BCMA=m
+ CONFIG_BCMA_BLOCKIO=y
+@@ -534,7 +534,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv
  
  ifdef CONFIG_MMC
  
diff --git a/package/mac80211/patches/006-disable_bcma_build.patch b/package/mac80211/patches/006-disable_bcma_build.patch
new file mode 100644 (file)
index 0000000..5835ea2
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/config.mk
++++ b/config.mk
+@@ -329,9 +329,9 @@ CONFIG_SSB_DRIVER_PCICORE=y
+ CONFIG_B43_SSB=y
+ endif #__CONFIG_SSB
+-CONFIG_BCMA=m
+-CONFIG_BCMA_BLOCKIO=y
+-CONFIG_BCMA_HOST_PCI=y
++# CONFIG_BCMA=m
++# CONFIG_BCMA_BLOCKIO=y
++# CONFIG_BCMA_HOST_PCI=y
+ # CONFIG_BCMA_DEBUG=y
+ # CONFIG_B43_BCMA=y
index c8817d04fbed1a6850b6b8f201b4bbedfb4d0f5f..37c03f2eef46715616c66d7b5625e1e8b625a3b3 100644 (file)
@@ -9,7 +9,7 @@
  endif #CONFIG_STAGING
  
  # mac80211 test driver
-@@ -353,13 +353,13 @@ endif #CONFIG_CRC_ITU_T
+@@ -365,13 +365,13 @@ endif #CONFIG_CRC_ITU_T
  CONFIG_MWL8K=m
  
  # Ethernet drivers go here
@@ -28,7 +28,7 @@
  endif #CONFIG_COMPAT_KERNEL_2_6_27
  
  ifdef CONFIG_WIRELESS_EXT
-@@ -419,21 +419,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
+@@ -431,21 +431,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
  # Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER
  # it also requires new RNDIS_HOST and CDC_ETHER modules which we add
  ifdef CONFIG_COMPAT_KERNEL_2_6_29
index 5da5b2d70751df6dbcfbf0d153f2666455f00b03..f6b89d86bc9e159211e5d4ce7d751a37bfa82595 100644 (file)
@@ -9,7 +9,7 @@
  else
  include $(KLIB_BUILD)/.config
  endif
-@@ -245,7 +245,7 @@ CONFIG_B43=m
+@@ -247,7 +247,7 @@ CONFIG_B43=m
  CONFIG_B43_HWRNG=y
  CONFIG_B43_PCI_AUTOSELECT=y
  ifdef CONFIG_PCMCIA
index 12bb0ff3752834c04046f4e721c4052fba209c79..857020ec52728b037d18c7662147a11ed95b7828 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -505,7 +505,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
+@@ -517,7 +517,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
  
  ifdef CONFIG_MMC
  
index 91fe724b7cdda5d4d7b417213f89233f4ef89c2b..63ae11df71e0a0c0220a10f4990db59b8b5f61cd 100644 (file)
@@ -1,11 +1,11 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -251,7 +251,7 @@ ifdef CONFIG_MAC80211_LEDS
+@@ -253,7 +253,7 @@ ifdef CONFIG_MAC80211_LEDS
  CONFIG_B43_LEDS=y
  endif #CONFIG_MAC80211_LEDS
  CONFIG_B43_PHY_LP=y
 -CONFIG_B43_PHY_N=y
 +# CONFIG_B43_PHY_N=y
+ # CONFIG_B43_PHY_HT=y
  # CONFIG_B43_FORCE_PIO=y
  # CONFIG_B43_DEBUG=y
index 784d87481754320a03a919ac2a1435f8e03e544e..86556d7a47d4a2f5790cbef2e3f9adea1d00d24a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -315,7 +315,7 @@ CONFIG_RTL8180=m
+@@ -327,7 +327,7 @@ CONFIG_RTL8180=m
  
  CONFIG_ADM8211=m
  
@@ -9,7 +9,7 @@
  CONFIG_RT2400PCI=m
  CONFIG_RT2500PCI=m
  ifdef CONFIG_CRC_CCITT
-@@ -454,7 +454,7 @@ CONFIG_RT2800USB_RT33XX=y
+@@ -466,7 +466,7 @@ CONFIG_RT2800USB_RT35XX=y
  # CONFIG_RT2800USB_RT53XX=y
  CONFIG_RT2800USB_UNKNOWN=y
  endif #CONFIG_CRC_CCITT
index 4a23f05554265c9021ea7029243f864fa27905e0..d27528316604afd039ff05c3525cec6734fb9e90 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -218,7 +218,7 @@ CONFIG_ATH9K_COMMON=m
+@@ -219,7 +219,7 @@ CONFIG_ATH9K_COMMON=m
  # as default once we get minstrel properly tested and blessed by
  # our systems engineering team. CCK rates also need to be used
  # for long range considerations.
index 76a04524403c08bdee94546d0f6674f04fc2240d..960a65b915c1b3dda2e48f489589013a0ef4f540 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/b43/main.c
 +++ b/drivers/net/wireless/b43/main.c
-@@ -323,83 +323,59 @@ static int b43_ratelimit(struct b43_wl *
+@@ -334,83 +334,59 @@ static int b43_ratelimit(struct b43_wl *
  
  void b43info(struct b43_wl *wl, const char *fmt, ...)
  {
index d6577882601badb860084a45c656aa904c158fea..07e30549c422634efd9211952d733f6abd995c7f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -223,7 +223,7 @@ CONFIG_ATH9K_COMMON=m
+@@ -224,7 +224,7 @@ CONFIG_ATH9K_COMMON=m
  # PCI Drivers
  ifdef CONFIG_PCI
  
diff --git a/package/mac80211/patches/020-netlink_seq.patch b/package/mac80211/patches/020-netlink_seq.patch
new file mode 100644 (file)
index 0000000..2897b40
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -3728,7 +3728,9 @@ static int nl80211_dump_scan(struct sk_b
+       spin_lock_bh(&rdev->bss_lock);
+       cfg80211_bss_expire(rdev);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
+       cb->seq = rdev->bss_generation;
++#endif
+       list_for_each_entry(scan, &rdev->bss_list, list) {
+               if (++idx <= start)
index 24777ac002c3f55fe33ed46f04a91071e9c36635..5738dd023e9bc21b9f64c9d43d31447cdf864c9d 100644 (file)
@@ -33,7 +33,7 @@
  #endif
 --- a/config.mk
 +++ b/config.mk
-@@ -440,7 +440,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
+@@ -452,7 +452,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
  # This activates a threading fix for usb urb.
  # this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351
  # This fix will be included in some stable releases.
index ecce5beff6be581391d81544f089160f932df65c..c2dbae572bebcafcc2ce8739ee775ceec6bb373b 100644 (file)
@@ -1,694 +1,6 @@
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -603,7 +603,6 @@ struct ath_hw_ops {
-                                    int power_off);
-       void (*rx_enable)(struct ath_hw *ah);
-       void (*set_desc_link)(void *ds, u32 link);
--      void (*get_desc_link)(void *ds, u32 **link);
-       bool (*calibrate)(struct ath_hw *ah,
-                         struct ath9k_channel *chan,
-                         u8 rxchainmask,
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -62,8 +62,6 @@ static bool ath9k_has_pending_frames(str
-       if (txq->axq_depth || !list_empty(&txq->axq_acq))
-               pending = true;
--      else if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)
--              pending = !list_empty(&txq->txq_fifo_pending);
-       spin_unlock_bh(&txq->axq_lock);
-       return pending;
---- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
-@@ -28,11 +28,6 @@ static void ar9002_hw_set_desc_link(void
-       ((struct ath_desc*) ds)->ds_link = ds_link;
- }
--static void ar9002_hw_get_desc_link(void *ds, u32 **ds_link)
--{
--      *ds_link = &((struct ath_desc *)ds)->ds_link;
--}
--
- static bool ar9002_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
- {
-       u32 isr = 0;
-@@ -437,7 +432,6 @@ void ar9002_hw_attach_mac_ops(struct ath
-       ops->rx_enable = ar9002_hw_rx_enable;
-       ops->set_desc_link = ar9002_hw_set_desc_link;
--      ops->get_desc_link = ar9002_hw_get_desc_link;
-       ops->get_isr = ar9002_hw_get_isr;
-       ops->fill_txdesc = ar9002_hw_fill_txdesc;
-       ops->proc_txdesc = ar9002_hw_proc_txdesc;
---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-@@ -43,13 +43,6 @@ static void ar9003_hw_set_desc_link(void
-       ads->ctl10 |= ar9003_calc_ptr_chksum(ads);
- }
--static void ar9003_hw_get_desc_link(void *ds, u32 **ds_link)
--{
--      struct ar9003_txc *ads = ds;
--
--      *ds_link = &ads->link;
--}
--
- static bool ar9003_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
- {
-       u32 isr = 0;
-@@ -498,7 +491,6 @@ void ar9003_hw_attach_mac_ops(struct ath
-       ops->rx_enable = ar9003_hw_rx_enable;
-       ops->set_desc_link = ar9003_hw_set_desc_link;
--      ops->get_desc_link = ar9003_hw_get_desc_link;
-       ops->get_isr = ar9003_hw_get_isr;
-       ops->fill_txdesc = ar9003_hw_fill_txdesc;
-       ops->proc_txdesc = ar9003_hw_proc_txdesc;
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -179,7 +179,7 @@ enum ATH_AGGR_STATUS {
- struct ath_txq {
-       int mac80211_qnum; /* mac80211 queue number, -1 means not mac80211 Q */
-       u32 axq_qnum; /* ath9k hardware queue number */
--      u32 *axq_link;
-+      void *axq_link;
-       struct list_head axq_q;
-       spinlock_t axq_lock;
-       u32 axq_depth;
-@@ -188,7 +188,6 @@ struct ath_txq {
-       bool axq_tx_inprogress;
-       struct list_head axq_acq;
-       struct list_head txq_fifo[ATH_TXFIFO_DEPTH];
--      struct list_head txq_fifo_pending;
-       u8 txq_headidx;
-       u8 txq_tailidx;
-       int pending_frames;
---- a/drivers/net/wireless/ath/ath9k/debug.c
-+++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -550,6 +550,7 @@ static ssize_t read_file_xmit(struct fil
-       PR("MPDUs Queued:    ", queued);
-       PR("MPDUs Completed: ", completed);
-+      PR("MPDUs XRetried:  ", xretries);
-       PR("Aggregates:      ", a_aggr);
-       PR("AMPDUs Queued HW:", a_queued_hw);
-       PR("AMPDUs Queued SW:", a_queued_sw);
-@@ -587,7 +588,6 @@ static ssize_t read_file_xmit(struct fil
-       PRQLE("axq_q empty:       ", axq_q);
-       PRQLE("axq_acq empty:     ", axq_acq);
--      PRQLE("txq_fifo_pending:  ", txq_fifo_pending);
-       for (i = 0; i < ATH_TXFIFO_DEPTH; i++) {
-               snprintf(tmp, sizeof(tmp) - 1, "txq_fifo[%i] empty: ", i);
-               PRQLE(tmp, txq_fifo[i]);
-@@ -807,7 +807,10 @@ void ath_debug_stat_tx(struct ath_softc
-               else
-                       TX_STAT_INC(qnum, a_completed);
-       } else {
--              TX_STAT_INC(qnum, completed);
-+              if (bf_isxretried(bf))
-+                      TX_STAT_INC(qnum, xretries);
-+              else
-+                      TX_STAT_INC(qnum, completed);
-       }
-       if (ts->ts_status & ATH9K_TXERR_FIFO)
---- a/drivers/net/wireless/ath/ath9k/hw-ops.h
-+++ b/drivers/net/wireless/ath/ath9k/hw-ops.h
-@@ -39,11 +39,6 @@ static inline void ath9k_hw_set_desc_lin
-       ath9k_hw_ops(ah)->set_desc_link(ds, link);
- }
--static inline void ath9k_hw_get_desc_link(struct ath_hw *ah, void *ds,
--                                        u32 **link)
--{
--      ath9k_hw_ops(ah)->get_desc_link(ds, link);
--}
- static inline bool ath9k_hw_calibrate(struct ath_hw *ah,
-                                     struct ath9k_channel *chan,
-                                     u8 rxchainmask,
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -53,7 +53,7 @@ static void ath_tx_complete_buf(struct a
-                               struct ath_txq *txq, struct list_head *bf_q,
-                               struct ath_tx_status *ts, int txok, int sendbar);
- static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
--                           struct list_head *head);
-+                           struct list_head *head, bool internal);
- static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, int len);
- static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
-                            struct ath_tx_status *ts, int nframes, int nbad,
-@@ -377,8 +377,7 @@ static void ath_tx_complete_aggr(struct
-                       bf_next = bf->bf_next;
-                       bf->bf_state.bf_type |= BUF_XRETRY;
--                      if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ||
--                          !bf->bf_stale || bf_next != NULL)
-+                      if (!bf->bf_stale || bf_next != NULL)
-                               list_move_tail(&bf->list, &bf_head);
-                       ath_tx_rc_status(sc, bf, ts, 1, 1, 0, false);
-@@ -463,20 +462,14 @@ static void ath_tx_complete_aggr(struct
-                       }
-               }
--              if (!(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) &&
--                  bf_next == NULL) {
--                      /*
--                       * Make sure the last desc is reclaimed if it
--                       * not a holding desc.
--                       */
--                      if (!bf_last->bf_stale)
--                              list_move_tail(&bf->list, &bf_head);
--                      else
--                              INIT_LIST_HEAD(&bf_head);
--              } else {
--                      BUG_ON(list_empty(bf_q));
-+              /*
-+               * Make sure the last desc is reclaimed if it
-+               * not a holding desc.
-+               */
-+              if (!bf_last->bf_stale || bf_next != NULL)
-                       list_move_tail(&bf->list, &bf_head);
--              }
-+              else
-+                      INIT_LIST_HEAD(&bf_head);
-               if (!txpending || (tid->state & AGGR_CLEANUP)) {
-                       /*
-@@ -837,7 +830,7 @@ static void ath_tx_sched_aggr(struct ath
-                       bf->bf_state.bf_type &= ~BUF_AGGR;
-                       ath9k_hw_clr11n_aggr(sc->sc_ah, bf->bf_desc);
-                       ath_buf_set_rate(sc, bf, fi->framelen);
--                      ath_tx_txqaddbuf(sc, txq, &bf_q);
-+                      ath_tx_txqaddbuf(sc, txq, &bf_q, false);
-                       continue;
-               }
-@@ -849,7 +842,7 @@ static void ath_tx_sched_aggr(struct ath
-               /* anchor last desc of aggregate */
-               ath9k_hw_set11n_aggr_last(sc->sc_ah, bf->bf_lastbf->bf_desc);
--              ath_tx_txqaddbuf(sc, txq, &bf_q);
-+              ath_tx_txqaddbuf(sc, txq, &bf_q, false);
-               TX_STAT_INC(txq->axq_qnum, a_aggr);
-       } while (txq->axq_ampdu_depth < ATH_AGGR_MIN_QDEPTH &&
-@@ -1085,7 +1078,6 @@ struct ath_txq *ath_txq_setup(struct ath
-               txq->txq_headidx = txq->txq_tailidx = 0;
-               for (i = 0; i < ATH_TXFIFO_DEPTH; i++)
-                       INIT_LIST_HEAD(&txq->txq_fifo[i]);
--              INIT_LIST_HEAD(&txq->txq_fifo_pending);
-       }
-       return &sc->tx.txq[axq_qnum];
- }
-@@ -1155,13 +1147,8 @@ static bool bf_is_ampdu_not_probing(stru
-     return bf_isampdu(bf) && !(info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE);
- }
--/*
-- * Drain a given TX queue (could be Beacon or Data)
-- *
-- * This assumes output has been stopped and
-- * we do not need to block ath_tx_tasklet.
-- */
--void ath_draintxq(struct ath_softc *sc, struct ath_txq *txq, bool retry_tx)
-+static void ath_drain_txq_list(struct ath_softc *sc, struct ath_txq *txq,
-+                             struct list_head *list, bool retry_tx)
- {
-       struct ath_buf *bf, *lastbf;
-       struct list_head bf_head;
-@@ -1170,93 +1157,63 @@ void ath_draintxq(struct ath_softc *sc,
-       memset(&ts, 0, sizeof(ts));
-       INIT_LIST_HEAD(&bf_head);
--      for (;;) {
--              spin_lock_bh(&txq->axq_lock);
-+      while (!list_empty(list)) {
-+              bf = list_first_entry(list, struct ath_buf, list);
--              if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
--                      if (list_empty(&txq->txq_fifo[txq->txq_tailidx])) {
--                              txq->txq_headidx = txq->txq_tailidx = 0;
--                              spin_unlock_bh(&txq->axq_lock);
--                              break;
--                      } else {
--                              bf = list_first_entry(&txq->txq_fifo[txq->txq_tailidx],
--                                                    struct ath_buf, list);
--                      }
--              } else {
--                      if (list_empty(&txq->axq_q)) {
--                              txq->axq_link = NULL;
--                              spin_unlock_bh(&txq->axq_lock);
--                              break;
--                      }
--                      bf = list_first_entry(&txq->axq_q, struct ath_buf,
--                                            list);
--
--                      if (bf->bf_stale) {
--                              list_del(&bf->list);
--                              spin_unlock_bh(&txq->axq_lock);
-+              if (bf->bf_stale) {
-+                      list_del(&bf->list);
--                              ath_tx_return_buffer(sc, bf);
--                              continue;
--                      }
-+                      ath_tx_return_buffer(sc, bf);
-+                      continue;
-               }
-               lastbf = bf->bf_lastbf;
--
--              if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
--                      list_cut_position(&bf_head,
--                                        &txq->txq_fifo[txq->txq_tailidx],
--                                        &lastbf->list);
--                      INCR(txq->txq_tailidx, ATH_TXFIFO_DEPTH);
--              } else {
--                      /* remove ath_buf's of the same mpdu from txq */
--                      list_cut_position(&bf_head, &txq->axq_q, &lastbf->list);
--              }
-+              list_cut_position(&bf_head, list, &lastbf->list);
-               txq->axq_depth--;
-               if (bf_is_ampdu_not_probing(bf))
-                       txq->axq_ampdu_depth--;
--              spin_unlock_bh(&txq->axq_lock);
-+              spin_unlock_bh(&txq->axq_lock);
-               if (bf_isampdu(bf))
-                       ath_tx_complete_aggr(sc, txq, bf, &bf_head, &ts, 0,
-                                            retry_tx);
-               else
-                       ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 0);
-+              spin_lock_bh(&txq->axq_lock);
-       }
-+}
-+/*
-+ * Drain a given TX queue (could be Beacon or Data)
-+ *
-+ * This assumes output has been stopped and
-+ * we do not need to block ath_tx_tasklet.
-+ */
-+void ath_draintxq(struct ath_softc *sc, struct ath_txq *txq, bool retry_tx)
-+{
-       spin_lock_bh(&txq->axq_lock);
--      txq->axq_tx_inprogress = false;
--      spin_unlock_bh(&txq->axq_lock);
--
-       if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
--              spin_lock_bh(&txq->axq_lock);
--              while (!list_empty(&txq->txq_fifo_pending)) {
--                      bf = list_first_entry(&txq->txq_fifo_pending,
--                                            struct ath_buf, list);
--                      list_cut_position(&bf_head,
--                                        &txq->txq_fifo_pending,
--                                        &bf->bf_lastbf->list);
--                      spin_unlock_bh(&txq->axq_lock);
-+              int idx = txq->txq_tailidx;
--                      if (bf_isampdu(bf))
--                              ath_tx_complete_aggr(sc, txq, bf, &bf_head,
--                                                   &ts, 0, retry_tx);
--                      else
--                              ath_tx_complete_buf(sc, bf, txq, &bf_head,
--                                                  &ts, 0, 0);
--                      spin_lock_bh(&txq->axq_lock);
-+              while (!list_empty(&txq->txq_fifo[idx])) {
-+                      ath_drain_txq_list(sc, txq, &txq->txq_fifo[idx],
-+                                         retry_tx);
-+
-+                      INCR(idx, ATH_TXFIFO_DEPTH);
-               }
--              spin_unlock_bh(&txq->axq_lock);
-+              txq->txq_tailidx = idx;
-       }
-+      txq->axq_link = NULL;
-+      txq->axq_tx_inprogress = false;
-+      ath_drain_txq_list(sc, txq, &txq->axq_q, retry_tx);
-+
-       /* flush any pending frames if aggregation is enabled */
--      if (sc->sc_flags & SC_OP_TXAGGR) {
--              if (!retry_tx) {
--                      spin_lock_bh(&txq->axq_lock);
--                      ath_txq_drain_pending_buffers(sc, txq);
--                      spin_unlock_bh(&txq->axq_lock);
--              }
--      }
-+      if ((sc->sc_flags & SC_OP_TXAGGR) && !retry_tx)
-+              ath_txq_drain_pending_buffers(sc, txq);
-+
-+      spin_unlock_bh(&txq->axq_lock);
- }
- bool ath_drain_all_txq(struct ath_softc *sc, bool retry_tx)
-@@ -1370,11 +1327,13 @@ void ath_txq_schedule(struct ath_softc *
-  * assume the descriptors are already chained together by caller.
-  */
- static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
--                           struct list_head *head)
-+                           struct list_head *head, bool internal)
- {
-       struct ath_hw *ah = sc->sc_ah;
-       struct ath_common *common = ath9k_hw_common(ah);
--      struct ath_buf *bf;
-+      struct ath_buf *bf, *bf_last;
-+      bool puttxbuf = false;
-+      bool edma;
-       /*
-        * Insert the frame on the outbound list and
-@@ -1384,51 +1343,49 @@ static void ath_tx_txqaddbuf(struct ath_
-       if (list_empty(head))
-               return;
-+      edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA);
-       bf = list_first_entry(head, struct ath_buf, list);
-+      bf_last = list_entry(head->prev, struct ath_buf, list);
-       ath_dbg(common, ATH_DBG_QUEUE,
-               "qnum: %d, txq depth: %d\n", txq->axq_qnum, txq->axq_depth);
--      if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
--              if (txq->axq_depth >= ATH_TXFIFO_DEPTH) {
--                      list_splice_tail_init(head, &txq->txq_fifo_pending);
--                      return;
--              }
--              if (!list_empty(&txq->txq_fifo[txq->txq_headidx]))
--                      ath_dbg(common, ATH_DBG_XMIT,
--                              "Initializing tx fifo %d which is non-empty\n",
--                              txq->txq_headidx);
--              INIT_LIST_HEAD(&txq->txq_fifo[txq->txq_headidx]);
--              list_splice_init(head, &txq->txq_fifo[txq->txq_headidx]);
-+      if (edma && list_empty(&txq->txq_fifo[txq->txq_headidx])) {
-+              list_splice_tail_init(head, &txq->txq_fifo[txq->txq_headidx]);
-               INCR(txq->txq_headidx, ATH_TXFIFO_DEPTH);
--              TX_STAT_INC(txq->axq_qnum, puttxbuf);
--              ath9k_hw_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr);
--              ath_dbg(common, ATH_DBG_XMIT, "TXDP[%u] = %llx (%p)\n",
--                      txq->axq_qnum, ito64(bf->bf_daddr), bf->bf_desc);
-+              puttxbuf = true;
-       } else {
-               list_splice_tail_init(head, &txq->axq_q);
--              if (txq->axq_link == NULL) {
--                      TX_STAT_INC(txq->axq_qnum, puttxbuf);
--                      ath9k_hw_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr);
--                      ath_dbg(common, ATH_DBG_XMIT, "TXDP[%u] = %llx (%p)\n",
--                              txq->axq_qnum, ito64(bf->bf_daddr),
--                              bf->bf_desc);
--              } else {
--                      *txq->axq_link = bf->bf_daddr;
-+              if (txq->axq_link) {
-+                      ath9k_hw_set_desc_link(ah, txq->axq_link, bf->bf_daddr);
-                       ath_dbg(common, ATH_DBG_XMIT,
-                               "link[%u] (%p)=%llx (%p)\n",
-                               txq->axq_qnum, txq->axq_link,
-                               ito64(bf->bf_daddr), bf->bf_desc);
--              }
--              ath9k_hw_get_desc_link(ah, bf->bf_lastbf->bf_desc,
--                                     &txq->axq_link);
-+              } else if (!edma)
-+                      puttxbuf = true;
-+
-+              txq->axq_link = bf_last->bf_desc;
-+      }
-+
-+      if (puttxbuf) {
-+              TX_STAT_INC(txq->axq_qnum, puttxbuf);
-+              ath9k_hw_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr);
-+              ath_dbg(common, ATH_DBG_XMIT, "TXDP[%u] = %llx (%p)\n",
-+                      txq->axq_qnum, ito64(bf->bf_daddr), bf->bf_desc);
-+      }
-+
-+      if (!edma) {
-               TX_STAT_INC(txq->axq_qnum, txstart);
-               ath9k_hw_txstart(ah, txq->axq_qnum);
-       }
--      txq->axq_depth++;
--      if (bf_is_ampdu_not_probing(bf))
--              txq->axq_ampdu_depth++;
-+
-+      if (!internal) {
-+              txq->axq_depth++;
-+              if (bf_is_ampdu_not_probing(bf))
-+                      txq->axq_ampdu_depth++;
-+      }
- }
- static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
-@@ -1470,7 +1427,7 @@ static void ath_tx_send_ampdu(struct ath
-       TX_STAT_INC(txctl->txq->axq_qnum, a_queued_hw);
-       bf->bf_lastbf = bf;
-       ath_buf_set_rate(sc, bf, fi->framelen);
--      ath_tx_txqaddbuf(sc, txctl->txq, &bf_head);
-+      ath_tx_txqaddbuf(sc, txctl->txq, &bf_head, false);
- }
- static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,
-@@ -1490,7 +1447,7 @@ static void ath_tx_send_normal(struct at
-       bf->bf_lastbf = bf;
-       fi = get_frame_info(bf->bf_mpdu);
-       ath_buf_set_rate(sc, bf, fi->framelen);
--      ath_tx_txqaddbuf(sc, txq, bf_head);
-+      ath_tx_txqaddbuf(sc, txq, bf_head, false);
-       TX_STAT_INC(txq->axq_qnum, queued);
- }
-@@ -2077,6 +2034,38 @@ static void ath_tx_rc_status(struct ath_
-       tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
- }
-+static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq,
-+                                struct ath_tx_status *ts, struct ath_buf *bf,
-+                                struct list_head *bf_head)
-+{
-+      int txok;
-+
-+      txq->axq_depth--;
-+      txok = !(ts->ts_status & ATH9K_TXERR_MASK);
-+      txq->axq_tx_inprogress = false;
-+      if (bf_is_ampdu_not_probing(bf))
-+              txq->axq_ampdu_depth--;
-+
-+      spin_unlock_bh(&txq->axq_lock);
-+
-+      if (!bf_isampdu(bf)) {
-+              /*
-+               * This frame is sent out as a single frame.
-+               * Use hardware retry status for this frame.
-+               */
-+              if (ts->ts_status & ATH9K_TXERR_XRETRY)
-+                      bf->bf_state.bf_type |= BUF_XRETRY;
-+              ath_tx_rc_status(sc, bf, ts, 1, txok ? 0 : 1, txok, true);
-+              ath_tx_complete_buf(sc, bf, txq, bf_head, ts, txok, 0);
-+      } else
-+              ath_tx_complete_aggr(sc, txq, bf, bf_head, ts, txok, true);
-+
-+      spin_lock_bh(&txq->axq_lock);
-+
-+      if (sc->sc_flags & SC_OP_TXAGGR)
-+              ath_txq_schedule(sc, txq);
-+}
-+
- static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
- {
-       struct ath_hw *ah = sc->sc_ah;
-@@ -2085,20 +2074,18 @@ static void ath_tx_processq(struct ath_s
-       struct list_head bf_head;
-       struct ath_desc *ds;
-       struct ath_tx_status ts;
--      int txok;
-       int status;
-       ath_dbg(common, ATH_DBG_QUEUE, "tx queue %d (%x), link %p\n",
-               txq->axq_qnum, ath9k_hw_gettxbuf(sc->sc_ah, txq->axq_qnum),
-               txq->axq_link);
-+      spin_lock_bh(&txq->axq_lock);
-       for (;;) {
--              spin_lock_bh(&txq->axq_lock);
-               if (list_empty(&txq->axq_q)) {
-                       txq->axq_link = NULL;
-                       if (sc->sc_flags & SC_OP_TXAGGR)
-                               ath_txq_schedule(sc, txq);
--                      spin_unlock_bh(&txq->axq_lock);
-                       break;
-               }
-               bf = list_first_entry(&txq->axq_q, struct ath_buf, list);
-@@ -2114,13 +2101,11 @@ static void ath_tx_processq(struct ath_s
-               bf_held = NULL;
-               if (bf->bf_stale) {
-                       bf_held = bf;
--                      if (list_is_last(&bf_held->list, &txq->axq_q)) {
--                              spin_unlock_bh(&txq->axq_lock);
-+                      if (list_is_last(&bf_held->list, &txq->axq_q))
-                               break;
--                      } else {
--                              bf = list_entry(bf_held->list.next,
--                                              struct ath_buf, list);
--                      }
-+
-+                      bf = list_entry(bf_held->list.next, struct ath_buf,
-+                                      list);
-               }
-               lastbf = bf->bf_lastbf;
-@@ -2128,10 +2113,9 @@ static void ath_tx_processq(struct ath_s
-               memset(&ts, 0, sizeof(ts));
-               status = ath9k_hw_txprocdesc(ah, ds, &ts);
--              if (status == -EINPROGRESS) {
--                      spin_unlock_bh(&txq->axq_lock);
-+              if (status == -EINPROGRESS)
-                       break;
--              }
-+
-               TX_STAT_INC(txq->axq_qnum, txprocdesc);
-               /*
-@@ -2145,42 +2129,14 @@ static void ath_tx_processq(struct ath_s
-                       list_cut_position(&bf_head,
-                               &txq->axq_q, lastbf->list.prev);
--              txq->axq_depth--;
--              txok = !(ts.ts_status & ATH9K_TXERR_MASK);
--              txq->axq_tx_inprogress = false;
--              if (bf_held)
-+              if (bf_held) {
-                       list_del(&bf_held->list);
--
--              if (bf_is_ampdu_not_probing(bf))
--                      txq->axq_ampdu_depth--;
--
--              spin_unlock_bh(&txq->axq_lock);
--
--              if (bf_held)
-                       ath_tx_return_buffer(sc, bf_held);
--
--              if (!bf_isampdu(bf)) {
--                      /*
--                       * This frame is sent out as a single frame.
--                       * Use hardware retry status for this frame.
--                       */
--                      if (ts.ts_status & ATH9K_TXERR_XRETRY)
--                              bf->bf_state.bf_type |= BUF_XRETRY;
--                      ath_tx_rc_status(sc, bf, &ts, 1, txok ? 0 : 1, txok, true);
-               }
--              if (bf_isampdu(bf))
--                      ath_tx_complete_aggr(sc, txq, bf, &bf_head, &ts, txok,
--                                           true);
--              else
--                      ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, txok, 0);
--
--              spin_lock_bh(&txq->axq_lock);
--
--              if (sc->sc_flags & SC_OP_TXAGGR)
--                      ath_txq_schedule(sc, txq);
--              spin_unlock_bh(&txq->axq_lock);
-+              ath_tx_process_buffer(sc, txq, &ts, bf, &bf_head);
-       }
-+      spin_unlock_bh(&txq->axq_lock);
- }
- static void ath_tx_complete_poll_work(struct work_struct *work)
-@@ -2237,17 +2193,16 @@ void ath_tx_tasklet(struct ath_softc *sc
- void ath_tx_edma_tasklet(struct ath_softc *sc)
- {
--      struct ath_tx_status txs;
-+      struct ath_tx_status ts;
-       struct ath_common *common = ath9k_hw_common(sc->sc_ah);
-       struct ath_hw *ah = sc->sc_ah;
-       struct ath_txq *txq;
-       struct ath_buf *bf, *lastbf;
-       struct list_head bf_head;
-       int status;
--      int txok;
-       for (;;) {
--              status = ath9k_hw_txprocdesc(ah, NULL, (void *)&txs);
-+              status = ath9k_hw_txprocdesc(ah, NULL, (void *)&ts);
-               if (status == -EINPROGRESS)
-                       break;
-               if (status == -EIO) {
-@@ -2257,12 +2212,13 @@ void ath_tx_edma_tasklet(struct ath_soft
-               }
-               /* Skip beacon completions */
--              if (txs.qid == sc->beacon.beaconq)
-+              if (ts.qid == sc->beacon.beaconq)
-                       continue;
--              txq = &sc->tx.txq[txs.qid];
-+              txq = &sc->tx.txq[ts.qid];
-               spin_lock_bh(&txq->axq_lock);
-+
-               if (list_empty(&txq->txq_fifo[txq->txq_tailidx])) {
-                       spin_unlock_bh(&txq->axq_lock);
-                       return;
-@@ -2275,41 +2231,21 @@ void ath_tx_edma_tasklet(struct ath_soft
-               INIT_LIST_HEAD(&bf_head);
-               list_cut_position(&bf_head, &txq->txq_fifo[txq->txq_tailidx],
-                                 &lastbf->list);
--              INCR(txq->txq_tailidx, ATH_TXFIFO_DEPTH);
--              txq->axq_depth--;
--              txq->axq_tx_inprogress = false;
--              if (bf_is_ampdu_not_probing(bf))
--                      txq->axq_ampdu_depth--;
--              spin_unlock_bh(&txq->axq_lock);
--              txok = !(txs.ts_status & ATH9K_TXERR_MASK);
--
--              if (!bf_isampdu(bf)) {
--                      if (txs.ts_status & ATH9K_TXERR_XRETRY)
--                              bf->bf_state.bf_type |= BUF_XRETRY;
--                      ath_tx_rc_status(sc, bf, &txs, 1, txok ? 0 : 1, txok, true);
--              }
--
--              if (bf_isampdu(bf))
--                      ath_tx_complete_aggr(sc, txq, bf, &bf_head, &txs,
--                                           txok, true);
--              else
--                      ath_tx_complete_buf(sc, bf, txq, &bf_head,
--                                          &txs, txok, 0);
-+              if (list_empty(&txq->txq_fifo[txq->txq_tailidx])) {
-+                      INCR(txq->txq_tailidx, ATH_TXFIFO_DEPTH);
--              spin_lock_bh(&txq->axq_lock);
-+                      if (!list_empty(&txq->axq_q)) {
-+                              struct list_head bf_q;
--              if (!list_empty(&txq->txq_fifo_pending)) {
--                      INIT_LIST_HEAD(&bf_head);
--                      bf = list_first_entry(&txq->txq_fifo_pending,
--                                            struct ath_buf, list);
--                      list_cut_position(&bf_head,
--                                        &txq->txq_fifo_pending,
--                                        &bf->bf_lastbf->list);
--                      ath_tx_txqaddbuf(sc, txq, &bf_head);
--              } else if (sc->sc_flags & SC_OP_TXAGGR)
--                      ath_txq_schedule(sc, txq);
-+                              INIT_LIST_HEAD(&bf_q);
-+                              txq->axq_link = NULL;
-+                              list_splice_tail_init(&txq->axq_q, &bf_q);
-+                              ath_tx_txqaddbuf(sc, txq, &bf_q, true);
-+                      }
-+              }
-+              ath_tx_process_buffer(sc, txq, &ts, bf, &bf_head);
-               spin_unlock_bh(&txq->axq_lock);
-       }
- }
 --- a/net/mac80211/agg-rx.c
 +++ b/net/mac80211/agg-rx.c
-@@ -161,6 +161,8 @@ static void ieee80211_send_addba_resp(st
+@@ -176,6 +176,8 @@ static void ieee80211_send_addba_resp(st
                memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN);
        else if (sdata->vif.type == NL80211_IFTYPE_STATION)
                memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN);
                memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN);
        else if (sdata->vif.type == NL80211_IFTYPE_STATION)
                memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN);
-@@ -388,7 +389,8 @@ int ieee80211_start_tx_ba_session(struct
+@@ -398,7 +399,8 @@ int ieee80211_start_tx_ba_session(struct
         */
        if (sdata->vif.type != NL80211_IFTYPE_STATION &&
            sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
  static void ieee80211_iface_work(struct work_struct *work)
  {
        struct ieee80211_sub_if_data *sdata =
-@@ -822,6 +863,9 @@ static void ieee80211_iface_work(struct
+@@ -822,6 +863,9 @@ static void ieee80211_iface_work(struct 
                                break;
                        ieee80211_mesh_rx_queued_mgmt(sdata, skb);
                        break;
        WLAN_STA_CLEAR_PS_FILT  = 1<<9,
        WLAN_STA_MFP            = 1<<10,
        WLAN_STA_BLOCK_BA       = 1<<11,
---- a/drivers/net/wireless/ath/ath9k/debug.h
-+++ b/drivers/net/wireless/ath/ath9k/debug.h
-@@ -116,6 +116,7 @@ struct ath_tx_stats {
-       u32 tx_bytes_all;
-       u32 queued;
-       u32 completed;
-+      u32 xretries;
-       u32 a_aggr;
-       u32 a_queued_hw;
-       u32 a_queued_sw;
---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-@@ -4645,10 +4645,16 @@ static void ar9003_hw_set_power_per_rate
-       case 1:
-               break;
-       case 2:
--              scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
-+              if (scaledPower > REDUCE_SCALED_POWER_BY_TWO_CHAIN)
-+                      scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
-+              else
-+                      scaledPower = 0;
-               break;
-       case 3:
--              scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
-+              if (scaledPower > REDUCE_SCALED_POWER_BY_THREE_CHAIN)
-+                      scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
-+              else
-+                      scaledPower = 0;
-               break;
-       }
---- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
-+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
-@@ -524,10 +524,16 @@ static void ath9k_hw_set_ar9287_power_pe
-       case 1:
-               break;
-       case 2:
--              scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
-+              if (scaledPower > REDUCE_SCALED_POWER_BY_TWO_CHAIN)
-+                      scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
-+              else
-+                      scaledPower = 0;
-               break;
-       case 3:
--              scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
-+              if (scaledPower > REDUCE_SCALED_POWER_BY_THREE_CHAIN)
-+                      scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
-+              else
-+                      scaledPower = 0;
-               break;
-       }
-       scaledPower = max((u16)0, scaledPower);
index ccb693a4bd36525724e2014b20f57ae31fed0aaa..767f905a7fad1bf4535642ca4988abcf1f50ba66 100644 (file)
@@ -8,7 +8,7 @@
  #include <asm/unaligned.h>
  
  #include "hw.h"
-@@ -434,8 +435,16 @@ static int ath9k_hw_init_macaddr(struct
+@@ -443,8 +444,16 @@ static int ath9k_hw_init_macaddr(struct 
                common->macaddr[2 * i] = eeval >> 8;
                common->macaddr[2 * i + 1] = eeval & 0xff;
        }
index 6982671300c7e192fe8971ffd33f72ee52071c53..a2faaa423596efcaa77a022649938fe2d806482a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1480,15 +1480,6 @@ static int ath9k_add_interface(struct ie
+@@ -1490,15 +1490,6 @@ static int ath9k_add_interface(struct ie
                }
        }
  
@@ -16,7 +16,7 @@
        ath_dbg(common, ATH_DBG_CONFIG,
                "Attach a VIF of type: %d\n", vif->type);
  
-@@ -1514,15 +1505,6 @@ static int ath9k_change_interface(struct
+@@ -1524,15 +1515,6 @@ static int ath9k_change_interface(struct
        mutex_lock(&sc->mutex);
        ath9k_ps_wakeup(sc);
  
index d37da10ed19dfb95e910f96a00df2c75a18efe1f..a75477497f89a3f8d37a685043bb4cc2d2dd1dc8 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
 +++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
-@@ -97,13 +97,8 @@ ath5k_add_interface(struct ieee80211_hw
+@@ -95,13 +95,8 @@ ath5k_add_interface(struct ieee80211_hw 
                goto end;
        }
  
@@ -18,7 +18,7 @@
                goto end;
 --- a/drivers/net/wireless/ath/ath5k/base.c
 +++ b/drivers/net/wireless/ath/ath5k/base.c
-@@ -1880,7 +1880,7 @@ ath5k_beacon_send(struct ath5k_softc *sc
+@@ -1883,7 +1883,7 @@ ath5k_beacon_send(struct ath5k_softc *sc
                sc->bmisscount = 0;
        }
  
@@ -27,7 +27,7 @@
                        sc->opmode == NL80211_IFTYPE_MESH_POINT) {
                u64 tsf = ath5k_hw_get_tsf64(ah);
                u32 tsftu = TSF_TO_TU(tsf);
-@@ -1958,7 +1958,7 @@ ath5k_beacon_update_timers(struct ath5k_
+@@ -1961,7 +1961,7 @@ ath5k_beacon_update_timers(struct ath5k_
        u64 hw_tsf;
  
        intval = sc->bintval & AR5K_BEACON_PERIOD;
index ad2d862e1cf51f1a80347db077d612a405e78f9d..e049645a1fc95d0e70df5731b520aad2c26728a0 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath5k/reset.c
 +++ b/drivers/net/wireless/ath/ath5k/reset.c
-@@ -1035,6 +1035,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah,
+@@ -1035,6 +1035,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, 
        tsf_lo = 0;
        mode = 0;
  
@@ -8,7 +8,7 @@
        /*
         * Sanity check for fast flag
         * Fast channel change only available
-@@ -1042,6 +1043,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah,
+@@ -1042,6 +1043,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, 
         */
        if (fast && (ah->ah_radio != AR5K_RF2413) &&
        (ah->ah_radio != AR5K_RF5413))
index 4aa83c734a94320299b88f4ae82f70fbc67494e2..df11fe40e787c9529041b4b0c4233996e6760145 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/debug.c
 +++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -1131,6 +1131,53 @@ static const struct file_operations fops
+@@ -1181,6 +1181,53 @@ static const struct file_operations fops
        .llseek = default_llseek,/* read accesses f_pos */
  };
  
@@ -54,7 +54,7 @@
  int ath9k_init_debug(struct ath_hw *ah)
  {
        struct ath_common *common = ath9k_hw_common(ah);
-@@ -1179,6 +1226,9 @@ int ath9k_init_debug(struct ath_hw *ah)
+@@ -1231,6 +1278,9 @@ int ath9k_init_debug(struct ath_hw *ah)
        debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR,
                           sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
  
index 0ebc6b6df307701ae1ec96be39beebd971553036..c3e56d3f1777db91e862326c66dcda4d4f63abde 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/hw.c
 +++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1508,8 +1508,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1591,8 +1591,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
        REG_WRITE(ah, AR_OBS, 8);
  
        if (ah->config.rx_intr_mitigation) {
index 94039d3fe52cabac01205b4e61055751c880c9c6..d9e996a72b9ef1435bbfec65e93cae849da726a0 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/ath9k.h
 +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -365,7 +365,7 @@ struct ath_vif {
+@@ -363,7 +363,7 @@ struct ath_vif {
   * number of beacon intervals, the game's up.
   */
  #define BSTUCK_THRESH                 9
@@ -11,7 +11,7 @@
  #define IEEE80211_MS_TO_TU(x)           (((x) * 1000) / 1024)
 --- a/drivers/net/wireless/ath/ath9k/hw.c
 +++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -355,8 +355,8 @@ static void ath9k_hw_init_config(struct
+@@ -364,8 +364,8 @@ static void ath9k_hw_init_config(struct 
  {
        int i;
  
index 96684aae90e28c279bb7cd923486e87f2985b9a8..23849316210069f11dcac1516445b47b23b39fb7 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/ath9k.h
 +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -119,7 +119,7 @@ void ath_descdma_cleanup(struct ath_soft
+@@ -117,7 +117,7 @@ void ath_descdma_cleanup(struct ath_soft
  /* RX / TX */
  /***********/
  
index e3ce0eb3c449ac1d5be269251218a7c22b4c639b..7e41b2cb63a353eefa6ced22c5117f38672ad20a 100644 (file)
@@ -38,7 +38,7 @@
  
 --- a/drivers/net/wireless/ath/ath9k/hw.c
 +++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1344,6 +1344,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1427,6 +1427,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
                memset(caldata, 0, sizeof(*caldata));
                ath9k_init_nfcal_hist_buffer(ah, chan);
        }
@@ -48,7 +48,7 @@
            (ah->chip_fullsleep != true) &&
 --- a/drivers/net/wireless/ath/ath9k/hw.h
 +++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -687,6 +687,7 @@ struct ath_hw {
+@@ -688,6 +688,7 @@ struct ath_hw {
        enum nl80211_iftype opmode;
        enum ath9k_power_mode power_mode;
  
@@ -58,7 +58,7 @@
        struct ar5416Stats stats;
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -163,7 +163,7 @@ static void ath_update_survey_nf(struct
+@@ -163,7 +163,7 @@ static void ath_update_survey_nf(struct 
  
        if (chan->noisefloor) {
                survey->filled |= SURVEY_INFO_NOISE_DBM;
@@ -69,7 +69,7 @@
  
 --- a/drivers/net/wireless/ath/ath9k/recv.c
 +++ b/drivers/net/wireless/ath/ath9k/recv.c
-@@ -985,6 +985,8 @@ static int ath9k_rx_skb_preprocess(struc
+@@ -986,6 +986,8 @@ static int ath9k_rx_skb_preprocess(struc
                                   struct ieee80211_rx_status *rx_status,
                                   bool *decrypt_error)
  {
@@ -78,7 +78,7 @@
        memset(rx_status, 0, sizeof(struct ieee80211_rx_status));
  
        /*
-@@ -1005,7 +1007,7 @@ static int ath9k_rx_skb_preprocess(struc
+@@ -1006,7 +1008,7 @@ static int ath9k_rx_skb_preprocess(struc
  
        rx_status->band = hw->conf.channel->band;
        rx_status->freq = hw->conf.channel->center_freq;
diff --git a/package/mac80211/patches/540-ath9k-define-mac-version-for-AR9330.patch b/package/mac80211/patches/540-ath9k-define-mac-version-for-AR9330.patch
deleted file mode 100644 (file)
index 179e5c6..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -560,6 +560,7 @@ static int __ath9k_hw_init(struct ath_hw
-       case AR_SREV_VERSION_9287:
-       case AR_SREV_VERSION_9271:
-       case AR_SREV_VERSION_9300:
-+      case AR_SREV_VERSION_9330:
-       case AR_SREV_VERSION_9485:
-       case AR_SREV_VERSION_9340:
-               break;
-@@ -570,7 +571,8 @@ static int __ath9k_hw_init(struct ath_hw
-               return -EOPNOTSUPP;
-       }
--      if (AR_SREV_9271(ah) || AR_SREV_9100(ah) || AR_SREV_9340(ah))
-+      if (AR_SREV_9271(ah) || AR_SREV_9100(ah) || AR_SREV_9340(ah) ||
-+          AR_SREV_9330(ah))
-               ah->is_pciexpress = false;
-       ah->hw_version.phyRev = REG_READ(ah, AR_PHY_CHIP_ID);
-@@ -2584,6 +2586,7 @@ static struct {
-       { AR_SREV_VERSION_9287,         "9287" },
-       { AR_SREV_VERSION_9271,         "9271" },
-       { AR_SREV_VERSION_9300,         "9300" },
-+      { AR_SREV_VERSION_9330,         "9330" },
-       { AR_SREV_VERSION_9485,         "9485" },
- };
---- a/drivers/net/wireless/ath/ath9k/reg.h
-+++ b/drivers/net/wireless/ath/ath9k/reg.h
-@@ -788,6 +788,10 @@
- #define AR_SREV_REVISION_9271_11      1
- #define AR_SREV_VERSION_9300          0x1c0
- #define AR_SREV_REVISION_9300_20      2 /* 2.0 and 2.1 */
-+#define AR_SREV_VERSION_9330          0x200
-+#define AR_SREV_REVISION_9330_10      0
-+#define AR_SREV_REVISION_9330_11      1
-+#define AR_SREV_REVISION_9330_12      2
- #define AR_SREV_VERSION_9485          0x240
- #define AR_SREV_REVISION_9485_10      0
- #define AR_SREV_REVISION_9485_11        1
-@@ -862,6 +866,18 @@
- #define AR_SREV_9300_20_OR_LATER(_ah) \
-       ((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9300)
-+#define AR_SREV_9330(_ah) \
-+      (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9330))
-+#define AR_SREV_9330_10(_ah) \
-+      (AR_SREV_9330((_ah)) && \
-+       ((_ah)->hw_version.macRev == AR_SREV_REVISION_9330_10))
-+#define AR_SREV_9330_11(_ah) \
-+      (AR_SREV_9330((_ah)) && \
-+       ((_ah)->hw_version.macRev == AR_SREV_REVISION_9330_11))
-+#define AR_SREV_9330_12(_ah) \
-+      (AR_SREV_9330((_ah)) && \
-+       ((_ah)->hw_version.macRev == AR_SREV_REVISION_9330_12))
-+
- #define AR_SREV_9485(_ah) \
-       (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9485))
- #define AR_SREV_9485_10(_ah) \
diff --git a/package/mac80211/patches/541-ath9k-define-device-id-for-AR9330.patch b/package/mac80211/patches/541-ath9k-define-device-id-for-AR9330.patch
deleted file mode 100644 (file)
index 69e967f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -45,6 +45,7 @@
- #define AR9300_DEVID_PCIE     0x0030
- #define AR9300_DEVID_AR9340   0x0031
- #define AR9300_DEVID_AR9485_PCIE 0x0032
-+#define AR9300_DEVID_AR9330   0x0035
- #define AR5416_AR9100_DEVID   0x000b
diff --git a/package/mac80211/patches/542-ath9k-add-MAC-revision-detection-for-AR9330.patch b/package/mac80211/patches/542-ath9k-add-MAC-revision-detection-for-AR9330.patch
deleted file mode 100644 (file)
index a1b5be6..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -252,6 +252,15 @@ static void ath9k_hw_read_revisions(stru
-       case AR5416_AR9100_DEVID:
-               ah->hw_version.macVersion = AR_SREV_VERSION_9100;
-               break;
-+      case AR9300_DEVID_AR9330:
-+              ah->hw_version.macVersion = AR_SREV_VERSION_9330;
-+              if (ah->get_mac_revision) {
-+                      ah->hw_version.macRev = ah->get_mac_revision();
-+              } else {
-+                      val = REG_READ(ah, AR_SREV);
-+                      ah->hw_version.macRev = MS(val, AR_SREV_REVISION2);
-+              }
-+              return;
-       case AR9300_DEVID_AR9340:
-               ah->hw_version.macVersion = AR_SREV_VERSION_9340;
-               val = REG_READ(ah, AR_SREV);
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -863,6 +863,7 @@ struct ath_hw {
-       u32 ent_mode;
-       bool is_clk_25mhz;
-+      int (*get_mac_revision)(void);
- };
- struct ath_bus_ops {
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -575,6 +575,7 @@ static int ath9k_init_softc(u16 devid, s
-               sc->sc_ah->gpio_val = pdata->gpio_val;
-               sc->sc_ah->led_pin = pdata->led_pin;
-               ah->is_clk_25mhz = pdata->is_clk_25mhz;
-+              ah->get_mac_revision = pdata->get_mac_revision;
-       }
-       common = ath9k_hw_common(ah);
---- a/include/linux/ath9k_platform.h
-+++ b/include/linux/ath9k_platform.h
-@@ -30,6 +30,7 @@ struct ath9k_platform_data {
-       u32 gpio_val;
-       bool is_clk_25mhz;
-+      int (*get_mac_revision)(void);
- };
- #endif /* _LINUX_ATH9K_PLATFORM_H */
diff --git a/package/mac80211/patches/543-ath9k-add-platform-device-id-for-AR9330.patch b/package/mac80211/patches/543-ath9k-add-platform-device-id-for-AR9330.patch
deleted file mode 100644 (file)
index 4d6920b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ahb.c
-+++ b/drivers/net/wireless/ath/ath9k/ahb.c
-@@ -27,6 +27,10 @@ static const struct platform_device_id a
-               .driver_data = AR5416_AR9100_DEVID,
-       },
-       {
-+              .name = "ar933x_wmac",
-+              .driver_data = AR9300_DEVID_AR9330,
-+      },
-+      {
-               .name = "ar934x_wmac",
-               .driver_data = AR9300_DEVID_AR9340,
-       },
diff --git a/package/mac80211/patches/544-ath9k-add-AR9330-initvals.patch b/package/mac80211/patches/544-ath9k-add-AR9330-initvals.patch
deleted file mode 100644 (file)
index 584cd0e..0000000
+++ /dev/null
@@ -1,2545 +0,0 @@
---- /dev/null
-+++ b/drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-@@ -0,0 +1,1303 @@
-+/*
-+ * Copyright (c) 2011 Atheros Communications Inc.
-+ *
-+ * Permission to use, copy, modify, and/or distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ */
-+
-+#ifndef INITVALS_9330_1P1_H
-+#define INITVALS_9330_1P1_H
-+
-+static const u32 ar9331_1p1_baseband_postamble[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8005, 0xd00a8005},
-+      {0x00009820, 0x206a002e, 0x206a002e, 0x206a002e, 0x206a002e},
-+      {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
-+      {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881},
-+      {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
-+      {0x00009830, 0x0000059c, 0x0000059c, 0x0000059c, 0x0000059c},
-+      {0x00009c00, 0x00000044, 0x00000044, 0x00000044, 0x00000044},
-+      {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a4, 0x037216a4},
-+      {0x00009e04, 0x00182020, 0x00182020, 0x00182020, 0x00182020},
-+      {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
-+      {0x00009e10, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e},
-+      {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
-+      {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
-+      {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
-+      {0x00009e2c, 0x0000001c, 0x0000001c, 0x00003221, 0x00003221},
-+      {0x00009e3c, 0xcf946222, 0xcf946222, 0xcf946222, 0xcf946222},
-+      {0x00009e44, 0x02321e27, 0x02321e27, 0x02282324, 0x02282324},
-+      {0x00009e48, 0x5030201a, 0x5030201a, 0x50302010, 0x50302010},
-+      {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
-+      {0x0000a204, 0x00003fc0, 0x00003fc4, 0x00003fc4, 0x00003fc0},
-+      {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
-+      {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b},
-+      {0x0000a234, 0x00000fff, 0x00000fff, 0x10000fff, 0x00000fff},
-+      {0x0000a238, 0xffb81018, 0xffb81018, 0xffb81018, 0xffb81018},
-+      {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108},
-+      {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898},
-+      {0x0000a258, 0x02020002, 0x02020002, 0x02020002, 0x02020002},
-+      {0x0000a25c, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
-+      {0x0000a260, 0x3a021501, 0x3a021501, 0x3a021501, 0x3a021501},
-+      {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
-+      {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b},
-+      {0x0000a284, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
-+      {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071981},
-+      {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
-+      {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000ae04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
-+      {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+};
-+
-+static const u32 ar9331_modes_lowest_ob_db_tx_gain_1p1[][5] = {
-+      /*   Addr     5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
-+      {0x0000a2dc, 0xffff2a52, 0xffff2a52, 0xffff2a52, 0xffff2a52},
-+      {0x0000a2e0, 0xffffcc84, 0xffffcc84, 0xffffcc84, 0xffffcc84},
-+      {0x0000a2e4, 0xfffff000, 0xfffff000, 0xfffff000, 0xfffff000},
-+      {0x0000a2e8, 0xfffe0000, 0xfffe0000, 0xfffe0000, 0xfffe0000},
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d0, 0x000050d0},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x2d000a20, 0x2d000a20},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x31000a22, 0x31000a22},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x35000a24, 0x35000a24},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x38000a43, 0x38000a43},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x3b000e42, 0x3b000e42},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x3f000e44, 0x3f000e44},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x42000e64, 0x42000e64},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x46000e66, 0x46000e66},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x01404501, 0x01404501, 0x01404501, 0x01404501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0280c802, 0x0280c802, 0x0280c802, 0x0280c802},
-+      {0x0000a624, 0x03010a03, 0x03010a03, 0x03010a03, 0x03010a03},
-+      {0x0000a628, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a62c, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a630, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a634, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a638, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a63c, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x00016044, 0x034922db, 0x034922db, 0x034922db, 0x034922db},
-+      {0x00016284, 0x14d3f000, 0x14d3f000, 0x14d3f000, 0x14d3f000},
-+};
-+
-+static const u32 ar9331_modes_high_ob_db_tx_gain_1p1[][5] = {
-+      /*   Addr     5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
-+      {0x0000a2dc, 0xffaa9a52, 0xffaa9a52, 0xffaa9a52, 0xffaa9a52},
-+      {0x0000a2e0, 0xffb31c84, 0xffb31c84, 0xffb31c84, 0xffb31c84},
-+      {0x0000a2e4, 0xff43e000, 0xff43e000, 0xff43e000, 0xff43e000},
-+      {0x0000a2e8, 0xfffc0000, 0xfffc0000, 0xfffc0000, 0xfffc0000},
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d7, 0x000050d7},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x3d001620, 0x3d001620},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x3f001621, 0x3f001621},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x42001640, 0x42001640},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x44001641, 0x44001641},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x46001642, 0x46001642},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x49001644, 0x49001644},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x4c001a81, 0x4c001a81},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x4f001a83, 0x4f001a83},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x52001c84, 0x52001c84},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x55001ce3, 0x55001ce3},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x59001ce5, 0x59001ce5},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5d001ce9, 0x5d001ce9},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x64001eec, 0x64001eec},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x64001eec, 0x64001eec},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x64001eec, 0x64001eec},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x64001eec, 0x64001eec},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x64001eec, 0x64001eec},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x64001eec, 0x64001eec},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x64001eec, 0x64001eec},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x64001eec, 0x64001eec},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x64001eec, 0x64001eec},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x02008501, 0x02008501, 0x02008501, 0x02008501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0280c802, 0x0280c802, 0x0280c802, 0x0280c802},
-+      {0x0000a624, 0x0280ca03, 0x0280ca03, 0x0280ca03, 0x0280ca03},
-+      {0x0000a628, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a62c, 0x04015005, 0x04015005, 0x04015005, 0x04015005},
-+      {0x0000a630, 0x04015005, 0x04015005, 0x04015005, 0x04015005},
-+      {0x0000a634, 0x04015005, 0x04015005, 0x04015005, 0x04015005},
-+      {0x0000a638, 0x04015005, 0x04015005, 0x04015005, 0x04015005},
-+      {0x0000a63c, 0x04015005, 0x04015005, 0x04015005, 0x04015005},
-+};
-+
-+static const u32 ar9331_modes_low_ob_db_tx_gain_1p1[][5] = {
-+      /*   Addr     5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
-+      {0x0000a2dc, 0xffff2a52, 0xffff2a52, 0xffff2a52, 0xffff2a52},
-+      {0x0000a2e0, 0xffffcc84, 0xffffcc84, 0xffffcc84, 0xffffcc84},
-+      {0x0000a2e4, 0xfffff000, 0xfffff000, 0xfffff000, 0xfffff000},
-+      {0x0000a2e8, 0xfffe0000, 0xfffe0000, 0xfffe0000, 0xfffe0000},
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d0, 0x000050d0},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x2d000a20, 0x2d000a20},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x31000a22, 0x31000a22},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x35000a24, 0x35000a24},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x38000a43, 0x38000a43},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x3b000e42, 0x3b000e42},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x3f000e44, 0x3f000e44},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x42000e64, 0x42000e64},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x46000e66, 0x46000e66},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x01404501, 0x01404501, 0x01404501, 0x01404501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0280c802, 0x0280c802, 0x0280c802, 0x0280c802},
-+      {0x0000a624, 0x03010a03, 0x03010a03, 0x03010a03, 0x03010a03},
-+      {0x0000a628, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a62c, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a630, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a634, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a638, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a63c, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x00016044, 0x034922db, 0x034922db, 0x034922db, 0x034922db},
-+      {0x00016284, 0x14d3f000, 0x14d3f000, 0x14d3f000, 0x14d3f000},
-+};
-+
-+static const u32 ar9331_1p1_baseband_core_txfir_coeff_japan_2484[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a398, 0x00000000},
-+      {0x0000a39c, 0x6f7f0301},
-+      {0x0000a3a0, 0xca9228ee},
-+};
-+
-+static const u32 ar9331_1p1_xtal_25M[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00007038, 0x000002f8},
-+      {0x00008244, 0x0010f3d7},
-+      {0x0000824c, 0x0001e7ae},
-+      {0x0001609c, 0x0f508f29},
-+};
-+
-+static const u32 ar9331_1p1_radio_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00016000, 0x36db6db6},
-+      {0x00016004, 0x6db6db40},
-+      {0x00016008, 0x73800000},
-+      {0x0001600c, 0x00000000},
-+      {0x00016040, 0x7f80fff8},
-+      {0x00016044, 0x03db62db},
-+      {0x00016048, 0x6c924268},
-+      {0x0001604c, 0x000f0278},
-+      {0x00016050, 0x4db6db8c},
-+      {0x00016054, 0x6db60000},
-+      {0x00016080, 0x00080000},
-+      {0x00016084, 0x0e48048c},
-+      {0x00016088, 0x14214514},
-+      {0x0001608c, 0x119f081c},
-+      {0x00016090, 0x24926490},
-+      {0x00016098, 0xd411eb84},
-+      {0x000160a0, 0xc2108ffe},
-+      {0x000160a4, 0x812fc370},
-+      {0x000160a8, 0x423c8000},
-+      {0x000160ac, 0x24651800},
-+      {0x000160b0, 0x03284f3e},
-+      {0x000160b4, 0x92480040},
-+      {0x000160c0, 0x006db6db},
-+      {0x000160c4, 0x0186db60},
-+      {0x000160c8, 0x6db6db6c},
-+      {0x000160cc, 0x6de6c300},
-+      {0x000160d0, 0x14500820},
-+      {0x00016100, 0x04cb0001},
-+      {0x00016104, 0xfff80015},
-+      {0x00016108, 0x00080010},
-+      {0x0001610c, 0x00170000},
-+      {0x00016140, 0x10804000},
-+      {0x00016144, 0x01884080},
-+      {0x00016148, 0x000080c0},
-+      {0x00016280, 0x01000015},
-+      {0x00016284, 0x14d20000},
-+      {0x00016288, 0x00318000},
-+      {0x0001628c, 0x50000000},
-+      {0x00016290, 0x4b96210f},
-+      {0x00016380, 0x00000000},
-+      {0x00016384, 0x00000000},
-+      {0x00016388, 0x00800700},
-+      {0x0001638c, 0x00800700},
-+      {0x00016390, 0x00800700},
-+      {0x00016394, 0x00000000},
-+      {0x00016398, 0x00000000},
-+      {0x0001639c, 0x00000000},
-+      {0x000163a0, 0x00000001},
-+      {0x000163a4, 0x00000001},
-+      {0x000163a8, 0x00000000},
-+      {0x000163ac, 0x00000000},
-+      {0x000163b0, 0x00000000},
-+      {0x000163b4, 0x00000000},
-+      {0x000163b8, 0x00000000},
-+      {0x000163bc, 0x00000000},
-+      {0x000163c0, 0x000000a0},
-+      {0x000163c4, 0x000c0000},
-+      {0x000163c8, 0x14021402},
-+      {0x000163cc, 0x00001402},
-+      {0x000163d0, 0x00000000},
-+      {0x000163d4, 0x00000000},
-+};
-+
-+static const u32 ar9331_1p1_baseband_postamble_emulation[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00009e3c, 0xcf946221, 0xcf946221, 0xcf946221, 0xcf946221},
-+      {0x00009e44, 0x005c0000, 0x005c0000, 0x005c0000, 0x005c0000},
-+      {0x0000a2d8, 0x7999a800, 0x7999a800, 0x7999a80c, 0x7999a80c},
-+};
-+
-+static const u32 ar9331_1p1_mac_core_emulation[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000805c, 0xffffc7ff},
-+      {0x00008344, 0xaa4a105b},
-+};
-+
-+static const u32 ar9331_1p1_emulation_baseband_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a344, 0x00000010},
-+};
-+
-+static const u32 ar9331_1p1_soc_postamble[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00007010, 0x00000022, 0x00000022, 0x00000022, 0x00000022},
-+};
-+
-+static const u32 ar9331_common_wo_xlna_rx_gain_1p1[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a000, 0x00060005},
-+      {0x0000a004, 0x00810080},
-+      {0x0000a008, 0x00830082},
-+      {0x0000a00c, 0x00850084},
-+      {0x0000a010, 0x01820181},
-+      {0x0000a014, 0x01840183},
-+      {0x0000a018, 0x01880185},
-+      {0x0000a01c, 0x018a0189},
-+      {0x0000a020, 0x02850284},
-+      {0x0000a024, 0x02890288},
-+      {0x0000a028, 0x028b028a},
-+      {0x0000a02c, 0x03850384},
-+      {0x0000a030, 0x03890388},
-+      {0x0000a034, 0x038b038a},
-+      {0x0000a038, 0x038d038c},
-+      {0x0000a03c, 0x03910390},
-+      {0x0000a040, 0x03930392},
-+      {0x0000a044, 0x03950394},
-+      {0x0000a048, 0x00000396},
-+      {0x0000a04c, 0x00000000},
-+      {0x0000a050, 0x00000000},
-+      {0x0000a054, 0x00000000},
-+      {0x0000a058, 0x00000000},
-+      {0x0000a05c, 0x00000000},
-+      {0x0000a060, 0x00000000},
-+      {0x0000a064, 0x00000000},
-+      {0x0000a068, 0x00000000},
-+      {0x0000a06c, 0x00000000},
-+      {0x0000a070, 0x00000000},
-+      {0x0000a074, 0x00000000},
-+      {0x0000a078, 0x00000000},
-+      {0x0000a07c, 0x00000000},
-+      {0x0000a080, 0x28282828},
-+      {0x0000a084, 0x28282828},
-+      {0x0000a088, 0x28282828},
-+      {0x0000a08c, 0x28282828},
-+      {0x0000a090, 0x28282828},
-+      {0x0000a094, 0x24242428},
-+      {0x0000a098, 0x171e1e1e},
-+      {0x0000a09c, 0x02020b0b},
-+      {0x0000a0a0, 0x02020202},
-+      {0x0000a0a4, 0x00000000},
-+      {0x0000a0a8, 0x00000000},
-+      {0x0000a0ac, 0x00000000},
-+      {0x0000a0b0, 0x00000000},
-+      {0x0000a0b4, 0x00000000},
-+      {0x0000a0b8, 0x00000000},
-+      {0x0000a0bc, 0x00000000},
-+      {0x0000a0c0, 0x22072208},
-+      {0x0000a0c4, 0x22052206},
-+      {0x0000a0c8, 0x22032204},
-+      {0x0000a0cc, 0x22012202},
-+      {0x0000a0d0, 0x221f2200},
-+      {0x0000a0d4, 0x221d221e},
-+      {0x0000a0d8, 0x33023303},
-+      {0x0000a0dc, 0x33003301},
-+      {0x0000a0e0, 0x331e331f},
-+      {0x0000a0e4, 0x4402331d},
-+      {0x0000a0e8, 0x44004401},
-+      {0x0000a0ec, 0x441e441f},
-+      {0x0000a0f0, 0x55025503},
-+      {0x0000a0f4, 0x55005501},
-+      {0x0000a0f8, 0x551e551f},
-+      {0x0000a0fc, 0x6602551d},
-+      {0x0000a100, 0x66006601},
-+      {0x0000a104, 0x661e661f},
-+      {0x0000a108, 0x7703661d},
-+      {0x0000a10c, 0x77017702},
-+      {0x0000a110, 0x00007700},
-+      {0x0000a114, 0x00000000},
-+      {0x0000a118, 0x00000000},
-+      {0x0000a11c, 0x00000000},
-+      {0x0000a120, 0x00000000},
-+      {0x0000a124, 0x00000000},
-+      {0x0000a128, 0x00000000},
-+      {0x0000a12c, 0x00000000},
-+      {0x0000a130, 0x00000000},
-+      {0x0000a134, 0x00000000},
-+      {0x0000a138, 0x00000000},
-+      {0x0000a13c, 0x00000000},
-+      {0x0000a140, 0x001f0000},
-+      {0x0000a144, 0x111f1100},
-+      {0x0000a148, 0x111d111e},
-+      {0x0000a14c, 0x111b111c},
-+      {0x0000a150, 0x22032204},
-+      {0x0000a154, 0x22012202},
-+      {0x0000a158, 0x221f2200},
-+      {0x0000a15c, 0x221d221e},
-+      {0x0000a160, 0x33013302},
-+      {0x0000a164, 0x331f3300},
-+      {0x0000a168, 0x4402331e},
-+      {0x0000a16c, 0x44004401},
-+      {0x0000a170, 0x441e441f},
-+      {0x0000a174, 0x55015502},
-+      {0x0000a178, 0x551f5500},
-+      {0x0000a17c, 0x6602551e},
-+      {0x0000a180, 0x66006601},
-+      {0x0000a184, 0x661e661f},
-+      {0x0000a188, 0x7703661d},
-+      {0x0000a18c, 0x77017702},
-+      {0x0000a190, 0x00007700},
-+      {0x0000a194, 0x00000000},
-+      {0x0000a198, 0x00000000},
-+      {0x0000a19c, 0x00000000},
-+      {0x0000a1a0, 0x00000000},
-+      {0x0000a1a4, 0x00000000},
-+      {0x0000a1a8, 0x00000000},
-+      {0x0000a1ac, 0x00000000},
-+      {0x0000a1b0, 0x00000000},
-+      {0x0000a1b4, 0x00000000},
-+      {0x0000a1b8, 0x00000000},
-+      {0x0000a1bc, 0x00000000},
-+      {0x0000a1c0, 0x00000000},
-+      {0x0000a1c4, 0x00000000},
-+      {0x0000a1c8, 0x00000000},
-+      {0x0000a1cc, 0x00000000},
-+      {0x0000a1d0, 0x00000000},
-+      {0x0000a1d4, 0x00000000},
-+      {0x0000a1d8, 0x00000000},
-+      {0x0000a1dc, 0x00000000},
-+      {0x0000a1e0, 0x00000000},
-+      {0x0000a1e4, 0x00000000},
-+      {0x0000a1e8, 0x00000000},
-+      {0x0000a1ec, 0x00000000},
-+      {0x0000a1f0, 0x00000396},
-+      {0x0000a1f4, 0x00000396},
-+      {0x0000a1f8, 0x00000396},
-+      {0x0000a1fc, 0x00000296},
-+};
-+
-+static const u32 ar9331_common_rx_gain_1p1_emulation[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a000, 0x02000101},
-+      {0x0000a004, 0x02000102},
-+      {0x0000a008, 0x02000103},
-+      {0x0000a00c, 0x02000104},
-+      {0x0000a010, 0x02000200},
-+      {0x0000a014, 0x02000201},
-+      {0x0000a018, 0x02000202},
-+      {0x0000a01c, 0x02000203},
-+      {0x0000a020, 0x02000204},
-+      {0x0000a024, 0x02000205},
-+      {0x0000a028, 0x02000208},
-+      {0x0000a02c, 0x02000302},
-+      {0x0000a030, 0x02000303},
-+      {0x0000a034, 0x02000304},
-+      {0x0000a038, 0x02000400},
-+      {0x0000a03c, 0x02010300},
-+      {0x0000a040, 0x02010301},
-+      {0x0000a044, 0x02010302},
-+      {0x0000a048, 0x02000500},
-+      {0x0000a04c, 0x02010400},
-+      {0x0000a050, 0x02020300},
-+      {0x0000a054, 0x02020301},
-+      {0x0000a058, 0x02020302},
-+      {0x0000a05c, 0x02020303},
-+      {0x0000a060, 0x02020400},
-+      {0x0000a064, 0x02030300},
-+      {0x0000a068, 0x02030301},
-+      {0x0000a06c, 0x02030302},
-+      {0x0000a070, 0x02030303},
-+      {0x0000a074, 0x02030400},
-+      {0x0000a078, 0x02040300},
-+      {0x0000a07c, 0x02040301},
-+      {0x0000a080, 0x02040302},
-+      {0x0000a084, 0x02040303},
-+      {0x0000a088, 0x02030500},
-+      {0x0000a08c, 0x02040400},
-+      {0x0000a090, 0x02050203},
-+      {0x0000a094, 0x02050204},
-+      {0x0000a098, 0x02050205},
-+      {0x0000a09c, 0x02040500},
-+      {0x0000a0a0, 0x02050301},
-+      {0x0000a0a4, 0x02050302},
-+      {0x0000a0a8, 0x02050303},
-+      {0x0000a0ac, 0x02050400},
-+      {0x0000a0b0, 0x02050401},
-+      {0x0000a0b4, 0x02050402},
-+      {0x0000a0b8, 0x02050403},
-+      {0x0000a0bc, 0x02050500},
-+      {0x0000a0c0, 0x02050501},
-+      {0x0000a0c4, 0x02050502},
-+      {0x0000a0c8, 0x02050503},
-+      {0x0000a0cc, 0x02050504},
-+      {0x0000a0d0, 0x02050600},
-+      {0x0000a0d4, 0x02050601},
-+      {0x0000a0d8, 0x02050602},
-+      {0x0000a0dc, 0x02050603},
-+      {0x0000a0e0, 0x02050604},
-+      {0x0000a0e4, 0x02050700},
-+      {0x0000a0e8, 0x02050701},
-+      {0x0000a0ec, 0x02050702},
-+      {0x0000a0f0, 0x02050703},
-+      {0x0000a0f4, 0x02050704},
-+      {0x0000a0f8, 0x02050705},
-+      {0x0000a0fc, 0x02050708},
-+      {0x0000a100, 0x02050709},
-+      {0x0000a104, 0x0205070a},
-+      {0x0000a108, 0x0205070b},
-+      {0x0000a10c, 0x0205070c},
-+      {0x0000a110, 0x0205070d},
-+      {0x0000a114, 0x02050710},
-+      {0x0000a118, 0x02050711},
-+      {0x0000a11c, 0x02050712},
-+      {0x0000a120, 0x02050713},
-+      {0x0000a124, 0x02050714},
-+      {0x0000a128, 0x02050715},
-+      {0x0000a12c, 0x02050730},
-+      {0x0000a130, 0x02050731},
-+      {0x0000a134, 0x02050732},
-+      {0x0000a138, 0x02050733},
-+      {0x0000a13c, 0x02050734},
-+      {0x0000a140, 0x02050735},
-+      {0x0000a144, 0x02050750},
-+      {0x0000a148, 0x02050751},
-+      {0x0000a14c, 0x02050752},
-+      {0x0000a150, 0x02050753},
-+      {0x0000a154, 0x02050754},
-+      {0x0000a158, 0x02050755},
-+      {0x0000a15c, 0x02050770},
-+      {0x0000a160, 0x02050771},
-+      {0x0000a164, 0x02050772},
-+      {0x0000a168, 0x02050773},
-+      {0x0000a16c, 0x02050774},
-+      {0x0000a170, 0x02050775},
-+      {0x0000a174, 0x00000776},
-+      {0x0000a178, 0x00000776},
-+      {0x0000a17c, 0x00000776},
-+      {0x0000a180, 0x00000776},
-+      {0x0000a184, 0x00000776},
-+      {0x0000a188, 0x00000776},
-+      {0x0000a18c, 0x00000776},
-+      {0x0000a190, 0x00000776},
-+      {0x0000a194, 0x00000776},
-+      {0x0000a198, 0x00000776},
-+      {0x0000a19c, 0x00000776},
-+      {0x0000a1a0, 0x00000776},
-+      {0x0000a1a4, 0x00000776},
-+      {0x0000a1a8, 0x00000776},
-+      {0x0000a1ac, 0x00000776},
-+      {0x0000a1b0, 0x00000776},
-+      {0x0000a1b4, 0x00000776},
-+      {0x0000a1b8, 0x00000776},
-+      {0x0000a1bc, 0x00000776},
-+      {0x0000a1c0, 0x00000776},
-+      {0x0000a1c4, 0x00000776},
-+      {0x0000a1c8, 0x00000776},
-+      {0x0000a1cc, 0x00000776},
-+      {0x0000a1d0, 0x00000776},
-+      {0x0000a1d4, 0x00000776},
-+      {0x0000a1d8, 0x00000776},
-+      {0x0000a1dc, 0x00000776},
-+      {0x0000a1e0, 0x00000776},
-+      {0x0000a1e4, 0x00000776},
-+      {0x0000a1e8, 0x00000776},
-+      {0x0000a1ec, 0x00000776},
-+      {0x0000a1f0, 0x00000776},
-+      {0x0000a1f4, 0x00000776},
-+      {0x0000a1f8, 0x00000776},
-+      {0x0000a1fc, 0x00000776},
-+};
-+
-+static const u32 ar9331_1p1_baseband_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00009800, 0xafe68e30},
-+      {0x00009804, 0xfd14e000},
-+      {0x00009808, 0x9c0a8f6b},
-+      {0x0000980c, 0x04800000},
-+      {0x00009814, 0x9280c00a},
-+      {0x00009818, 0x00000000},
-+      {0x0000981c, 0x00020028},
-+      {0x00009834, 0x5f3ca3de},
-+      {0x00009838, 0x0108ecff},
-+      {0x0000983c, 0x14750600},
-+      {0x00009880, 0x201fff00},
-+      {0x00009884, 0x00001042},
-+      {0x000098a4, 0x00200400},
-+      {0x000098b0, 0x32840bbe},
-+      {0x000098d0, 0x004b6a8e},
-+      {0x000098d4, 0x00000820},
-+      {0x000098dc, 0x00000000},
-+      {0x000098f0, 0x00000000},
-+      {0x000098f4, 0x00000000},
-+      {0x00009c04, 0x00000000},
-+      {0x00009c08, 0x03200000},
-+      {0x00009c0c, 0x00000000},
-+      {0x00009c10, 0x00000000},
-+      {0x00009c14, 0x00046384},
-+      {0x00009c18, 0x05b6b440},
-+      {0x00009c1c, 0x00b6b440},
-+      {0x00009d00, 0xc080a333},
-+      {0x00009d04, 0x40206c10},
-+      {0x00009d08, 0x009c4060},
-+      {0x00009d0c, 0x1883800a},
-+      {0x00009d10, 0x01834061},
-+      {0x00009d14, 0x00c00400},
-+      {0x00009d18, 0x00000000},
-+      {0x00009e08, 0x0038233c},
-+      {0x00009e24, 0x9927b515},
-+      {0x00009e28, 0x12ef0200},
-+      {0x00009e30, 0x06336f77},
-+      {0x00009e34, 0x6af6532f},
-+      {0x00009e38, 0x0cc80c00},
-+      {0x00009e40, 0x0d261820},
-+      {0x00009e4c, 0x00001004},
-+      {0x00009e50, 0x00ff03f1},
-+      {0x00009fc0, 0x803e4788},
-+      {0x00009fc4, 0x0001efb5},
-+      {0x00009fcc, 0x40000014},
-+      {0x0000a20c, 0x00000000},
-+      {0x0000a220, 0x00000000},
-+      {0x0000a224, 0x00000000},
-+      {0x0000a228, 0x10002310},
-+      {0x0000a23c, 0x00000000},
-+      {0x0000a244, 0x0c000000},
-+      {0x0000a2a0, 0x00000001},
-+      {0x0000a2c0, 0x00000001},
-+      {0x0000a2c8, 0x00000000},
-+      {0x0000a2cc, 0x18c43433},
-+      {0x0000a2d4, 0x00000000},
-+      {0x0000a2dc, 0x00000000},
-+      {0x0000a2e0, 0x00000000},
-+      {0x0000a2e4, 0x00000000},
-+      {0x0000a2e8, 0x00000000},
-+      {0x0000a2ec, 0x00000000},
-+      {0x0000a2f0, 0x00000000},
-+      {0x0000a2f4, 0x00000000},
-+      {0x0000a2f8, 0x00000000},
-+      {0x0000a344, 0x00000000},
-+      {0x0000a34c, 0x00000000},
-+      {0x0000a350, 0x0000a000},
-+      {0x0000a364, 0x00000000},
-+      {0x0000a370, 0x00000000},
-+      {0x0000a390, 0x00000001},
-+      {0x0000a394, 0x00000444},
-+      {0x0000a398, 0x001f0e0f},
-+      {0x0000a39c, 0x0075393f},
-+      {0x0000a3a0, 0xb79f6427},
-+      {0x0000a3a4, 0x00000000},
-+      {0x0000a3a8, 0xaaaaaaaa},
-+      {0x0000a3ac, 0x3c466478},
-+      {0x0000a3c0, 0x20202020},
-+      {0x0000a3c4, 0x22222220},
-+      {0x0000a3c8, 0x20200020},
-+      {0x0000a3cc, 0x20202020},
-+      {0x0000a3d0, 0x20202020},
-+      {0x0000a3d4, 0x20202020},
-+      {0x0000a3d8, 0x20202020},
-+      {0x0000a3dc, 0x20202020},
-+      {0x0000a3e0, 0x20202020},
-+      {0x0000a3e4, 0x20202020},
-+      {0x0000a3e8, 0x20202020},
-+      {0x0000a3ec, 0x20202020},
-+      {0x0000a3f0, 0x00000000},
-+      {0x0000a3f4, 0x00000006},
-+      {0x0000a3f8, 0x0cdbd380},
-+      {0x0000a3fc, 0x000f0f01},
-+      {0x0000a400, 0x8fa91f01},
-+      {0x0000a404, 0x00000000},
-+      {0x0000a408, 0x0e79e5c6},
-+      {0x0000a40c, 0x00820820},
-+      {0x0000a414, 0x1ce739ce},
-+      {0x0000a418, 0x2d001dce},
-+      {0x0000a41c, 0x1ce739ce},
-+      {0x0000a420, 0x000001ce},
-+      {0x0000a424, 0x1ce739ce},
-+      {0x0000a428, 0x000001ce},
-+      {0x0000a42c, 0x1ce739ce},
-+      {0x0000a430, 0x1ce739ce},
-+      {0x0000a434, 0x00000000},
-+      {0x0000a438, 0x00001801},
-+      {0x0000a43c, 0x00000000},
-+      {0x0000a440, 0x00000000},
-+      {0x0000a444, 0x00000000},
-+      {0x0000a448, 0x04000000},
-+      {0x0000a44c, 0x00000001},
-+      {0x0000a450, 0x00010000},
-+      {0x0000a458, 0x00000000},
-+      {0x0000a640, 0x00000000},
-+      {0x0000a644, 0x3fad9d74},
-+      {0x0000a648, 0x0048060a},
-+      {0x0000a64c, 0x00003c37},
-+      {0x0000a670, 0x03020100},
-+      {0x0000a674, 0x09080504},
-+      {0x0000a678, 0x0d0c0b0a},
-+      {0x0000a67c, 0x13121110},
-+      {0x0000a680, 0x31301514},
-+      {0x0000a684, 0x35343332},
-+      {0x0000a688, 0x00000036},
-+      {0x0000a690, 0x00000838},
-+      {0x0000a7c0, 0x00000000},
-+      {0x0000a7c4, 0xfffffffc},
-+      {0x0000a7c8, 0x00000000},
-+      {0x0000a7cc, 0x00000000},
-+      {0x0000a7d0, 0x00000000},
-+      {0x0000a7d4, 0x00000004},
-+      {0x0000a7dc, 0x00000001},
-+};
-+
-+static const u32 ar9331_modes_high_power_tx_gain_1p1[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
-+      {0x0000a2dc, 0xffff2a52, 0xffff2a52, 0xffff2a52, 0xffff2a52},
-+      {0x0000a2e0, 0xffffcc84, 0xffffcc84, 0xffffcc84, 0xffffcc84},
-+      {0x0000a2e4, 0xfffff000, 0xfffff000, 0xfffff000, 0xfffff000},
-+      {0x0000a2e8, 0xfffe0000, 0xfffe0000, 0xfffe0000, 0xfffe0000},
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d0, 0x000050d0},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x2d000a20, 0x2d000a20},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x31000a22, 0x31000a22},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x35000a24, 0x35000a24},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x38000a43, 0x38000a43},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x3b000e42, 0x3b000e42},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x3f000e44, 0x3f000e44},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x42000e64, 0x42000e64},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x46000e66, 0x46000e66},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x4a000ea6, 0x4a000ea6},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x01404501, 0x01404501, 0x01404501, 0x01404501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0280c802, 0x0280c802, 0x0280c802, 0x0280c802},
-+      {0x0000a624, 0x03010a03, 0x03010a03, 0x03010a03, 0x03010a03},
-+      {0x0000a628, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a62c, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a630, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a634, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a638, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x0000a63c, 0x03010c04, 0x03010c04, 0x03010c04, 0x03010c04},
-+      {0x00016044, 0x034922db, 0x034922db, 0x034922db, 0x034922db},
-+      {0x00016284, 0x14d3f000, 0x14d3f000, 0x14d3f000, 0x14d3f000},
-+};
-+
-+static const u32 ar9331_1p1_mac_postamble_emulation[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00008014, 0x10f810f8, 0x10f810f8, 0x10f810f8, 0x10f810f8},
-+      {0x0000801c, 0x0e8d8017, 0x0e8d8017, 0x0e8d8017, 0x0e8d8017},
-+};
-+
-+static const u32 ar9331_1p1_mac_postamble[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160},
-+      {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c},
-+      {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38},
-+      {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00},
-+      {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b},
-+      {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810},
-+      {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a},
-+      {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440},
-+};
-+
-+static const u32 ar9331_1p1_soc_preamble[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00007020, 0x00000000},
-+      {0x00007034, 0x00000002},
-+      {0x00007038, 0x000002f8},
-+};
-+
-+static const u32 ar9331_1p1_xtal_40M[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00007038, 0x000004c2},
-+      {0x00008244, 0x0010f400},
-+      {0x0000824c, 0x0001e800},
-+      {0x0001609c, 0x0b283f31},
-+};
-+
-+static const u32 ar9331_1p1_mac_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00000008, 0x00000000},
-+      {0x00000030, 0x00020085},
-+      {0x00000034, 0x00000005},
-+      {0x00000040, 0x00000000},
-+      {0x00000044, 0x00000000},
-+      {0x00000048, 0x00000008},
-+      {0x0000004c, 0x00000010},
-+      {0x00000050, 0x00000000},
-+      {0x00001040, 0x002ffc0f},
-+      {0x00001044, 0x002ffc0f},
-+      {0x00001048, 0x002ffc0f},
-+      {0x0000104c, 0x002ffc0f},
-+      {0x00001050, 0x002ffc0f},
-+      {0x00001054, 0x002ffc0f},
-+      {0x00001058, 0x002ffc0f},
-+      {0x0000105c, 0x002ffc0f},
-+      {0x00001060, 0x002ffc0f},
-+      {0x00001064, 0x002ffc0f},
-+      {0x000010f0, 0x00000100},
-+      {0x00001270, 0x00000000},
-+      {0x000012b0, 0x00000000},
-+      {0x000012f0, 0x00000000},
-+      {0x0000143c, 0x00000000},
-+      {0x0000147c, 0x00000000},
-+      {0x00008000, 0x00000000},
-+      {0x00008004, 0x00000000},
-+      {0x00008008, 0x00000000},
-+      {0x0000800c, 0x00000000},
-+      {0x00008018, 0x00000000},
-+      {0x00008020, 0x00000000},
-+      {0x00008038, 0x00000000},
-+      {0x0000803c, 0x00000000},
-+      {0x00008040, 0x00000000},
-+      {0x00008044, 0x00000000},
-+      {0x00008048, 0x00000000},
-+      {0x0000804c, 0xffffffff},
-+      {0x00008054, 0x00000000},
-+      {0x00008058, 0x00000000},
-+      {0x0000805c, 0x000fc78f},
-+      {0x00008060, 0x0000000f},
-+      {0x00008064, 0x00000000},
-+      {0x00008070, 0x00000310},
-+      {0x00008074, 0x00000020},
-+      {0x00008078, 0x00000000},
-+      {0x0000809c, 0x0000000f},
-+      {0x000080a0, 0x00000000},
-+      {0x000080a4, 0x02ff0000},
-+      {0x000080a8, 0x0e070605},
-+      {0x000080ac, 0x0000000d},
-+      {0x000080b0, 0x00000000},
-+      {0x000080b4, 0x00000000},
-+      {0x000080b8, 0x00000000},
-+      {0x000080bc, 0x00000000},
-+      {0x000080c0, 0x2a800000},
-+      {0x000080c4, 0x06900168},
-+      {0x000080c8, 0x13881c20},
-+      {0x000080cc, 0x01f40000},
-+      {0x000080d0, 0x00252500},
-+      {0x000080d4, 0x00a00000},
-+      {0x000080d8, 0x00400000},
-+      {0x000080dc, 0x00000000},
-+      {0x000080e0, 0xffffffff},
-+      {0x000080e4, 0x0000ffff},
-+      {0x000080e8, 0x3f3f3f3f},
-+      {0x000080ec, 0x00000000},
-+      {0x000080f0, 0x00000000},
-+      {0x000080f4, 0x00000000},
-+      {0x000080fc, 0x00020000},
-+      {0x00008100, 0x00000000},
-+      {0x00008108, 0x00000052},
-+      {0x0000810c, 0x00000000},
-+      {0x00008110, 0x00000000},
-+      {0x00008114, 0x000007ff},
-+      {0x00008118, 0x000000aa},
-+      {0x0000811c, 0x00003210},
-+      {0x00008124, 0x00000000},
-+      {0x00008128, 0x00000000},
-+      {0x0000812c, 0x00000000},
-+      {0x00008130, 0x00000000},
-+      {0x00008134, 0x00000000},
-+      {0x00008138, 0x00000000},
-+      {0x0000813c, 0x0000ffff},
-+      {0x00008144, 0xffffffff},
-+      {0x00008168, 0x00000000},
-+      {0x0000816c, 0x00000000},
-+      {0x00008170, 0x18486200},
-+      {0x00008174, 0x33332210},
-+      {0x00008178, 0x00000000},
-+      {0x0000817c, 0x00020000},
-+      {0x000081c0, 0x00000000},
-+      {0x000081c4, 0x33332210},
-+      {0x000081c8, 0x00000000},
-+      {0x000081cc, 0x00000000},
-+      {0x000081d4, 0x00000000},
-+      {0x000081ec, 0x00000000},
-+      {0x000081f0, 0x00000000},
-+      {0x000081f4, 0x00000000},
-+      {0x000081f8, 0x00000000},
-+      {0x000081fc, 0x00000000},
-+      {0x00008240, 0x00100000},
-+      {0x00008248, 0x00000800},
-+      {0x00008250, 0x00000000},
-+      {0x00008254, 0x00000000},
-+      {0x00008258, 0x00000000},
-+      {0x0000825c, 0x40000000},
-+      {0x00008260, 0x00080922},
-+      {0x00008264, 0x9d400010},
-+      {0x00008268, 0xffffffff},
-+      {0x0000826c, 0x0000ffff},
-+      {0x00008270, 0x00000000},
-+      {0x00008274, 0x40000000},
-+      {0x00008278, 0x003e4180},
-+      {0x0000827c, 0x00000004},
-+      {0x00008284, 0x0000002c},
-+      {0x00008288, 0x0000002c},
-+      {0x0000828c, 0x000000ff},
-+      {0x00008294, 0x00000000},
-+      {0x00008298, 0x00000000},
-+      {0x0000829c, 0x00000000},
-+      {0x00008300, 0x00000140},
-+      {0x00008314, 0x00000000},
-+      {0x0000831c, 0x0000010d},
-+      {0x00008328, 0x00000000},
-+      {0x0000832c, 0x00000007},
-+      {0x00008330, 0x00000302},
-+      {0x00008334, 0x00000700},
-+      {0x00008338, 0x00ff0000},
-+      {0x0000833c, 0x02400000},
-+      {0x00008340, 0x000107ff},
-+      {0x00008344, 0xaa48105b},
-+      {0x00008348, 0x008f0000},
-+      {0x0000835c, 0x00000000},
-+      {0x00008360, 0xffffffff},
-+      {0x00008364, 0xffffffff},
-+      {0x00008368, 0x00000000},
-+      {0x00008370, 0x00000000},
-+      {0x00008374, 0x000000ff},
-+      {0x00008378, 0x00000000},
-+      {0x0000837c, 0x00000000},
-+      {0x00008380, 0xffffffff},
-+      {0x00008384, 0xffffffff},
-+      {0x00008390, 0xffffffff},
-+      {0x00008394, 0xffffffff},
-+      {0x00008398, 0x00000000},
-+      {0x0000839c, 0x00000000},
-+      {0x000083a0, 0x00000000},
-+      {0x000083a4, 0x0000fa14},
-+      {0x000083a8, 0x000f0c00},
-+      {0x000083ac, 0x33332210},
-+      {0x000083b0, 0x33332210},
-+      {0x000083b4, 0x33332210},
-+      {0x000083b8, 0x33332210},
-+      {0x000083bc, 0x00000000},
-+      {0x000083c0, 0x00000000},
-+      {0x000083c4, 0x00000000},
-+      {0x000083c8, 0x00000000},
-+      {0x000083cc, 0x00000200},
-+      {0x000083d0, 0x000301ff},
-+};
-+
-+static const u32 ar9331_common_rx_gain_1p1[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a000, 0x00010000},
-+      {0x0000a004, 0x00030002},
-+      {0x0000a008, 0x00050004},
-+      {0x0000a00c, 0x00810080},
-+      {0x0000a010, 0x00830082},
-+      {0x0000a014, 0x01810180},
-+      {0x0000a018, 0x01830182},
-+      {0x0000a01c, 0x01850184},
-+      {0x0000a020, 0x01890188},
-+      {0x0000a024, 0x018b018a},
-+      {0x0000a028, 0x018d018c},
-+      {0x0000a02c, 0x01910190},
-+      {0x0000a030, 0x01930192},
-+      {0x0000a034, 0x01950194},
-+      {0x0000a038, 0x038a0196},
-+      {0x0000a03c, 0x038c038b},
-+      {0x0000a040, 0x0390038d},
-+      {0x0000a044, 0x03920391},
-+      {0x0000a048, 0x03940393},
-+      {0x0000a04c, 0x03960395},
-+      {0x0000a050, 0x00000000},
-+      {0x0000a054, 0x00000000},
-+      {0x0000a058, 0x00000000},
-+      {0x0000a05c, 0x00000000},
-+      {0x0000a060, 0x00000000},
-+      {0x0000a064, 0x00000000},
-+      {0x0000a068, 0x00000000},
-+      {0x0000a06c, 0x00000000},
-+      {0x0000a070, 0x00000000},
-+      {0x0000a074, 0x00000000},
-+      {0x0000a078, 0x00000000},
-+      {0x0000a07c, 0x00000000},
-+      {0x0000a080, 0x22222229},
-+      {0x0000a084, 0x1d1d1d1d},
-+      {0x0000a088, 0x1d1d1d1d},
-+      {0x0000a08c, 0x1d1d1d1d},
-+      {0x0000a090, 0x171d1d1d},
-+      {0x0000a094, 0x11111717},
-+      {0x0000a098, 0x00030311},
-+      {0x0000a09c, 0x00000000},
-+      {0x0000a0a0, 0x00000000},
-+      {0x0000a0a4, 0x00000000},
-+      {0x0000a0a8, 0x00000000},
-+      {0x0000a0ac, 0x00000000},
-+      {0x0000a0b0, 0x00000000},
-+      {0x0000a0b4, 0x00000000},
-+      {0x0000a0b8, 0x00000000},
-+      {0x0000a0bc, 0x00000000},
-+      {0x0000a0c0, 0x001f0000},
-+      {0x0000a0c4, 0x01000101},
-+      {0x0000a0c8, 0x011e011f},
-+      {0x0000a0cc, 0x011c011d},
-+      {0x0000a0d0, 0x02030204},
-+      {0x0000a0d4, 0x02010202},
-+      {0x0000a0d8, 0x021f0200},
-+      {0x0000a0dc, 0x0302021e},
-+      {0x0000a0e0, 0x03000301},
-+      {0x0000a0e4, 0x031e031f},
-+      {0x0000a0e8, 0x0402031d},
-+      {0x0000a0ec, 0x04000401},
-+      {0x0000a0f0, 0x041e041f},
-+      {0x0000a0f4, 0x0502041d},
-+      {0x0000a0f8, 0x05000501},
-+      {0x0000a0fc, 0x051e051f},
-+      {0x0000a100, 0x06010602},
-+      {0x0000a104, 0x061f0600},
-+      {0x0000a108, 0x061d061e},
-+      {0x0000a10c, 0x07020703},
-+      {0x0000a110, 0x07000701},
-+      {0x0000a114, 0x00000000},
-+      {0x0000a118, 0x00000000},
-+      {0x0000a11c, 0x00000000},
-+      {0x0000a120, 0x00000000},
-+      {0x0000a124, 0x00000000},
-+      {0x0000a128, 0x00000000},
-+      {0x0000a12c, 0x00000000},
-+      {0x0000a130, 0x00000000},
-+      {0x0000a134, 0x00000000},
-+      {0x0000a138, 0x00000000},
-+      {0x0000a13c, 0x00000000},
-+      {0x0000a140, 0x001f0000},
-+      {0x0000a144, 0x01000101},
-+      {0x0000a148, 0x011e011f},
-+      {0x0000a14c, 0x011c011d},
-+      {0x0000a150, 0x02030204},
-+      {0x0000a154, 0x02010202},
-+      {0x0000a158, 0x021f0200},
-+      {0x0000a15c, 0x0302021e},
-+      {0x0000a160, 0x03000301},
-+      {0x0000a164, 0x031e031f},
-+      {0x0000a168, 0x0402031d},
-+      {0x0000a16c, 0x04000401},
-+      {0x0000a170, 0x041e041f},
-+      {0x0000a174, 0x0502041d},
-+      {0x0000a178, 0x05000501},
-+      {0x0000a17c, 0x051e051f},
-+      {0x0000a180, 0x06010602},
-+      {0x0000a184, 0x061f0600},
-+      {0x0000a188, 0x061d061e},
-+      {0x0000a18c, 0x07020703},
-+      {0x0000a190, 0x07000701},
-+      {0x0000a194, 0x00000000},
-+      {0x0000a198, 0x00000000},
-+      {0x0000a19c, 0x00000000},
-+      {0x0000a1a0, 0x00000000},
-+      {0x0000a1a4, 0x00000000},
-+      {0x0000a1a8, 0x00000000},
-+      {0x0000a1ac, 0x00000000},
-+      {0x0000a1b0, 0x00000000},
-+      {0x0000a1b4, 0x00000000},
-+      {0x0000a1b8, 0x00000000},
-+      {0x0000a1bc, 0x00000000},
-+      {0x0000a1c0, 0x00000000},
-+      {0x0000a1c4, 0x00000000},
-+      {0x0000a1c8, 0x00000000},
-+      {0x0000a1cc, 0x00000000},
-+      {0x0000a1d0, 0x00000000},
-+      {0x0000a1d4, 0x00000000},
-+      {0x0000a1d8, 0x00000000},
-+      {0x0000a1dc, 0x00000000},
-+      {0x0000a1e0, 0x00000000},
-+      {0x0000a1e4, 0x00000000},
-+      {0x0000a1e8, 0x00000000},
-+      {0x0000a1ec, 0x00000000},
-+      {0x0000a1f0, 0x00000396},
-+      {0x0000a1f4, 0x00000396},
-+      {0x0000a1f8, 0x00000396},
-+      {0x0000a1fc, 0x00000196},
-+};
-+
-+static const u32 ar9331_common_tx_gain_offset1_1[][1] = {
-+      {0},
-+      {3},
-+      {0},
-+      {0},
-+};
-+
-+static const u32 ar9331_1p1_chansel_xtal_25M[] = {
-+      0x0101479e,
-+      0x0101d027,
-+      0x010258af,
-+      0x0102e138,
-+      0x010369c0,
-+      0x0103f249,
-+      0x01047ad1,
-+      0x0105035a,
-+      0x01058be2,
-+      0x0106146b,
-+      0x01069cf3,
-+      0x0107257c,
-+      0x0107ae04,
-+      0x0108f5b2,
-+};
-+
-+static const u32 ar9331_1p1_chansel_xtal_40M[] = {
-+      0x00a0ccbe,
-+      0x00a12213,
-+      0x00a17769,
-+      0x00a1ccbe,
-+      0x00a22213,
-+      0x00a27769,
-+      0x00a2ccbe,
-+      0x00a32213,
-+      0x00a37769,
-+      0x00a3ccbe,
-+      0x00a42213,
-+      0x00a47769,
-+      0x00a4ccbe,
-+      0x00a5998b,
-+};
-+
-+#endif /* INITVALS_9330_1P1_H */
---- /dev/null
-+++ b/drivers/net/wireless/ath/ath9k/ar9330_1p2_initvals.h
-@@ -0,0 +1,1236 @@
-+/*
-+ * Copyright (c) 2011 Atheros Communications Inc.
-+ *
-+ * Permission to use, copy, modify, and/or distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ */
-+
-+#ifndef INITVALS_9330_1P2_H
-+#define INITVALS_9330_1P2_H
-+
-+static const u32 ar9331_modes_lowest_ob_db_tx_gain_1p2[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d7, 0x000050d7},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x3f001620, 0x3f001620},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x41001621, 0x41001621},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x44001640, 0x44001640},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x46001641, 0x46001641},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x48001642, 0x48001642},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x4b001644, 0x4b001644},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x4e001a81, 0x4e001a81},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x51001a83, 0x51001a83},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x54001c84, 0x54001c84},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x57001ce3, 0x57001ce3},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x5b001ce5, 0x5b001ce5},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5f001ce9, 0x5f001ce9},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x02008501, 0x02008501, 0x02008501, 0x02008501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0300c802, 0x0300c802, 0x0300c802, 0x0300c802},
-+      {0x0000a624, 0x0300cc03, 0x0300cc03, 0x0300cc03, 0x0300cc03},
-+      {0x0000a628, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a62c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a630, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a634, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a638, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a63c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+};
-+
-+static const u32 ar9331_1p2_baseband_postamble[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8005, 0xd00a8005},
-+      {0x00009820, 0x206a002e, 0x206a002e, 0x206a002e, 0x206a002e},
-+      {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
-+      {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881},
-+      {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
-+      {0x00009830, 0x0000059c, 0x0000059c, 0x0000059c, 0x0000059c},
-+      {0x00009c00, 0x00000044, 0x00000044, 0x00000044, 0x00000044},
-+      {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a4, 0x037216a4},
-+      {0x00009e04, 0x00182020, 0x00182020, 0x00182020, 0x00182020},
-+      {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
-+      {0x00009e10, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e},
-+      {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
-+      {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
-+      {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
-+      {0x00009e2c, 0x0000001c, 0x0000001c, 0x00003221, 0x00003221},
-+      {0x00009e3c, 0xcf946222, 0xcf946222, 0xcf946222, 0xcf946222},
-+      {0x00009e44, 0x02321e27, 0x02321e27, 0x02282324, 0x02282324},
-+      {0x00009e48, 0x5030201a, 0x5030201a, 0x50302010, 0x50302010},
-+      {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
-+      {0x0000a204, 0x00003fc0, 0x00003fc4, 0x00003fc4, 0x00003fc0},
-+      {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
-+      {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b},
-+      {0x0000a234, 0x00000fff, 0x00000fff, 0x10000fff, 0x00000fff},
-+      {0x0000a238, 0xffb81018, 0xffb81018, 0xffb81018, 0xffb81018},
-+      {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108},
-+      {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898},
-+      {0x0000a258, 0x02020002, 0x02020002, 0x02020002, 0x02020002},
-+      {0x0000a25c, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
-+      {0x0000a260, 0x3a021501, 0x3a021501, 0x3a021501, 0x3a021501},
-+      {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
-+      {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b},
-+      {0x0000a284, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
-+      {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071981},
-+      {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
-+      {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000ae04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
-+      {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+};
-+
-+static const u32 ar9331_modes_high_ob_db_tx_gain_1p2[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d7, 0x000050d7},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x3f001620, 0x3f001620},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x41001621, 0x41001621},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x44001640, 0x44001640},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x46001641, 0x46001641},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x48001642, 0x48001642},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x4b001644, 0x4b001644},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x4e001a81, 0x4e001a81},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x51001a83, 0x51001a83},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x54001c84, 0x54001c84},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x57001ce3, 0x57001ce3},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x5b001ce5, 0x5b001ce5},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5f001ce9, 0x5f001ce9},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x02008501, 0x02008501, 0x02008501, 0x02008501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0300c802, 0x0300c802, 0x0300c802, 0x0300c802},
-+      {0x0000a624, 0x0300cc03, 0x0300cc03, 0x0300cc03, 0x0300cc03},
-+      {0x0000a628, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a62c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a630, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a634, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a638, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a63c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+};
-+
-+static const u32 ar9331_modes_low_ob_db_tx_gain_1p2[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d7, 0x000050d7},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x3f001620, 0x3f001620},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x41001621, 0x41001621},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x44001640, 0x44001640},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x46001641, 0x46001641},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x48001642, 0x48001642},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x4b001644, 0x4b001644},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x4e001a81, 0x4e001a81},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x51001a83, 0x51001a83},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x54001c84, 0x54001c84},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x57001ce3, 0x57001ce3},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x5b001ce5, 0x5b001ce5},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5f001ce9, 0x5f001ce9},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x02008501, 0x02008501, 0x02008501, 0x02008501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0300c802, 0x0300c802, 0x0300c802, 0x0300c802},
-+      {0x0000a624, 0x0300cc03, 0x0300cc03, 0x0300cc03, 0x0300cc03},
-+      {0x0000a628, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a62c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a630, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a634, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a638, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a63c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+};
-+
-+static const u32 ar9331_1p2_baseband_core_txfir_coeff_japan_2484[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a398, 0x00000000},
-+      {0x0000a39c, 0x6f7f0301},
-+      {0x0000a3a0, 0xca9228ee},
-+};
-+
-+static const u32 ar9331_1p2_xtal_25M[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00007038, 0x000002f8},
-+      {0x00008244, 0x0010f3d7},
-+      {0x0000824c, 0x0001e7ae},
-+      {0x0001609c, 0x0f508f29},
-+};
-+
-+static const u32 ar9331_1p2_radio_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00016000, 0x36db6db6},
-+      {0x00016004, 0x6db6db40},
-+      {0x00016008, 0x73800000},
-+      {0x0001600c, 0x00000000},
-+      {0x00016040, 0x7f80fff8},
-+      {0x00016044, 0x03d6d2db},
-+      {0x00016048, 0x6c924268},
-+      {0x0001604c, 0x000f0278},
-+      {0x00016050, 0x4db6db8c},
-+      {0x00016054, 0x6db60000},
-+      {0x00016080, 0x00080000},
-+      {0x00016084, 0x0e48048c},
-+      {0x00016088, 0x14214514},
-+      {0x0001608c, 0x119f081c},
-+      {0x00016090, 0x24926490},
-+      {0x00016098, 0xd411eb84},
-+      {0x000160a0, 0xc2108ffe},
-+      {0x000160a4, 0x812fc370},
-+      {0x000160a8, 0x423c8000},
-+      {0x000160ac, 0x24651800},
-+      {0x000160b0, 0x03284f3e},
-+      {0x000160b4, 0x92480040},
-+      {0x000160c0, 0x006db6db},
-+      {0x000160c4, 0x0186db60},
-+      {0x000160c8, 0x6db6db6c},
-+      {0x000160cc, 0x6de6c300},
-+      {0x000160d0, 0x14500820},
-+      {0x00016100, 0x04cb0001},
-+      {0x00016104, 0xfff80015},
-+      {0x00016108, 0x00080010},
-+      {0x0001610c, 0x00170000},
-+      {0x00016140, 0x10804000},
-+      {0x00016144, 0x01884080},
-+      {0x00016148, 0x000080c0},
-+      {0x00016280, 0x01000015},
-+      {0x00016284, 0x14d20000},
-+      {0x00016288, 0x00318000},
-+      {0x0001628c, 0x50000000},
-+      {0x00016290, 0x4b96210f},
-+      {0x00016380, 0x00000000},
-+      {0x00016384, 0x00000000},
-+      {0x00016388, 0x00800700},
-+      {0x0001638c, 0x00800700},
-+      {0x00016390, 0x00800700},
-+      {0x00016394, 0x00000000},
-+      {0x00016398, 0x00000000},
-+      {0x0001639c, 0x00000000},
-+      {0x000163a0, 0x00000001},
-+      {0x000163a4, 0x00000001},
-+      {0x000163a8, 0x00000000},
-+      {0x000163ac, 0x00000000},
-+      {0x000163b0, 0x00000000},
-+      {0x000163b4, 0x00000000},
-+      {0x000163b8, 0x00000000},
-+      {0x000163bc, 0x00000000},
-+      {0x000163c0, 0x000000a0},
-+      {0x000163c4, 0x000c0000},
-+      {0x000163c8, 0x14021402},
-+      {0x000163cc, 0x00001402},
-+      {0x000163d0, 0x00000000},
-+      {0x000163d4, 0x00000000},
-+};
-+
-+static const u32 ar9331_1p2_baseband_postamble_emulation[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00009e3c, 0xcf946221, 0xcf946221, 0xcf946221, 0xcf946221},
-+      {0x00009e44, 0x005c0000, 0x005c0000, 0x005c0000, 0x005c0000},
-+      {0x0000a2d8, 0x7999a800, 0x7999a800, 0x7999a80c, 0x7999a80c},
-+};
-+
-+static const u32 ar9331_1p2_mac_core_emulation[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000805c, 0xffffc7ff},
-+      {0x00008344, 0xaa4a105b},
-+};
-+
-+static const u32 ar9331_1p2_soc_postamble[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00007010, 0x00000022, 0x00000022, 0x00000022, 0x00000022},
-+};
-+
-+static const u32 ar9331_common_wo_xlna_rx_gain_1p2[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a000, 0x00060005},
-+      {0x0000a004, 0x00810080},
-+      {0x0000a008, 0x00830082},
-+      {0x0000a00c, 0x00850084},
-+      {0x0000a010, 0x01820181},
-+      {0x0000a014, 0x01840183},
-+      {0x0000a018, 0x01880185},
-+      {0x0000a01c, 0x018a0189},
-+      {0x0000a020, 0x02850284},
-+      {0x0000a024, 0x02890288},
-+      {0x0000a028, 0x028b028a},
-+      {0x0000a02c, 0x03850384},
-+      {0x0000a030, 0x03890388},
-+      {0x0000a034, 0x038b038a},
-+      {0x0000a038, 0x038d038c},
-+      {0x0000a03c, 0x03910390},
-+      {0x0000a040, 0x03930392},
-+      {0x0000a044, 0x03950394},
-+      {0x0000a048, 0x00000396},
-+      {0x0000a04c, 0x00000000},
-+      {0x0000a050, 0x00000000},
-+      {0x0000a054, 0x00000000},
-+      {0x0000a058, 0x00000000},
-+      {0x0000a05c, 0x00000000},
-+      {0x0000a060, 0x00000000},
-+      {0x0000a064, 0x00000000},
-+      {0x0000a068, 0x00000000},
-+      {0x0000a06c, 0x00000000},
-+      {0x0000a070, 0x00000000},
-+      {0x0000a074, 0x00000000},
-+      {0x0000a078, 0x00000000},
-+      {0x0000a07c, 0x00000000},
-+      {0x0000a080, 0x28282828},
-+      {0x0000a084, 0x28282828},
-+      {0x0000a088, 0x28282828},
-+      {0x0000a08c, 0x28282828},
-+      {0x0000a090, 0x28282828},
-+      {0x0000a094, 0x24242428},
-+      {0x0000a098, 0x171e1e1e},
-+      {0x0000a09c, 0x02020b0b},
-+      {0x0000a0a0, 0x02020202},
-+      {0x0000a0a4, 0x00000000},
-+      {0x0000a0a8, 0x00000000},
-+      {0x0000a0ac, 0x00000000},
-+      {0x0000a0b0, 0x00000000},
-+      {0x0000a0b4, 0x00000000},
-+      {0x0000a0b8, 0x00000000},
-+      {0x0000a0bc, 0x00000000},
-+      {0x0000a0c0, 0x22072208},
-+      {0x0000a0c4, 0x22052206},
-+      {0x0000a0c8, 0x22032204},
-+      {0x0000a0cc, 0x22012202},
-+      {0x0000a0d0, 0x221f2200},
-+      {0x0000a0d4, 0x221d221e},
-+      {0x0000a0d8, 0x33023303},
-+      {0x0000a0dc, 0x33003301},
-+      {0x0000a0e0, 0x331e331f},
-+      {0x0000a0e4, 0x4402331d},
-+      {0x0000a0e8, 0x44004401},
-+      {0x0000a0ec, 0x441e441f},
-+      {0x0000a0f0, 0x55025503},
-+      {0x0000a0f4, 0x55005501},
-+      {0x0000a0f8, 0x551e551f},
-+      {0x0000a0fc, 0x6602551d},
-+      {0x0000a100, 0x66006601},
-+      {0x0000a104, 0x661e661f},
-+      {0x0000a108, 0x7703661d},
-+      {0x0000a10c, 0x77017702},
-+      {0x0000a110, 0x00007700},
-+      {0x0000a114, 0x00000000},
-+      {0x0000a118, 0x00000000},
-+      {0x0000a11c, 0x00000000},
-+      {0x0000a120, 0x00000000},
-+      {0x0000a124, 0x00000000},
-+      {0x0000a128, 0x00000000},
-+      {0x0000a12c, 0x00000000},
-+      {0x0000a130, 0x00000000},
-+      {0x0000a134, 0x00000000},
-+      {0x0000a138, 0x00000000},
-+      {0x0000a13c, 0x00000000},
-+      {0x0000a140, 0x001f0000},
-+      {0x0000a144, 0x111f1100},
-+      {0x0000a148, 0x111d111e},
-+      {0x0000a14c, 0x111b111c},
-+      {0x0000a150, 0x22032204},
-+      {0x0000a154, 0x22012202},
-+      {0x0000a158, 0x221f2200},
-+      {0x0000a15c, 0x221d221e},
-+      {0x0000a160, 0x33013302},
-+      {0x0000a164, 0x331f3300},
-+      {0x0000a168, 0x4402331e},
-+      {0x0000a16c, 0x44004401},
-+      {0x0000a170, 0x441e441f},
-+      {0x0000a174, 0x55015502},
-+      {0x0000a178, 0x551f5500},
-+      {0x0000a17c, 0x6602551e},
-+      {0x0000a180, 0x66006601},
-+      {0x0000a184, 0x661e661f},
-+      {0x0000a188, 0x7703661d},
-+      {0x0000a18c, 0x77017702},
-+      {0x0000a190, 0x00007700},
-+      {0x0000a194, 0x00000000},
-+      {0x0000a198, 0x00000000},
-+      {0x0000a19c, 0x00000000},
-+      {0x0000a1a0, 0x00000000},
-+      {0x0000a1a4, 0x00000000},
-+      {0x0000a1a8, 0x00000000},
-+      {0x0000a1ac, 0x00000000},
-+      {0x0000a1b0, 0x00000000},
-+      {0x0000a1b4, 0x00000000},
-+      {0x0000a1b8, 0x00000000},
-+      {0x0000a1bc, 0x00000000},
-+      {0x0000a1c0, 0x00000000},
-+      {0x0000a1c4, 0x00000000},
-+      {0x0000a1c8, 0x00000000},
-+      {0x0000a1cc, 0x00000000},
-+      {0x0000a1d0, 0x00000000},
-+      {0x0000a1d4, 0x00000000},
-+      {0x0000a1d8, 0x00000000},
-+      {0x0000a1dc, 0x00000000},
-+      {0x0000a1e0, 0x00000000},
-+      {0x0000a1e4, 0x00000000},
-+      {0x0000a1e8, 0x00000000},
-+      {0x0000a1ec, 0x00000000},
-+      {0x0000a1f0, 0x00000396},
-+      {0x0000a1f4, 0x00000396},
-+      {0x0000a1f8, 0x00000396},
-+      {0x0000a1fc, 0x00000296},
-+};
-+
-+static const u32 ar9331_1p2_emulation_baseband_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a344, 0x00000010},
-+};
-+
-+static const u32 ar9331_common_rx_gain_1p2_emulation[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a000, 0x02000101},
-+      {0x0000a004, 0x02000102},
-+      {0x0000a008, 0x02000103},
-+      {0x0000a00c, 0x02000104},
-+      {0x0000a010, 0x02000200},
-+      {0x0000a014, 0x02000201},
-+      {0x0000a018, 0x02000202},
-+      {0x0000a01c, 0x02000203},
-+      {0x0000a020, 0x02000204},
-+      {0x0000a024, 0x02000205},
-+      {0x0000a028, 0x02000208},
-+      {0x0000a02c, 0x02000302},
-+      {0x0000a030, 0x02000303},
-+      {0x0000a034, 0x02000304},
-+      {0x0000a038, 0x02000400},
-+      {0x0000a03c, 0x02010300},
-+      {0x0000a040, 0x02010301},
-+      {0x0000a044, 0x02010302},
-+      {0x0000a048, 0x02000500},
-+      {0x0000a04c, 0x02010400},
-+      {0x0000a050, 0x02020300},
-+      {0x0000a054, 0x02020301},
-+      {0x0000a058, 0x02020302},
-+      {0x0000a05c, 0x02020303},
-+      {0x0000a060, 0x02020400},
-+      {0x0000a064, 0x02030300},
-+      {0x0000a068, 0x02030301},
-+      {0x0000a06c, 0x02030302},
-+      {0x0000a070, 0x02030303},
-+      {0x0000a074, 0x02030400},
-+      {0x0000a078, 0x02040300},
-+      {0x0000a07c, 0x02040301},
-+      {0x0000a080, 0x02040302},
-+      {0x0000a084, 0x02040303},
-+      {0x0000a088, 0x02030500},
-+      {0x0000a08c, 0x02040400},
-+      {0x0000a090, 0x02050203},
-+      {0x0000a094, 0x02050204},
-+      {0x0000a098, 0x02050205},
-+      {0x0000a09c, 0x02040500},
-+      {0x0000a0a0, 0x02050301},
-+      {0x0000a0a4, 0x02050302},
-+      {0x0000a0a8, 0x02050303},
-+      {0x0000a0ac, 0x02050400},
-+      {0x0000a0b0, 0x02050401},
-+      {0x0000a0b4, 0x02050402},
-+      {0x0000a0b8, 0x02050403},
-+      {0x0000a0bc, 0x02050500},
-+      {0x0000a0c0, 0x02050501},
-+      {0x0000a0c4, 0x02050502},
-+      {0x0000a0c8, 0x02050503},
-+      {0x0000a0cc, 0x02050504},
-+      {0x0000a0d0, 0x02050600},
-+      {0x0000a0d4, 0x02050601},
-+      {0x0000a0d8, 0x02050602},
-+      {0x0000a0dc, 0x02050603},
-+      {0x0000a0e0, 0x02050604},
-+      {0x0000a0e4, 0x02050700},
-+      {0x0000a0e8, 0x02050701},
-+      {0x0000a0ec, 0x02050702},
-+      {0x0000a0f0, 0x02050703},
-+      {0x0000a0f4, 0x02050704},
-+      {0x0000a0f8, 0x02050705},
-+      {0x0000a0fc, 0x02050708},
-+      {0x0000a100, 0x02050709},
-+      {0x0000a104, 0x0205070a},
-+      {0x0000a108, 0x0205070b},
-+      {0x0000a10c, 0x0205070c},
-+      {0x0000a110, 0x0205070d},
-+      {0x0000a114, 0x02050710},
-+      {0x0000a118, 0x02050711},
-+      {0x0000a11c, 0x02050712},
-+      {0x0000a120, 0x02050713},
-+      {0x0000a124, 0x02050714},
-+      {0x0000a128, 0x02050715},
-+      {0x0000a12c, 0x02050730},
-+      {0x0000a130, 0x02050731},
-+      {0x0000a134, 0x02050732},
-+      {0x0000a138, 0x02050733},
-+      {0x0000a13c, 0x02050734},
-+      {0x0000a140, 0x02050735},
-+      {0x0000a144, 0x02050750},
-+      {0x0000a148, 0x02050751},
-+      {0x0000a14c, 0x02050752},
-+      {0x0000a150, 0x02050753},
-+      {0x0000a154, 0x02050754},
-+      {0x0000a158, 0x02050755},
-+      {0x0000a15c, 0x02050770},
-+      {0x0000a160, 0x02050771},
-+      {0x0000a164, 0x02050772},
-+      {0x0000a168, 0x02050773},
-+      {0x0000a16c, 0x02050774},
-+      {0x0000a170, 0x02050775},
-+      {0x0000a174, 0x00000776},
-+      {0x0000a178, 0x00000776},
-+      {0x0000a17c, 0x00000776},
-+      {0x0000a180, 0x00000776},
-+      {0x0000a184, 0x00000776},
-+      {0x0000a188, 0x00000776},
-+      {0x0000a18c, 0x00000776},
-+      {0x0000a190, 0x00000776},
-+      {0x0000a194, 0x00000776},
-+      {0x0000a198, 0x00000776},
-+      {0x0000a19c, 0x00000776},
-+      {0x0000a1a0, 0x00000776},
-+      {0x0000a1a4, 0x00000776},
-+      {0x0000a1a8, 0x00000776},
-+      {0x0000a1ac, 0x00000776},
-+      {0x0000a1b0, 0x00000776},
-+      {0x0000a1b4, 0x00000776},
-+      {0x0000a1b8, 0x00000776},
-+      {0x0000a1bc, 0x00000776},
-+      {0x0000a1c0, 0x00000776},
-+      {0x0000a1c4, 0x00000776},
-+      {0x0000a1c8, 0x00000776},
-+      {0x0000a1cc, 0x00000776},
-+      {0x0000a1d0, 0x00000776},
-+      {0x0000a1d4, 0x00000776},
-+      {0x0000a1d8, 0x00000776},
-+      {0x0000a1dc, 0x00000776},
-+      {0x0000a1e0, 0x00000776},
-+      {0x0000a1e4, 0x00000776},
-+      {0x0000a1e8, 0x00000776},
-+      {0x0000a1ec, 0x00000776},
-+      {0x0000a1f0, 0x00000776},
-+      {0x0000a1f4, 0x00000776},
-+      {0x0000a1f8, 0x00000776},
-+      {0x0000a1fc, 0x00000776},
-+};
-+
-+static const u32 ar9331_1p2_baseband_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00009800, 0xafe68e30},
-+      {0x00009804, 0xfd14e000},
-+      {0x00009808, 0x9c0a8f6b},
-+      {0x0000980c, 0x04800000},
-+      {0x00009814, 0x9280c00a},
-+      {0x00009818, 0x00000000},
-+      {0x0000981c, 0x00020028},
-+      {0x00009834, 0x5f3ca3de},
-+      {0x00009838, 0x0108ecff},
-+      {0x0000983c, 0x14750600},
-+      {0x00009880, 0x201fff00},
-+      {0x00009884, 0x00001042},
-+      {0x000098a4, 0x00200400},
-+      {0x000098b0, 0x32840bbe},
-+      {0x000098d0, 0x004b6a8e},
-+      {0x000098d4, 0x00000820},
-+      {0x000098dc, 0x00000000},
-+      {0x000098f0, 0x00000000},
-+      {0x000098f4, 0x00000000},
-+      {0x00009c04, 0x00000000},
-+      {0x00009c08, 0x03200000},
-+      {0x00009c0c, 0x00000000},
-+      {0x00009c10, 0x00000000},
-+      {0x00009c14, 0x00046384},
-+      {0x00009c18, 0x05b6b440},
-+      {0x00009c1c, 0x00b6b440},
-+      {0x00009d00, 0xc080a333},
-+      {0x00009d04, 0x40206c10},
-+      {0x00009d08, 0x009c4060},
-+      {0x00009d0c, 0x1883800a},
-+      {0x00009d10, 0x01834061},
-+      {0x00009d14, 0x00c00400},
-+      {0x00009d18, 0x00000000},
-+      {0x00009e08, 0x0038233c},
-+      {0x00009e24, 0x9927b515},
-+      {0x00009e28, 0x12ef0200},
-+      {0x00009e30, 0x06336f77},
-+      {0x00009e34, 0x6af6532f},
-+      {0x00009e38, 0x0cc80c00},
-+      {0x00009e40, 0x0d261820},
-+      {0x00009e4c, 0x00001004},
-+      {0x00009e50, 0x00ff03f1},
-+      {0x00009fc0, 0x803e4788},
-+      {0x00009fc4, 0x0001efb5},
-+      {0x00009fcc, 0x40000014},
-+      {0x0000a20c, 0x00000000},
-+      {0x0000a220, 0x00000000},
-+      {0x0000a224, 0x00000000},
-+      {0x0000a228, 0x10002310},
-+      {0x0000a23c, 0x00000000},
-+      {0x0000a244, 0x0c000000},
-+      {0x0000a2a0, 0x00000001},
-+      {0x0000a2c0, 0x00000001},
-+      {0x0000a2c8, 0x00000000},
-+      {0x0000a2cc, 0x18c43433},
-+      {0x0000a2d4, 0x00000000},
-+      {0x0000a2dc, 0x00000000},
-+      {0x0000a2e0, 0x00000000},
-+      {0x0000a2e4, 0x00000000},
-+      {0x0000a2e8, 0x00000000},
-+      {0x0000a2ec, 0x00000000},
-+      {0x0000a2f0, 0x00000000},
-+      {0x0000a2f4, 0x00000000},
-+      {0x0000a2f8, 0x00000000},
-+      {0x0000a344, 0x00000000},
-+      {0x0000a34c, 0x00000000},
-+      {0x0000a350, 0x0000a000},
-+      {0x0000a364, 0x00000000},
-+      {0x0000a370, 0x00000000},
-+      {0x0000a390, 0x00000001},
-+      {0x0000a394, 0x00000444},
-+      {0x0000a398, 0x001f0e0f},
-+      {0x0000a39c, 0x0075393f},
-+      {0x0000a3a0, 0xb79f6427},
-+      {0x0000a3a4, 0x00000000},
-+      {0x0000a3a8, 0xaaaaaaaa},
-+      {0x0000a3ac, 0x3c466478},
-+      {0x0000a3c0, 0x20202020},
-+      {0x0000a3c4, 0x22222220},
-+      {0x0000a3c8, 0x20200020},
-+      {0x0000a3cc, 0x20202020},
-+      {0x0000a3d0, 0x20202020},
-+      {0x0000a3d4, 0x20202020},
-+      {0x0000a3d8, 0x20202020},
-+      {0x0000a3dc, 0x20202020},
-+      {0x0000a3e0, 0x20202020},
-+      {0x0000a3e4, 0x20202020},
-+      {0x0000a3e8, 0x20202020},
-+      {0x0000a3ec, 0x20202020},
-+      {0x0000a3f0, 0x00000000},
-+      {0x0000a3f4, 0x00000006},
-+      {0x0000a3f8, 0x0cdbd380},
-+      {0x0000a3fc, 0x000f0f01},
-+      {0x0000a400, 0x8fa91f01},
-+      {0x0000a404, 0x00000000},
-+      {0x0000a408, 0x0e79e5c6},
-+      {0x0000a40c, 0x00820820},
-+      {0x0000a414, 0x1ce739ce},
-+      {0x0000a418, 0x2d001dce},
-+      {0x0000a41c, 0x1ce739ce},
-+      {0x0000a420, 0x000001ce},
-+      {0x0000a424, 0x1ce739ce},
-+      {0x0000a428, 0x000001ce},
-+      {0x0000a42c, 0x1ce739ce},
-+      {0x0000a430, 0x1ce739ce},
-+      {0x0000a434, 0x00000000},
-+      {0x0000a438, 0x00001801},
-+      {0x0000a43c, 0x00000000},
-+      {0x0000a440, 0x00000000},
-+      {0x0000a444, 0x00000000},
-+      {0x0000a448, 0x04000000},
-+      {0x0000a44c, 0x00000001},
-+      {0x0000a450, 0x00010000},
-+      {0x0000a458, 0x00000000},
-+      {0x0000a640, 0x00000000},
-+      {0x0000a644, 0x3fad9d74},
-+      {0x0000a648, 0x0048060a},
-+      {0x0000a64c, 0x00003c37},
-+      {0x0000a670, 0x03020100},
-+      {0x0000a674, 0x09080504},
-+      {0x0000a678, 0x0d0c0b0a},
-+      {0x0000a67c, 0x13121110},
-+      {0x0000a680, 0x31301514},
-+      {0x0000a684, 0x35343332},
-+      {0x0000a688, 0x00000036},
-+      {0x0000a690, 0x00000838},
-+      {0x0000a7c0, 0x00000000},
-+      {0x0000a7c4, 0xfffffffc},
-+      {0x0000a7c8, 0x00000000},
-+      {0x0000a7cc, 0x00000000},
-+      {0x0000a7d0, 0x00000000},
-+      {0x0000a7d4, 0x00000004},
-+      {0x0000a7dc, 0x00000001},
-+};
-+
-+static const u32 ar9331_modes_high_power_tx_gain_1p2[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x0000a410, 0x000050d7, 0x000050d7, 0x000050d7, 0x000050d7},
-+      {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-+      {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-+      {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-+      {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-+      {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-+      {0x0000a520, 0x2f001f04, 0x2f001f04, 0x23000a00, 0x23000a00},
-+      {0x0000a524, 0x35001fc4, 0x35001fc4, 0x27000a02, 0x27000a02},
-+      {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2b000a04, 0x2b000a04},
-+      {0x0000a52c, 0x41023e85, 0x41023e85, 0x3f001620, 0x3f001620},
-+      {0x0000a530, 0x48023ec6, 0x48023ec6, 0x41001621, 0x41001621},
-+      {0x0000a534, 0x4d023f01, 0x4d023f01, 0x44001640, 0x44001640},
-+      {0x0000a538, 0x53023f4b, 0x53023f4b, 0x46001641, 0x46001641},
-+      {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x48001642, 0x48001642},
-+      {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x4b001644, 0x4b001644},
-+      {0x0000a544, 0x6502feca, 0x6502feca, 0x4e001a81, 0x4e001a81},
-+      {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x51001a83, 0x51001a83},
-+      {0x0000a54c, 0x7203feca, 0x7203feca, 0x54001c84, 0x54001c84},
-+      {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x57001ce3, 0x57001ce3},
-+      {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x5b001ce5, 0x5b001ce5},
-+      {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5f001ce9, 0x5f001ce9},
-+      {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a560, 0x900fff0b, 0x900fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a564, 0x960fffcb, 0x960fffcb, 0x66001eec, 0x66001eec},
-+      {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x66001eec, 0x66001eec},
-+      {0x0000a580, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-+      {0x0000a584, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-+      {0x0000a588, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-+      {0x0000a58c, 0x11062202, 0x11062202, 0x0b000200, 0x0b000200},
-+      {0x0000a590, 0x17022e00, 0x17022e00, 0x0f000202, 0x0f000202},
-+      {0x0000a594, 0x1d000ec2, 0x1d000ec2, 0x11000400, 0x11000400},
-+      {0x0000a598, 0x25020ec0, 0x25020ec0, 0x15000402, 0x15000402},
-+      {0x0000a59c, 0x2b020ec3, 0x2b020ec3, 0x19000404, 0x19000404},
-+      {0x0000a5a0, 0x2f001f04, 0x2f001f04, 0x1b000603, 0x1b000603},
-+      {0x0000a5a4, 0x35001fc4, 0x35001fc4, 0x1f000a02, 0x1f000a02},
-+      {0x0000a5a8, 0x3c022f04, 0x3c022f04, 0x23000a04, 0x23000a04},
-+      {0x0000a5ac, 0x41023e85, 0x41023e85, 0x26000a20, 0x26000a20},
-+      {0x0000a5b0, 0x48023ec6, 0x48023ec6, 0x2a000e20, 0x2a000e20},
-+      {0x0000a5b4, 0x4d023f01, 0x4d023f01, 0x2e000e22, 0x2e000e22},
-+      {0x0000a5b8, 0x53023f4b, 0x53023f4b, 0x31000e24, 0x31000e24},
-+      {0x0000a5bc, 0x5a027f09, 0x5a027f09, 0x34001640, 0x34001640},
-+      {0x0000a5c0, 0x5f027fc9, 0x5f027fc9, 0x38001660, 0x38001660},
-+      {0x0000a5c4, 0x6502feca, 0x6502feca, 0x3b001861, 0x3b001861},
-+      {0x0000a5c8, 0x6b02ff4a, 0x6b02ff4a, 0x3e001a81, 0x3e001a81},
-+      {0x0000a5cc, 0x7203feca, 0x7203feca, 0x42001a83, 0x42001a83},
-+      {0x0000a5d0, 0x7703ff0b, 0x7703ff0b, 0x44001c84, 0x44001c84},
-+      {0x0000a5d4, 0x7d06ffcb, 0x7d06ffcb, 0x48001ce3, 0x48001ce3},
-+      {0x0000a5d8, 0x8407ff0b, 0x8407ff0b, 0x4c001ce5, 0x4c001ce5},
-+      {0x0000a5dc, 0x8907ffcb, 0x8907ffcb, 0x50001ce9, 0x50001ce9},
-+      {0x0000a5e0, 0x900fff0b, 0x900fff0b, 0x54001ceb, 0x54001ceb},
-+      {0x0000a5e4, 0x960fffcb, 0x960fffcb, 0x56001eec, 0x56001eec},
-+      {0x0000a5e8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5ec, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f0, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f4, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5f8, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a5fc, 0x9c1fff0b, 0x9c1fff0b, 0x56001eec, 0x56001eec},
-+      {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-+      {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000},
-+      {0x0000a618, 0x02008501, 0x02008501, 0x02008501, 0x02008501},
-+      {0x0000a61c, 0x02008802, 0x02008802, 0x02008802, 0x02008802},
-+      {0x0000a620, 0x0300c802, 0x0300c802, 0x0300c802, 0x0300c802},
-+      {0x0000a624, 0x0300cc03, 0x0300cc03, 0x0300cc03, 0x0300cc03},
-+      {0x0000a628, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a62c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a630, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a634, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a638, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+      {0x0000a63c, 0x04011004, 0x04011004, 0x04011004, 0x04011004},
-+};
-+
-+static const u32 ar9331_1p2_mac_postamble_emulation[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00008014, 0x10f810f8, 0x10f810f8, 0x10f810f8, 0x10f810f8},
-+      {0x0000801c, 0x0e8d8017, 0x0e8d8017, 0x0e8d8017, 0x0e8d8017},
-+};
-+
-+static const u32 ar9331_1p2_mac_postamble[][5] = {
-+      /*  Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20  */
-+      {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160},
-+      {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c},
-+      {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38},
-+      {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00},
-+      {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b},
-+      {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810},
-+      {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a},
-+      {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440},
-+};
-+
-+static const u32 ar9331_1p2_soc_preamble[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00007020, 0x00000000},
-+      {0x00007034, 0x00000002},
-+      {0x00007038, 0x000002f8},
-+};
-+
-+static const u32 ar9331_1p2_xtal_40M[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00007038, 0x000004c2},
-+      {0x00008244, 0x0010f400},
-+      {0x0000824c, 0x0001e800},
-+      {0x0001609c, 0x0b283f31},
-+};
-+
-+static const u32 ar9331_1p2_mac_core[][2] = {
-+      /* Addr      allmodes  */
-+      {0x00000008, 0x00000000},
-+      {0x00000030, 0x00020085},
-+      {0x00000034, 0x00000005},
-+      {0x00000040, 0x00000000},
-+      {0x00000044, 0x00000000},
-+      {0x00000048, 0x00000008},
-+      {0x0000004c, 0x00000010},
-+      {0x00000050, 0x00000000},
-+      {0x00001040, 0x002ffc0f},
-+      {0x00001044, 0x002ffc0f},
-+      {0x00001048, 0x002ffc0f},
-+      {0x0000104c, 0x002ffc0f},
-+      {0x00001050, 0x002ffc0f},
-+      {0x00001054, 0x002ffc0f},
-+      {0x00001058, 0x002ffc0f},
-+      {0x0000105c, 0x002ffc0f},
-+      {0x00001060, 0x002ffc0f},
-+      {0x00001064, 0x002ffc0f},
-+      {0x000010f0, 0x00000100},
-+      {0x00001270, 0x00000000},
-+      {0x000012b0, 0x00000000},
-+      {0x000012f0, 0x00000000},
-+      {0x0000143c, 0x00000000},
-+      {0x0000147c, 0x00000000},
-+      {0x00008000, 0x00000000},
-+      {0x00008004, 0x00000000},
-+      {0x00008008, 0x00000000},
-+      {0x0000800c, 0x00000000},
-+      {0x00008018, 0x00000000},
-+      {0x00008020, 0x00000000},
-+      {0x00008038, 0x00000000},
-+      {0x0000803c, 0x00000000},
-+      {0x00008040, 0x00000000},
-+      {0x00008044, 0x00000000},
-+      {0x00008048, 0x00000000},
-+      {0x0000804c, 0xffffffff},
-+      {0x00008054, 0x00000000},
-+      {0x00008058, 0x00000000},
-+      {0x0000805c, 0x000fc78f},
-+      {0x00008060, 0x0000000f},
-+      {0x00008064, 0x00000000},
-+      {0x00008070, 0x00000310},
-+      {0x00008074, 0x00000020},
-+      {0x00008078, 0x00000000},
-+      {0x0000809c, 0x0000000f},
-+      {0x000080a0, 0x00000000},
-+      {0x000080a4, 0x02ff0000},
-+      {0x000080a8, 0x0e070605},
-+      {0x000080ac, 0x0000000d},
-+      {0x000080b0, 0x00000000},
-+      {0x000080b4, 0x00000000},
-+      {0x000080b8, 0x00000000},
-+      {0x000080bc, 0x00000000},
-+      {0x000080c0, 0x2a800000},
-+      {0x000080c4, 0x06900168},
-+      {0x000080c8, 0x13881c20},
-+      {0x000080cc, 0x01f40000},
-+      {0x000080d0, 0x00252500},
-+      {0x000080d4, 0x00a00000},
-+      {0x000080d8, 0x00400000},
-+      {0x000080dc, 0x00000000},
-+      {0x000080e0, 0xffffffff},
-+      {0x000080e4, 0x0000ffff},
-+      {0x000080e8, 0x3f3f3f3f},
-+      {0x000080ec, 0x00000000},
-+      {0x000080f0, 0x00000000},
-+      {0x000080f4, 0x00000000},
-+      {0x000080fc, 0x00020000},
-+      {0x00008100, 0x00000000},
-+      {0x00008108, 0x00000052},
-+      {0x0000810c, 0x00000000},
-+      {0x00008110, 0x00000000},
-+      {0x00008114, 0x000007ff},
-+      {0x00008118, 0x000000aa},
-+      {0x0000811c, 0x00003210},
-+      {0x00008124, 0x00000000},
-+      {0x00008128, 0x00000000},
-+      {0x0000812c, 0x00000000},
-+      {0x00008130, 0x00000000},
-+      {0x00008134, 0x00000000},
-+      {0x00008138, 0x00000000},
-+      {0x0000813c, 0x0000ffff},
-+      {0x00008144, 0xffffffff},
-+      {0x00008168, 0x00000000},
-+      {0x0000816c, 0x00000000},
-+      {0x00008170, 0x18486200},
-+      {0x00008174, 0x33332210},
-+      {0x00008178, 0x00000000},
-+      {0x0000817c, 0x00020000},
-+      {0x000081c0, 0x00000000},
-+      {0x000081c4, 0x33332210},
-+      {0x000081c8, 0x00000000},
-+      {0x000081cc, 0x00000000},
-+      {0x000081d4, 0x00000000},
-+      {0x000081ec, 0x00000000},
-+      {0x000081f0, 0x00000000},
-+      {0x000081f4, 0x00000000},
-+      {0x000081f8, 0x00000000},
-+      {0x000081fc, 0x00000000},
-+      {0x00008240, 0x00100000},
-+      {0x00008248, 0x00000800},
-+      {0x00008250, 0x00000000},
-+      {0x00008254, 0x00000000},
-+      {0x00008258, 0x00000000},
-+      {0x0000825c, 0x40000000},
-+      {0x00008260, 0x00080922},
-+      {0x00008264, 0x9d400010},
-+      {0x00008268, 0xffffffff},
-+      {0x0000826c, 0x0000ffff},
-+      {0x00008270, 0x00000000},
-+      {0x00008274, 0x40000000},
-+      {0x00008278, 0x003e4180},
-+      {0x0000827c, 0x00000004},
-+      {0x00008284, 0x0000002c},
-+      {0x00008288, 0x0000002c},
-+      {0x0000828c, 0x000000ff},
-+      {0x00008294, 0x00000000},
-+      {0x00008298, 0x00000000},
-+      {0x0000829c, 0x00000000},
-+      {0x00008300, 0x00000140},
-+      {0x00008314, 0x00000000},
-+      {0x0000831c, 0x0000010d},
-+      {0x00008328, 0x00000000},
-+      {0x0000832c, 0x00000007},
-+      {0x00008330, 0x00000302},
-+      {0x00008334, 0x00000700},
-+      {0x00008338, 0x00ff0000},
-+      {0x0000833c, 0x02400000},
-+      {0x00008340, 0x000107ff},
-+      {0x00008344, 0xaa48105b},
-+      {0x00008348, 0x008f0000},
-+      {0x0000835c, 0x00000000},
-+      {0x00008360, 0xffffffff},
-+      {0x00008364, 0xffffffff},
-+      {0x00008368, 0x00000000},
-+      {0x00008370, 0x00000000},
-+      {0x00008374, 0x000000ff},
-+      {0x00008378, 0x00000000},
-+      {0x0000837c, 0x00000000},
-+      {0x00008380, 0xffffffff},
-+      {0x00008384, 0xffffffff},
-+      {0x00008390, 0xffffffff},
-+      {0x00008394, 0xffffffff},
-+      {0x00008398, 0x00000000},
-+      {0x0000839c, 0x00000000},
-+      {0x000083a0, 0x00000000},
-+      {0x000083a4, 0x0000fa14},
-+      {0x000083a8, 0x000f0c00},
-+      {0x000083ac, 0x33332210},
-+      {0x000083b0, 0x33332210},
-+      {0x000083b4, 0x33332210},
-+      {0x000083b8, 0x33332210},
-+      {0x000083bc, 0x00000000},
-+      {0x000083c0, 0x00000000},
-+      {0x000083c4, 0x00000000},
-+      {0x000083c8, 0x00000000},
-+      {0x000083cc, 0x00000200},
-+      {0x000083d0, 0x000301ff},
-+};
-+
-+static const u32 ar9331_common_rx_gain_1p2[][2] = {
-+      /* Addr      allmodes  */
-+      {0x0000a000, 0x00010000},
-+      {0x0000a004, 0x00030002},
-+      {0x0000a008, 0x00050004},
-+      {0x0000a00c, 0x00810080},
-+      {0x0000a010, 0x01800082},
-+      {0x0000a014, 0x01820181},
-+      {0x0000a018, 0x01840183},
-+      {0x0000a01c, 0x01880185},
-+      {0x0000a020, 0x018a0189},
-+      {0x0000a024, 0x02850284},
-+      {0x0000a028, 0x02890288},
-+      {0x0000a02c, 0x03850384},
-+      {0x0000a030, 0x03890388},
-+      {0x0000a034, 0x038b038a},
-+      {0x0000a038, 0x038d038c},
-+      {0x0000a03c, 0x03910390},
-+      {0x0000a040, 0x03930392},
-+      {0x0000a044, 0x03950394},
-+      {0x0000a048, 0x00000396},
-+      {0x0000a04c, 0x00000000},
-+      {0x0000a050, 0x00000000},
-+      {0x0000a054, 0x00000000},
-+      {0x0000a058, 0x00000000},
-+      {0x0000a05c, 0x00000000},
-+      {0x0000a060, 0x00000000},
-+      {0x0000a064, 0x00000000},
-+      {0x0000a068, 0x00000000},
-+      {0x0000a06c, 0x00000000},
-+      {0x0000a070, 0x00000000},
-+      {0x0000a074, 0x00000000},
-+      {0x0000a078, 0x00000000},
-+      {0x0000a07c, 0x00000000},
-+      {0x0000a080, 0x28282828},
-+      {0x0000a084, 0x28282828},
-+      {0x0000a088, 0x28282828},
-+      {0x0000a08c, 0x28282828},
-+      {0x0000a090, 0x28282828},
-+      {0x0000a094, 0x21212128},
-+      {0x0000a098, 0x171c1c1c},
-+      {0x0000a09c, 0x02020212},
-+      {0x0000a0a0, 0x00000202},
-+      {0x0000a0a4, 0x00000000},
-+      {0x0000a0a8, 0x00000000},
-+      {0x0000a0ac, 0x00000000},
-+      {0x0000a0b0, 0x00000000},
-+      {0x0000a0b4, 0x00000000},
-+      {0x0000a0b8, 0x00000000},
-+      {0x0000a0bc, 0x00000000},
-+      {0x0000a0c0, 0x001f0000},
-+      {0x0000a0c4, 0x111f1100},
-+      {0x0000a0c8, 0x111d111e},
-+      {0x0000a0cc, 0x111b111c},
-+      {0x0000a0d0, 0x22032204},
-+      {0x0000a0d4, 0x22012202},
-+      {0x0000a0d8, 0x221f2200},
-+      {0x0000a0dc, 0x221d221e},
-+      {0x0000a0e0, 0x33013302},
-+      {0x0000a0e4, 0x331f3300},
-+      {0x0000a0e8, 0x4402331e},
-+      {0x0000a0ec, 0x44004401},
-+      {0x0000a0f0, 0x441e441f},
-+      {0x0000a0f4, 0x55015502},
-+      {0x0000a0f8, 0x551f5500},
-+      {0x0000a0fc, 0x6602551e},
-+      {0x0000a100, 0x66006601},
-+      {0x0000a104, 0x661e661f},
-+      {0x0000a108, 0x7703661d},
-+      {0x0000a10c, 0x77017702},
-+      {0x0000a110, 0x00007700},
-+      {0x0000a114, 0x00000000},
-+      {0x0000a118, 0x00000000},
-+      {0x0000a11c, 0x00000000},
-+      {0x0000a120, 0x00000000},
-+      {0x0000a124, 0x00000000},
-+      {0x0000a128, 0x00000000},
-+      {0x0000a12c, 0x00000000},
-+      {0x0000a130, 0x00000000},
-+      {0x0000a134, 0x00000000},
-+      {0x0000a138, 0x00000000},
-+      {0x0000a13c, 0x00000000},
-+      {0x0000a140, 0x001f0000},
-+      {0x0000a144, 0x111f1100},
-+      {0x0000a148, 0x111d111e},
-+      {0x0000a14c, 0x111b111c},
-+      {0x0000a150, 0x22032204},
-+      {0x0000a154, 0x22012202},
-+      {0x0000a158, 0x221f2200},
-+      {0x0000a15c, 0x221d221e},
-+      {0x0000a160, 0x33013302},
-+      {0x0000a164, 0x331f3300},
-+      {0x0000a168, 0x4402331e},
-+      {0x0000a16c, 0x44004401},
-+      {0x0000a170, 0x441e441f},
-+      {0x0000a174, 0x55015502},
-+      {0x0000a178, 0x551f5500},
-+      {0x0000a17c, 0x6602551e},
-+      {0x0000a180, 0x66006601},
-+      {0x0000a184, 0x661e661f},
-+      {0x0000a188, 0x7703661d},
-+      {0x0000a18c, 0x77017702},
-+      {0x0000a190, 0x00007700},
-+      {0x0000a194, 0x00000000},
-+      {0x0000a198, 0x00000000},
-+      {0x0000a19c, 0x00000000},
-+      {0x0000a1a0, 0x00000000},
-+      {0x0000a1a4, 0x00000000},
-+      {0x0000a1a8, 0x00000000},
-+      {0x0000a1ac, 0x00000000},
-+      {0x0000a1b0, 0x00000000},
-+      {0x0000a1b4, 0x00000000},
-+      {0x0000a1b8, 0x00000000},
-+      {0x0000a1bc, 0x00000000},
-+      {0x0000a1c0, 0x00000000},
-+      {0x0000a1c4, 0x00000000},
-+      {0x0000a1c8, 0x00000000},
-+      {0x0000a1cc, 0x00000000},
-+      {0x0000a1d0, 0x00000000},
-+      {0x0000a1d4, 0x00000000},
-+      {0x0000a1d8, 0x00000000},
-+      {0x0000a1dc, 0x00000000},
-+      {0x0000a1e0, 0x00000000},
-+      {0x0000a1e4, 0x00000000},
-+      {0x0000a1e8, 0x00000000},
-+      {0x0000a1ec, 0x00000000},
-+      {0x0000a1f0, 0x00000396},
-+      {0x0000a1f4, 0x00000396},
-+      {0x0000a1f8, 0x00000396},
-+      {0x0000a1fc, 0x00000296},
-+};
-+
-+#endif /* INITVALS_9330_1P2_H */
diff --git a/package/mac80211/patches/545-ath9k-initialize-mode-registers-for-AR9330.patch b/package/mac80211/patches/545-ath9k-initialize-mode-registers-for-AR9330.patch
deleted file mode 100644 (file)
index 30f5d54..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-@@ -19,6 +19,8 @@
- #include "ar9003_2p2_initvals.h"
- #include "ar9485_initvals.h"
- #include "ar9340_initvals.h"
-+#include "ar9330_1p1_initvals.h"
-+#include "ar9330_1p2_initvals.h"
- /* General hardware code for the AR9003 hadware family */
-@@ -29,7 +31,113 @@
-  */
- static void ar9003_hw_init_mode_regs(struct ath_hw *ah)
- {
--      if (AR_SREV_9340(ah)) {
-+      if (AR_SREV_9330_11(ah)) {
-+              /* mac */
-+              INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE],
-+                              ar9331_1p1_mac_core,
-+                              ARRAY_SIZE(ar9331_1p1_mac_core), 2);
-+              INIT_INI_ARRAY(&ah->iniMac[ATH_INI_POST],
-+                              ar9331_1p1_mac_postamble,
-+                              ARRAY_SIZE(ar9331_1p1_mac_postamble), 5);
-+
-+              /* bb */
-+              INIT_INI_ARRAY(&ah->iniBB[ATH_INI_PRE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniBB[ATH_INI_CORE],
-+                              ar9331_1p1_baseband_core,
-+                              ARRAY_SIZE(ar9331_1p1_baseband_core), 2);
-+              INIT_INI_ARRAY(&ah->iniBB[ATH_INI_POST],
-+                              ar9331_1p1_baseband_postamble,
-+                              ARRAY_SIZE(ar9331_1p1_baseband_postamble), 5);
-+
-+              /* radio */
-+              INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_PRE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_CORE],
-+                              ar9331_1p1_radio_core,
-+                              ARRAY_SIZE(ar9331_1p1_radio_core), 2);
-+              INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_POST], NULL, 0, 0);
-+
-+              /* soc */
-+              INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_PRE],
-+                              ar9331_1p1_soc_preamble,
-+                              ARRAY_SIZE(ar9331_1p1_soc_preamble), 2);
-+              INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_CORE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_POST],
-+                              ar9331_1p1_soc_postamble,
-+                              ARRAY_SIZE(ar9331_1p1_soc_postamble), 2);
-+
-+              /* rx/tx gain */
-+              INIT_INI_ARRAY(&ah->iniModesRxGain,
-+                              ar9331_common_rx_gain_1p1,
-+                              ARRAY_SIZE(ar9331_common_rx_gain_1p1), 2);
-+              INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                      ar9331_modes_lowest_ob_db_tx_gain_1p1,
-+                      ARRAY_SIZE(ar9331_modes_lowest_ob_db_tx_gain_1p1),
-+                      5);
-+
-+              /* additional clock settings */
-+              if (ah->is_clk_25mhz)
-+                      INIT_INI_ARRAY(&ah->iniModesAdditional,
-+                                      ar9331_1p1_xtal_25M,
-+                                      ARRAY_SIZE(ar9331_1p1_xtal_25M), 2);
-+              else
-+                      INIT_INI_ARRAY(&ah->iniModesAdditional,
-+                                      ar9331_1p1_xtal_40M,
-+                                      ARRAY_SIZE(ar9331_1p1_xtal_40M), 2);
-+      } else if (AR_SREV_9330_12(ah)) {
-+              /* mac */
-+              INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE],
-+                              ar9331_1p2_mac_core,
-+                              ARRAY_SIZE(ar9331_1p2_mac_core), 2);
-+              INIT_INI_ARRAY(&ah->iniMac[ATH_INI_POST],
-+                              ar9331_1p2_mac_postamble,
-+                              ARRAY_SIZE(ar9331_1p2_mac_postamble), 5);
-+
-+              /* bb */
-+              INIT_INI_ARRAY(&ah->iniBB[ATH_INI_PRE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniBB[ATH_INI_CORE],
-+                              ar9331_1p2_baseband_core,
-+                              ARRAY_SIZE(ar9331_1p2_baseband_core), 2);
-+              INIT_INI_ARRAY(&ah->iniBB[ATH_INI_POST],
-+                              ar9331_1p2_baseband_postamble,
-+                              ARRAY_SIZE(ar9331_1p2_baseband_postamble), 5);
-+
-+              /* radio */
-+              INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_PRE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_CORE],
-+                              ar9331_1p2_radio_core,
-+                              ARRAY_SIZE(ar9331_1p2_radio_core), 2);
-+              INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_POST], NULL, 0, 0);
-+
-+              /* soc */
-+              INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_PRE],
-+                              ar9331_1p2_soc_preamble,
-+                              ARRAY_SIZE(ar9331_1p2_soc_preamble), 2);
-+              INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_CORE], NULL, 0, 0);
-+              INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_POST],
-+                              ar9331_1p2_soc_postamble,
-+                              ARRAY_SIZE(ar9331_1p2_soc_postamble), 2);
-+
-+              /* rx/tx gain */
-+              INIT_INI_ARRAY(&ah->iniModesRxGain,
-+                              ar9331_common_rx_gain_1p2,
-+                              ARRAY_SIZE(ar9331_common_rx_gain_1p2), 2);
-+              INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                      ar9331_modes_lowest_ob_db_tx_gain_1p2,
-+                      ARRAY_SIZE(ar9331_modes_lowest_ob_db_tx_gain_1p2),
-+                      5);
-+
-+              /* additional clock settings */
-+              if (ah->is_clk_25mhz)
-+                      INIT_INI_ARRAY(&ah->iniModesAdditional,
-+                                      ar9331_1p2_xtal_25M,
-+                                      ARRAY_SIZE(ar9331_1p2_xtal_25M), 2);
-+              else
-+                      INIT_INI_ARRAY(&ah->iniModesAdditional,
-+                                      ar9331_1p2_xtal_40M,
-+                                      ARRAY_SIZE(ar9331_1p2_xtal_40M), 2);
-+      } else if (AR_SREV_9340(ah)) {
-               /* mac */
-               INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
-               INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE],
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -659,6 +659,9 @@ static int ar9003_hw_process_ini(struct
-               REG_WRITE_ARRAY(&ah->iniModesAdditional,
-                               modesIndex, regWrites);
-+      if (AR_SREV_9300(ah))
-+              REG_WRITE_ARRAY(&ah->iniModesAdditional, 1, regWrites);
-+
-       if (AR_SREV_9340(ah) && !ah->is_clk_25mhz)
-               REG_WRITE_ARRAY(&ah->iniModesAdditional_40M, 1, regWrites);
diff --git a/package/mac80211/patches/546-ath9k-initialize-tx-gain-table-for-AR9330.patch b/package/mac80211/patches/546-ath9k-initialize-tx-gain-table-for-AR9330.patch
deleted file mode 100644 (file)
index 2e495b8..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-@@ -328,7 +328,17 @@ static void ar9003_tx_gain_table_apply(s
-       switch (ar9003_hw_get_tx_gain_idx(ah)) {
-       case 0:
-       default:
--              if (AR_SREV_9340(ah))
-+              if (AR_SREV_9330_12(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_lowest_ob_db_tx_gain_1p2,
-+                              ARRAY_SIZE(ar9331_modes_lowest_ob_db_tx_gain_1p2),
-+                              5);
-+              else if (AR_SREV_9330_11(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_lowest_ob_db_tx_gain_1p1,
-+                              ARRAY_SIZE(ar9331_modes_lowest_ob_db_tx_gain_1p1),
-+                              5);
-+              else if (AR_SREV_9340(ah))
-                       INIT_INI_ARRAY(&ah->iniModesTxGain,
-                                       ar9340Modes_lowest_ob_db_tx_gain_table_1p0,
-                                      ARRAY_SIZE(ar9340Modes_lowest_ob_db_tx_gain_table_1p0),
-@@ -345,7 +355,17 @@ static void ar9003_tx_gain_table_apply(s
-                                      5);
-               break;
-       case 1:
--              if (AR_SREV_9340(ah))
-+              if (AR_SREV_9330_12(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_high_ob_db_tx_gain_1p2,
-+                              ARRAY_SIZE(ar9331_modes_high_ob_db_tx_gain_1p2),
-+                              5);
-+              else if (AR_SREV_9330_11(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_high_ob_db_tx_gain_1p1,
-+                              ARRAY_SIZE(ar9331_modes_high_ob_db_tx_gain_1p1),
-+                              5);
-+              else if (AR_SREV_9340(ah))
-                       INIT_INI_ARRAY(&ah->iniModesTxGain,
-                                       ar9340Modes_lowest_ob_db_tx_gain_table_1p0,
-                                      ARRAY_SIZE(ar9340Modes_lowest_ob_db_tx_gain_table_1p0),
-@@ -362,7 +382,17 @@ static void ar9003_tx_gain_table_apply(s
-                                      5);
-               break;
-       case 2:
--              if (AR_SREV_9340(ah))
-+              if (AR_SREV_9330_12(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_low_ob_db_tx_gain_1p2,
-+                              ARRAY_SIZE(ar9331_modes_low_ob_db_tx_gain_1p2),
-+                              5);
-+              else if (AR_SREV_9330_11(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_low_ob_db_tx_gain_1p1,
-+                              ARRAY_SIZE(ar9331_modes_low_ob_db_tx_gain_1p1),
-+                              5);
-+              else if (AR_SREV_9340(ah))
-                       INIT_INI_ARRAY(&ah->iniModesTxGain,
-                                       ar9340Modes_lowest_ob_db_tx_gain_table_1p0,
-                                      ARRAY_SIZE(ar9340Modes_lowest_ob_db_tx_gain_table_1p0),
-@@ -379,7 +409,17 @@ static void ar9003_tx_gain_table_apply(s
-                                      5);
-               break;
-       case 3:
--              if (AR_SREV_9340(ah))
-+              if (AR_SREV_9330_12(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_high_power_tx_gain_1p2,
-+                              ARRAY_SIZE(ar9331_modes_high_power_tx_gain_1p2),
-+                              5);
-+              else if (AR_SREV_9330_11(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesTxGain,
-+                              ar9331_modes_high_power_tx_gain_1p1,
-+                              ARRAY_SIZE(ar9331_modes_high_power_tx_gain_1p1),
-+                              5);
-+              else if (AR_SREV_9340(ah))
-                       INIT_INI_ARRAY(&ah->iniModesTxGain,
-                                       ar9340Modes_lowest_ob_db_tx_gain_table_1p0,
-                                      ARRAY_SIZE(ar9340Modes_lowest_ob_db_tx_gain_table_1p0),
diff --git a/package/mac80211/patches/547-ath9k-initialize-rx-gain-table-for-AR9330.patch b/package/mac80211/patches/547-ath9k-initialize-rx-gain-table-for-AR9330.patch
deleted file mode 100644 (file)
index 947c92e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-@@ -443,7 +443,17 @@ static void ar9003_rx_gain_table_apply(s
-       switch (ar9003_hw_get_rx_gain_idx(ah)) {
-       case 0:
-       default:
--              if (AR_SREV_9340(ah))
-+              if (AR_SREV_9330_12(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesRxGain,
-+                                      ar9331_common_rx_gain_1p2,
-+                                      ARRAY_SIZE(ar9331_common_rx_gain_1p2),
-+                                      2);
-+              else if (AR_SREV_9330_11(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesRxGain,
-+                                      ar9331_common_rx_gain_1p1,
-+                                      ARRAY_SIZE(ar9331_common_rx_gain_1p1),
-+                                      2);
-+              else if (AR_SREV_9340(ah))
-                       INIT_INI_ARRAY(&ah->iniModesRxGain,
-                                      ar9340Common_rx_gain_table_1p0,
-                                      ARRAY_SIZE(ar9340Common_rx_gain_table_1p0),
-@@ -460,7 +470,17 @@ static void ar9003_rx_gain_table_apply(s
-                                      2);
-               break;
-       case 1:
--              if (AR_SREV_9340(ah))
-+              if (AR_SREV_9330_12(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesRxGain,
-+                              ar9331_common_wo_xlna_rx_gain_1p2,
-+                              ARRAY_SIZE(ar9331_common_wo_xlna_rx_gain_1p2),
-+                              2);
-+              else if (AR_SREV_9330_11(ah))
-+                      INIT_INI_ARRAY(&ah->iniModesRxGain,
-+                              ar9331_common_wo_xlna_rx_gain_1p1,
-+                              ARRAY_SIZE(ar9331_common_wo_xlna_rx_gain_1p1),
-+                              2);
-+              else if (AR_SREV_9340(ah))
-                       INIT_INI_ARRAY(&ah->iniModesRxGain,
-                                      ar9340Common_wo_xlna_rx_gain_table_1p0,
-                                      ARRAY_SIZE(ar9340Common_wo_xlna_rx_gain_table_1p0),
diff --git a/package/mac80211/patches/548-ath9k-add-AR9330-specific-PLL-initialization.patch b/package/mac80211/patches/548-ath9k-add-AR9330-specific-PLL-initialization.patch
deleted file mode 100644 (file)
index ea64014..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -742,6 +742,39 @@ static void ath9k_hw_init_pll(struct ath
-               REG_RMW_FIELD(ah, AR_CH0_BB_DPLL2,
-                             AR_CH0_BB_DPLL2_PLL_PWD, 0x0);
-               udelay(1000);
-+      } else if (AR_SREV_9330(ah)) {
-+              u32 ddr_dpll2, pll_control2, kd;
-+
-+              if (ah->is_clk_25mhz) {
-+                      ddr_dpll2 = 0x18e82f01;
-+                      pll_control2 = 0xe04a3d;
-+                      kd = 0x1d;
-+              } else {
-+                      ddr_dpll2 = 0x19e82f01;
-+                      pll_control2 = 0x886666;
-+                      kd = 0x3d;
-+              }
-+
-+              /* program DDR PLL ki and kd value */
-+              REG_WRITE(ah, AR_CH0_DDR_DPLL2, ddr_dpll2);
-+
-+              /* program DDR PLL phase_shift */
-+              REG_RMW_FIELD(ah, AR_CH0_DDR_DPLL3,
-+                            AR_CH0_DPLL3_PHASE_SHIFT, 0x1);
-+
-+              REG_WRITE(ah, AR_RTC_PLL_CONTROL, 0x1142c);
-+              udelay(1000);
-+
-+              /* program refdiv, nint, frac to RTC register */
-+              REG_WRITE(ah, AR_RTC_PLL_CONTROL2, pll_control2);
-+
-+              /* program BB PLL kd and ki value */
-+              REG_RMW_FIELD(ah, AR_CH0_BB_DPLL2, AR_CH0_DPLL2_KD, kd);
-+              REG_RMW_FIELD(ah, AR_CH0_BB_DPLL2, AR_CH0_DPLL2_KI, 0x06);
-+
-+              /* program BB PLL phase_shift */
-+              REG_RMW_FIELD(ah, AR_CH0_BB_DPLL3,
-+                            AR_CH0_BB_DPLL3_PHASE_SHIFT, 0x1);
-       } else if (AR_SREV_9340(ah)) {
-               u32 regval, pll2_divint, pll2_divfrac, refdiv;
-@@ -783,7 +816,7 @@ static void ath9k_hw_init_pll(struct ath
-       REG_WRITE(ah, AR_RTC_PLL_CONTROL, pll);
--      if (AR_SREV_9485(ah) || AR_SREV_9340(ah))
-+      if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah))
-               udelay(1000);
-       /* Switch the core clock for ar9271 to 117Mhz */
diff --git a/package/mac80211/patches/549-ath9k-use-different-BB-watchdog-timeout-value-for-AR.patch b/package/mac80211/patches/549-ath9k-use-different-BB-watchdog-timeout-value-for-AR.patch
deleted file mode 100644 (file)
index e412fa1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -624,7 +624,10 @@ static int __ath9k_hw_init(struct ath_hw
-       else
-               ah->tx_trig_level = (AR_FTRIG_512B >> AR_FTRIG_S);
--      ah->bb_watchdog_timeout_ms = 25;
-+      if (AR_SREV_9330(ah))
-+              ah->bb_watchdog_timeout_ms = 85;
-+      else
-+              ah->bb_watchdog_timeout_ms = 25;
-       common->state = ATH_HW_INITIALIZED;
diff --git a/package/mac80211/patches/550-ath9k-don-t-enable-LDPC-for-AR9330.patch b/package/mac80211/patches/550-ath9k-don-t-enable-LDPC-for-AR9330.patch
deleted file mode 100644 (file)
index 937d383..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -2040,7 +2040,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw
-       if (AR_SREV_9300_20_OR_LATER(ah)) {
-               pCap->hw_caps |= ATH9K_HW_CAP_EDMA | ATH9K_HW_CAP_FASTCLOCK;
--              if (!AR_SREV_9485(ah))
-+              if (!AR_SREV_9330(ah) && !AR_SREV_9485(ah))
-                       pCap->hw_caps |= ATH9K_HW_CAP_LDPC;
-               pCap->rx_hp_qdepth = ATH9K_HW_RX_HP_QDEPTH;
diff --git a/package/mac80211/patches/551-ath9k-read-spur-frequency-information-from-eeprom-fo.patch b/package/mac80211/patches/551-ath9k-read-spur-frequency-information-from-eeprom-fo.patch
deleted file mode 100644 (file)
index 1166e3b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -168,7 +168,7 @@ static void ar9003_hw_spur_mitigate_mrc_
-        * is out-of-band and can be ignored.
-        */
--      if (AR_SREV_9485(ah) || AR_SREV_9340(ah)) {
-+      if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah)) {
-               spur_fbin_ptr = ar9003_get_spur_chan_ptr(ah,
-                                                        IS_CHAN_2GHZ(chan));
-               if (spur_fbin_ptr[0] == 0) /* No spur */
-@@ -193,7 +193,7 @@ static void ar9003_hw_spur_mitigate_mrc_
-       for (i = 0; i < max_spur_cnts; i++) {
-               negative = 0;
--              if (AR_SREV_9485(ah) || AR_SREV_9340(ah))
-+              if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah))
-                       cur_bb_spur = FBIN2FREQ(spur_fbin_ptr[i],
-                                       IS_CHAN_2GHZ(chan)) - synth_freq;
-               else
diff --git a/package/mac80211/patches/552-ath9k-fix-channel-frequency-calculation-for-AR9340.patch b/package/mac80211/patches/552-ath9k-fix-channel-frequency-calculation-for-AR9340.patch
deleted file mode 100644 (file)
index c21371f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -104,7 +104,7 @@ static int ar9003_hw_set_channel(struct
-                       u32 chan_frac;
-                       channelSel = (freq * 2) / 75;
--                      chan_frac = ((freq % 75) * 0x20000) / 75;
-+                      chan_frac = (((freq * 2) % 75) * 0x20000) / 75;
-                       channelSel = (channelSel << 17) | chan_frac;
-               } else {
-                       channelSel = CHANSEL_5G(freq);
diff --git a/package/mac80211/patches/553-ath9k-configure-RF-channel-frequency-for-AR9330.patch b/package/mac80211/patches/553-ath9k-configure-RF-channel-frequency-for-AR9330.patch
deleted file mode 100644 (file)
index 56c3fbc..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -75,7 +75,19 @@ static int ar9003_hw_set_channel(struct
-       freq = centers.synth_center;
-       if (freq < 4800) {     /* 2 GHz, fractional mode */
--              if (AR_SREV_9485(ah)) {
-+              if (AR_SREV_9330(ah)) {
-+                      u32 chan_frac;
-+                      u32 div;
-+
-+                      if (ah->is_clk_25mhz)
-+                              div = 75;
-+                      else
-+                              div = 120;
-+
-+                      channelSel = (freq * 4) / div;
-+                      chan_frac = (((freq * 4) % div) * 0x20000) / div;
-+                      channelSel = (channelSel << 17) | chan_frac;
-+              } else if (AR_SREV_9485(ah)) {
-                       u32 chan_frac;
-                       /*
diff --git a/package/mac80211/patches/554-ath9k-enable-TX-RX-data-byte-swap-for-AR9330.patch b/package/mac80211/patches/554-ath9k-enable-TX-RX-data-byte-swap-for-AR9330.patch
deleted file mode 100644 (file)
index 9befda6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1602,7 +1602,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
-                               REG_WRITE(ah, AR_CFG, AR_CFG_SWTD | AR_CFG_SWRD);
-               }
- #ifdef __BIG_ENDIAN
--              else if (AR_SREV_9340(ah))
-+              else if (AR_SREV_9330(ah) || AR_SREV_9340(ah))
-                       REG_RMW(ah, AR_CFG, AR_CFG_SWRB | AR_CFG_SWTB, 0);
-               else
-                       REG_WRITE(ah, AR_CFG, AR_CFG_SWTD | AR_CFG_SWRD);
diff --git a/package/mac80211/patches/555-ath9k-skip-internal-regulator-configuration-for-AR93.patch b/package/mac80211/patches/555-ath9k-skip-internal-regulator-configuration-for-AR93.patch
deleted file mode 100644 (file)
index 6043a5e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-@@ -3795,7 +3795,7 @@ static void ath9k_hw_ar9300_set_board_va
-       ar9003_hw_ant_ctrl_apply(ah, IS_CHAN_2GHZ(chan));
-       ar9003_hw_drive_strength_apply(ah);
-       ar9003_hw_atten_apply(ah, chan);
--      if (!AR_SREV_9340(ah))
-+      if (!AR_SREV_9330(ah) && !AR_SREV_9340(ah))
-               ar9003_hw_internal_regulator_apply(ah);
-       if (AR_SREV_9485(ah) || AR_SREV_9340(ah))
-               ar9003_hw_apply_tuning_caps(ah);
diff --git a/package/mac80211/patches/556-ath9k-enable-tuning-capacitance-configuration-for-AR.patch b/package/mac80211/patches/556-ath9k-enable-tuning-capacitance-configuration-for-AR.patch
deleted file mode 100644 (file)
index a0cb78c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-@@ -3797,7 +3797,7 @@ static void ath9k_hw_ar9300_set_board_va
-       ar9003_hw_atten_apply(ah, chan);
-       if (!AR_SREV_9330(ah) && !AR_SREV_9340(ah))
-               ar9003_hw_internal_regulator_apply(ah);
--      if (AR_SREV_9485(ah) || AR_SREV_9340(ah))
-+      if (AR_SREV_9485(ah) || AR_SREV_9330(ah) || AR_SREV_9340(ah))
-               ar9003_hw_apply_tuning_caps(ah);
- }
diff --git a/package/mac80211/patches/557-ath9k-use-correct-EEPROM-base-for-AR9330.patch b/package/mac80211/patches/557-ath9k-use-correct-EEPROM-base-for-AR9330.patch
deleted file mode 100644 (file)
index fb603f4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-@@ -3324,6 +3324,8 @@ static int ar9300_eeprom_restore_interna
-       read = ar9300_read_eeprom;
-       if (AR_SREV_9485(ah))
-               cptr = AR9300_BASE_ADDR_4K;
-+      else if (AR_SREV_9330(ah))
-+              cptr = AR9300_BASE_ADDR_512;
-       else
-               cptr = AR9300_BASE_ADDR;
-       ath_dbg(common, ATH_DBG_EEPROM,
diff --git a/package/mac80211/patches/558-ath9k-configure-xpa-bias-level-for-AR9330.patch b/package/mac80211/patches/558-ath9k-configure-xpa-bias-level-for-AR9330.patch
deleted file mode 100644 (file)
index 1342f25..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-@@ -3444,7 +3444,7 @@ static void ar9003_hw_xpa_bias_level_app
- {
-       int bias = ar9003_hw_xpa_bias_level_get(ah, is2ghz);
--      if (AR_SREV_9485(ah) || AR_SREV_9340(ah))
-+      if (AR_SREV_9485(ah) || AR_SREV_9330(ah) || AR_SREV_9340(ah))
-               REG_RMW_FIELD(ah, AR_CH0_TOP2, AR_CH0_TOP2_XPABIASLVL, bias);
-       else {
-               REG_RMW_FIELD(ah, AR_CH0_TOP, AR_CH0_TOP_XPABIASLVL, bias);
diff --git a/package/mac80211/patches/559-ath9k-set-NF-limits-for-AR9330.patch b/package/mac80211/patches/559-ath9k-set-NF-limits-for-AR9330.patch
deleted file mode 100644 (file)
index 518bc52..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -1089,7 +1089,10 @@ static void ar9003_hw_set_nf_limits(stru
- {
-       ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ;
-       ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_2GHZ;
--      ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9300_2GHZ;
-+      if (AR_SREV_9330(ah))
-+              ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9330_2GHZ;
-+      else
-+              ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9300_2GHZ;
-       ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ;
-       ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_5GHZ;
-       ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_9300_5GHZ;
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h
-@@ -332,6 +332,8 @@
- #define AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ     -95
- #define AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ     -100
-+#define AR_PHY_CCA_NOM_VAL_9330_2GHZ          -118
-+
- /*
-  * AGC Field Definitions
-  */
diff --git a/package/mac80211/patches/560-ath9k-enable-antenna-diversity-for-AR9330.patch b/package/mac80211/patches/560-ath9k-enable-antenna-diversity-for-AR9330.patch
deleted file mode 100644 (file)
index c2ca224..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -2082,7 +2082,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw
-       }
--      if (AR_SREV_9485(ah)) {
-+      if (AR_SREV_9330(ah) || AR_SREV_9485(ah)) {
-               ant_div_ctl1 = ah->eep_ops->get_eeprom(ah, EEP_ANT_DIV_CTL1);
-               /*
-                * enable the diversity-combining algorithm only when
diff --git a/package/mac80211/patches/561-ath9k-use-correct-max_streams-for-AR9330.patch b/package/mac80211/patches/561-ath9k-use-correct-max_streams-for-AR9330.patch
deleted file mode 100644 (file)
index ddb5a06..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -245,7 +245,7 @@ static void setup_ht_cap(struct ath_soft
-       ht_info->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
-       ht_info->ampdu_density = IEEE80211_HT_MPDU_DENSITY_8;
--      if (AR_SREV_9485(ah))
-+      if (AR_SREV_9330(ah) || AR_SREV_9485(ah))
-               max_streams = 1;
-       else if (AR_SREV_9300_20_OR_LATER(ah))
-               max_streams = 3;
diff --git a/package/mac80211/patches/562-ath9k-add-a-missing-case-statement-to-ath_ant_div_co.patch b/package/mac80211/patches/562-ath9k-add-a-missing-case-statement-to-ath_ant_div_co.patch
deleted file mode 100644 (file)
index 3397cf1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/recv.c
-+++ b/drivers/net/wireless/ath/ath9k/recv.c
-@@ -39,6 +39,7 @@ static inline bool ath_ant_div_comb_alt_
-                       result = true;
-               break;
-       case 1:
-+      case 2:
-               if ((((curr_main_set == ATH_ANT_DIV_COMB_LNA2) &&
-                       (curr_alt_set == ATH_ANT_DIV_COMB_LNA1) &&
-                               (alt_rssi_avg >= (main_rssi_avg - 5))) ||
diff --git a/package/mac80211/patches/563-ath9k-fix-antenna-diversity-configuration-for-non-AR.patch b/package/mac80211/patches/563-ath9k-fix-antenna-diversity-configuration-for-non-AR.patch
deleted file mode 100644 (file)
index b991403..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -1214,8 +1214,14 @@ static void ar9003_hw_antdiv_comb_conf_g
-                                AR_PHY_9485_ANT_DIV_ALT_LNACONF_S;
-       antconf->fast_div_bias = (regval & AR_PHY_9485_ANT_FAST_DIV_BIAS) >>
-                                 AR_PHY_9485_ANT_FAST_DIV_BIAS_S;
--      antconf->lna1_lna2_delta = -9;
--      antconf->div_group = 2;
-+
-+      if (AR_SREV_9485(ah)) {
-+              antconf->lna1_lna2_delta = -9;
-+              antconf->div_group = 2;
-+      } else {
-+              antconf->lna1_lna2_delta = -3;
-+              antconf->div_group = 0;
-+      }
- }
- static void ar9003_hw_antdiv_comb_conf_set(struct ath_hw *ah,
diff --git a/package/mac80211/patches/564-ath9k-remove-superfluous-parentheses.patch b/package/mac80211/patches/564-ath9k-remove-superfluous-parentheses.patch
deleted file mode 100644 (file)
index 3cad40f..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/recv.c
-+++ b/drivers/net/wireless/ath/ath9k/recv.c
-@@ -1078,39 +1078,39 @@ static void ath_lnaconf_alt_good_scan(st
-               antcomb->rssi_lna1 = main_rssi_avg;
-       switch ((ant_conf.main_lna_conf << 4) | ant_conf.alt_lna_conf) {
--      case (0x10): /* LNA2 A-B */
-+      case 0x10: /* LNA2 A-B */
-               antcomb->main_conf = ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2;
-               antcomb->first_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2;
-               antcomb->second_quick_scan_conf = ATH_ANT_DIV_COMB_LNA1;
-               break;
--      case (0x20): /* LNA1 A-B */
-+      case 0x20: /* LNA1 A-B */
-               antcomb->main_conf = ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2;
-               antcomb->first_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2;
-               antcomb->second_quick_scan_conf = ATH_ANT_DIV_COMB_LNA2;
-               break;
--      case (0x21): /* LNA1 LNA2 */
-+      case 0x21: /* LNA1 LNA2 */
-               antcomb->main_conf = ATH_ANT_DIV_COMB_LNA2;
-               antcomb->first_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2;
-               antcomb->second_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2;
-               break;
--      case (0x12): /* LNA2 LNA1 */
-+      case 0x12: /* LNA2 LNA1 */
-               antcomb->main_conf = ATH_ANT_DIV_COMB_LNA1;
-               antcomb->first_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2;
-               antcomb->second_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2;
-               break;
--      case (0x13): /* LNA2 A+B */
-+      case 0x13: /* LNA2 A+B */
-               antcomb->main_conf = ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2;
-               antcomb->first_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2;
-               antcomb->second_quick_scan_conf = ATH_ANT_DIV_COMB_LNA1;
-               break;
--      case (0x23): /* LNA1 A+B */
-+      case 0x23: /* LNA1 A+B */
-               antcomb->main_conf = ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2;
-               antcomb->first_quick_scan_conf =
-                       ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2;
-@@ -1327,40 +1327,40 @@ static void ath_ant_div_conf_fast_divbia
-               /* Adjust the fast_div_bias based on main and alt lna conf */
-               switch ((ant_conf->main_lna_conf << 4) |
-                               ant_conf->alt_lna_conf) {
--              case (0x01): /* A-B LNA2 */
-+              case 0x01: /* A-B LNA2 */
-                       ant_conf->fast_div_bias = 0x3b;
-                       break;
--              case (0x02): /* A-B LNA1 */
-+              case 0x02: /* A-B LNA1 */
-                       ant_conf->fast_div_bias = 0x3d;
-                       break;
--              case (0x03): /* A-B A+B */
-+              case 0x03: /* A-B A+B */
-                       ant_conf->fast_div_bias = 0x1;
-                       break;
--              case (0x10): /* LNA2 A-B */
-+              case 0x10: /* LNA2 A-B */
-                       ant_conf->fast_div_bias = 0x7;
-                       break;
--              case (0x12): /* LNA2 LNA1 */
-+              case 0x12: /* LNA2 LNA1 */
-                       ant_conf->fast_div_bias = 0x2;
-                       break;
--              case (0x13): /* LNA2 A+B */
-+              case 0x13: /* LNA2 A+B */
-                       ant_conf->fast_div_bias = 0x7;
-                       break;
--              case (0x20): /* LNA1 A-B */
-+              case 0x20: /* LNA1 A-B */
-                       ant_conf->fast_div_bias = 0x6;
-                       break;
--              case (0x21): /* LNA1 LNA2 */
-+              case 0x21: /* LNA1 LNA2 */
-                       ant_conf->fast_div_bias = 0x0;
-                       break;
--              case (0x23): /* LNA1 A+B */
-+              case 0x23: /* LNA1 A+B */
-                       ant_conf->fast_div_bias = 0x6;
-                       break;
--              case (0x30): /* A+B A-B */
-+              case 0x30: /* A+B A-B */
-                       ant_conf->fast_div_bias = 0x1;
-                       break;
--              case (0x31): /* A+B LNA2 */
-+              case 0x31: /* A+B LNA2 */
-                       ant_conf->fast_div_bias = 0x3b;
-                       break;
--              case (0x32): /* A+B LNA1 */
-+              case 0x32: /* A+B LNA1 */
-                       ant_conf->fast_div_bias = 0x3d;
-                       break;
-               default:
-@@ -1370,22 +1370,22 @@ static void ath_ant_div_conf_fast_divbia
-               /* Adjust the fast_div_bias based on main and alt_lna_conf */
-               switch ((ant_conf->main_lna_conf << 4) |
-                               ant_conf->alt_lna_conf) {
--              case (0x01): /* A-B LNA2 */
-+              case 0x01: /* A-B LNA2 */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x02): /* A-B LNA1 */
-+              case 0x02: /* A-B LNA1 */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x03): /* A-B A+B */
-+              case 0x03: /* A-B A+B */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x10): /* LNA2 A-B */
-+              case 0x10: /* LNA2 A-B */
-                       if (!(antcomb->scan) &&
-                               (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-                               ant_conf->fast_div_bias = 0x1;
-@@ -1394,12 +1394,12 @@ static void ath_ant_div_conf_fast_divbia
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x12): /* LNA2 LNA1 */
-+              case 0x12: /* LNA2 LNA1 */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x13): /* LNA2 A+B */
-+              case 0x13: /* LNA2 A+B */
-                       if (!(antcomb->scan) &&
-                               (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-                               ant_conf->fast_div_bias = 0x1;
-@@ -1408,7 +1408,7 @@ static void ath_ant_div_conf_fast_divbia
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x20): /* LNA1 A-B */
-+              case 0x20: /* LNA1 A-B */
-                       if (!(antcomb->scan) &&
-                               (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-                               ant_conf->fast_div_bias = 0x1;
-@@ -1417,12 +1417,12 @@ static void ath_ant_div_conf_fast_divbia
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x21): /* LNA1 LNA2 */
-+              case 0x21: /* LNA1 LNA2 */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x23): /* LNA1 A+B */
-+              case 0x23: /* LNA1 A+B */
-                       if (!(antcomb->scan) &&
-                               (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-                               ant_conf->fast_div_bias = 0x1;
-@@ -1431,17 +1431,17 @@ static void ath_ant_div_conf_fast_divbia
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x30): /* A+B A-B */
-+              case 0x30: /* A+B A-B */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x31): /* A+B LNA2 */
-+              case 0x31: /* A+B LNA2 */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-                       break;
--              case (0x32): /* A+B LNA1 */
-+              case 0x32: /* A+B LNA1 */
-                       ant_conf->fast_div_bias = 0x1;
-                       ant_conf->main_gaintb = 0;
-                       ant_conf->alt_gaintb = 0;
-@@ -1449,9 +1449,7 @@ static void ath_ant_div_conf_fast_divbia
-               default:
-                       break;
-               }
--
-       }
--
- }
- /* Antenna diversity and combining */
diff --git a/package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch b/package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch
deleted file mode 100644 (file)
index f385323..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/recv.c
-+++ b/drivers/net/wireless/ath/ath9k/recv.c
-@@ -1366,6 +1366,89 @@ static void ath_ant_div_conf_fast_divbia
-               default:
-                       break;
-               }
-+      } else if (ant_conf->div_group == 1) {
-+              /* Adjust the fast_div_bias based on main and alt_lna_conf */
-+              switch ((ant_conf->main_lna_conf << 4) |
-+                      ant_conf->alt_lna_conf) {
-+              case 0x01: /* A-B LNA2 */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x02: /* A-B LNA1 */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x03: /* A-B A+B */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x10: /* LNA2 A-B */
-+                      if (!(antcomb->scan) &&
-+                          (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-+                              ant_conf->fast_div_bias = 0x3f;
-+                      else
-+                              ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x12: /* LNA2 LNA1 */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x13: /* LNA2 A+B */
-+                      if (!(antcomb->scan) &&
-+                          (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-+                              ant_conf->fast_div_bias = 0x3f;
-+                      else
-+                              ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x20: /* LNA1 A-B */
-+                      if (!(antcomb->scan) &&
-+                          (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-+                              ant_conf->fast_div_bias = 0x3f;
-+                      else
-+                              ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x21: /* LNA1 LNA2 */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x23: /* LNA1 A+B */
-+                      if (!(antcomb->scan) &&
-+                          (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
-+                              ant_conf->fast_div_bias = 0x3f;
-+                      else
-+                              ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x30: /* A+B A-B */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x31: /* A+B LNA2 */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              case 0x32: /* A+B LNA1 */
-+                      ant_conf->fast_div_bias = 0x1;
-+                      ant_conf->main_gaintb = 0;
-+                      ant_conf->alt_gaintb = 0;
-+                      break;
-+              default:
-+                      break;
-+              }
-       } else if (ant_conf->div_group == 2) {
-               /* Adjust the fast_div_bias based on main and alt_lna_conf */
-               switch ((ant_conf->main_lna_conf << 4) |
diff --git a/package/mac80211/patches/566-ath9k-set-diversity-group-for-AR9330.patch b/package/mac80211/patches/566-ath9k-set-diversity-group-for-AR9330.patch
deleted file mode 100644 (file)
index 447ef61..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -1215,7 +1215,10 @@ static void ar9003_hw_antdiv_comb_conf_g
-       antconf->fast_div_bias = (regval & AR_PHY_9485_ANT_FAST_DIV_BIAS) >>
-                                 AR_PHY_9485_ANT_FAST_DIV_BIAS_S;
--      if (AR_SREV_9485(ah)) {
-+      if (AR_SREV_9330_11(ah)) {
-+              antconf->lna1_lna2_delta = -9;
-+              antconf->div_group = 1;
-+      } else if (AR_SREV_9485(ah)) {
-               antconf->lna1_lna2_delta = -9;
-               antconf->div_group = 2;
-       } else {
diff --git a/package/mac80211/patches/567-ath9k-fix-few-register-offsets-for-AR9330.patch b/package/mac80211/patches/567-ath9k-fix-few-register-offsets-for-AR9330.patch
deleted file mode 100644 (file)
index 7c0f432..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h
-@@ -625,11 +625,11 @@
- #define AR_PHY_65NM_CH2_RXTX1       0x16900
- #define AR_PHY_65NM_CH2_RXTX2       0x16904
--#define AR_CH0_TOP2 (AR_SREV_9485(ah) ? 0x00016284 : 0x0001628c)
-+#define AR_CH0_TOP2           (AR_SREV_9300(ah) ? 0x1628c : 0x16284)
- #define AR_CH0_TOP2_XPABIASLVL                0xf000
- #define AR_CH0_TOP2_XPABIASLVL_S      12
--#define AR_CH0_XTAL           (AR_SREV_9485(ah) ? 0x16290 : 0x16294)
-+#define AR_CH0_XTAL           (AR_SREV_9300(ah) ? 0x16294 : 0x16290)
- #define AR_CH0_XTAL_CAPINDAC  0x7f000000
- #define AR_CH0_XTAL_CAPINDAC_S        24
- #define AR_CH0_XTAL_CAPOUTDAC 0x00fe0000
diff --git a/package/mac80211/patches/568-ath9k-configure-diversity-based-on-eeprom-contents-f.patch b/package/mac80211/patches/568-ath9k-configure-diversity-based-on-eeprom-contents-f.patch
deleted file mode 100644 (file)
index f11b2a0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-@@ -3525,7 +3525,7 @@ static void ar9003_hw_ant_ctrl_apply(str
-               }
-       }
--      if (AR_SREV_9485(ah)) {
-+      if (AR_SREV_9330(ah) || AR_SREV_9485(ah)) {
-               value = ath9k_hw_ar9300_get_eeprom(ah, EEP_ANT_DIV_CTL1);
-               /*
-                * main_lnaconf, alt_lnaconf, main_tb, alt_tb
diff --git a/package/mac80211/patches/569-ath9k-configure-internal-regulator-for-AR9330.patch b/package/mac80211/patches/569-ath9k-configure-internal-regulator-for-AR9330.patch
deleted file mode 100644 (file)
index a09e83d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-@@ -3712,7 +3712,7 @@ static void ar9003_hw_internal_regulator
-               ath9k_hw_ar9300_get_eeprom(ah, EEP_INTERNAL_REGULATOR);
-       if (internal_regulator) {
--              if (AR_SREV_9485(ah)) {
-+              if (AR_SREV_9330(ah) || AR_SREV_9485(ah)) {
-                       int reg_pmu_set;
-                       reg_pmu_set = REG_READ(ah, AR_PHY_PMU2) & ~AR_PHY_PMU2_PGM;
-@@ -3720,9 +3720,24 @@ static void ar9003_hw_internal_regulator
-                       if (!is_pmu_set(ah, AR_PHY_PMU2, reg_pmu_set))
-                               return;
--                      reg_pmu_set = (5 << 1) | (7 << 4) | (1 << 8) |
--                                    (2 << 14) | (6 << 17) | (1 << 20) |
--                                    (3 << 24) | (1 << 28);
-+                      if (AR_SREV_9330(ah)) {
-+                              if (ah->is_clk_25mhz) {
-+                                      reg_pmu_set = (3 << 1) | (8 << 4) |
-+                                                    (3 << 8) | (1 << 14) |
-+                                                    (6 << 17) | (1 << 20) |
-+                                                    (3 << 24);
-+                              } else {
-+                                      reg_pmu_set = (4 << 1)  | (7 << 4) |
-+                                                    (3 << 8)  | (1 << 14) |
-+                                                    (6 << 17) | (1 << 20) |
-+                                                    (3 << 24);
-+                              }
-+                      } else {
-+                              reg_pmu_set = (5 << 1) | (7 << 4) |
-+                                            (1 << 8) | (2 << 14) |
-+                                            (6 << 17) | (1 << 20) |
-+                                            (3 << 24) | (1 << 28);
-+                      }
-                       REG_WRITE(ah, AR_PHY_PMU1, reg_pmu_set);
-                       if (!is_pmu_set(ah, AR_PHY_PMU1, reg_pmu_set))
-@@ -3753,7 +3768,7 @@ static void ar9003_hw_internal_regulator
-                                          AR_RTC_REG_CONTROL1_SWREG_PROGRAM);
-               }
-       } else {
--              if (AR_SREV_9485(ah)) {
-+              if (AR_SREV_9330(ah) || AR_SREV_9485(ah)) {
-                       REG_RMW_FIELD(ah, AR_PHY_PMU2, AR_PHY_PMU2_PGM, 0);
-                       while (REG_READ_FIELD(ah, AR_PHY_PMU2,
-                                             AR_PHY_PMU2_PGM))
diff --git a/package/mac80211/patches/570-ath9k-add-external_reset-callback-to-ath9k_platfom_d.patch b/package/mac80211/patches/570-ath9k-add-external_reset-callback-to-ath9k_platfom_d.patch
deleted file mode 100644 (file)
index 183a4f1..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1170,6 +1170,41 @@ static bool ath9k_hw_set_reset(struct at
-                       rst_flags |= AR_RTC_RC_MAC_COLD;
-       }
-+      if (AR_SREV_9330(ah)) {
-+              int npend = 0;
-+              int i;
-+
-+              /* AR9330 WAR:
-+               * call external reset function to reset WMAC if:
-+               * - doing a cold reset
-+               * - we have pending frames in the TX queues
-+               */
-+
-+              for (i = 0; i < AR_NUM_QCU; i++) {
-+                      npend = ath9k_hw_numtxpending(ah, i);
-+                      if (npend)
-+                              break;
-+              }
-+
-+              if (ah->external_reset &&
-+                  (npend || type == ATH9K_RESET_COLD)) {
-+                      int reset_err = 0;
-+
-+                      ath_dbg(ath9k_hw_common(ah), ATH_DBG_RESET,
-+                              "reset MAC via external reset\n");
-+
-+                      reset_err = ah->external_reset();
-+                      if (reset_err) {
-+                              ath_err(ath9k_hw_common(ah),
-+                                      "External reset failed, err=%d\n",
-+                                      reset_err);
-+                              return false;
-+                      }
-+
-+                      REG_WRITE(ah, AR_RTC_RESET, 1);
-+              }
-+      }
-+
-       REG_WRITE(ah, AR_RTC_RC, rst_flags);
-       REGWRITE_BUFFER_FLUSH(ah);
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -864,6 +864,7 @@ struct ath_hw {
-       bool is_clk_25mhz;
-       int (*get_mac_revision)(void);
-+      int (*external_reset)(void);
- };
- struct ath_bus_ops {
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -576,6 +576,7 @@ static int ath9k_init_softc(u16 devid, s
-               sc->sc_ah->led_pin = pdata->led_pin;
-               ah->is_clk_25mhz = pdata->is_clk_25mhz;
-               ah->get_mac_revision = pdata->get_mac_revision;
-+              ah->external_reset = pdata->external_reset;
-       }
-       common = ath9k_hw_common(ah);
---- a/include/linux/ath9k_platform.h
-+++ b/include/linux/ath9k_platform.h
-@@ -31,6 +31,7 @@ struct ath9k_platform_data {
-       bool is_clk_25mhz;
-       int (*get_mac_revision)(void);
-+      int (*external_reset)(void);
- };
- #endif /* _LINUX_ATH9K_PLATFORM_H */
diff --git a/package/mac80211/patches/571-ath9k-enable-support-for-AR9330.patch b/package/mac80211/patches/571-ath9k-enable-support-for-AR9330.patch
deleted file mode 100644 (file)
index ef67027..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -653,6 +653,7 @@ int ath9k_hw_init(struct ath_hw *ah)
-       case AR2427_DEVID_PCIE:
-       case AR9300_DEVID_PCIE:
-       case AR9300_DEVID_AR9485_PCIE:
-+      case AR9300_DEVID_AR9330:
-       case AR9300_DEVID_AR9340:
-               break;
-       default:
index 9bc8a33990a800d102169a1b3ca18026bb1ef269..c59441d581ec3810f658b40329a3da0cb2285add 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/mwl8k.c
 +++ b/drivers/net/wireless/mwl8k.c
-@@ -5192,6 +5192,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
+@@ -5194,6 +5194,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
  MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
  
  static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {
index 27a1ac104e1f996bd8893e23af33f15582597ae7..1dee123918a8fe9639a6a8df7aabd0181159ba77 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/b43/b43.h
 +++ b/drivers/net/wireless/b43/b43.h
-@@ -720,6 +720,7 @@ struct b43_wldev {
+@@ -740,6 +740,7 @@ struct b43_wldev {
        bool qos_enabled;               /* TRUE, if QoS is used. */
        bool hwcrypto_enabled;          /* TRUE, if HW crypto acceleration is enabled. */
        bool use_pio;                   /* TRUE if next init should use PIO */
@@ -22,7 +22,7 @@
  static int modparam_bad_frames_preempt;
  module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
  MODULE_PARM_DESC(bad_frames_preempt,
-@@ -2560,10 +2565,10 @@ static int b43_gpio_init(struct b43_wlde
+@@ -2575,10 +2580,10 @@ static int b43_gpio_init(struct b43_wlde
                    & ~B43_MACCTL_GPOUTSMSK);
  
        b43_write16(dev, B43_MMIO_GPIO_MASK, b43_read16(dev, B43_MMIO_GPIO_MASK)
        mask = 0x0000001F;
 -      set = 0x0000000F;
 +      set = modparam_gpiomask;
-       if (dev->sdev->bus->chip_id == 0x4301) {
+       if (dev->dev->chip_id == 0x4301) {
                mask |= 0x0060;
                set |= 0x0060;
-@@ -5084,10 +5089,10 @@ static void b43_print_driverinfo(void)
+@@ -5137,10 +5142,10 @@ static void b43_print_driverinfo(void)
        feat_sdio = "S";
  #endif
        printk(KERN_INFO "Broadcom 43xx driver loaded "
index 5e55f771e5dd4932355c1bf9faed08f10bc779ae..a913b6de7a2fca96a60a91331801462f1ebe5764 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/b43/Makefile
 +++ b/drivers/net/wireless/b43/Makefile
-@@ -14,7 +14,7 @@ b43-y                                += xmit.o
+@@ -17,7 +17,7 @@ b43-y                                += xmit.o
  b43-y                         += lo.o
  b43-y                         += wa.o
  b43-y                         += dma.o
@@ -11,7 +11,7 @@
  b43-$(CONFIG_B43_PCMCIA)      += pcmcia.o
 --- a/drivers/net/wireless/b43/main.c
 +++ b/drivers/net/wireless/b43/main.c
-@@ -1819,9 +1819,11 @@ static void b43_do_interrupt_thread(stru
+@@ -1834,9 +1834,11 @@ static void b43_do_interrupt_thread(stru
                               dma_reason[4], dma_reason[5]);
                        b43err(dev->wl, "This device does not support DMA "
                               "on your system. It will now be switched to PIO.\n");