diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 42e0503021..329ca8cd28 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -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 index 226d511817..0000000000 --- a/package/mac80211/patches/000-linux_3.0_support.patch +++ /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 -- --#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40)) -- --#include -- --/* -- * 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 - #include - #include --#include -+#include -+#include - - #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 -+ -+#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 -+ -+#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 diff --git a/package/mac80211/patches/001-disable_b44.patch b/package/mac80211/patches/001-disable_b44.patch index 8bab0d5636..7e6018fa9d 100644 --- a/package/mac80211/patches/001-disable_b44.patch +++ b/package/mac80211/patches/001-disable_b44.patch @@ -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 diff --git a/package/mac80211/patches/002-disable_rfkill.patch b/package/mac80211/patches/002-disable_rfkill.patch index a894028d4b..1cb319e39e 100644 --- a/package/mac80211/patches/002-disable_rfkill.patch +++ b/package/mac80211/patches/002-disable_rfkill.patch @@ -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 diff --git a/package/mac80211/patches/005-disable_ssb_build.patch b/package/mac80211/patches/005-disable_ssb_build.patch index 7a33f68846..b067956cff 100644 --- a/package/mac80211/patches/005-disable_ssb_build.patch +++ b/package/mac80211/patches/005-disable_ssb_build.patch @@ -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/ @@ -19,39 +19,26 @@ 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 ++endif #__CONFIG_SSB - CONFIG_P54_PCI=m - -@@ -524,7 +522,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv + 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 index 0000000000..5835ea2d90 --- /dev/null +++ b/package/mac80211/patches/006-disable_bcma_build.patch @@ -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 + diff --git a/package/mac80211/patches/007-remove_misc_drivers.patch b/package/mac80211/patches/007-remove_misc_drivers.patch index c8817d04fb..37c03f2eef 100644 --- a/package/mac80211/patches/007-remove_misc_drivers.patch +++ b/package/mac80211/patches/007-remove_misc_drivers.patch @@ -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 diff --git a/package/mac80211/patches/010-no_pcmcia.patch b/package/mac80211/patches/010-no_pcmcia.patch index 5da5b2d707..f6b89d86bc 100644 --- a/package/mac80211/patches/010-no_pcmcia.patch +++ b/package/mac80211/patches/010-no_pcmcia.patch @@ -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 diff --git a/package/mac80211/patches/011-no_sdio.patch b/package/mac80211/patches/011-no_sdio.patch index 12bb0ff375..857020ec52 100644 --- a/package/mac80211/patches/011-no_sdio.patch +++ b/package/mac80211/patches/011-no_sdio.patch @@ -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 diff --git a/package/mac80211/patches/013-disable_b43_nphy.patch b/package/mac80211/patches/013-disable_b43_nphy.patch index 91fe724b7c..63ae11df71 100644 --- a/package/mac80211/patches/013-disable_b43_nphy.patch +++ b/package/mac80211/patches/013-disable_b43_nphy.patch @@ -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 - diff --git a/package/mac80211/patches/015-remove-rt2x00-options.patch b/package/mac80211/patches/015-remove-rt2x00-options.patch index 784d874817..86556d7a47 100644 --- a/package/mac80211/patches/015-remove-rt2x00-options.patch +++ b/package/mac80211/patches/015-remove-rt2x00-options.patch @@ -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 diff --git a/package/mac80211/patches/017-remove_ath9k_rc.patch b/package/mac80211/patches/017-remove_ath9k_rc.patch index 4a23f05554..d275283166 100644 --- a/package/mac80211/patches/017-remove_ath9k_rc.patch +++ b/package/mac80211/patches/017-remove_ath9k_rc.patch @@ -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. diff --git a/package/mac80211/patches/018-revert_printk_va_format.patch b/package/mac80211/patches/018-revert_printk_va_format.patch index 76a0452440..960a65b915 100644 --- a/package/mac80211/patches/018-revert_printk_va_format.patch +++ b/package/mac80211/patches/018-revert_printk_va_format.patch @@ -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, ...) { diff --git a/package/mac80211/patches/019-remove_ath5k_pci_option.patch b/package/mac80211/patches/019-remove_ath5k_pci_option.patch index d657788260..07e30549c4 100644 --- a/package/mac80211/patches/019-remove_ath5k_pci_option.patch +++ b/package/mac80211/patches/019-remove_ath5k_pci_option.patch @@ -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 index 0000000000..2897b40681 --- /dev/null +++ b/package/mac80211/patches/020-netlink_seq.patch @@ -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) diff --git a/package/mac80211/patches/110-disable_usb_compat.patch b/package/mac80211/patches/110-disable_usb_compat.patch index 24777ac002..5738dd023e 100644 --- a/package/mac80211/patches/110-disable_usb_compat.patch +++ b/package/mac80211/patches/110-disable_usb_compat.patch @@ -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. diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index ecce5beff6..c2dbae572b 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -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); @@ -709,7 +21,7 @@ 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 && @@ -857,7 +169,7 @@ 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; @@ -933,55 +245,3 @@ 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); diff --git a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch index ccb693a4bd..767f905a7f 100644 --- a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch +++ b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch @@ -8,7 +8,7 @@ #include #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; } diff --git a/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch b/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch index 6982671300..a2faaa4235 100644 --- a/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch +++ b/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch @@ -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); diff --git a/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch b/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch index d37da10ed1..a75477497f 100644 --- a/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch +++ b/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch @@ -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; diff --git a/package/mac80211/patches/430-ath5k_disable_fast_cc.patch b/package/mac80211/patches/430-ath5k_disable_fast_cc.patch index ad2d862e1c..e049645a1f 100644 --- a/package/mac80211/patches/430-ath5k_disable_fast_cc.patch +++ b/package/mac80211/patches/430-ath5k_disable_fast_cc.patch @@ -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)) diff --git a/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch b/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch index 4aa83c734a..df11fe40e7 100644 --- a/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch +++ b/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch @@ -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); diff --git a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch index 0ebc6b6df3..c3e56d3f17 100644 --- a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch +++ b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch @@ -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) { diff --git a/package/mac80211/patches/511-ath9k_increase_bcbuf.patch b/package/mac80211/patches/511-ath9k_increase_bcbuf.patch index 94039d3fe5..d9e996a72b 100644 --- a/package/mac80211/patches/511-ath9k_increase_bcbuf.patch +++ b/package/mac80211/patches/511-ath9k_increase_bcbuf.patch @@ -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; diff --git a/package/mac80211/patches/512-ath9k_reduce_rxbuf.patch b/package/mac80211/patches/512-ath9k_reduce_rxbuf.patch index 96684aae90..2384931621 100644 --- a/package/mac80211/patches/512-ath9k_reduce_rxbuf.patch +++ b/package/mac80211/patches/512-ath9k_reduce_rxbuf.patch @@ -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 */ /***********/ diff --git a/package/mac80211/patches/530-ath9k_noise_dbm_fixup.patch b/package/mac80211/patches/530-ath9k_noise_dbm_fixup.patch index e3ce0eb3c4..7e41b2cb63 100644 --- a/package/mac80211/patches/530-ath9k_noise_dbm_fixup.patch +++ b/package/mac80211/patches/530-ath9k_noise_dbm_fixup.patch @@ -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 index 179e5c6dea..0000000000 --- a/package/mac80211/patches/540-ath9k-define-mac-version-for-AR9330.patch +++ /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 index 69e967f7a4..0000000000 --- a/package/mac80211/patches/541-ath9k-define-device-id-for-AR9330.patch +++ /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 index a1b5be6828..0000000000 --- a/package/mac80211/patches/542-ath9k-add-MAC-revision-detection-for-AR9330.patch +++ /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 index 4d6920b044..0000000000 --- a/package/mac80211/patches/543-ath9k-add-platform-device-id-for-AR9330.patch +++ /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 index 584cd0e8d7..0000000000 --- a/package/mac80211/patches/544-ath9k-add-AR9330-initvals.patch +++ /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 index 30f5d5479c..0000000000 --- a/package/mac80211/patches/545-ath9k-initialize-mode-registers-for-AR9330.patch +++ /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 index 2e495b80d0..0000000000 --- a/package/mac80211/patches/546-ath9k-initialize-tx-gain-table-for-AR9330.patch +++ /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 index 947c92e396..0000000000 --- a/package/mac80211/patches/547-ath9k-initialize-rx-gain-table-for-AR9330.patch +++ /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 index ea64014c4c..0000000000 --- a/package/mac80211/patches/548-ath9k-add-AR9330-specific-PLL-initialization.patch +++ /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 index e412fa1410..0000000000 --- a/package/mac80211/patches/549-ath9k-use-different-BB-watchdog-timeout-value-for-AR.patch +++ /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 index 937d383109..0000000000 --- a/package/mac80211/patches/550-ath9k-don-t-enable-LDPC-for-AR9330.patch +++ /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 index 1166e3b0d9..0000000000 --- a/package/mac80211/patches/551-ath9k-read-spur-frequency-information-from-eeprom-fo.patch +++ /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 index c21371fca0..0000000000 --- a/package/mac80211/patches/552-ath9k-fix-channel-frequency-calculation-for-AR9340.patch +++ /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 index 56c3fbc308..0000000000 --- a/package/mac80211/patches/553-ath9k-configure-RF-channel-frequency-for-AR9330.patch +++ /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 index 9befda6b08..0000000000 --- a/package/mac80211/patches/554-ath9k-enable-TX-RX-data-byte-swap-for-AR9330.patch +++ /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 index 6043a5e59c..0000000000 --- a/package/mac80211/patches/555-ath9k-skip-internal-regulator-configuration-for-AR93.patch +++ /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 index a0cb78cacd..0000000000 --- a/package/mac80211/patches/556-ath9k-enable-tuning-capacitance-configuration-for-AR.patch +++ /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 index fb603f4af2..0000000000 --- a/package/mac80211/patches/557-ath9k-use-correct-EEPROM-base-for-AR9330.patch +++ /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 index 1342f25d53..0000000000 --- a/package/mac80211/patches/558-ath9k-configure-xpa-bias-level-for-AR9330.patch +++ /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 index 518bc52e4b..0000000000 --- a/package/mac80211/patches/559-ath9k-set-NF-limits-for-AR9330.patch +++ /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 index c2ca224f6d..0000000000 --- a/package/mac80211/patches/560-ath9k-enable-antenna-diversity-for-AR9330.patch +++ /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 index ddb5a066dd..0000000000 --- a/package/mac80211/patches/561-ath9k-use-correct-max_streams-for-AR9330.patch +++ /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 index 3397cf1cf1..0000000000 --- a/package/mac80211/patches/562-ath9k-add-a-missing-case-statement-to-ath_ant_div_co.patch +++ /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 index b99140398a..0000000000 --- a/package/mac80211/patches/563-ath9k-fix-antenna-diversity-configuration-for-non-AR.patch +++ /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 index 3cad40f90d..0000000000 --- a/package/mac80211/patches/564-ath9k-remove-superfluous-parentheses.patch +++ /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 index f3853239aa..0000000000 --- a/package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch +++ /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 index 447ef614ae..0000000000 --- a/package/mac80211/patches/566-ath9k-set-diversity-group-for-AR9330.patch +++ /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 index 7c0f4320a5..0000000000 --- a/package/mac80211/patches/567-ath9k-fix-few-register-offsets-for-AR9330.patch +++ /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 index f11b2a0baa..0000000000 --- a/package/mac80211/patches/568-ath9k-configure-diversity-based-on-eeprom-contents-f.patch +++ /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 index a09e83db85..0000000000 --- a/package/mac80211/patches/569-ath9k-configure-internal-regulator-for-AR9330.patch +++ /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 index 183a4f1557..0000000000 --- a/package/mac80211/patches/570-ath9k-add-external_reset-callback-to-ath9k_platfom_d.patch +++ /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 index ef67027e23..0000000000 --- a/package/mac80211/patches/571-ath9k-enable-support-for-AR9330.patch +++ /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: diff --git a/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch b/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch index 9bc8a33990..c59441d581 100644 --- a/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch +++ b/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch @@ -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) = { diff --git a/package/mac80211/patches/800-b43-gpio-mask-module-option.patch b/package/mac80211/patches/800-b43-gpio-mask-module-option.patch index 27a1ac104e..1dee123918 100644 --- a/package/mac80211/patches/800-b43-gpio-mask-module-option.patch +++ b/package/mac80211/patches/800-b43-gpio-mask-module-option.patch @@ -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) @@ -32,10 +32,10 @@ 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 " diff --git a/package/mac80211/patches/810-b43_no_pio.patch b/package/mac80211/patches/810-b43_no_pio.patch index 5e55f771e5..a913b6de7a 100644 --- a/package/mac80211/patches/810-b43_no_pio.patch +++ b/package/mac80211/patches/810-b43_no_pio.patch @@ -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");