diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-07-10 00:21:25 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-07-10 00:21:25 +0000 |
commit | b01eb369ce4b236f214c74dc7a30f65474ddf8d3 (patch) | |
tree | 5b2c6f7f1a90ddd05e706bbe1dbce54223eea283 /package | |
parent | 718ffca5834751d2a352dd7a1fc6b9c09b0aeef5 (diff) |
mac80211: update to latest version, fix tx gain patch
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32655 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
78 files changed, 1835 insertions, 8267 deletions
diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 0e2b25cac8..714361242a 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=2012-06-14 -PKG_RELEASE:=2 +PKG_VERSION:=2012-07-06 +PKG_RELEASE:=1 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources -PKG_MD5SUM:=009fd7aa420693e30df9090cee9ea189 +PKG_MD5SUM:=71e1ba84a7d1c3ab69ee1b68fa9e1269 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-disable_ethernet.patch b/package/mac80211/patches/000-disable_ethernet.patch index 2c5e3d086a..08f908b10f 100644 --- a/package/mac80211/patches/000-disable_ethernet.patch +++ b/package/mac80211/patches/000-disable_ethernet.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -44,9 +44,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += +@@ -45,9 +45,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/ diff --git a/package/mac80211/patches/001-disable_b44.patch b/package/mac80211/patches/001-disable_b44.patch index aae8ef956a..2bcead9c19 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 -@@ -371,8 +371,8 @@ export CONFIG_B43_BCMA_EXTRA=y +@@ -376,8 +376,8 @@ export CONFIG_B43_BCMA_EXTRA=y export CONFIG_P54_PCI=m diff --git a/package/mac80211/patches/002-disable_rfkill.patch b/package/mac80211/patches/002-disable_rfkill.patch index 4660909b24..f977c96059 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") -@@ -683,10 +683,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 +@@ -688,10 +688,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 23ce92440d..4bf9797f6b 100644 --- a/package/mac80211/patches/005-disable_ssb_build.patch +++ b/package/mac80211/patches/005-disable_ssb_build.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -44,7 +44,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += +@@ -45,7 +45,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/ @@ -19,7 +19,7 @@ else include $(KLIB_BUILD)/.config endif -@@ -347,7 +347,8 @@ export CONFIG_IPW2200_QOS=y +@@ -352,7 +352,8 @@ export CONFIG_IPW2200_QOS=y # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface endif #CONFIG_WIRELESS_EXT @@ -29,7 +29,7 @@ # Sonics Silicon Backplane export CONFIG_SSB_SPROM=y -@@ -360,7 +361,7 @@ endif #CONFIG_PCMCIA +@@ -365,7 +366,7 @@ endif #CONFIG_PCMCIA # export CONFIG_SSB_DEBUG=y export CONFIG_SSB_DRIVER_PCICORE=y export CONFIG_B43_SSB=y @@ -38,7 +38,7 @@ export CONFIG_BCMA=m export CONFIG_BCMA_BLOCKIO=y -@@ -577,7 +578,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv +@@ -582,7 +583,7 @@ 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 index a0265ac797..1b53070bdc 100644 --- a/package/mac80211/patches/006-disable_bcma_build.patch +++ b/package/mac80211/patches/006-disable_bcma_build.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -44,7 +44,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += +@@ -45,7 +45,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/ @@ -10,7 +10,7 @@ ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),) --- a/config.mk +++ b/config.mk -@@ -363,12 +363,12 @@ export CONFIG_SSB_DRIVER_PCICORE=y +@@ -368,12 +368,12 @@ export CONFIG_SSB_DRIVER_PCICORE=y export CONFIG_B43_SSB=y endif #__CONFIG_SSB diff --git a/package/mac80211/patches/007-remove_misc_drivers.patch b/package/mac80211/patches/007-remove_misc_drivers.patch index b89089d982..d22bee416a 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 -@@ -400,15 +400,15 @@ endif #CONFIG_CRC_ITU_T +@@ -405,15 +405,15 @@ endif #CONFIG_CRC_ITU_T export CONFIG_MWL8K=m # Ethernet drivers go here @@ -32,7 +32,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_28 ifdef CONFIG_WIRELESS_EXT -@@ -469,21 +469,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 +@@ -474,21 +474,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 e9b5ab7346..6bde2d976e 100644 --- a/package/mac80211/patches/010-no_pcmcia.patch +++ b/package/mac80211/patches/010-no_pcmcia.patch @@ -9,7 +9,7 @@ # export CONFIG_SSB=m else include $(KLIB_BUILD)/.config -@@ -298,7 +298,7 @@ export CONFIG_B43=m +@@ -303,7 +303,7 @@ export CONFIG_B43=m export CONFIG_B43_HWRNG=y export 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 380074754e..19df10bdc1 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 -@@ -579,7 +579,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv +@@ -584,7 +584,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv ifdef CONFIG_MMC # export CONFIG_SSB_SDIOHOST=y diff --git a/package/mac80211/patches/013-disable_b43_nphy.patch b/package/mac80211/patches/013-disable_b43_nphy.patch index ae5be9ff65..b95980499d 100644 --- a/package/mac80211/patches/013-disable_b43_nphy.patch +++ b/package/mac80211/patches/013-disable_b43_nphy.patch @@ -1,6 +1,6 @@ --- a/config.mk +++ b/config.mk -@@ -304,8 +304,8 @@ ifdef CONFIG_MAC80211_LEDS +@@ -309,8 +309,8 @@ ifdef CONFIG_MAC80211_LEDS export CONFIG_B43_LEDS=y endif #CONFIG_MAC80211_LEDS export CONFIG_B43_PHY_LP=y diff --git a/package/mac80211/patches/015-remove-rt2x00-options.patch b/package/mac80211/patches/015-remove-rt2x00-options.patch index 5b029c41db..3762f73c10 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 -@@ -379,7 +379,7 @@ export CONFIG_RTL8180=m +@@ -384,7 +384,7 @@ export CONFIG_RTL8180=m export CONFIG_ADM8211=m @@ -9,7 +9,7 @@ export CONFIG_RT2400PCI=m export CONFIG_RT2500PCI=m ifdef CONFIG_CRC_CCITT -@@ -525,7 +525,7 @@ export CONFIG_RT2800USB_RT35XX=y +@@ -530,7 +530,7 @@ export CONFIG_RT2800USB_RT35XX=y export CONFIG_RT2800USB_RT53XX=y export CONFIG_RT2800USB_UNKNOWN=y endif #CONFIG_CRC_CCITT diff --git a/package/mac80211/patches/019-remove_ath5k_pci_option.patch b/package/mac80211/patches/019-remove_ath5k_pci_option.patch index 581fbfcbe7..0dd905c868 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 -@@ -276,7 +276,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 +@@ -281,7 +281,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 # PCI Drivers ifdef CONFIG_PCI diff --git a/package/mac80211/patches/021-add_include_for_bcma.patch b/package/mac80211/patches/021-add_include_for_bcma.patch index 21b624e791..e2e856eb05 100644 --- a/package/mac80211/patches/021-add_include_for_bcma.patch +++ b/package/mac80211/patches/021-add_include_for_bcma.patch @@ -1,8 +1,8 @@ --- a/include/linux/compat-3.0.h +++ b/include/linux/compat-3.0.h -@@ -7,6 +7,8 @@ +@@ -36,6 +36,8 @@ static inline struct page *shmem_read_ma + #endif - #include <linux/rcupdate.h> +#include <linux/mod_devicetable.h> + diff --git a/package/mac80211/patches/023-ath9k_disable_btcoex.patch b/package/mac80211/patches/023-ath9k_disable_btcoex.patch index 36645fc75a..900f030882 100644 --- a/package/mac80211/patches/023-ath9k_disable_btcoex.patch +++ b/package/mac80211/patches/023-ath9k_disable_btcoex.patch @@ -7,5 +7,5 @@ -export CONFIG_ATH9K_BTCOEX_SUPPORT=y +# export CONFIG_ATH9K_BTCOEX_SUPPORT=y - ifndef CONFIG_COMPAT_KERNEL_2_6_27 - export CONFIG_ATH6KL=m + # WIL6210 requires MSI only available >= 2.6.30 + ifndef CONFIG_COMPAT_KERNEL_2_6_30 diff --git a/package/mac80211/patches/060-compat_add_module_pci_driver.patch b/package/mac80211/patches/060-compat_add_module_pci_driver.patch index 6ddfc7dbec..8a35d4e78e 100644 --- a/package/mac80211/patches/060-compat_add_module_pci_driver.patch +++ b/package/mac80211/patches/060-compat_add_module_pci_driver.patch @@ -1,6 +1,6 @@ --- a/include/linux/compat-3.4.h +++ b/include/linux/compat-3.4.h -@@ -77,6 +77,19 @@ static inline void eth_hw_addr_random(st +@@ -81,6 +81,19 @@ static inline void eth_hw_addr_random(st module_driver(__pci_driver, pci_register_driver, \ pci_unregister_driver) diff --git a/package/mac80211/patches/071-add_codel_ifdef.patch b/package/mac80211/patches/071-add_codel_ifdef.patch index 45a599c4f6..86b415170b 100644 --- a/package/mac80211/patches/071-add_codel_ifdef.patch +++ b/package/mac80211/patches/071-add_codel_ifdef.patch @@ -9,7 +9,7 @@ /* * This backports: * -@@ -106,6 +108,7 @@ struct vga_switcheroo_client_ops { +@@ -135,6 +137,7 @@ static inline int compat_vga_switcheroo_ #define SIZE_MAX (~(size_t)0) diff --git a/package/mac80211/patches/110-disable_usb_compat.patch b/package/mac80211/patches/110-disable_usb_compat.patch index 6f674008f9..35f58141e4 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 -@@ -507,7 +507,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 +@@ -512,7 +512,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/130-mesh_pathtbl_backport.patch b/package/mac80211/patches/130-mesh_pathtbl_backport.patch index 817060d42a..bf6635a5ad 100644 --- a/package/mac80211/patches/130-mesh_pathtbl_backport.patch +++ b/package/mac80211/patches/130-mesh_pathtbl_backport.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c -@@ -826,7 +826,6 @@ static void table_flush_by_iface(struct +@@ -817,7 +817,6 @@ static void table_flush_by_iface(struct struct hlist_node *p; int i; diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 6062e9da26..c8dce038e3 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -1,1248 +1,1613 @@ ---- a/drivers/net/wireless/ath/ath9k/ani.c -+++ b/drivers/net/wireless/ath/ath9k/ani.c -@@ -104,11 +104,6 @@ static const struct ani_cck_level_entry - #define ATH9K_ANI_CCK_DEF_LEVEL \ - 2 /* default level - matches the INI settings */ +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -360,7 +360,7 @@ void ath_tx_aggr_sleep(struct ieee80211_ + + struct ath_vif { + int av_bslot; +- bool is_bslot_active, primary_sta_vif; ++ bool primary_sta_vif; + __le64 tsf_adjust; /* TSF adjustment for staggered beacons */ + struct ath_buf *av_bcbuf; + }; +@@ -386,6 +386,7 @@ struct ath_beacon_config { + u16 dtim_period; + u16 bmiss_timeout; + u8 dtim_count; ++ bool enable_beacon; + }; --static bool use_new_ani(struct ath_hw *ah) --{ -- return AR_SREV_9300_20_OR_LATER(ah) || modparam_force_new_ani; --} -- - static void ath9k_hw_update_mibstats(struct ath_hw *ah, - struct ath9k_mib_stats *stats) + struct ath_beacon { +@@ -397,7 +398,6 @@ struct ath_beacon { + + u32 beaconq; + u32 bmisscnt; +- u32 ast_be_xmit; + u32 bc_tstamp; + struct ieee80211_vif *bslot[ATH_BCBUF]; + int slottime; +@@ -411,12 +411,14 @@ struct ath_beacon { + bool tx_last; + }; + +-void ath_beacon_tasklet(unsigned long data); +-void ath_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif); +-int ath_beacon_alloc(struct ath_softc *sc, struct ieee80211_vif *vif); +-void ath_beacon_return(struct ath_softc *sc, struct ath_vif *avp); +-int ath_beaconq_config(struct ath_softc *sc); +-void ath_set_beacon(struct ath_softc *sc); ++void ath9k_beacon_tasklet(unsigned long data); ++bool ath9k_allow_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif); ++void ath9k_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif, ++ u32 changed); ++void ath9k_beacon_assign_slot(struct ath_softc *sc, struct ieee80211_vif *vif); ++void ath9k_beacon_remove_slot(struct ath_softc *sc, struct ieee80211_vif *vif); ++void ath9k_set_tsfadjust(struct ath_softc *sc, struct ieee80211_vif *vif); ++void ath9k_set_beacon(struct ath_softc *sc); + void ath9k_set_beaconing_status(struct ath_softc *sc, bool status); + + /*******************/ +@@ -442,9 +444,12 @@ void ath_rx_poll(unsigned long data); + void ath_start_rx_poll(struct ath_softc *sc, u8 nbeacon); + void ath_paprd_calibrate(struct work_struct *work); + void ath_ani_calibrate(unsigned long data); +-void ath_start_ani(struct ath_common *common); ++void ath_start_ani(struct ath_softc *sc); ++void ath_stop_ani(struct ath_softc *sc); ++void ath_check_ani(struct ath_softc *sc); + int ath_update_survey_stats(struct ath_softc *sc); + void ath_update_survey_nf(struct ath_softc *sc, int channel); ++void ath9k_queue_reset(struct ath_softc *sc, enum ath_reset_type type); + + /**********/ + /* BTCOEX */ +@@ -613,7 +618,6 @@ enum sc_op_flags { + SC_OP_INVALID, + SC_OP_BEACONS, + SC_OP_RXFLUSH, +- SC_OP_TSF_RESET, + SC_OP_ANI_RUN, + SC_OP_PRIM_STA_VIF, + SC_OP_HW_RESET, +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -30,7 +30,7 @@ static void ath9k_reset_beacon_status(st + * the operating mode of the station (AP or AdHoc). Parameters are AIFS + * settings and channel width min/max + */ +-int ath_beaconq_config(struct ath_softc *sc) ++static void ath9k_beaconq_config(struct ath_softc *sc) { -@@ -122,8 +117,6 @@ static void ath9k_hw_update_mibstats(str - static void ath9k_ani_restart(struct ath_hw *ah) + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); +@@ -38,6 +38,7 @@ int ath_beaconq_config(struct ath_softc + struct ath_txq *txq; + + ath9k_hw_get_txq_props(ah, sc->beacon.beaconq, &qi); ++ + if (sc->sc_ah->opmode == NL80211_IFTYPE_AP) { + /* Always burst out beacon and CAB traffic. */ + qi.tqi_aifs = 1; +@@ -56,12 +57,9 @@ int ath_beaconq_config(struct ath_softc + } + + if (!ath9k_hw_set_txq_props(ah, sc->beacon.beaconq, &qi)) { +- ath_err(common, +- "Unable to update h/w beacon queue parameters\n"); +- return 0; ++ ath_err(common, "Unable to update h/w beacon queue parameters\n"); + } else { + ath9k_hw_resettxqueue(ah, sc->beacon.beaconq); +- return 1; + } + } + +@@ -70,7 +68,7 @@ int ath_beaconq_config(struct ath_softc + * up rate codes, and channel flags. Beacons are always sent out at the + * lowest rate, and are not retried. + */ +-static void ath_beacon_setup(struct ath_softc *sc, struct ieee80211_vif *vif, ++static void ath9k_beacon_setup(struct ath_softc *sc, struct ieee80211_vif *vif, + struct ath_buf *bf, int rateidx) { - struct ar5416AniState *aniState; -- struct ath_common *common = ath9k_hw_common(ah); -- u32 ofdm_base = 0, cck_base = 0; + struct sk_buff *skb = bf->bf_mpdu; +@@ -81,8 +79,6 @@ static void ath_beacon_setup(struct ath_ + u8 chainmask = ah->txchainmask; + u8 rate = 0; - if (!DO_ANI(ah)) - return; -@@ -131,18 +124,10 @@ static void ath9k_ani_restart(struct ath - aniState = &ah->curchan->ani; - aniState->listenTime = 0; +- ath9k_reset_beacon_status(sc); +- + sband = &sc->sbands[common->hw->conf.channel->band]; + rate = sband->bitrates[rateidx].hw_value; + if (vif->bss_conf.use_short_preamble) +@@ -111,7 +107,7 @@ static void ath_beacon_setup(struct ath_ + ath9k_hw_set_txdesc(ah, bf->bf_desc, &info); + } -- if (!use_new_ani(ah)) { -- ofdm_base = AR_PHY_COUNTMAX - ah->config.ofdm_trig_high; -- cck_base = AR_PHY_COUNTMAX - ah->config.cck_trig_high; -- } +-static void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) ++static void ath9k_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) + { + struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); +@@ -128,28 +124,22 @@ static void ath_tx_cabq(struct ieee80211 + } + } + +-static struct ath_buf *ath_beacon_generate(struct ieee80211_hw *hw, +- struct ieee80211_vif *vif) ++static struct ath_buf *ath9k_beacon_generate(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif) + { + struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_buf *bf; +- struct ath_vif *avp; ++ struct ath_vif *avp = (void *)vif->drv_priv; + struct sk_buff *skb; +- struct ath_txq *cabq; ++ struct ath_txq *cabq = sc->beacon.cabq; + struct ieee80211_tx_info *info; ++ struct ieee80211_mgmt *mgmt_hdr; + int cabq_depth; + +- ath9k_reset_beacon_status(sc); - -- ath_dbg(common, ANI, "Writing ofdmbase=%u cckbase=%u\n", -- ofdm_base, cck_base); +- avp = (void *)vif->drv_priv; +- cabq = sc->beacon.cabq; - - ENABLE_REGWRITE_BUFFER(ah); +- if ((avp->av_bcbuf == NULL) || !avp->is_bslot_active) ++ if (avp->av_bcbuf == NULL) + return NULL; -- REG_WRITE(ah, AR_PHY_ERR_1, ofdm_base); -- REG_WRITE(ah, AR_PHY_ERR_2, cck_base); -+ REG_WRITE(ah, AR_PHY_ERR_1, 0); -+ REG_WRITE(ah, AR_PHY_ERR_2, 0); - REG_WRITE(ah, AR_PHY_ERR_MASK_1, AR_PHY_ERR_OFDM_TIMING); - REG_WRITE(ah, AR_PHY_ERR_MASK_2, AR_PHY_ERR_CCK_TIMING); +- /* Release the old beacon first */ +- + bf = avp->av_bcbuf; + skb = bf->bf_mpdu; + if (skb) { +@@ -159,14 +149,14 @@ static struct ath_buf *ath_beacon_genera + bf->bf_buf_addr = 0; + } + +- /* Get a new beacon from mac80211 */ +- + skb = ieee80211_beacon_get(hw, vif); +- bf->bf_mpdu = skb; + if (skb == NULL) + return NULL; +- ((struct ieee80211_mgmt *)skb->data)->u.beacon.timestamp = +- avp->tsf_adjust; ++ ++ bf->bf_mpdu = skb; ++ ++ mgmt_hdr = (struct ieee80211_mgmt *)skb->data; ++ mgmt_hdr->u.beacon.timestamp = avp->tsf_adjust; + + info = IEEE80211_SKB_CB(skb); + if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) { +@@ -212,61 +202,52 @@ static struct ath_buf *ath_beacon_genera + } + } -@@ -154,110 +139,6 @@ static void ath9k_ani_restart(struct ath - aniState->cckPhyErrCount = 0; +- ath_beacon_setup(sc, vif, bf, info->control.rates[0].idx); ++ ath9k_beacon_setup(sc, vif, bf, info->control.rates[0].idx); + + while (skb) { +- ath_tx_cabq(hw, skb); ++ ath9k_tx_cabq(hw, skb); + skb = ieee80211_get_buffered_bc(hw, vif); + } + + return bf; } --static void ath9k_hw_ani_ofdm_err_trigger_old(struct ath_hw *ah) --{ -- struct ieee80211_conf *conf = &ath9k_hw_common(ah)->hw->conf; -- struct ar5416AniState *aniState; -- int32_t rssi; -- -- aniState = &ah->curchan->ani; +-int ath_beacon_alloc(struct ath_softc *sc, struct ieee80211_vif *vif) ++void ath9k_beacon_assign_slot(struct ath_softc *sc, struct ieee80211_vif *vif) + { + struct ath_common *common = ath9k_hw_common(sc->sc_ah); +- struct ath_vif *avp; +- struct ath_buf *bf; +- struct sk_buff *skb; +- struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; +- __le64 tstamp; ++ struct ath_vif *avp = (void *)vif->drv_priv; ++ int slot; + +- avp = (void *)vif->drv_priv; ++ avp->av_bcbuf = list_first_entry(&sc->beacon.bbuf, struct ath_buf, list); ++ list_del(&avp->av_bcbuf->list); + +- /* Allocate a beacon descriptor if we haven't done so. */ +- if (!avp->av_bcbuf) { +- /* Allocate beacon state for hostap/ibss. We know +- * a buffer is available. */ +- avp->av_bcbuf = list_first_entry(&sc->beacon.bbuf, +- struct ath_buf, list); +- list_del(&avp->av_bcbuf->list); - -- if (aniState->noiseImmunityLevel < HAL_NOISE_IMMUNE_MAX) { -- if (ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, -- aniState->noiseImmunityLevel + 1)) { -- return; -- } -- } +- if (ath9k_uses_beacons(vif->type)) { +- int slot; +- /* +- * Assign the vif to a beacon xmit slot. As +- * above, this cannot fail to find one. +- */ +- avp->av_bslot = 0; +- for (slot = 0; slot < ATH_BCBUF; slot++) +- if (sc->beacon.bslot[slot] == NULL) { +- avp->av_bslot = slot; +- avp->is_bslot_active = false; - -- if (aniState->spurImmunityLevel < HAL_SPUR_IMMUNE_MAX) { -- if (ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, -- aniState->spurImmunityLevel + 1)) { -- return; -- } -- } +- /* NB: keep looking for a double slot */ +- if (slot == 0 || !sc->beacon.bslot[slot-1]) +- break; +- } +- BUG_ON(sc->beacon.bslot[avp->av_bslot] != NULL); +- sc->beacon.bslot[avp->av_bslot] = vif; +- sc->nbcnvifs++; ++ for (slot = 0; slot < ATH_BCBUF; slot++) { ++ if (sc->beacon.bslot[slot] == NULL) { ++ avp->av_bslot = slot; ++ break; + } + } + +- /* release the previous beacon frame, if it already exists. */ +- bf = avp->av_bcbuf; +- if (bf->bf_mpdu != NULL) { +- skb = bf->bf_mpdu; ++ sc->beacon.bslot[avp->av_bslot] = vif; ++ sc->nbcnvifs++; ++ ++ ath_dbg(common, CONFIG, "Added interface at beacon slot: %d\n", ++ avp->av_bslot); ++} ++ ++void ath9k_beacon_remove_slot(struct ath_softc *sc, struct ieee80211_vif *vif) ++{ ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); ++ struct ath_vif *avp = (void *)vif->drv_priv; ++ struct ath_buf *bf = avp->av_bcbuf; ++ ++ ath_dbg(common, CONFIG, "Removing interface at beacon slot: %d\n", ++ avp->av_bslot); ++ ++ tasklet_disable(&sc->bcon_tasklet); ++ ++ if (bf && bf->bf_mpdu) { ++ struct sk_buff *skb = bf->bf_mpdu; + dma_unmap_single(sc->dev, bf->bf_buf_addr, + skb->len, DMA_TO_DEVICE); + dev_kfree_skb_any(skb); +@@ -274,99 +255,74 @@ int ath_beacon_alloc(struct ath_softc *s + bf->bf_buf_addr = 0; + } + +- /* NB: the beacon data buffer must be 32-bit aligned. */ +- skb = ieee80211_beacon_get(sc->hw, vif); +- if (skb == NULL) +- return -ENOMEM; - -- if (ah->opmode == NL80211_IFTYPE_AP) { -- if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) { -- ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel + 1); -- } -- return; +- tstamp = ((struct ieee80211_mgmt *)skb->data)->u.beacon.timestamp; +- sc->beacon.bc_tstamp = (u32) le64_to_cpu(tstamp); +- /* Calculate a TSF adjustment factor required for staggered beacons. */ +- if (avp->av_bslot > 0) { +- u64 tsfadjust; +- int intval; ++ avp->av_bcbuf = NULL; ++ sc->beacon.bslot[avp->av_bslot] = NULL; ++ sc->nbcnvifs--; ++ list_add_tail(&bf->list, &sc->beacon.bbuf); + +- intval = cur_conf->beacon_interval ? : ATH_DEFAULT_BINTVAL; ++ tasklet_enable(&sc->bcon_tasklet); ++} + +- /* +- * Calculate the TSF offset for this beacon slot, i.e., the +- * number of usecs that need to be added to the timestamp field +- * in Beacon and Probe Response frames. Beacon slot 0 is +- * processed at the correct offset, so it does not require TSF +- * adjustment. Other slots are adjusted to get the timestamp +- * close to the TBTT for the BSS. +- */ +- tsfadjust = TU_TO_USEC(intval * avp->av_bslot) / ATH_BCBUF; +- avp->tsf_adjust = cpu_to_le64(tsfadjust); ++static int ath9k_beacon_choose_slot(struct ath_softc *sc) ++{ ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); ++ struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; ++ u16 intval; ++ u32 tsftu; ++ u64 tsf; ++ int slot; + +- ath_dbg(common, BEACON, +- "stagger beacons, bslot %d intval %u tsfadjust %llu\n", +- avp->av_bslot, intval, (unsigned long long)tsfadjust); ++ if (sc->sc_ah->opmode != NL80211_IFTYPE_AP) { ++ ath_dbg(common, BEACON, "slot 0, tsf: %llu\n", ++ ath9k_hw_gettsf64(sc->sc_ah)); ++ return 0; ++ } + +- ((struct ieee80211_mgmt *)skb->data)->u.beacon.timestamp = +- avp->tsf_adjust; +- } else +- avp->tsf_adjust = cpu_to_le64(0); ++ intval = cur_conf->beacon_interval ? : ATH_DEFAULT_BINTVAL; ++ tsf = ath9k_hw_gettsf64(sc->sc_ah); ++ tsf += TU_TO_USEC(sc->sc_ah->config.sw_beacon_response_time); ++ tsftu = TSF_TO_TU((tsf * ATH_BCBUF) >>32, tsf * ATH_BCBUF); ++ slot = (tsftu % (intval * ATH_BCBUF)) / intval; + +- bf->bf_mpdu = skb; +- bf->bf_buf_addr = dma_map_single(sc->dev, skb->data, +- skb->len, DMA_TO_DEVICE); +- if (unlikely(dma_mapping_error(sc->dev, bf->bf_buf_addr))) { +- dev_kfree_skb_any(skb); +- bf->bf_mpdu = NULL; +- bf->bf_buf_addr = 0; +- ath_err(common, "dma_mapping_error on beacon alloc\n"); +- return -ENOMEM; - } -- rssi = BEACON_RSSI(ah); -- if (rssi > aniState->rssiThrHigh) { -- if (!aniState->ofdmWeakSigDetectOff) { -- if (ath9k_hw_ani_control(ah, -- ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, -- false)) { -- ath9k_hw_ani_control(ah, -- ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0); -- return; -- } -- } -- if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) { -- ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel + 1); -- return; +- avp->is_bslot_active = true; ++ ath_dbg(common, BEACON, "slot: %d tsf: %llu tsftu: %u\n", ++ slot, tsf, tsftu / ATH_BCBUF); + +- return 0; ++ return slot; + } + +-void ath_beacon_return(struct ath_softc *sc, struct ath_vif *avp) ++void ath9k_set_tsfadjust(struct ath_softc *sc, struct ieee80211_vif *vif) + { +- if (avp->av_bcbuf != NULL) { +- struct ath_buf *bf; ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); ++ struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; ++ struct ath_vif *avp = (void *)vif->drv_priv; ++ u64 tsfadjust; + +- avp->is_bslot_active = false; +- if (avp->av_bslot != -1) { +- sc->beacon.bslot[avp->av_bslot] = NULL; +- sc->nbcnvifs--; +- avp->av_bslot = -1; - } -- } else if (rssi > aniState->rssiThrLow) { -- if (aniState->ofdmWeakSigDetectOff) -- ath9k_hw_ani_control(ah, -- ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, -- true); -- if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) -- ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel + 1); -- return; -- } else { -- if ((conf->channel->band == IEEE80211_BAND_2GHZ) && -- !conf_is_ht(conf)) { -- if (!aniState->ofdmWeakSigDetectOff) -- ath9k_hw_ani_control(ah, -- ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, -- false); -- if (aniState->firstepLevel > 0) -- ath9k_hw_ani_control(ah, -- ATH9K_ANI_FIRSTEP_LEVEL, 0); -- return; ++ if (avp->av_bslot == 0) ++ return; + +- bf = avp->av_bcbuf; +- if (bf->bf_mpdu != NULL) { +- struct sk_buff *skb = bf->bf_mpdu; +- dma_unmap_single(sc->dev, bf->bf_buf_addr, +- skb->len, DMA_TO_DEVICE); +- dev_kfree_skb_any(skb); +- bf->bf_mpdu = NULL; +- bf->bf_buf_addr = 0; - } +- list_add_tail(&bf->list, &sc->beacon.bbuf); ++ tsfadjust = cur_conf->beacon_interval * avp->av_bslot / ATH_BCBUF; ++ avp->tsf_adjust = cpu_to_le64(TU_TO_USEC(tsfadjust)); + +- avp->av_bcbuf = NULL; - } --} ++ ath_dbg(common, CONFIG, "tsfadjust is: %llu for bslot: %d\n", ++ (unsigned long long)tsfadjust, avp->av_bslot); + } + +-void ath_beacon_tasklet(unsigned long data) ++void ath9k_beacon_tasklet(unsigned long data) + { + struct ath_softc *sc = (struct ath_softc *)data; +- struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ath_buf *bf = NULL; + struct ieee80211_vif *vif; + bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); + int slot; +- u32 bfaddr, bc = 0; + +- if (work_pending(&sc->hw_reset_work)) { ++ if (test_bit(SC_OP_HW_RESET, &sc->sc_flags)) { + ath_dbg(common, RESET, + "reset work is pending, skip beaconing now\n"); + return; + } ++ + /* + * Check if the previous beacon has gone out. If + * not don't try to post another, skip this period +@@ -390,55 +346,25 @@ void ath_beacon_tasklet(unsigned long da + } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) { + ath_dbg(common, BSTUCK, "beacon is officially stuck\n"); + sc->beacon.bmisscnt = 0; +- set_bit(SC_OP_TSF_RESET, &sc->sc_flags); +- ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ++ ath9k_queue_reset(sc, RESET_TYPE_BEACON_STUCK); + } + + return; + } + +- /* +- * Generate beacon frames. we are sending frames +- * staggered so calculate the slot for this frame based +- * on the tsf to safeguard against missing an swba. +- */ - --static void ath9k_hw_ani_cck_err_trigger_old(struct ath_hw *ah) --{ -- struct ieee80211_conf *conf = &ath9k_hw_common(ah)->hw->conf; -- struct ar5416AniState *aniState; -- int32_t rssi; - -- aniState = &ah->curchan->ani; -- if (aniState->noiseImmunityLevel < HAL_NOISE_IMMUNE_MAX) { -- if (ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, -- aniState->noiseImmunityLevel + 1)) { -- return; -- } -- } - if (ah->opmode == NL80211_IFTYPE_AP) { -- if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) { -- ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel + 1); -- } -- return; -- } -- rssi = BEACON_RSSI(ah); -- if (rssi > aniState->rssiThrLow) { -- if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) -- ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel + 1); -- } else { -- if ((conf->channel->band == IEEE80211_BAND_2GHZ) && -- !conf_is_ht(conf)) { -- if (aniState->firstepLevel > 0) -- ath9k_hw_ani_control(ah, -- ATH9K_ANI_FIRSTEP_LEVEL, 0); -- } -- } --} +- u16 intval; +- u32 tsftu; +- u64 tsf; - - /* Adjust the OFDM Noise Immunity Level */ - static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel) - { -@@ -265,18 +146,15 @@ static void ath9k_hw_set_ofdm_nil(struct - struct ath_common *common = ath9k_hw_common(ah); - const struct ani_ofdm_level_entry *entry_ofdm; - const struct ani_cck_level_entry *entry_cck; +- intval = cur_conf->beacon_interval ? : ATH_DEFAULT_BINTVAL; +- tsf = ath9k_hw_gettsf64(ah); +- tsf += TU_TO_USEC(ah->config.sw_beacon_response_time); +- tsftu = TSF_TO_TU((tsf * ATH_BCBUF) >>32, tsf * ATH_BCBUF); +- slot = (tsftu % (intval * ATH_BCBUF)) / intval; +- vif = sc->beacon.bslot[slot]; - -- aniState->noiseFloor = BEACON_RSSI(ah); -+ bool weak_sig; - - ath_dbg(common, ANI, "**** ofdmlevel %d=>%d, rssi=%d[lo=%d hi=%d]\n", - aniState->ofdmNoiseImmunityLevel, -- immunityLevel, aniState->noiseFloor, -+ immunityLevel, BEACON_RSSI(ah), - aniState->rssiThrLow, aniState->rssiThrHigh); - - if (aniState->update_ani) -- aniState->ofdmNoiseImmunityLevel = -- (immunityLevel > ATH9K_ANI_OFDM_DEF_LEVEL) ? -- immunityLevel : ATH9K_ANI_OFDM_DEF_LEVEL; -+ aniState->ofdmNoiseImmunityLevel = immunityLevel; - - entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel]; - entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel]; -@@ -292,12 +170,22 @@ static void ath9k_hw_set_ofdm_nil(struct - ATH9K_ANI_FIRSTEP_LEVEL, - entry_ofdm->fir_step_level); - -- if ((aniState->noiseFloor >= aniState->rssiThrHigh) && -- (!aniState->ofdmWeakSigDetectOff != -- entry_ofdm->ofdm_weak_signal_on)) { -+ weak_sig = entry_ofdm->ofdm_weak_signal_on; -+ if (ah->opmode == NL80211_IFTYPE_STATION && -+ BEACON_RSSI(ah) <= aniState->rssiThrHigh) -+ weak_sig = true; +- ath_dbg(common, BEACON, +- "slot %d [tsf %llu tsftu %u intval %u] vif %p\n", +- slot, tsf, tsftu / ATH_BCBUF, intval, vif); +- } else { +- slot = 0; +- vif = sc->beacon.bslot[slot]; +- } ++ slot = ath9k_beacon_choose_slot(sc); ++ vif = sc->beacon.bslot[slot]; + ++ if (!vif || !vif->bss_conf.enable_beacon) ++ return; + +- bfaddr = 0; +- if (vif) { +- bf = ath_beacon_generate(sc->hw, vif); +- if (bf != NULL) { +- bfaddr = bf->bf_daddr; +- bc = 1; +- } ++ bf = ath9k_beacon_generate(sc->hw, vif); ++ WARN_ON(!bf); + +- if (sc->beacon.bmisscnt != 0) { +- ath_dbg(common, BSTUCK, +- "resume beacon xmit after %u misses\n", +- sc->beacon.bmisscnt); +- sc->beacon.bmisscnt = 0; +- } ++ if (sc->beacon.bmisscnt != 0) { ++ ath_dbg(common, BSTUCK, "resume beacon xmit after %u misses\n", ++ sc->beacon.bmisscnt); ++ sc->beacon.bmisscnt = 0; + } + + /* +@@ -458,39 +384,37 @@ void ath_beacon_tasklet(unsigned long da + * set to ATH_BCBUF so this check is a noop. + */ + if (sc->beacon.updateslot == UPDATE) { +- sc->beacon.updateslot = COMMIT; /* commit next beacon */ ++ sc->beacon.updateslot = COMMIT; + sc->beacon.slotupdate = slot; +- } else if (sc->beacon.updateslot == COMMIT && sc->beacon.slotupdate == slot) { ++ } else if (sc->beacon.updateslot == COMMIT && ++ sc->beacon.slotupdate == slot) { + ah->slottime = sc->beacon.slottime; + ath9k_hw_init_global_settings(ah); + sc->beacon.updateslot = OK; + } +- if (bfaddr != 0) { + -+ if (aniState->ofdmWeakSigDetect != weak_sig) - ath9k_hw_ani_control(ah, - ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, - entry_ofdm->ofdm_weak_signal_on); ++ if (bf) { ++ ath9k_reset_beacon_status(sc); + -+ if (aniState->ofdmNoiseImmunityLevel >= ATH9K_ANI_OFDM_DEF_LEVEL) { -+ ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH; -+ ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI; -+ } else { -+ ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH_BELOW_INI; -+ ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW; + /* NB: cabq traffic should already be queued and primed */ +- ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bfaddr); ++ ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bf->bf_daddr); + + if (!edma) + ath9k_hw_txstart(ah, sc->beacon.beaconq); +- +- sc->beacon.ast_be_xmit += bc; /* XXX per-vif? */ } } -@@ -308,11 +196,6 @@ static void ath9k_hw_ani_ofdm_err_trigge - if (!DO_ANI(ah)) - return; - -- if (!use_new_ani(ah)) { -- ath9k_hw_ani_ofdm_err_trigger_old(ah); -- return; +-static void ath9k_beacon_init(struct ath_softc *sc, +- u32 next_beacon, +- u32 beacon_period) ++static void ath9k_beacon_init(struct ath_softc *sc, u32 nexttbtt, u32 intval) + { +- if (test_bit(SC_OP_TSF_RESET, &sc->sc_flags)) { +- ath9k_ps_wakeup(sc); +- ath9k_hw_reset_tsf(sc->sc_ah); - } - - aniState = &ah->curchan->ani; - - if (aniState->ofdmNoiseImmunityLevel < ATH9K_ANI_OFDM_MAX_LEVEL) -@@ -329,22 +212,18 @@ static void ath9k_hw_set_cck_nil(struct - const struct ani_ofdm_level_entry *entry_ofdm; - const struct ani_cck_level_entry *entry_cck; - -- aniState->noiseFloor = BEACON_RSSI(ah); - ath_dbg(common, ANI, "**** ccklevel %d=>%d, rssi=%d[lo=%d hi=%d]\n", - aniState->cckNoiseImmunityLevel, immunityLevel, -- aniState->noiseFloor, aniState->rssiThrLow, -+ BEACON_RSSI(ah), aniState->rssiThrLow, - aniState->rssiThrHigh); - -- if ((ah->opmode == NL80211_IFTYPE_STATION || -- ah->opmode == NL80211_IFTYPE_ADHOC) && -- aniState->noiseFloor <= aniState->rssiThrLow && -+ if (ah->opmode == NL80211_IFTYPE_STATION && -+ BEACON_RSSI(ah) <= aniState->rssiThrLow && - immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI) - immunityLevel = ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI; - - if (aniState->update_ani) -- aniState->cckNoiseImmunityLevel = -- (immunityLevel > ATH9K_ANI_CCK_DEF_LEVEL) ? -- immunityLevel : ATH9K_ANI_CCK_DEF_LEVEL; -+ aniState->cckNoiseImmunityLevel = immunityLevel; - - entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel]; - entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel]; -@@ -372,70 +251,12 @@ static void ath9k_hw_ani_cck_err_trigger - if (!DO_ANI(ah)) - return; +- ath9k_hw_beaconinit(sc->sc_ah, next_beacon, beacon_period); ++ struct ath_hw *ah = sc->sc_ah; -- if (!use_new_ani(ah)) { -- ath9k_hw_ani_cck_err_trigger_old(ah); -- return; +- if (test_bit(SC_OP_TSF_RESET, &sc->sc_flags)) { +- ath9k_ps_restore(sc); +- clear_bit(SC_OP_TSF_RESET, &sc->sc_flags); - } -- - aniState = &ah->curchan->ani; ++ ath9k_hw_disable_interrupts(ah); ++ ath9k_hw_reset_tsf(ah); ++ ath9k_beaconq_config(sc); ++ ath9k_hw_beaconinit(ah, nexttbtt, intval); ++ sc->beacon.bmisscnt = 0; ++ ath9k_hw_set_interrupts(ah); ++ ath9k_hw_enable_interrupts(ah); + } + + /* +@@ -498,32 +422,27 @@ static void ath9k_beacon_init(struct ath + * burst together. For the former arrange for the SWBA to be delivered for each + * slot. Slots that are not occupied will generate nothing. + */ +-static void ath_beacon_config_ap(struct ath_softc *sc, +- struct ath_beacon_config *conf) ++static void ath9k_beacon_config_ap(struct ath_softc *sc, ++ struct ath_beacon_config *conf) + { + struct ath_hw *ah = sc->sc_ah; ++ struct ath_common *common = ath9k_hw_common(ah); + u32 nexttbtt, intval; + + /* NB: the beacon interval is kept internally in TU's */ + intval = TU_TO_USEC(conf->beacon_interval); +- intval /= ATH_BCBUF; /* for staggered beacons */ ++ intval /= ATH_BCBUF; + nexttbtt = intval; - if (aniState->cckNoiseImmunityLevel < ATH9K_ANI_CCK_MAX_LEVEL) - ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel + 1); +- /* +- * In AP mode we enable the beacon timers and SWBA interrupts to +- * prepare beacon frames. +- */ +- ah->imask |= ATH9K_INT_SWBA; +- ath_beaconq_config(sc); ++ if (conf->enable_beacon) ++ ah->imask |= ATH9K_INT_SWBA; ++ else ++ ah->imask &= ~ATH9K_INT_SWBA; + +- /* Set the computed AP beacon timers */ ++ ath_dbg(common, BEACON, "AP nexttbtt: %u intval: %u conf_intval: %u\n", ++ nexttbtt, intval, conf->beacon_interval); + +- ath9k_hw_disable_interrupts(ah); +- set_bit(SC_OP_TSF_RESET, &sc->sc_flags); + ath9k_beacon_init(sc, nexttbtt, intval); +- sc->beacon.bmisscnt = 0; +- ath9k_hw_set_interrupts(ah); +- ath9k_hw_enable_interrupts(ah); } --static void ath9k_hw_ani_lower_immunity_old(struct ath_hw *ah) --{ -- struct ar5416AniState *aniState; -- int32_t rssi; -- -- aniState = &ah->curchan->ani; -- -- if (ah->opmode == NL80211_IFTYPE_AP) { -- if (aniState->firstepLevel > 0) { -- if (ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel - 1)) -- return; -- } -- } else { -- rssi = BEACON_RSSI(ah); -- if (rssi > aniState->rssiThrHigh) { -- /* XXX: Handle me */ -- } else if (rssi > aniState->rssiThrLow) { -- if (aniState->ofdmWeakSigDetectOff) { -- if (ath9k_hw_ani_control(ah, -- ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, -- true)) -- return; -- } -- if (aniState->firstepLevel > 0) { -- if (ath9k_hw_ani_control(ah, -- ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel - 1)) -- return; -- } -- } else { -- if (aniState->firstepLevel > 0) { -- if (ath9k_hw_ani_control(ah, -- ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel - 1)) -- return; -- } -- } -- } + /* +@@ -534,8 +453,8 @@ static void ath_beacon_config_ap(struct + * we'll receive a BMISS interrupt when we stop seeing beacons from the AP + * we've associated with. + */ +-static void ath_beacon_config_sta(struct ath_softc *sc, +- struct ath_beacon_config *conf) ++static void ath9k_beacon_config_sta(struct ath_softc *sc, ++ struct ath_beacon_config *conf) + { + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); +@@ -654,8 +573,8 @@ static void ath_beacon_config_sta(struct + ath9k_hw_enable_interrupts(ah); + } + +-static void ath_beacon_config_adhoc(struct ath_softc *sc, +- struct ath_beacon_config *conf) ++static void ath9k_beacon_config_adhoc(struct ath_softc *sc, ++ struct ath_beacon_config *conf) + { + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); +@@ -669,82 +588,53 @@ static void ath_beacon_config_adhoc(stru + tsf = roundup(ath9k_hw_gettsf32(ah) + TU_TO_USEC(FUDGE), intval); + nexttbtt = tsf + intval; + +- ath_dbg(common, BEACON, "IBSS nexttbtt %u intval %u (%u)\n", +- nexttbtt, intval, conf->beacon_interval); - -- if (aniState->spurImmunityLevel > 0) { -- if (ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, -- aniState->spurImmunityLevel - 1)) -- return; -- } +- /* +- * In IBSS mode enable the beacon timers but only enable SWBA interrupts +- * if we need to manually prepare beacon frames. Otherwise we use a +- * self-linked tx descriptor and let the hardware deal with things. +- */ +- ah->imask |= ATH9K_INT_SWBA; - -- if (aniState->noiseImmunityLevel > 0) { -- ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, -- aniState->noiseImmunityLevel - 1); -- return; -- } --} +- ath_beaconq_config(sc); ++ if (conf->enable_beacon) ++ ah->imask |= ATH9K_INT_SWBA; ++ else ++ ah->imask &= ~ATH9K_INT_SWBA; + +- /* Set the computed ADHOC beacon timers */ ++ ath_dbg(common, BEACON, "IBSS nexttbtt: %u intval: %u conf_intval: %u\n", ++ nexttbtt, intval, conf->beacon_interval); + +- ath9k_hw_disable_interrupts(ah); + ath9k_beacon_init(sc, nexttbtt, intval); +- sc->beacon.bmisscnt = 0; - - /* - * only lower either OFDM or CCK errors per turn - * we lower the other one next time -@@ -446,11 +267,6 @@ static void ath9k_hw_ani_lower_immunity( +- ath9k_hw_set_interrupts(ah); +- ath9k_hw_enable_interrupts(ah); + } - aniState = &ah->curchan->ani; +-static bool ath9k_allow_beacon_config(struct ath_softc *sc, +- struct ieee80211_vif *vif) ++bool ath9k_allow_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif) + { +- struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); +- struct ieee80211_bss_conf *bss_conf = &vif->bss_conf; + struct ath_vif *avp = (void *)vif->drv_priv; -- if (!use_new_ani(ah)) { -- ath9k_hw_ani_lower_immunity_old(ah); -- return; +- /* +- * Can not have different beacon interval on multiple +- * AP interface case +- */ +- if ((sc->sc_ah->opmode == NL80211_IFTYPE_AP) && +- (sc->nbcnvifs > 1) && +- (vif->type == NL80211_IFTYPE_AP) && +- (cur_conf->beacon_interval != bss_conf->beacon_int)) { +- ath_dbg(common, CONFIG, +- "Changing beacon interval of multiple AP interfaces !\n"); +- return false; - } -- - /* lower OFDM noise immunity */ - if (aniState->ofdmNoiseImmunityLevel > 0 && - (aniState->ofdmsTurn || aniState->cckNoiseImmunityLevel == 0)) { -@@ -463,72 +279,6 @@ static void ath9k_hw_ani_lower_immunity( - ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel - 1); +- /* +- * Can not configure station vif's beacon config +- * while on AP opmode +- */ +- if ((sc->sc_ah->opmode == NL80211_IFTYPE_AP) && +- (vif->type != NL80211_IFTYPE_AP)) { +- ath_dbg(common, CONFIG, +- "STA vif's beacon not allowed on AP mode\n"); +- return false; ++ if (sc->sc_ah->opmode == NL80211_IFTYPE_AP) { ++ if ((vif->type != NL80211_IFTYPE_AP) || ++ (sc->nbcnvifs > 1)) { ++ ath_dbg(common, CONFIG, ++ "An AP interface is already present !\n"); ++ return false; ++ } + } +- /* +- * Do not allow beacon config if HW was already configured +- * with another STA vif +- */ +- if ((sc->sc_ah->opmode == NL80211_IFTYPE_STATION) && +- (vif->type == NL80211_IFTYPE_STATION) && +- test_bit(SC_OP_BEACONS, &sc->sc_flags) && +- !avp->primary_sta_vif) { +- ath_dbg(common, CONFIG, +- "Beacon already configured for a station interface\n"); +- return false; ++ ++ if (sc->sc_ah->opmode == NL80211_IFTYPE_STATION) { ++ if ((vif->type == NL80211_IFTYPE_STATION) && ++ test_bit(SC_OP_BEACONS, &sc->sc_flags) && ++ !avp->primary_sta_vif) { ++ ath_dbg(common, CONFIG, ++ "Beacon already configured for a station interface\n"); ++ return false; ++ } + } ++ + return true; } --static void ath9k_ani_reset_old(struct ath_hw *ah, bool is_scanning) --{ -- struct ar5416AniState *aniState; -- struct ath9k_channel *chan = ah->curchan; -- struct ath_common *common = ath9k_hw_common(ah); -- -- if (!DO_ANI(ah)) +-void ath_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif) ++static void ath9k_cache_beacon_config(struct ath_softc *sc, ++ struct ieee80211_bss_conf *bss_conf) + { ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; +- struct ieee80211_bss_conf *bss_conf = &vif->bss_conf; + +- if (!ath9k_allow_beacon_config(sc, vif)) - return; ++ ath_dbg(common, BEACON, ++ "Caching beacon data for BSS: %pM\n", bss_conf->bssid); + +- /* Setup the beacon configuration parameters */ + cur_conf->beacon_interval = bss_conf->beacon_int; + cur_conf->dtim_period = bss_conf->dtim_period; + cur_conf->listen_interval = 1; +@@ -769,73 +659,59 @@ void ath_beacon_config(struct ath_softc + if (cur_conf->dtim_period == 0) + cur_conf->dtim_period = 1; + +- ath_set_beacon(sc); + } + +-static bool ath_has_valid_bslot(struct ath_softc *sc) ++void ath9k_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif, ++ u32 changed) + { +- struct ath_vif *avp; +- int slot; +- bool found = false; ++ struct ieee80211_bss_conf *bss_conf = &vif->bss_conf; ++ struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; + +- for (slot = 0; slot < ATH_BCBUF; slot++) { +- if (sc->beacon.bslot[slot]) { +- avp = (void *)sc->beacon.bslot[slot]->drv_priv; +- if (avp->is_bslot_active) { +- found = true; +- break; +- } ++ ath9k_cache_beacon_config(sc, bss_conf); ++ ++ if (sc->sc_ah->opmode == NL80211_IFTYPE_STATION) { ++ ath9k_set_beacon(sc); ++ set_bit(SC_OP_BEACONS, &sc->sc_flags); ++ } else { ++ /* ++ * Take care of multiple interfaces when ++ * enabling/disabling SWBA. ++ */ ++ if (changed & BSS_CHANGED_BEACON_ENABLED) { ++ if (!bss_conf->enable_beacon && ++ (sc->nbcnvifs <= 1)) ++ cur_conf->enable_beacon = false; ++ else if (bss_conf->enable_beacon) ++ cur_conf->enable_beacon = true; + } ++ ++ ath9k_set_beacon(sc); ++ ++ if (cur_conf->enable_beacon) ++ set_bit(SC_OP_BEACONS, &sc->sc_flags); ++ else ++ clear_bit(SC_OP_BEACONS, &sc->sc_flags); + } +- return found; + } + - -- aniState = &ah->curchan->ani; -- -- if (ah->opmode != NL80211_IFTYPE_STATION -- && ah->opmode != NL80211_IFTYPE_ADHOC) { -- ath_dbg(common, ANI, "Reset ANI state opmode %u\n", ah->opmode); -- ah->stats.ast_ani_reset++; +-void ath_set_beacon(struct ath_softc *sc) ++void ath9k_set_beacon(struct ath_softc *sc) + { + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; + + switch (sc->sc_ah->opmode) { + case NL80211_IFTYPE_AP: +- if (ath_has_valid_bslot(sc)) +- ath_beacon_config_ap(sc, cur_conf); ++ ath9k_beacon_config_ap(sc, cur_conf); + break; + case NL80211_IFTYPE_ADHOC: + case NL80211_IFTYPE_MESH_POINT: +- ath_beacon_config_adhoc(sc, cur_conf); ++ ath9k_beacon_config_adhoc(sc, cur_conf); + break; + case NL80211_IFTYPE_STATION: +- ath_beacon_config_sta(sc, cur_conf); ++ ath9k_beacon_config_sta(sc, cur_conf); + break; + default: + ath_dbg(common, CONFIG, "Unsupported beaconing mode\n"); + return; + } - -- if (ah->opmode == NL80211_IFTYPE_AP) { -- /* -- * ath9k_hw_ani_control() will only process items set on -- * ah->ani_function -- */ -- if (IS_CHAN_2GHZ(chan)) -- ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL | -- ATH9K_ANI_FIRSTEP_LEVEL); -- else -- ah->ani_function = 0; -- } +- set_bit(SC_OP_BEACONS, &sc->sc_flags); +-} - -- ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, 0); -- ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0); -- ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0); -- ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, -- !ATH9K_ANI_USE_OFDM_WEAK_SIG); -- ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR, -- ATH9K_ANI_CCK_WEAK_SIG_THR); +-void ath9k_set_beaconing_status(struct ath_softc *sc, bool status) +-{ +- struct ath_hw *ah = sc->sc_ah; - -- ath9k_ani_restart(ah); +- if (!ath_has_valid_bslot(sc)) { +- clear_bit(SC_OP_BEACONS, &sc->sc_flags); - return; - } - -- if (aniState->noiseImmunityLevel != 0) -- ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, -- aniState->noiseImmunityLevel); -- if (aniState->spurImmunityLevel != 0) -- ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, -- aniState->spurImmunityLevel); -- if (aniState->ofdmWeakSigDetectOff) -- ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, -- !aniState->ofdmWeakSigDetectOff); -- if (aniState->cckWeakSigThreshold) -- ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR, -- aniState->cckWeakSigThreshold); -- if (aniState->firstepLevel != 0) -- ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, -- aniState->firstepLevel); -- -- ath9k_ani_restart(ah); -- -- ENABLE_REGWRITE_BUFFER(ah); -- -- REG_WRITE(ah, AR_PHY_ERR_MASK_1, AR_PHY_ERR_OFDM_TIMING); -- REG_WRITE(ah, AR_PHY_ERR_MASK_2, AR_PHY_ERR_CCK_TIMING); -- -- REGWRITE_BUFFER_FLUSH(ah); --} -- - /* - * Restore the ANI parameters in the HAL and reset the statistics. - * This routine should be called for every hardware reset and for -@@ -539,13 +289,11 @@ void ath9k_ani_reset(struct ath_hw *ah, - struct ar5416AniState *aniState = &ah->curchan->ani; - struct ath9k_channel *chan = ah->curchan; - struct ath_common *common = ath9k_hw_common(ah); -+ int ofdm_nil, cck_nil; +- ath9k_ps_wakeup(sc); +- if (status) { +- /* Re-enable beaconing */ +- ah->imask |= ATH9K_INT_SWBA; +- ath9k_hw_set_interrupts(ah); +- } else { +- /* Disable SWBA interrupt */ +- ah->imask &= ~ATH9K_INT_SWBA; +- ath9k_hw_set_interrupts(ah); +- tasklet_kill(&sc->bcon_tasklet); +- ath9k_hw_stop_dma_queue(ah, sc->beacon.beaconq); +- } +- ath9k_ps_restore(sc); + } +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -206,10 +206,9 @@ static ssize_t write_file_disable_ani(st - if (!DO_ANI(ah)) - return; + if (disable_ani) { + clear_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- del_timer_sync(&common->ani.timer); ++ ath_stop_ani(sc); + } else { +- set_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- ath_start_ani(common); ++ ath_check_ani(sc); + } + + return count; +--- a/drivers/net/wireless/ath/ath9k/debug.h ++++ b/drivers/net/wireless/ath/ath9k/debug.h +@@ -32,6 +32,19 @@ struct ath_buf; + #define RESET_STAT_INC(sc, type) do { } while (0) + #endif + ++enum ath_reset_type { ++ RESET_TYPE_BB_HANG, ++ RESET_TYPE_BB_WATCHDOG, ++ RESET_TYPE_FATAL_INT, ++ RESET_TYPE_TX_ERROR, ++ RESET_TYPE_TX_HANG, ++ RESET_TYPE_PLL_HANG, ++ RESET_TYPE_MAC_HANG, ++ RESET_TYPE_BEACON_STUCK, ++ RESET_TYPE_MCI, ++ __RESET_TYPE_MAX ++}; ++ + #ifdef CONFIG_ATH9K_DEBUGFS -- if (!use_new_ani(ah)) -- return ath9k_ani_reset_old(ah, is_scanning); + /** +@@ -209,17 +222,6 @@ struct ath_rx_stats { + u32 rx_frags; + }; + +-enum ath_reset_type { +- RESET_TYPE_BB_HANG, +- RESET_TYPE_BB_WATCHDOG, +- RESET_TYPE_FATAL_INT, +- RESET_TYPE_TX_ERROR, +- RESET_TYPE_TX_HANG, +- RESET_TYPE_PLL_HANG, +- RESET_TYPE_MAC_HANG, +- __RESET_TYPE_MAX +-}; - - BUG_ON(aniState == NULL); - ah->stats.ast_ani_reset++; + struct ath_stats { + struct ath_interrupt_stats istats; + struct ath_tx_stats txstats[ATH9K_NUM_TX_QUEUES]; +--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c +@@ -1111,7 +1111,7 @@ static int ath9k_htc_add_interface(struc + + if ((priv->ah->opmode == NL80211_IFTYPE_AP) && + !test_bit(OP_ANI_RUNNING, &priv->op_flags)) { +- ath9k_hw_set_tsfadjust(priv->ah, 1); ++ ath9k_hw_set_tsfadjust(priv->ah, true); + ath9k_htc_start_ani(priv); + } + +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -2908,9 +2908,9 @@ void ath9k_hw_reset_tsf(struct ath_hw *a + } + EXPORT_SYMBOL(ath9k_hw_reset_tsf); -@@ -563,6 +311,11 @@ void ath9k_ani_reset(struct ath_hw *ah, - /* always allow mode (on/off) to be controlled */ - ah->ani_function |= ATH9K_ANI_MODE; +-void ath9k_hw_set_tsfadjust(struct ath_hw *ah, u32 setting) ++void ath9k_hw_set_tsfadjust(struct ath_hw *ah, bool set) + { +- if (setting) ++ if (set) + ah->misc_mode |= AR_PCU_TX_ADD_TSF; + else + ah->misc_mode &= ~AR_PCU_TX_ADD_TSF; +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -943,7 +943,7 @@ u32 ath9k_hw_gettsf32(struct ath_hw *ah) + u64 ath9k_hw_gettsf64(struct ath_hw *ah); + void ath9k_hw_settsf64(struct ath_hw *ah, u64 tsf64); + void ath9k_hw_reset_tsf(struct ath_hw *ah); +-void ath9k_hw_set_tsfadjust(struct ath_hw *ah, u32 setting); ++void ath9k_hw_set_tsfadjust(struct ath_hw *ah, bool set); + void ath9k_hw_init_global_settings(struct ath_hw *ah); + u32 ar9003_get_pll_sqsum_dvc(struct ath_hw *ah); + void ath9k_hw_set11nmac2040(struct ath_hw *ah); +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -560,7 +560,7 @@ static int ath9k_init_softc(u16 devid, s + spin_lock_init(&sc->debug.samp_lock); + #endif + tasklet_init(&sc->intr_tq, ath9k_tasklet, (unsigned long)sc); +- tasklet_init(&sc->bcon_tasklet, ath_beacon_tasklet, ++ tasklet_init(&sc->bcon_tasklet, ath9k_beacon_tasklet, + (unsigned long)sc); + + INIT_WORK(&sc->hw_reset_work, ath_reset_work); +--- a/drivers/net/wireless/ath/ath9k/link.c ++++ b/drivers/net/wireless/ath/ath9k/link.c +@@ -50,8 +50,7 @@ void ath_tx_complete_poll_work(struct wo + if (needreset) { + ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, + "tx hung, resetting the chip\n"); +- RESET_STAT_INC(sc, RESET_TYPE_TX_HANG); +- ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ++ ath9k_queue_reset(sc, RESET_TYPE_TX_HANG); + return; + } -+ ofdm_nil = max_t(int, ATH9K_ANI_OFDM_DEF_LEVEL, -+ aniState->ofdmNoiseImmunityLevel); -+ cck_nil = max_t(int, ATH9K_ANI_CCK_DEF_LEVEL, -+ aniState->cckNoiseImmunityLevel); -+ - if (is_scanning || - (ah->opmode != NL80211_IFTYPE_STATION && - ah->opmode != NL80211_IFTYPE_ADHOC)) { -@@ -586,8 +339,8 @@ void ath9k_ani_reset(struct ath_hw *ah, - aniState->cckNoiseImmunityLevel); - - aniState->update_ani = false; -- ath9k_hw_set_ofdm_nil(ah, ATH9K_ANI_OFDM_DEF_LEVEL); -- ath9k_hw_set_cck_nil(ah, ATH9K_ANI_CCK_DEF_LEVEL); -+ ofdm_nil = ATH9K_ANI_OFDM_DEF_LEVEL; -+ cck_nil = ATH9K_ANI_CCK_DEF_LEVEL; +@@ -69,6 +68,7 @@ void ath_hw_check(struct work_struct *wo + unsigned long flags; + int busy; + u8 is_alive, nbeacon = 1; ++ enum ath_reset_type type; + + ath9k_ps_wakeup(sc); + is_alive = ath9k_hw_check_alive(sc->sc_ah); +@@ -78,7 +78,7 @@ void ath_hw_check(struct work_struct *wo + else if (!is_alive && AR_SREV_9300(sc->sc_ah)) { + ath_dbg(common, RESET, + "DCU stuck is detected. Schedule chip reset\n"); +- RESET_STAT_INC(sc, RESET_TYPE_MAC_HANG); ++ type = RESET_TYPE_MAC_HANG; + goto sched_reset; + } + +@@ -90,7 +90,7 @@ void ath_hw_check(struct work_struct *wo + busy, sc->hw_busy_count + 1); + if (busy >= 99) { + if (++sc->hw_busy_count >= 3) { +- RESET_STAT_INC(sc, RESET_TYPE_BB_HANG); ++ type = RESET_TYPE_BB_HANG; + goto sched_reset; } - } else { - /* -@@ -603,11 +356,9 @@ void ath9k_ani_reset(struct ath_hw *ah, - aniState->cckNoiseImmunityLevel); - - aniState->update_ani = true; -- ath9k_hw_set_ofdm_nil(ah, -- aniState->ofdmNoiseImmunityLevel); -- ath9k_hw_set_cck_nil(ah, -- aniState->cckNoiseImmunityLevel); + } else if (busy >= 0) { +@@ -102,7 +102,7 @@ void ath_hw_check(struct work_struct *wo + goto out; + + sched_reset: +- ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ++ ath9k_queue_reset(sc, type); + out: + ath9k_ps_restore(sc); + } +@@ -119,8 +119,7 @@ static bool ath_hw_pll_rx_hang_check(str + count++; + if (count == 3) { + ath_dbg(common, RESET, "PLL WAR, resetting the chip\n"); +- RESET_STAT_INC(sc, RESET_TYPE_PLL_HANG); +- ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ++ ath9k_queue_reset(sc, RESET_TYPE_PLL_HANG); + count = 0; + return true; + } +@@ -432,26 +431,69 @@ set_timer: } -+ ath9k_hw_set_ofdm_nil(ah, ofdm_nil); -+ ath9k_hw_set_cck_nil(ah, cck_nil); + } - /* - * enable phy counters if hw supports or if not, enable phy -@@ -627,9 +378,6 @@ static bool ath9k_hw_ani_read_counters(s +-void ath_start_ani(struct ath_common *common) ++void ath_start_ani(struct ath_softc *sc) { - struct ath_common *common = ath9k_hw_common(ah); - struct ar5416AniState *aniState = &ah->curchan->ani; -- u32 ofdm_base = 0; -- u32 cck_base = 0; -- u32 ofdmPhyErrCnt, cckPhyErrCnt; - u32 phyCnt1, phyCnt2; - int32_t listenTime; - -@@ -642,11 +390,6 @@ static bool ath9k_hw_ani_read_counters(s - return false; - } +- struct ath_hw *ah = common->ah; ++ struct ath_hw *ah = sc->sc_ah; ++ struct ath_common *common = ath9k_hw_common(ah); + unsigned long timestamp = jiffies_to_msecs(jiffies); +- struct ath_softc *sc = (struct ath_softc *) common->priv; -- if (!use_new_ani(ah)) { -- ofdm_base = AR_PHY_COUNTMAX - ah->config.ofdm_trig_high; -- cck_base = AR_PHY_COUNTMAX - ah->config.cck_trig_high; -- } +- if (!test_bit(SC_OP_ANI_RUN, &sc->sc_flags)) +- return; - - aniState->listenTime += listenTime; - - ath9k_hw_update_mibstats(ah, &ah->ah_mibStats); -@@ -654,35 +397,12 @@ static bool ath9k_hw_ani_read_counters(s - phyCnt1 = REG_READ(ah, AR_PHY_ERR_1); - phyCnt2 = REG_READ(ah, AR_PHY_ERR_2); - -- if (!use_new_ani(ah) && (phyCnt1 < ofdm_base || phyCnt2 < cck_base)) { -- if (phyCnt1 < ofdm_base) { -- ath_dbg(common, ANI, -- "phyCnt1 0x%x, resetting counter value to 0x%x\n", -- phyCnt1, ofdm_base); -- REG_WRITE(ah, AR_PHY_ERR_1, ofdm_base); -- REG_WRITE(ah, AR_PHY_ERR_MASK_1, -- AR_PHY_ERR_OFDM_TIMING); -- } -- if (phyCnt2 < cck_base) { -- ath_dbg(common, ANI, -- "phyCnt2 0x%x, resetting counter value to 0x%x\n", -- phyCnt2, cck_base); -- REG_WRITE(ah, AR_PHY_ERR_2, cck_base); -- REG_WRITE(ah, AR_PHY_ERR_MASK_2, -- AR_PHY_ERR_CCK_TIMING); -- } -- return false; -- } -+ ah->stats.ast_ani_ofdmerrs += phyCnt1 - aniState->ofdmPhyErrCount; -+ aniState->ofdmPhyErrCount = phyCnt1; +- if (sc->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL) ++ if (common->disable_ani || ++ !test_bit(SC_OP_ANI_RUN, &sc->sc_flags) || ++ (sc->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)) + return; + + common->ani.longcal_timer = timestamp; + common->ani.shortcal_timer = timestamp; + common->ani.checkani_timer = timestamp; + ++ ath_dbg(common, ANI, "Starting ANI\n"); + mod_timer(&common->ani.timer, + jiffies + msecs_to_jiffies((u32)ah->config.ani_poll_interval)); + } + ++void ath_stop_ani(struct ath_softc *sc) ++{ ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); ++ ++ ath_dbg(common, ANI, "Stopping ANI\n"); ++ del_timer_sync(&common->ani.timer); ++} ++ ++void ath_check_ani(struct ath_softc *sc) ++{ ++ struct ath_hw *ah = sc->sc_ah; ++ struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf; ++ ++ /* ++ * Check for the various conditions in which ANI has to ++ * be stopped. ++ */ ++ if (ah->opmode == NL80211_IFTYPE_ADHOC) { ++ if (!cur_conf->enable_beacon) ++ goto stop_ani; ++ } else if (ah->opmode == NL80211_IFTYPE_AP) { ++ if (!cur_conf->enable_beacon) { ++ /* ++ * Disable ANI only when there are no ++ * associated stations. ++ */ ++ if (!test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) ++ goto stop_ani; ++ } ++ } else if (ah->opmode == NL80211_IFTYPE_STATION) { ++ if (!test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) ++ goto stop_ani; ++ } + -+ ah->stats.ast_ani_cckerrs += phyCnt2 - aniState->cckPhyErrCount; -+ aniState->cckPhyErrCount = phyCnt2; ++ set_bit(SC_OP_ANI_RUN, &sc->sc_flags); ++ ath_start_ani(sc); ++ return; ++ ++stop_ani: ++ clear_bit(SC_OP_ANI_RUN, &sc->sc_flags); ++ ath_stop_ani(sc); ++} ++ + void ath_update_survey_nf(struct ath_softc *sc, int channel) + { + struct ath_hw *ah = sc->sc_ah; +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -167,8 +167,6 @@ static void ath_cancel_work(struct ath_s -- ofdmPhyErrCnt = phyCnt1 - ofdm_base; -- ah->stats.ast_ani_ofdmerrs += -- ofdmPhyErrCnt - aniState->ofdmPhyErrCount; -- aniState->ofdmPhyErrCount = ofdmPhyErrCnt; + static void ath_restart_work(struct ath_softc *sc) + { +- struct ath_common *common = ath9k_hw_common(sc->sc_ah); - -- cckPhyErrCnt = phyCnt2 - cck_base; -- ah->stats.ast_ani_cckerrs += -- cckPhyErrCnt - aniState->cckPhyErrCount; -- aniState->cckPhyErrCount = cckPhyErrCnt; - return true; + ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0); + + if (AR_SREV_9340(sc->sc_ah) || AR_SREV_9485(sc->sc_ah) || +@@ -177,21 +175,18 @@ static void ath_restart_work(struct ath_ + msecs_to_jiffies(ATH_PLL_WORK_INTERVAL)); + + ath_start_rx_poll(sc, 3); +- +- if (!common->disable_ani) +- ath_start_ani(common); ++ ath_start_ani(sc); } -@@ -716,21 +436,10 @@ void ath9k_hw_ani_monitor(struct ath_hw - - if (aniState->listenTime > ah->aniperiod) { - if (cckPhyErrRate < ah->config.cck_trig_low && -- ((ofdmPhyErrRate < ah->config.ofdm_trig_low && -- aniState->ofdmNoiseImmunityLevel < -- ATH9K_ANI_OFDM_DEF_LEVEL) || -- (ofdmPhyErrRate < ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI && -- aniState->ofdmNoiseImmunityLevel >= -- ATH9K_ANI_OFDM_DEF_LEVEL))) { -+ ofdmPhyErrRate < ah->config.ofdm_trig_low) { - ath9k_hw_ani_lower_immunity(ah); - aniState->ofdmsTurn = !aniState->ofdmsTurn; -- } else if ((ofdmPhyErrRate > ah->config.ofdm_trig_high && -- aniState->ofdmNoiseImmunityLevel >= -- ATH9K_ANI_OFDM_DEF_LEVEL) || -- (ofdmPhyErrRate > -- ATH9K_ANI_OFDM_TRIG_HIGH_BELOW_INI && -- aniState->ofdmNoiseImmunityLevel < -- ATH9K_ANI_OFDM_DEF_LEVEL)) { -+ } else if (ofdmPhyErrRate > ah->config.ofdm_trig_high) { - ath9k_hw_ani_ofdm_err_trigger(ah); - aniState->ofdmsTurn = false; - } else if (cckPhyErrRate > ah->config.cck_trig_high) { -@@ -778,49 +487,6 @@ void ath9k_hw_disable_mib_counters(struc + static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx, bool flush) + { + struct ath_hw *ah = sc->sc_ah; +- struct ath_common *common = ath9k_hw_common(ah); + bool ret = true; + + ieee80211_stop_queues(sc->hw); + + sc->hw_busy_count = 0; +- del_timer_sync(&common->ani.timer); ++ ath_stop_ani(sc); + del_timer_sync(&sc->rx_poll_timer); + + ath9k_debug_samp_bb_mac(sc); +@@ -236,7 +231,7 @@ static bool ath_complete_reset(struct at + if (!test_bit(SC_OP_BEACONS, &sc->sc_flags)) + goto work; + +- ath_set_beacon(sc); ++ ath9k_set_beacon(sc); + + if (ah->opmode == NL80211_IFTYPE_STATION && + test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) { +@@ -365,6 +360,7 @@ void ath9k_tasklet(unsigned long data) + struct ath_softc *sc = (struct ath_softc *)data; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); ++ enum ath_reset_type type; + unsigned long flags; + u32 status = sc->intrstatus; + u32 rxmask; +@@ -374,18 +370,13 @@ void ath9k_tasklet(unsigned long data) + + if ((status & ATH9K_INT_FATAL) || + (status & ATH9K_INT_BB_WATCHDOG)) { +-#ifdef CONFIG_ATH9K_DEBUGFS +- enum ath_reset_type type; + + if (status & ATH9K_INT_FATAL) + type = RESET_TYPE_FATAL_INT; + else + type = RESET_TYPE_BB_WATCHDOG; + +- RESET_STAT_INC(sc, type); +-#endif +- set_bit(SC_OP_HW_RESET, &sc->sc_flags); +- ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ++ ath9k_queue_reset(sc, type); + goto out; + } + +@@ -575,6 +566,15 @@ static int ath_reset(struct ath_softc *s + return r; } - EXPORT_SYMBOL(ath9k_hw_disable_mib_counters); --/* -- * Process a MIB interrupt. We may potentially be invoked because -- * any of the MIB counters overflow/trigger so don't assume we're -- * here because a PHY error counter triggered. -- */ --void ath9k_hw_proc_mib_event(struct ath_hw *ah) ++void ath9k_queue_reset(struct ath_softc *sc, enum ath_reset_type type) ++{ ++#ifdef CONFIG_ATH9K_DEBUGFS ++ RESET_STAT_INC(sc, type); ++#endif ++ set_bit(SC_OP_HW_RESET, &sc->sc_flags); ++ ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ++} ++ + void ath_reset_work(struct work_struct *work) + { + struct ath_softc *sc = container_of(work, struct ath_softc, hw_reset_work); +@@ -841,16 +841,6 @@ bool ath9k_uses_beacons(int type) + } + } + +-static void ath9k_reclaim_beacon(struct ath_softc *sc, +- struct ieee80211_vif *vif) -{ -- u32 phyCnt1, phyCnt2; -- -- /* Reset these counters regardless */ -- REG_WRITE(ah, AR_FILT_OFDM, 0); -- REG_WRITE(ah, AR_FILT_CCK, 0); -- if (!(REG_READ(ah, AR_SLP_MIB_CTRL) & AR_SLP_MIB_PENDING)) -- REG_WRITE(ah, AR_SLP_MIB_CTRL, AR_SLP_MIB_CLEAR); -- -- /* Clear the mib counters and save them in the stats */ -- ath9k_hw_update_mibstats(ah, &ah->ah_mibStats); -- -- if (!DO_ANI(ah)) { -- /* -- * We must always clear the interrupt cause by -- * resetting the phy error regs. -- */ -- REG_WRITE(ah, AR_PHY_ERR_1, 0); -- REG_WRITE(ah, AR_PHY_ERR_2, 0); -- return; -- } -- -- /* NB: these are not reset-on-read */ -- phyCnt1 = REG_READ(ah, AR_PHY_ERR_1); -- phyCnt2 = REG_READ(ah, AR_PHY_ERR_2); -- if (((phyCnt1 & AR_MIBCNT_INTRMASK) == AR_MIBCNT_INTRMASK) || -- ((phyCnt2 & AR_MIBCNT_INTRMASK) == AR_MIBCNT_INTRMASK)) { +- struct ath_vif *avp = (void *)vif->drv_priv; - -- if (!use_new_ani(ah)) -- ath9k_hw_ani_read_counters(ah); -- -- /* NB: always restart to insure the h/w counters are reset */ -- ath9k_ani_restart(ah); -- } +- ath9k_set_beaconing_status(sc, false); +- ath_beacon_return(sc, avp); +- ath9k_set_beaconing_status(sc, true); -} --EXPORT_SYMBOL(ath9k_hw_proc_mib_event); - - void ath9k_hw_ani_setup(struct ath_hw *ah) + static void ath9k_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif) { - int i; -@@ -845,50 +511,31 @@ void ath9k_hw_ani_init(struct ath_hw *ah + struct ath9k_vif_iter_data *iter_data = data; +@@ -918,18 +908,14 @@ static void ath9k_calculate_summary_stat - ath_dbg(common, ANI, "Initialize ANI\n"); + ath9k_calculate_iter_data(hw, vif, &iter_data); -- if (use_new_ani(ah)) { -- ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH_NEW; -- ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_NEW; -+ ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH; -+ ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW; +- /* Set BSSID mask. */ + memcpy(common->bssidmask, iter_data.mask, ETH_ALEN); + ath_hw_setbssidmask(common); -- ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH_NEW; -- ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW_NEW; -- } else { -- ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH_OLD; -- ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_OLD; +- /* Set op-mode & TSF */ + if (iter_data.naps > 0) { +- ath9k_hw_set_tsfadjust(ah, 1); +- set_bit(SC_OP_TSF_RESET, &sc->sc_flags); ++ ath9k_hw_set_tsfadjust(ah, true); + ah->opmode = NL80211_IFTYPE_AP; + } else { +- ath9k_hw_set_tsfadjust(ah, 0); +- clear_bit(SC_OP_TSF_RESET, &sc->sc_flags); ++ ath9k_hw_set_tsfadjust(ah, false); + + if (iter_data.nmeshes) + ah->opmode = NL80211_IFTYPE_MESH_POINT; +@@ -941,45 +927,14 @@ static void ath9k_calculate_summary_stat + ah->opmode = NL80211_IFTYPE_STATION; + } + +- /* +- * Enable MIB interrupts when there are hardware phy counters. +- */ ++ ath9k_hw_setopmode(ah); ++ + if ((iter_data.nstations + iter_data.nadhocs + iter_data.nmeshes) > 0) + ah->imask |= ATH9K_INT_TSFOOR; + else + ah->imask &= ~ATH9K_INT_TSFOOR; + + ath9k_hw_set_interrupts(ah); - -- ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH_OLD; -- ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW_OLD; -- } -+ ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH; -+ ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW; - - for (i = 0; i < ARRAY_SIZE(ah->channels); i++) { - struct ath9k_channel *chan = &ah->channels[i]; - struct ar5416AniState *ani = &chan->ani; - -- if (use_new_ani(ah)) { -- ani->spurImmunityLevel = -- ATH9K_ANI_SPUR_IMMUNE_LVL_NEW; -+ ani->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL; - -- ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_NEW; -+ ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL; - -- if (AR_SREV_9300_20_OR_LATER(ah)) -- ani->mrcCCKOff = -- !ATH9K_ANI_ENABLE_MRC_CCK; -- else -- ani->mrcCCKOff = true; +- /* Set up ANI */ +- if (iter_data.naps > 0) { +- sc->sc_ah->stats.avgbrssi = ATH_RSSI_DUMMY_MARKER; - -- ani->ofdmsTurn = true; -- } else { -- ani->spurImmunityLevel = -- ATH9K_ANI_SPUR_IMMUNE_LVL_OLD; -- ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_OLD; -+ if (AR_SREV_9300_20_OR_LATER(ah)) -+ ani->mrcCCKOff = -+ !ATH9K_ANI_ENABLE_MRC_CCK; -+ else -+ ani->mrcCCKOff = true; - -- ani->cckWeakSigThreshold = -- ATH9K_ANI_CCK_WEAK_SIG_THR; +- if (!common->disable_ani) { +- set_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- ath_start_ani(common); - } -+ ani->ofdmsTurn = true; - - ani->rssiThrHigh = ATH9K_ANI_RSSI_THR_HIGH; - ani->rssiThrLow = ATH9K_ANI_RSSI_THR_LOW; -- ani->ofdmWeakSigDetectOff = -- !ATH9K_ANI_USE_OFDM_WEAK_SIG; -+ ani->ofdmWeakSigDetect = ATH9K_ANI_USE_OFDM_WEAK_SIG; - ani->cckNoiseImmunityLevel = ATH9K_ANI_CCK_DEF_LEVEL; - ani->ofdmNoiseImmunityLevel = ATH9K_ANI_OFDM_DEF_LEVEL; - ani->update_ani = false; -@@ -898,13 +545,8 @@ void ath9k_hw_ani_init(struct ath_hw *ah - * since we expect some ongoing maintenance on the tables, let's sanity - * check here default level should not modify INI setting. - */ -- if (use_new_ani(ah)) { -- ah->aniperiod = ATH9K_ANI_PERIOD_NEW; -- ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL_NEW; +- - } else { -- ah->aniperiod = ATH9K_ANI_PERIOD_OLD; -- ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL_OLD; +- clear_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- del_timer_sync(&common->ani.timer); +- } +-} +- +-/* Called with sc->mutex held, vif counts set up properly. */ +-static void ath9k_do_vif_add_setup(struct ieee80211_hw *hw, +- struct ieee80211_vif *vif) +-{ +- struct ath_softc *sc = hw->priv; +- +- ath9k_calculate_summary_state(hw, vif); +- +- if (ath9k_uses_beacons(vif->type)) { +- /* Reserve a beacon slot for the vif */ +- ath9k_set_beaconing_status(sc, false); +- ath_beacon_alloc(sc, vif); +- ath9k_set_beaconing_status(sc, true); - } -+ ah->aniperiod = ATH9K_ANI_PERIOD; -+ ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL; - - if (ah->config.enable_ani) - ah->proc_phyerr |= HAL_PROCESS_ANI; ---- a/drivers/net/wireless/ath/ath9k/ani.h -+++ b/drivers/net/wireless/ath/ath9k/ani.h -@@ -24,42 +24,34 @@ - #define BEACON_RSSI(ahp) (ahp->stats.avgbrssi) - - /* units are errors per second */ --#define ATH9K_ANI_OFDM_TRIG_HIGH_OLD 500 --#define ATH9K_ANI_OFDM_TRIG_HIGH_NEW 3500 -+#define ATH9K_ANI_OFDM_TRIG_HIGH 3500 - #define ATH9K_ANI_OFDM_TRIG_HIGH_BELOW_INI 1000 - - /* units are errors per second */ --#define ATH9K_ANI_OFDM_TRIG_LOW_OLD 200 --#define ATH9K_ANI_OFDM_TRIG_LOW_NEW 400 -+#define ATH9K_ANI_OFDM_TRIG_LOW 400 - #define ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI 900 - - /* units are errors per second */ --#define ATH9K_ANI_CCK_TRIG_HIGH_OLD 200 --#define ATH9K_ANI_CCK_TRIG_HIGH_NEW 600 -+#define ATH9K_ANI_CCK_TRIG_HIGH 600 - - /* units are errors per second */ --#define ATH9K_ANI_CCK_TRIG_LOW_OLD 100 --#define ATH9K_ANI_CCK_TRIG_LOW_NEW 300 -+#define ATH9K_ANI_CCK_TRIG_LOW 300 - - #define ATH9K_ANI_NOISE_IMMUNE_LVL 4 - #define ATH9K_ANI_USE_OFDM_WEAK_SIG true - #define ATH9K_ANI_CCK_WEAK_SIG_THR false - --#define ATH9K_ANI_SPUR_IMMUNE_LVL_OLD 7 --#define ATH9K_ANI_SPUR_IMMUNE_LVL_NEW 3 -+#define ATH9K_ANI_SPUR_IMMUNE_LVL 3 - --#define ATH9K_ANI_FIRSTEP_LVL_OLD 0 --#define ATH9K_ANI_FIRSTEP_LVL_NEW 2 -+#define ATH9K_ANI_FIRSTEP_LVL 2 - - #define ATH9K_ANI_RSSI_THR_HIGH 40 - #define ATH9K_ANI_RSSI_THR_LOW 7 - --#define ATH9K_ANI_PERIOD_OLD 100 --#define ATH9K_ANI_PERIOD_NEW 300 -+#define ATH9K_ANI_PERIOD 300 - - /* in ms */ --#define ATH9K_ANI_POLLINTERVAL_OLD 100 --#define ATH9K_ANI_POLLINTERVAL_NEW 1000 -+#define ATH9K_ANI_POLLINTERVAL 1000 - - #define HAL_NOISE_IMMUNE_MAX 4 - #define HAL_SPUR_IMMUNE_MAX 7 -@@ -122,13 +114,12 @@ struct ar5416AniState { - u8 mrcCCKOff; - u8 spurImmunityLevel; - u8 firstepLevel; -- u8 ofdmWeakSigDetectOff; -+ u8 ofdmWeakSigDetect; - u8 cckWeakSigThreshold; - bool update_ani; - u32 listenTime; - int32_t rssiThrLow; - int32_t rssiThrHigh; -- u32 noiseFloor; - u32 ofdmPhyErrCount; - u32 cckPhyErrCount; - int16_t pktRssi[2]; ---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c -@@ -995,141 +995,6 @@ static u32 ar5008_hw_compute_pll_control - return pll; } --static bool ar5008_hw_ani_control_old(struct ath_hw *ah, -- enum ath9k_ani_cmd cmd, -- int param) --{ -- struct ar5416AniState *aniState = &ah->curchan->ani; -- struct ath_common *common = ath9k_hw_common(ah); + static int ath9k_add_interface(struct ieee80211_hw *hw, +@@ -1021,7 +976,10 @@ static int ath9k_add_interface(struct ie + + sc->nvifs++; + +- ath9k_do_vif_add_setup(hw, vif); ++ ath9k_calculate_summary_state(hw, vif); ++ if (ath9k_uses_beacons(vif->type)) ++ ath9k_beacon_assign_slot(sc, vif); ++ + out: + mutex_unlock(&sc->mutex); + ath9k_ps_restore(sc); +@@ -1038,6 +996,7 @@ static int ath9k_change_interface(struct + int ret = 0; + + ath_dbg(common, CONFIG, "Change Interface\n"); ++ + mutex_lock(&sc->mutex); + ath9k_ps_wakeup(sc); + +@@ -1050,15 +1009,16 @@ static int ath9k_change_interface(struct + } + } + +- /* Clean up old vif stuff */ + if (ath9k_uses_beacons(vif->type)) +- ath9k_reclaim_beacon(sc, vif); ++ ath9k_beacon_remove_slot(sc, vif); + +- /* Add new settings */ + vif->type = new_type; + vif->p2p = p2p; + +- ath9k_do_vif_add_setup(hw, vif); ++ ath9k_calculate_summary_state(hw, vif); ++ if (ath9k_uses_beacons(vif->type)) ++ ath9k_beacon_assign_slot(sc, vif); ++ + out: + ath9k_ps_restore(sc); + mutex_unlock(&sc->mutex); +@@ -1078,9 +1038,8 @@ static void ath9k_remove_interface(struc + + sc->nvifs--; + +- /* Reclaim beacon resources */ + if (ath9k_uses_beacons(vif->type)) +- ath9k_reclaim_beacon(sc, vif); ++ ath9k_beacon_remove_slot(sc, vif); + + ath9k_calculate_summary_state(hw, NULL); + +@@ -1388,10 +1347,6 @@ static int ath9k_conf_tx(struct ieee8021 + if (ret) + ath_err(common, "TXQ Update failed\n"); + +- if (sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) +- if (queue == WME_AC_BE && !ret) +- ath_beaconq_config(sc); - -- switch (cmd & ah->ani_function) { -- case ATH9K_ANI_NOISE_IMMUNITY_LEVEL:{ -- u32 level = param; + mutex_unlock(&sc->mutex); + ath9k_ps_restore(sc); + +@@ -1460,85 +1415,36 @@ static int ath9k_set_key(struct ieee8021 + + return ret; + } +-static void ath9k_bss_iter(void *data, u8 *mac, struct ieee80211_vif *vif) ++ ++static void ath9k_bss_assoc_iter(void *data, u8 *mac, struct ieee80211_vif *vif) + { + struct ath_softc *sc = data; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); +- struct ieee80211_bss_conf *bss_conf = &vif->bss_conf; + struct ath_vif *avp = (void *)vif->drv_priv; ++ struct ieee80211_bss_conf *bss_conf = &vif->bss_conf; + unsigned long flags; +- /* +- * Skip iteration if primary station vif's bss info +- * was not changed +- */ ++ + if (test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) + return; + + if (bss_conf->assoc) { + set_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags); + avp->primary_sta_vif = true; ++ + memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN); + common->curaid = bss_conf->aid; + ath9k_hw_write_associd(sc->sc_ah); +- ath_dbg(common, CONFIG, "Bss Info ASSOC %d, bssid: %pM\n", +- bss_conf->aid, common->curbssid); +- ath_beacon_config(sc, vif); +- /* +- * Request a re-configuration of Beacon related timers +- * on the receipt of the first Beacon frame (i.e., +- * after time sync with the AP). +- */ +- spin_lock_irqsave(&sc->sc_pm_lock, flags); +- sc->ps_flags |= PS_BEACON_SYNC | PS_WAIT_FOR_BEACON; +- spin_unlock_irqrestore(&sc->sc_pm_lock, flags); + +- /* Reset rssi stats */ + sc->last_rssi = ATH_RSSI_DUMMY_MARKER; + sc->sc_ah->stats.avgbrssi = ATH_RSSI_DUMMY_MARKER; + +- ath_start_rx_poll(sc, 3); - -- if (level >= ARRAY_SIZE(ah->totalSizeDesired)) { -- ath_dbg(common, ANI, "level out of range (%u > %zu)\n", -- level, ARRAY_SIZE(ah->totalSizeDesired)); -- return false; +- if (!common->disable_ani) { +- set_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- ath_start_ani(common); - } - -- REG_RMW_FIELD(ah, AR_PHY_DESIRED_SZ, -- AR_PHY_DESIRED_SZ_TOT_DES, -- ah->totalSizeDesired[level]); -- REG_RMW_FIELD(ah, AR_PHY_AGC_CTL1, -- AR_PHY_AGC_CTL1_COARSE_LOW, -- ah->coarse_low[level]); -- REG_RMW_FIELD(ah, AR_PHY_AGC_CTL1, -- AR_PHY_AGC_CTL1_COARSE_HIGH, -- ah->coarse_high[level]); -- REG_RMW_FIELD(ah, AR_PHY_FIND_SIG, -- AR_PHY_FIND_SIG_FIRPWR, -- ah->firpwr[level]); -- -- if (level > aniState->noiseImmunityLevel) -- ah->stats.ast_ani_niup++; -- else if (level < aniState->noiseImmunityLevel) -- ah->stats.ast_ani_nidown++; -- aniState->noiseImmunityLevel = level; -- break; - } -- case ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION:{ -- u32 on = param ? 1 : 0; +-} - -- if (on) -- REG_SET_BIT(ah, AR_PHY_SFCORR_LOW, -- AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW); -- else -- REG_CLR_BIT(ah, AR_PHY_SFCORR_LOW, -- AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW); +-static void ath9k_config_bss(struct ath_softc *sc, struct ieee80211_vif *vif) +-{ +- struct ath_common *common = ath9k_hw_common(sc->sc_ah); +- struct ieee80211_bss_conf *bss_conf = &vif->bss_conf; +- struct ath_vif *avp = (void *)vif->drv_priv; - -- if (!on != aniState->ofdmWeakSigDetectOff) { -- if (on) -- ah->stats.ast_ani_ofdmon++; -- else -- ah->stats.ast_ani_ofdmoff++; -- aniState->ofdmWeakSigDetectOff = !on; -- } -- break; -- } -- case ATH9K_ANI_CCK_WEAK_SIGNAL_THR:{ -- static const int weakSigThrCck[] = { 8, 6 }; -- u32 high = param ? 1 : 0; +- if (sc->sc_ah->opmode != NL80211_IFTYPE_STATION) +- return; - -- REG_RMW_FIELD(ah, AR_PHY_CCK_DETECT, -- AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK, -- weakSigThrCck[high]); -- if (high != aniState->cckWeakSigThreshold) { -- if (high) -- ah->stats.ast_ani_cckhigh++; -- else -- ah->stats.ast_ani_ccklow++; -- aniState->cckWeakSigThreshold = high; -- } -- break; +- /* Reconfigure bss info */ +- if (avp->primary_sta_vif && !bss_conf->assoc) { +- ath_dbg(common, CONFIG, "Bss Info DISASSOC %d, bssid %pM\n", +- common->curaid, common->curbssid); +- clear_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags); +- clear_bit(SC_OP_BEACONS, &sc->sc_flags); +- avp->primary_sta_vif = false; +- memset(common->curbssid, 0, ETH_ALEN); +- common->curaid = 0; - } -- case ATH9K_ANI_FIRSTEP_LEVEL:{ -- static const int firstep[] = { 0, 4, 8 }; -- u32 level = param; - -- if (level >= ARRAY_SIZE(firstep)) { -- ath_dbg(common, ANI, "level out of range (%u > %zu)\n", -- level, ARRAY_SIZE(firstep)); -- return false; -- } -- REG_RMW_FIELD(ah, AR_PHY_FIND_SIG, -- AR_PHY_FIND_SIG_FIRSTEP, -- firstep[level]); -- if (level > aniState->firstepLevel) -- ah->stats.ast_ani_stepup++; -- else if (level < aniState->firstepLevel) -- ah->stats.ast_ani_stepdown++; -- aniState->firstepLevel = level; -- break; -- } -- case ATH9K_ANI_SPUR_IMMUNITY_LEVEL:{ -- static const int cycpwrThr1[] = { 2, 4, 6, 8, 10, 12, 14, 16 }; -- u32 level = param; +- ieee80211_iterate_active_interfaces_atomic( +- sc->hw, ath9k_bss_iter, sc); ++ spin_lock_irqsave(&sc->sc_pm_lock, flags); ++ sc->ps_flags |= PS_BEACON_SYNC | PS_WAIT_FOR_BEACON; ++ spin_unlock_irqrestore(&sc->sc_pm_lock, flags); + +- /* +- * None of station vifs are associated. +- * Clear bssid & aid +- */ +- if (!test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) { +- ath9k_hw_write_associd(sc->sc_ah); +- clear_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- del_timer_sync(&common->ani.timer); +- del_timer_sync(&sc->rx_poll_timer); +- memset(&sc->caldata, 0, sizeof(sc->caldata)); ++ ath_dbg(common, CONFIG, ++ "Primary Station interface: %pM, BSSID: %pM\n", ++ vif->addr, common->curbssid); + } + } + +@@ -1547,6 +1453,11 @@ static void ath9k_bss_info_changed(struc + struct ieee80211_bss_conf *bss_conf, + u32 changed) + { ++#define CHECK_ANI \ ++ (BSS_CHANGED_ASSOC | \ ++ BSS_CHANGED_IBSS | \ ++ BSS_CHANGED_BEACON_ENABLED) ++ + struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); +@@ -1557,53 +1468,43 @@ static void ath9k_bss_info_changed(struc + mutex_lock(&sc->mutex); + + if (changed & BSS_CHANGED_ASSOC) { +- ath9k_config_bss(sc, vif); ++ ath_dbg(common, CONFIG, "BSSID %pM Changed ASSOC %d\n", ++ bss_conf->bssid, bss_conf->assoc); + +- ath_dbg(common, CONFIG, "BSSID: %pM aid: 0x%x\n", +- common->curbssid, common->curaid); ++ /* ++ * Do not do anything when the opmode is not STATION. ++ */ ++ if (ah->opmode == NL80211_IFTYPE_STATION) { ++ if (avp->primary_sta_vif && !bss_conf->assoc) { ++ clear_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags); ++ clear_bit(SC_OP_BEACONS, &sc->sc_flags); ++ avp->primary_sta_vif = false; ++ } ++ ++ ieee80211_iterate_active_interfaces_atomic(sc->hw, ++ ath9k_bss_assoc_iter, sc); ++ ++ if (!test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) { ++ memset(common->curbssid, 0, ETH_ALEN); ++ common->curaid = 0; ++ ath9k_hw_write_associd(sc->sc_ah); ++ } ++ } + } + + if (changed & BSS_CHANGED_IBSS) { +- /* There can be only one vif available */ + memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN); + common->curaid = bss_conf->aid; + ath9k_hw_write_associd(sc->sc_ah); - -- if (level >= ARRAY_SIZE(cycpwrThr1)) { -- ath_dbg(common, ANI, "level out of range (%u > %zu)\n", -- level, ARRAY_SIZE(cycpwrThr1)); -- return false; -- } -- REG_RMW_FIELD(ah, AR_PHY_TIMING5, -- AR_PHY_TIMING5_CYCPWR_THR1, -- cycpwrThr1[level]); -- if (level > aniState->spurImmunityLevel) -- ah->stats.ast_ani_spurup++; -- else if (level < aniState->spurImmunityLevel) -- ah->stats.ast_ani_spurdown++; -- aniState->spurImmunityLevel = level; -- break; -- } -- case ATH9K_ANI_PRESENT: -- break; -- default: -- ath_dbg(common, ANI, "invalid cmd %u\n", cmd); -- return false; -- } +- if (bss_conf->ibss_joined) { +- sc->sc_ah->stats.avgbrssi = ATH_RSSI_DUMMY_MARKER; - -- ath_dbg(common, ANI, "ANI parameters:\n"); -- ath_dbg(common, ANI, -- "noiseImmunityLevel=%d, spurImmunityLevel=%d, ofdmWeakSigDetectOff=%d\n", -- aniState->noiseImmunityLevel, -- aniState->spurImmunityLevel, -- !aniState->ofdmWeakSigDetectOff); -- ath_dbg(common, ANI, -- "cckWeakSigThreshold=%d, firstepLevel=%d, listenTime=%d\n", -- aniState->cckWeakSigThreshold, -- aniState->firstepLevel, -- aniState->listenTime); -- ath_dbg(common, ANI, "ofdmPhyErrCount=%d, cckPhyErrCount=%d\n\n", -- aniState->ofdmPhyErrCount, -- aniState->cckPhyErrCount); +- if (!common->disable_ani) { +- set_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- ath_start_ani(common); +- } - -- return true; --} +- } else { +- clear_bit(SC_OP_ANI_RUN, &sc->sc_flags); +- del_timer_sync(&common->ani.timer); +- del_timer_sync(&sc->rx_poll_timer); +- } + } + +- /* +- * In case of AP mode, the HW TSF has to be reset +- * when the beacon interval changes. +- */ +- if ((changed & BSS_CHANGED_BEACON_INT) && +- (vif->type == NL80211_IFTYPE_AP)) +- set_bit(SC_OP_TSF_RESET, &sc->sc_flags); - - static bool ar5008_hw_ani_control_new(struct ath_hw *ah, - enum ath9k_ani_cmd cmd, - int param) -@@ -1206,18 +1071,18 @@ static bool ar5008_hw_ani_control_new(st - REG_CLR_BIT(ah, AR_PHY_SFCORR_LOW, - AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW); - -- if (!on != aniState->ofdmWeakSigDetectOff) { -+ if (on != aniState->ofdmWeakSigDetect) { - ath_dbg(common, ANI, - "** ch %d: ofdm weak signal: %s=>%s\n", - chan->channel, -- !aniState->ofdmWeakSigDetectOff ? -+ aniState->ofdmWeakSigDetect ? - "on" : "off", - on ? "on" : "off"); - if (on) - ah->stats.ast_ani_ofdmon++; - else - ah->stats.ast_ani_ofdmoff++; -- aniState->ofdmWeakSigDetectOff = !on; -+ aniState->ofdmWeakSigDetect = on; +- /* Configure beaconing (AP, IBSS, MESH) */ +- if (ath9k_uses_beacons(vif->type) && +- ((changed & BSS_CHANGED_BEACON) || +- (changed & BSS_CHANGED_BEACON_ENABLED) || +- (changed & BSS_CHANGED_BEACON_INT))) { +- ath9k_set_beaconing_status(sc, false); +- if (bss_conf->enable_beacon) +- ath_beacon_alloc(sc, vif); +- else +- avp->is_bslot_active = false; +- ath_beacon_config(sc, vif); +- ath9k_set_beaconing_status(sc, true); ++ if ((changed & BSS_CHANGED_BEACON) || ++ (changed & BSS_CHANGED_BEACON_ENABLED) || ++ (changed & BSS_CHANGED_BEACON_INT)) { ++ if (ah->opmode == NL80211_IFTYPE_AP) ++ ath9k_set_tsfadjust(sc, vif); ++ if (ath9k_allow_beacon_config(sc, vif)) ++ ath9k_beacon_config(sc, vif, changed); + } + + if (changed & BSS_CHANGED_ERP_SLOT) { +@@ -1625,8 +1526,13 @@ static void ath9k_bss_info_changed(struc } - break; } -@@ -1236,7 +1101,7 @@ static bool ar5008_hw_ani_control_new(st - * from INI file & cap value - */ - value = firstep_table[level] - -- firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] + -+ firstep_table[ATH9K_ANI_FIRSTEP_LVL] + - aniState->iniDef.firstep; - if (value < ATH9K_SIG_FIRSTEP_SETTING_MIN) - value = ATH9K_SIG_FIRSTEP_SETTING_MIN; -@@ -1251,7 +1116,7 @@ static bool ar5008_hw_ani_control_new(st - * from INI file & cap value - */ - value2 = firstep_table[level] - -- firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] + -+ firstep_table[ATH9K_ANI_FIRSTEP_LVL] + - aniState->iniDef.firstepLow; - if (value2 < ATH9K_SIG_FIRSTEP_SETTING_MIN) - value2 = ATH9K_SIG_FIRSTEP_SETTING_MIN; -@@ -1267,7 +1132,7 @@ static bool ar5008_hw_ani_control_new(st - chan->channel, - aniState->firstepLevel, - level, -- ATH9K_ANI_FIRSTEP_LVL_NEW, -+ ATH9K_ANI_FIRSTEP_LVL, - value, - aniState->iniDef.firstep); - ath_dbg(common, ANI, -@@ -1275,7 +1140,7 @@ static bool ar5008_hw_ani_control_new(st - chan->channel, - aniState->firstepLevel, - level, -- ATH9K_ANI_FIRSTEP_LVL_NEW, -+ ATH9K_ANI_FIRSTEP_LVL, - value2, - aniState->iniDef.firstepLow); - if (level > aniState->firstepLevel) -@@ -1300,7 +1165,7 @@ static bool ar5008_hw_ani_control_new(st - * from INI file & cap value - */ - value = cycpwrThr1_table[level] - -- cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] + -+ cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] + - aniState->iniDef.cycpwrThr1; - if (value < ATH9K_SIG_SPUR_IMM_SETTING_MIN) - value = ATH9K_SIG_SPUR_IMM_SETTING_MIN; -@@ -1316,7 +1181,7 @@ static bool ar5008_hw_ani_control_new(st - * from INI file & cap value - */ - value2 = cycpwrThr1_table[level] - -- cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] + -+ cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] + - aniState->iniDef.cycpwrThr1Ext; - if (value2 < ATH9K_SIG_SPUR_IMM_SETTING_MIN) - value2 = ATH9K_SIG_SPUR_IMM_SETTING_MIN; -@@ -1331,7 +1196,7 @@ static bool ar5008_hw_ani_control_new(st - chan->channel, - aniState->spurImmunityLevel, - level, -- ATH9K_ANI_SPUR_IMMUNE_LVL_NEW, -+ ATH9K_ANI_SPUR_IMMUNE_LVL, - value, - aniState->iniDef.cycpwrThr1); - ath_dbg(common, ANI, -@@ -1339,7 +1204,7 @@ static bool ar5008_hw_ani_control_new(st - chan->channel, - aniState->spurImmunityLevel, - level, -- ATH9K_ANI_SPUR_IMMUNE_LVL_NEW, -+ ATH9K_ANI_SPUR_IMMUNE_LVL, - value2, - aniState->iniDef.cycpwrThr1Ext); - if (level > aniState->spurImmunityLevel) -@@ -1367,7 +1232,7 @@ static bool ar5008_hw_ani_control_new(st - ath_dbg(common, ANI, - "ANI parameters: SI=%d, ofdmWS=%s FS=%d MRCcck=%s listenTime=%d ofdmErrs=%d cckErrs=%d\n", - aniState->spurImmunityLevel, -- !aniState->ofdmWeakSigDetectOff ? "on" : "off", -+ aniState->ofdmWeakSigDetect ? "on" : "off", - aniState->firstepLevel, - !aniState->mrcCCKOff ? "on" : "off", - aniState->listenTime, -@@ -1454,9 +1319,9 @@ static void ar5008_hw_ani_cache_ini_regs - AR_PHY_EXT_TIMING5_CYCPWR_THR1); - - /* these levels just got reset to defaults by the INI */ -- aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL_NEW; -- aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_NEW; -- aniState->ofdmWeakSigDetectOff = !ATH9K_ANI_USE_OFDM_WEAK_SIG; -+ aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL; -+ aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL; -+ aniState->ofdmWeakSigDetect = ATH9K_ANI_USE_OFDM_WEAK_SIG; - aniState->mrcCCKOff = true; /* not available on pre AR9003 */ + ++ if (changed & CHECK_ANI) ++ ath_check_ani(sc); ++ + mutex_unlock(&sc->mutex); + ath9k_ps_restore(sc); ++ ++#undef CHECK_ANI } -@@ -1545,11 +1410,8 @@ void ar5008_hw_attach_phy_ops(struct ath - priv_ops->do_getnf = ar5008_hw_do_getnf; - priv_ops->set_radar_params = ar5008_hw_set_radar_params; + static u64 ath9k_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif) +@@ -1855,10 +1761,11 @@ static int ath9k_tx_last_beacon(struct i + if (!vif) + return 0; -- if (modparam_force_new_ani) { -- priv_ops->ani_control = ar5008_hw_ani_control_new; -- priv_ops->ani_cache_ini_regs = ar5008_hw_ani_cache_ini_regs; -- } else -- priv_ops->ani_control = ar5008_hw_ani_control_old; -+ priv_ops->ani_control = ar5008_hw_ani_control_new; -+ priv_ops->ani_cache_ini_regs = ar5008_hw_ani_cache_ini_regs; - - if (AR_SREV_9100(ah) || AR_SREV_9160_10_OR_LATER(ah)) - priv_ops->compute_pll_control = ar9160_hw_compute_pll_control; ---- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c -@@ -21,10 +21,6 @@ - #include "ar9002_initvals.h" - #include "ar9002_phy.h" - --int modparam_force_new_ani; --module_param_named(force_new_ani, modparam_force_new_ani, int, 0444); --MODULE_PARM_DESC(force_new_ani, "Force new ANI for AR5008, AR9001, AR9002"); -- - /* General hardware code for the A5008/AR9001/AR9002 hadware families */ - - static void ar9002_hw_init_mode_regs(struct ath_hw *ah) ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -825,18 +825,18 @@ static bool ar9003_hw_ani_control(struct - REG_CLR_BIT(ah, AR_PHY_SFCORR_LOW, - AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW); - -- if (!on != aniState->ofdmWeakSigDetectOff) { -+ if (on != aniState->ofdmWeakSigDetect) { - ath_dbg(common, ANI, - "** ch %d: ofdm weak signal: %s=>%s\n", - chan->channel, -- !aniState->ofdmWeakSigDetectOff ? -+ aniState->ofdmWeakSigDetect ? - "on" : "off", - on ? "on" : "off"); - if (on) - ah->stats.ast_ani_ofdmon++; - else - ah->stats.ast_ani_ofdmoff++; -- aniState->ofdmWeakSigDetectOff = !on; -+ aniState->ofdmWeakSigDetect = on; +- avp = (void *)vif->drv_priv; +- if (!avp->is_bslot_active) ++ if (!vif->bss_conf.enable_beacon) + return 0; + ++ avp = (void *)vif->drv_priv; ++ + if (!sc->beacon.tx_processed && !edma) { + tasklet_disable(&sc->bcon_tasklet); + +--- a/drivers/net/wireless/ath/ath9k/mci.c ++++ b/drivers/net/wireless/ath/ath9k/mci.c +@@ -202,7 +202,7 @@ static void ath_mci_cal_msg(struct ath_s + case MCI_GPM_BT_CAL_REQ: + if (mci_hw->bt_state == MCI_BT_AWAKE) { + ar9003_mci_state(ah, MCI_STATE_SET_BT_CAL_START); +- ieee80211_queue_work(sc->hw, &sc->hw_reset_work); ++ ath9k_queue_reset(sc, RESET_TYPE_MCI); } + ath_dbg(common, MCI, "MCI State : %d\n", mci_hw->bt_state); break; +--- a/drivers/net/wireless/ath/ath9k/recv.c ++++ b/drivers/net/wireless/ath/ath9k/recv.c +@@ -553,7 +553,7 @@ static void ath_rx_ps_beacon(struct ath_ + sc->ps_flags &= ~PS_BEACON_SYNC; + ath_dbg(common, PS, + "Reconfigure Beacon timers based on timestamp from the AP\n"); +- ath_set_beacon(sc); ++ ath9k_set_beacon(sc); } -@@ -855,7 +855,7 @@ static bool ar9003_hw_ani_control(struct - * from INI file & cap value - */ - value = firstep_table[level] - -- firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] + -+ firstep_table[ATH9K_ANI_FIRSTEP_LVL] + - aniState->iniDef.firstep; - if (value < ATH9K_SIG_FIRSTEP_SETTING_MIN) - value = ATH9K_SIG_FIRSTEP_SETTING_MIN; -@@ -870,7 +870,7 @@ static bool ar9003_hw_ani_control(struct - * from INI file & cap value - */ - value2 = firstep_table[level] - -- firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] + -+ firstep_table[ATH9K_ANI_FIRSTEP_LVL] + - aniState->iniDef.firstepLow; - if (value2 < ATH9K_SIG_FIRSTEP_SETTING_MIN) - value2 = ATH9K_SIG_FIRSTEP_SETTING_MIN; -@@ -886,7 +886,7 @@ static bool ar9003_hw_ani_control(struct - chan->channel, - aniState->firstepLevel, - level, -- ATH9K_ANI_FIRSTEP_LVL_NEW, -+ ATH9K_ANI_FIRSTEP_LVL, - value, - aniState->iniDef.firstep); - ath_dbg(common, ANI, -@@ -894,7 +894,7 @@ static bool ar9003_hw_ani_control(struct - chan->channel, - aniState->firstepLevel, - level, -- ATH9K_ANI_FIRSTEP_LVL_NEW, -+ ATH9K_ANI_FIRSTEP_LVL, - value2, - aniState->iniDef.firstepLow); - if (level > aniState->firstepLevel) -@@ -919,7 +919,7 @@ static bool ar9003_hw_ani_control(struct - * from INI file & cap value - */ - value = cycpwrThr1_table[level] - -- cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] + -+ cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] + - aniState->iniDef.cycpwrThr1; - if (value < ATH9K_SIG_SPUR_IMM_SETTING_MIN) - value = ATH9K_SIG_SPUR_IMM_SETTING_MIN; -@@ -935,7 +935,7 @@ static bool ar9003_hw_ani_control(struct - * from INI file & cap value - */ - value2 = cycpwrThr1_table[level] - -- cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] + -+ cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] + - aniState->iniDef.cycpwrThr1Ext; - if (value2 < ATH9K_SIG_SPUR_IMM_SETTING_MIN) - value2 = ATH9K_SIG_SPUR_IMM_SETTING_MIN; -@@ -950,7 +950,7 @@ static bool ar9003_hw_ani_control(struct - chan->channel, - aniState->spurImmunityLevel, - level, -- ATH9K_ANI_SPUR_IMMUNE_LVL_NEW, -+ ATH9K_ANI_SPUR_IMMUNE_LVL, - value, - aniState->iniDef.cycpwrThr1); - ath_dbg(common, ANI, -@@ -958,7 +958,7 @@ static bool ar9003_hw_ani_control(struct - chan->channel, - aniState->spurImmunityLevel, - level, -- ATH9K_ANI_SPUR_IMMUNE_LVL_NEW, -+ ATH9K_ANI_SPUR_IMMUNE_LVL, - value2, - aniState->iniDef.cycpwrThr1Ext); - if (level > aniState->spurImmunityLevel) -@@ -1002,7 +1002,7 @@ static bool ar9003_hw_ani_control(struct - ath_dbg(common, ANI, - "ANI parameters: SI=%d, ofdmWS=%s FS=%d MRCcck=%s listenTime=%d ofdmErrs=%d cckErrs=%d\n", - aniState->spurImmunityLevel, -- !aniState->ofdmWeakSigDetectOff ? "on" : "off", -+ aniState->ofdmWeakSigDetect ? "on" : "off", - aniState->firstepLevel, - !aniState->mrcCCKOff ? "on" : "off", - aniState->listenTime, -@@ -1111,9 +1111,9 @@ static void ar9003_hw_ani_cache_ini_regs - AR_PHY_EXT_CYCPWR_THR1); - - /* these levels just got reset to defaults by the INI */ -- aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL_NEW; -- aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_NEW; -- aniState->ofdmWeakSigDetectOff = !ATH9K_ANI_USE_OFDM_WEAK_SIG; -+ aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL; -+ aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL; -+ aniState->ofdmWeakSigDetect = ATH9K_ANI_USE_OFDM_WEAK_SIG; - aniState->mrcCCKOff = !ATH9K_ANI_ENABLE_MRC_CCK; - } ---- a/drivers/net/wireless/ath/ath9k/debug.c -+++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -348,8 +348,6 @@ void ath_debug_stat_interrupt(struct ath - sc->debug.stats.istats.txok++; - if (status & ATH9K_INT_TXURN) - sc->debug.stats.istats.txurn++; -- if (status & ATH9K_INT_MIB) -- sc->debug.stats.istats.mib++; - if (status & ATH9K_INT_RXPHY) - sc->debug.stats.istats.rxphyerr++; - if (status & ATH9K_INT_RXKCM) ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -1019,16 +1019,8 @@ void ar9002_hw_attach_ops(struct ath_hw - void ar9003_hw_attach_ops(struct ath_hw *ah); - - void ar9002_hw_load_ani_reg(struct ath_hw *ah, struct ath9k_channel *chan); --/* -- * ANI work can be shared between all families but a next -- * generation implementation of ANI will be used only for AR9003 only -- * for now as the other families still need to be tested with the same -- * next generation ANI. Feel free to start testing it though for the -- * older families (AR5008, AR9001, AR9002) by using modparam_force_new_ani. -- */ --extern int modparam_force_new_ani; -+ - void ath9k_ani_reset(struct ath_hw *ah, bool is_scanning); --void ath9k_hw_proc_mib_event(struct ath_hw *ah); - void ath9k_hw_ani_monitor(struct ath_hw *ah, struct ath9k_channel *chan); - - #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -19,7 +19,7 @@ - #include "ath9k.h" - #include "btcoex.h" + if (ath_beacon_dtim_pending_cab(skb)) { +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -614,10 +614,8 @@ static void ath_tx_complete_aggr(struct --static u8 parse_mpdudensity(u8 mpdudensity) -+u8 ath9k_parse_mpdudensity(u8 mpdudensity) - { - /* - * 802.11n D2.0 defined values for "Minimum MPDU Start Spacing": -@@ -320,6 +320,7 @@ static void ath_node_attach(struct ath_s - struct ieee80211_vif *vif) - { - struct ath_node *an; -+ u8 density; - an = (struct ath_node *)sta->drv_priv; + rcu_read_unlock(); - #ifdef CONFIG_ATH9K_DEBUGFS -@@ -334,7 +335,8 @@ static void ath_node_attach(struct ath_s - ath_tx_node_init(sc, an); - an->maxampdu = 1 << (IEEE80211_HT_MAX_AMPDU_FACTOR + - sta->ht_cap.ampdu_factor); -- an->mpdudensity = parse_mpdudensity(sta->ht_cap.ampdu_density); -+ density = ath9k_parse_mpdudensity(sta->ht_cap.ampdu_density); -+ an->mpdudensity = density; - } +- if (needreset) { +- RESET_STAT_INC(sc, RESET_TYPE_TX_ERROR); +- ieee80211_queue_work(sc->hw, &sc->hw_reset_work); +- } ++ if (needreset) ++ ath9k_queue_reset(sc, RESET_TYPE_TX_ERROR); } -@@ -516,24 +518,6 @@ irqreturn_t ath_isr(int irq, void *dev) - ath9k_hw_set_interrupts(ah); - } + static bool ath_lookup_legacy(struct ath_buf *bf) +@@ -1586,7 +1584,8 @@ void ath_txq_schedule(struct ath_softc * + struct ath_atx_ac *ac, *ac_tmp, *last_ac; + struct ath_atx_tid *tid, *last_tid; -- if (status & ATH9K_INT_MIB) { -- /* -- * Disable interrupts until we service the MIB -- * interrupt; otherwise it will continue to -- * fire. -- */ -- ath9k_hw_disable_interrupts(ah); -- /* -- * Let the hal handle the event. We assume -- * it will clear whatever condition caused -- * the interrupt. -- */ -- spin_lock(&common->cc_lock); -- ath9k_hw_proc_mib_event(ah); -- spin_unlock(&common->cc_lock); -- ath9k_hw_enable_interrupts(ah); -- } -- - if (!(ah->caps.hw_caps & ATH9K_HW_CAP_AUTOSLEEP)) - if (status & ATH9K_INT_TIM_TIMER) { - if (ATH_DBG_WARN_ON_ONCE(sc->ps_idle)) -@@ -959,14 +943,10 @@ static void ath9k_calculate_summary_stat - /* - * Enable MIB interrupts when there are hardware phy counters. - */ -- if ((iter_data.nstations + iter_data.nadhocs + iter_data.nmeshes) > 0) { -- if (ah->config.enable_ani) -- ah->imask |= ATH9K_INT_MIB; -+ if ((iter_data.nstations + iter_data.nadhocs + iter_data.nmeshes) > 0) - ah->imask |= ATH9K_INT_TSFOOR; -- } else { -- ah->imask &= ~ATH9K_INT_MIB; -+ else - ah->imask &= ~ATH9K_INT_TSFOOR; -- } +- if (work_pending(&sc->hw_reset_work) || list_empty(&txq->axq_acq) || ++ if (test_bit(SC_OP_HW_RESET, &sc->sc_flags) || ++ list_empty(&txq->axq_acq) || + txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) + return; - ath9k_hw_set_interrupts(ah); +@@ -2191,7 +2190,7 @@ static void ath_tx_processq(struct ath_s + + ath_txq_lock(sc, txq); + for (;;) { +- if (work_pending(&sc->hw_reset_work)) ++ if (test_bit(SC_OP_HW_RESET, &sc->sc_flags)) + break; + + if (list_empty(&txq->axq_q)) { +@@ -2274,7 +2273,7 @@ void ath_tx_edma_tasklet(struct ath_soft + int status; + for (;;) { +- if (work_pending(&sc->hw_reset_work)) ++ if (test_bit(SC_OP_HW_RESET, &sc->sc_flags)) + break; + + status = ath9k_hw_txprocdesc(ah, NULL, (void *)&ts); +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -3596,22 +3596,6 @@ void ieee80211_request_smps(struct ieee8 + enum ieee80211_smps_mode smps_mode); + + /** +- * ieee80211_key_removed - disable hw acceleration for key +- * @key_conf: The key hw acceleration should be disabled for +- * +- * This allows drivers to indicate that the given key has been +- * removed from hardware acceleration, due to a new key that +- * was added. Don't use this if the key can continue to be used +- * for TX, if the key restriction is on RX only it is permitted +- * to keep the key for TX only and not call this function. +- * +- * Due to locking constraints, it may only be called during +- * @set_key. This function must be allowed to sleep, and the +- * key it tries to disable may still be used until it returns. +- */ +-void ieee80211_key_removed(struct ieee80211_key_conf *key_conf); +- +-/** + * ieee80211_ready_on_channel - notification of remain-on-channel start + * @hw: pointer as obtained from ieee80211_alloc_hw() + */ --- a/net/mac80211/agg-rx.c +++ b/net/mac80211/agg-rx.c -@@ -201,6 +201,8 @@ static void ieee80211_send_addba_resp(st +@@ -203,6 +203,8 @@ static void ieee80211_send_addba_resp(st memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN); else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) memcpy(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN); @@ -1263,7 +1628,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); -@@ -456,6 +457,7 @@ int ieee80211_start_tx_ba_session(struct +@@ -459,6 +460,7 @@ int ieee80211_start_tx_ba_session(struct sdata->vif.type != NL80211_IFTYPE_MESH_POINT && sdata->vif.type != NL80211_IFTYPE_AP_VLAN && sdata->vif.type != NL80211_IFTYPE_AP && @@ -1271,6 +1636,17 @@ sdata->vif.type != NL80211_IFTYPE_ADHOC) return -EINVAL; +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -1741,6 +1741,8 @@ static int ieee80211_set_txq_params(stru + return -EINVAL; + } + ++ ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_QOS); ++ + return 0; + } + --- a/net/mac80211/debugfs_sta.c +++ b/net/mac80211/debugfs_sta.c @@ -63,11 +63,11 @@ static ssize_t sta_flags_read(struct fil @@ -1289,7 +1665,7 @@ TEST(TDLS_PEER_AUTH), TEST(4ADDR_EVENT), --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c -@@ -284,7 +284,6 @@ static int ieee80211_do_open(struct net_ +@@ -400,7 +400,6 @@ static int ieee80211_do_open(struct net_ { struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); struct ieee80211_local *local = sdata->local; @@ -1297,7 +1673,7 @@ u32 changed = 0; int res; u32 hw_reconf_flags = 0; -@@ -430,28 +429,6 @@ static int ieee80211_do_open(struct net_ +@@ -538,28 +537,6 @@ static int ieee80211_do_open(struct net_ set_bit(SDATA_STATE_RUNNING, &sdata->state); @@ -1326,16 +1702,7 @@ /* * set_multicast_list will be invoked by the networking core * which will check whether any increments here were done in -@@ -639,6 +616,8 @@ static void ieee80211_do_stop(struct iee - ieee80211_configure_filter(local); - break; - default: -+ flush_work(&local->hw_roc_start); -+ flush_work(&local->hw_roc_done); - flush_work(&sdata->work); - /* - * When we get here, the interface is marked down. -@@ -845,6 +824,72 @@ static void ieee80211_if_setup(struct ne +@@ -949,6 +926,72 @@ static void ieee80211_if_setup(struct ne dev->destructor = free_netdev; } @@ -1408,7 +1775,7 @@ static void ieee80211_iface_work(struct work_struct *work) { struct ieee80211_sub_if_data *sdata = -@@ -949,6 +994,9 @@ static void ieee80211_iface_work(struct +@@ -1053,6 +1096,9 @@ static void ieee80211_iface_work(struct break; ieee80211_mesh_rx_queued_mgmt(sdata, skb); break; @@ -1418,9 +1785,132 @@ default: WARN(1, "frame for unexpected interface type"); break; +--- a/net/mac80211/key.c ++++ b/net/mac80211/key.c +@@ -197,26 +197,6 @@ static void ieee80211_key_disable_hw_acc + key->flags &= ~KEY_FLAG_UPLOADED_TO_HARDWARE; + } + +-void ieee80211_key_removed(struct ieee80211_key_conf *key_conf) +-{ +- struct ieee80211_key *key; +- +- key = container_of(key_conf, struct ieee80211_key, conf); +- +- might_sleep(); +- assert_key_lock(key->local); +- +- key->flags &= ~KEY_FLAG_UPLOADED_TO_HARDWARE; +- +- /* +- * Flush TX path to avoid attempts to use this key +- * after this function returns. Until then, drivers +- * must be prepared to handle the key. +- */ +- synchronize_rcu(); +-} +-EXPORT_SYMBOL_GPL(ieee80211_key_removed); +- + static void __ieee80211_set_default_key(struct ieee80211_sub_if_data *sdata, + int idx, bool uni, bool multi) + { +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -1108,7 +1108,7 @@ void ieee80211_dynamic_ps_timer(unsigned + } + + /* MLME */ +-static void ieee80211_sta_wmm_params(struct ieee80211_local *local, ++static bool ieee80211_sta_wmm_params(struct ieee80211_local *local, + struct ieee80211_sub_if_data *sdata, + u8 *wmm_param, size_t wmm_param_len) + { +@@ -1119,23 +1119,23 @@ static void ieee80211_sta_wmm_params(str + u8 *pos, uapsd_queues = 0; + + if (!local->ops->conf_tx) +- return; ++ return false; + + if (local->hw.queues < IEEE80211_NUM_ACS) +- return; ++ return false; + + if (!wmm_param) +- return; ++ return false; + + if (wmm_param_len < 8 || wmm_param[5] /* version */ != 1) +- return; ++ return false; + + if (ifmgd->flags & IEEE80211_STA_UAPSD_ENABLED) + uapsd_queues = ifmgd->uapsd_queues; + + count = wmm_param[6] & 0x0f; + if (count == ifmgd->wmm_last_param_set) +- return; ++ return false; + ifmgd->wmm_last_param_set = count; + + pos = wmm_param + 8; +@@ -1202,6 +1202,7 @@ static void ieee80211_sta_wmm_params(str + + /* enable WMM or activate new settings */ + sdata->vif.bss_conf.qos = true; ++ return true; + } + + static void __ieee80211_stop_poll(struct ieee80211_sub_if_data *sdata) +@@ -2435,14 +2436,6 @@ static void ieee80211_rx_mgmt_beacon(str + directed_tim = ieee80211_check_tim(elems.tim, elems.tim_len, + ifmgd->aid); + +- if (ncrc != ifmgd->beacon_crc || !ifmgd->beacon_crc_valid) { +- ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems, +- true); +- +- ieee80211_sta_wmm_params(local, sdata, elems.wmm_param, +- elems.wmm_param_len); +- } +- + if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) { + if (directed_tim) { + if (local->hw.conf.dynamic_ps_timeout > 0) { +@@ -2473,6 +2466,13 @@ static void ieee80211_rx_mgmt_beacon(str + ifmgd->beacon_crc = ncrc; + ifmgd->beacon_crc_valid = true; + ++ ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems, ++ true); ++ ++ if (ieee80211_sta_wmm_params(local, sdata, elems.wmm_param, ++ elems.wmm_param_len)) ++ changed |= BSS_CHANGED_QOS; ++ + if (elems.erp_info && elems.erp_info_len >= 1) { + erp_valid = true; + erp_value = elems.erp_info[0]; +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -626,8 +626,12 @@ minstrel_ht_get_rate(void *priv, struct + + #ifdef CONFIG_MAC80211_DEBUGFS + /* use fixed index if set */ +- if (mp->fixed_rate_idx != -1) +- sample_idx = mp->fixed_rate_idx; ++ if (mp->fixed_rate_idx != -1) { ++ mi->max_tp_rate = mp->fixed_rate_idx; ++ mi->max_tp_rate2 = mp->fixed_rate_idx; ++ mi->max_prob_rate = mp->fixed_rate_idx; ++ sample_idx = -1; ++ } + #endif + + if (sample_idx >= 0) { --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c -@@ -2281,6 +2281,7 @@ ieee80211_rx_h_action(struct ieee80211_r +@@ -2262,6 +2262,7 @@ ieee80211_rx_h_action(struct ieee80211_r sdata->vif.type != NL80211_IFTYPE_MESH_POINT && sdata->vif.type != NL80211_IFTYPE_AP_VLAN && sdata->vif.type != NL80211_IFTYPE_AP && @@ -1428,7 +1918,7 @@ sdata->vif.type != NL80211_IFTYPE_ADHOC) break; -@@ -2495,14 +2496,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_ +@@ -2479,14 +2480,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_ if (!ieee80211_vif_is_mesh(&sdata->vif) && sdata->vif.type != NL80211_IFTYPE_ADHOC && @@ -1446,7 +1936,7 @@ break; case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP): case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP): -@@ -2833,10 +2835,16 @@ static int prepare_for_handlers(struct i +@@ -2817,10 +2819,16 @@ static int prepare_for_handlers(struct i } break; case NL80211_IFTYPE_WDS: @@ -1483,243 +1973,14 @@ WLAN_STA_CLEAR_PS_FILT, WLAN_STA_MFP, WLAN_STA_BLOCK_BA, ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -214,6 +214,7 @@ struct ath_frame_info { - enum ath9k_key_type keytype; - u8 keyix; - u8 retries; -+ u8 rtscts_rate; - }; - - struct ath_buf_state { -@@ -721,6 +722,7 @@ extern int ath9k_modparam_nohwcrypt; - extern int led_blink; - extern bool is_ath9k_unloaded; - -+u8 ath9k_parse_mpdudensity(u8 mpdudensity); - irqreturn_t ath_isr(int irq, void *dev); - int ath9k_init_device(u16 devid, struct ath_softc *sc, - const struct ath_bus_ops *bus_ops); ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -938,6 +938,7 @@ static void ath_buf_set_rate(struct ath_ - struct ieee80211_tx_rate *rates; - const struct ieee80211_rate *rate; - struct ieee80211_hdr *hdr; -+ struct ath_frame_info *fi = get_frame_info(bf->bf_mpdu); - int i; - u8 rix = 0; - -@@ -948,18 +949,7 @@ static void ath_buf_set_rate(struct ath_ - - /* set dur_update_en for l-sig computation except for PS-Poll frames */ - info->dur_update = !ieee80211_is_pspoll(hdr->frame_control); -- -- /* -- * We check if Short Preamble is needed for the CTS rate by -- * checking the BSS's global flag. -- * But for the rate series, IEEE80211_TX_RC_USE_SHORT_PREAMBLE is used. -- */ -- rate = ieee80211_get_rts_cts_rate(sc->hw, tx_info); -- info->rtscts_rate = rate->hw_value; -- -- if (tx_info->control.vif && -- tx_info->control.vif->bss_conf.use_short_preamble) -- info->rtscts_rate |= rate->hw_value_short; -+ info->rtscts_rate = fi->rtscts_rate; - - for (i = 0; i < 4; i++) { - bool is_40, is_sgi, is_sp; -@@ -1001,13 +991,13 @@ static void ath_buf_set_rate(struct ath_ - } - - /* legacy rates */ -+ rate = &sc->sbands[tx_info->band].bitrates[rates[i].idx]; - if ((tx_info->band == IEEE80211_BAND_2GHZ) && - !(rate->flags & IEEE80211_RATE_ERP_G)) - phy = WLAN_RC_PHY_CCK; - else - phy = WLAN_RC_PHY_OFDM; - -- rate = &sc->sbands[tx_info->band].bitrates[rates[i].idx]; - info->rates[i].Rate = rate->hw_value; - if (rate->hw_value_short) { - if (rates[i].flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE) -@@ -1175,6 +1165,7 @@ int ath_tx_aggr_start(struct ath_softc * - { - struct ath_atx_tid *txtid; - struct ath_node *an; -+ u8 density; - - an = (struct ath_node *)sta->drv_priv; - txtid = ATH_AN_2_TID(an, tid); -@@ -1182,6 +1173,17 @@ int ath_tx_aggr_start(struct ath_softc * - if (txtid->state & (AGGR_CLEANUP | AGGR_ADDBA_COMPLETE)) - return -EAGAIN; - -+ /* update ampdu factor/density, they may have changed. This may happen -+ * in HT IBSS when a beacon with HT-info is received after the station -+ * has already been added. -+ */ -+ if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) { -+ an->maxampdu = 1 << (IEEE80211_HT_MAX_AMPDU_FACTOR + -+ sta->ht_cap.ampdu_factor); -+ density = ath9k_parse_mpdudensity(sta->ht_cap.ampdu_density); -+ an->mpdudensity = density; -+ } -+ - txtid->state |= AGGR_ADDBA_PROGRESS; - txtid->paused = true; - *ssn = txtid->seq_start = txtid->seq_next; -@@ -1776,10 +1778,22 @@ static void setup_frame_info(struct ieee - struct ieee80211_sta *sta = tx_info->control.sta; - struct ieee80211_key_conf *hw_key = tx_info->control.hw_key; - struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; -+ const struct ieee80211_rate *rate; - struct ath_frame_info *fi = get_frame_info(skb); - struct ath_node *an = NULL; - enum ath9k_key_type keytype; -+ bool short_preamble = false; -+ -+ /* -+ * We check if Short Preamble is needed for the CTS rate by -+ * checking the BSS's global flag. -+ * But for the rate series, IEEE80211_TX_RC_USE_SHORT_PREAMBLE is used. -+ */ -+ if (tx_info->control.vif && -+ tx_info->control.vif->bss_conf.use_short_preamble) -+ short_preamble = true; - -+ rate = ieee80211_get_rts_cts_rate(hw, tx_info); - keytype = ath9k_cmn_get_hw_crypto_keytype(skb); - - if (sta) -@@ -1794,6 +1808,9 @@ static void setup_frame_info(struct ieee - fi->keyix = ATH9K_TXKEYIX_INVALID; - fi->keytype = keytype; - fi->framelen = framelen; -+ fi->rtscts_rate = rate->hw_value; -+ if (short_preamble) -+ fi->rtscts_rate |= rate->hw_value_short; - } - - u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate) ---- a/net/wireless/nl80211.c -+++ b/net/wireless/nl80211.c -@@ -2246,6 +2246,33 @@ static int nl80211_parse_beacon(struct g - return 0; - } - -+static bool nl80211_get_ap_channel(struct cfg80211_registered_device *rdev, -+ struct cfg80211_ap_settings *params) -+{ -+ struct wireless_dev *wdev; -+ bool ret = false; -+ -+ mutex_lock(&rdev->devlist_mtx); -+ -+ list_for_each_entry(wdev, &rdev->netdev_list, list) { -+ if (wdev->iftype != NL80211_IFTYPE_AP && -+ wdev->iftype != NL80211_IFTYPE_P2P_GO) -+ continue; -+ -+ if (!wdev->preset_chan) -+ continue; -+ -+ params->channel = wdev->preset_chan; -+ params->channel_type = wdev->preset_chantype; -+ ret = true; -+ break; -+ } -+ -+ mutex_unlock(&rdev->devlist_mtx); -+ -+ return ret; -+} -+ - static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info) +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -2716,7 +2716,7 @@ EXPORT_SYMBOL(ieee80211_get_buffered_bc) + void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata, + struct sk_buff *skb, int tid) { - struct cfg80211_registered_device *rdev = info->user_ptr[0]; -@@ -2348,7 +2375,7 @@ static int nl80211_start_ap(struct sk_bu - } else if (wdev->preset_chan) { - params.channel = wdev->preset_chan; - params.channel_type = wdev->preset_chantype; -- } else -+ } else if (!nl80211_get_ap_channel(rdev, ¶ms)) - return -EINVAL; - - if (!cfg80211_can_beacon_sec_chan(&rdev->wiphy, params.channel, -@@ -2356,8 +2383,11 @@ static int nl80211_start_ap(struct sk_bu - return -EINVAL; - - err = rdev->ops->start_ap(&rdev->wiphy, dev, ¶ms); -- if (!err) -+ if (!err) { -+ wdev->preset_chan = params.channel; -+ wdev->preset_chantype = params.channel_type; - wdev->beacon_interval = params.beacon_interval; -+ } - return err; - } - ---- a/drivers/net/wireless/ath/ath9k/link.c -+++ b/drivers/net/wireless/ath/ath9k/link.c -@@ -407,6 +407,7 @@ void ath_ani_calibrate(unsigned long dat - longcal ? "long" : "", shortcal ? "short" : "", - aniflag ? "ani" : "", common->ani.caldone ? "true" : "false"); - -+ ath9k_debug_samp_bb_mac(sc); - ath9k_ps_restore(sc); - - set_timer: -@@ -415,7 +416,6 @@ set_timer: - * The interval must be the shortest necessary to satisfy ANI, - * short calibration and long calibration. - */ -- ath9k_debug_samp_bb_mac(sc); - cal_interval = ATH_LONG_CALINTERVAL; - if (sc->sc_ah->config.enable_ani) - cal_interval = min(cal_interval, ---- a/drivers/net/wireless/ath/ath.h -+++ b/drivers/net/wireless/ath/ath.h -@@ -143,6 +143,7 @@ struct ath_common { - u32 keymax; - DECLARE_BITMAP(keymap, ATH_KEYMAX); - DECLARE_BITMAP(tkip_keymap, ATH_KEYMAX); -+ DECLARE_BITMAP(ccmp_keymap, ATH_KEYMAX); - enum ath_crypt_caps crypt_caps; - - unsigned int clockrate; ---- a/drivers/net/wireless/ath/ath9k/recv.c -+++ b/drivers/net/wireless/ath/ath9k/recv.c -@@ -785,7 +785,8 @@ static bool ath9k_rx_accept(struct ath_c - * descriptor does contain a valid key index. This has been observed - * mostly with CCMP encryption. - */ -- if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID) -+ if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID || -+ !test_bit(rx_stats->rs_keyix, common->ccmp_keymap)) - rx_stats->rs_status &= ~ATH9K_RXERR_KEYMISS; - - if (!rx_stats->rs_datalen) { ---- a/drivers/net/wireless/ath/key.c -+++ b/drivers/net/wireless/ath/key.c -@@ -556,6 +556,9 @@ int ath_key_config(struct ath_common *co - return -EIO; - - set_bit(idx, common->keymap); -+ if (key->cipher == WLAN_CIPHER_SUITE_CCMP) -+ set_bit(idx, common->ccmp_keymap); -+ - if (key->cipher == WLAN_CIPHER_SUITE_TKIP) { - set_bit(idx + 64, common->keymap); - set_bit(idx, common->tkip_keymap); -@@ -582,6 +585,7 @@ void ath_key_delete(struct ath_common *c - return; - - clear_bit(key->hw_key_idx, common->keymap); -+ clear_bit(key->hw_key_idx, common->ccmp_keymap); - if (key->cipher != WLAN_CIPHER_SUITE_TKIP) - return; +- int ac = ieee802_1d_to_ac[tid]; ++ int ac = ieee802_1d_to_ac[tid & 7]; + skb_set_mac_header(skb, 0); + skb_set_network_header(skb, 0); diff --git a/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch b/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch index 7c59e1f109..2f469b6285 100644 --- a/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch +++ b/package/mac80211/patches/402-ath9k-fix-invalid-mac-address-handling.patch @@ -8,7 +8,7 @@ #include <asm/unaligned.h> #include "hw.h" -@@ -523,8 +524,16 @@ static int ath9k_hw_init_macaddr(struct +@@ -526,8 +527,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/405-regd_no_assoc_hints.patch b/package/mac80211/patches/405-regd_no_assoc_hints.patch index 577275d26c..f58f805bcf 100644 --- a/package/mac80211/patches/405-regd_no_assoc_hints.patch +++ b/package/mac80211/patches/405-regd_no_assoc_hints.patch @@ -1,6 +1,6 @@ --- a/net/wireless/reg.c +++ b/net/wireless/reg.c -@@ -1699,6 +1699,8 @@ void regulatory_hint_11d(struct wiphy *w +@@ -1702,6 +1702,8 @@ void regulatory_hint_11d(struct wiphy *w enum environment_cap env = ENVIRON_ANY; struct regulatory_request *request; @@ -9,7 +9,7 @@ mutex_lock(®_mutex); if (unlikely(!last_request)) -@@ -1934,6 +1936,8 @@ static void restore_regulatory_settings( +@@ -1937,6 +1939,8 @@ static void restore_regulatory_settings( void regulatory_hint_disconnect(void) { diff --git a/package/mac80211/patches/412-mac80211_allow_adhoc_and_ap.patch b/package/mac80211/patches/412-mac80211_allow_adhoc_and_ap.patch index 2f23096c63..8fa6f2a925 100644 --- a/package/mac80211/patches/412-mac80211_allow_adhoc_and_ap.patch +++ b/package/mac80211/patches/412-mac80211_allow_adhoc_and_ap.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/main.c +++ b/net/mac80211/main.c -@@ -776,17 +776,11 @@ int ieee80211_register_hw(struct ieee802 +@@ -786,17 +786,11 @@ int ieee80211_register_hw(struct ieee802 */ for (i = 0; i < hw->wiphy->n_iface_combinations; i++) { const struct ieee80211_iface_combination *c; diff --git a/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch b/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch index 0d53d5c037..ec33376acf 100644 --- a/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch +++ b/package/mac80211/patches/440-ath5k_channel_bw_debugfs.patch @@ -9,11 +9,9 @@ Other devices will need to be added to the switch in write_file_bwmode drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++ 1 files changed, 86 insertions(+), 0 deletions(-) -diff --git a/drivers/net/wireless/ath/ath5k/debug.c b/drivers/net/wireless/ath/ath5k/debug.c -index 8c5ce8b..bb41066 100644 --- a/drivers/net/wireless/ath/ath5k/debug.c +++ b/drivers/net/wireless/ath/ath5k/debug.c -@@ -815,6 +815,89 @@ static const struct file_operations fops_ani = { +@@ -812,6 +812,89 @@ static const struct file_operations fops .llseek = default_llseek, }; @@ -103,7 +101,7 @@ index 8c5ce8b..bb41066 100644 /* debugfs: queues etc */ -@@ -906,6 +989,9 @@ ath5k_debug_init_device(struct ath5k_hw *ah) +@@ -903,6 +986,9 @@ ath5k_debug_init_device(struct ath5k_hw debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah, &fops_beacon); @@ -113,4 +111,3 @@ index 8c5ce8b..bb41066 100644 debugfs_create_file("reset", S_IWUSR, phydir, ah, &fops_reset); debugfs_create_file("antenna", S_IWUSR | S_IRUSR, phydir, ah, --- diff --git a/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch b/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch index ed50ea4e15..49e80ca3e6 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 -@@ -1533,6 +1533,53 @@ static const struct file_operations fops +@@ -1532,6 +1532,53 @@ static const struct file_operations fops #endif @@ -54,7 +54,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1596,5 +1643,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1595,5 +1642,8 @@ 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/501-ath9k-eeprom_endianess.patch b/package/mac80211/patches/501-ath9k-eeprom_endianess.patch index 710ca7bad9..19975c8620 100644 --- a/package/mac80211/patches/501-ath9k-eeprom_endianess.patch +++ b/package/mac80211/patches/501-ath9k-eeprom_endianess.patch @@ -71,7 +71,7 @@ ath_err(common, "Reading Magic # failed\n"); --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -657,6 +657,7 @@ enum ath_cal_list { +@@ -658,6 +658,7 @@ enum ath_cal_list { #define AH_USE_EEPROM 0x1 #define AH_UNPLUGGED 0x2 /* The card has been physically removed. */ #define AH_FASTCC 0x4 diff --git a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch index 9ff77812e4..fb6b270cbc 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 -@@ -1928,8 +1928,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1956,8 +1956,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/512-ath9k_channelbw_debugfs.patch b/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch index 6126313b6e..d688b065b0 100644 --- a/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch +++ b/package/mac80211/patches/512-ath9k_channelbw_debugfs.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -641,6 +641,7 @@ struct ath_softc { +@@ -649,6 +649,7 @@ struct ath_softc { struct ieee80211_hw *hw; struct device *dev; @@ -8,7 +8,7 @@ struct survey_info *cur_survey; struct survey_info survey[ATH9K_NUM_CHANNELS]; -@@ -709,6 +710,7 @@ struct ath_softc { +@@ -717,6 +718,7 @@ struct ath_softc { struct dfs_pattern_detector *dfs_detector; }; @@ -18,7 +18,7 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1580,6 +1580,50 @@ static const struct file_operations fops +@@ -1579,6 +1579,50 @@ static const struct file_operations fops .owner = THIS_MODULE }; @@ -69,7 +69,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1646,5 +1690,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1645,5 +1689,8 @@ int ath9k_init_debug(struct ath_hw *ah) debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, &fops_eeprom); @@ -80,7 +80,7 @@ } --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1124,7 +1124,7 @@ static void ath9k_disable_ps(struct ath_ +@@ -1084,7 +1084,7 @@ static void ath9k_disable_ps(struct ath_ ath_dbg(common, PS, "PowerSave disabled\n"); } @@ -89,7 +89,7 @@ { struct ath_softc *sc = hw->priv; struct ath_hw *ah = sc->sc_ah; -@@ -1175,9 +1175,11 @@ static int ath9k_config(struct ieee80211 +@@ -1138,9 +1138,11 @@ static int ath9k_config(struct ieee80211 if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) { struct ieee80211_channel *curchan = hw->conf.channel; @@ -101,7 +101,7 @@ if (ah->curchan) old_pos = ah->curchan - &ah->channels[0]; -@@ -1220,7 +1222,23 @@ static int ath9k_config(struct ieee80211 +@@ -1183,7 +1185,23 @@ static int ath9k_config(struct ieee80211 memset(&sc->survey[pos], 0, sizeof(struct survey_info)); } diff --git a/package/mac80211/patches/513-mac80211_reduce_txqueuelen.patch b/package/mac80211/patches/513-mac80211_reduce_txqueuelen.patch index 11f0215f8c..604fcb1c8c 100644 --- a/package/mac80211/patches/513-mac80211_reduce_txqueuelen.patch +++ b/package/mac80211/patches/513-mac80211_reduce_txqueuelen.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c -@@ -814,6 +814,7 @@ static const struct net_device_ops ieee8 +@@ -916,6 +916,7 @@ static const struct net_device_ops ieee8 static void ieee80211_if_setup(struct net_device *dev) { ether_setup(dev); diff --git a/package/mac80211/patches/520-mac80211_cur_txpower.patch b/package/mac80211/patches/520-mac80211_cur_txpower.patch index 9bb2ce8ae9..b907e50375 100644 --- a/package/mac80211/patches/520-mac80211_cur_txpower.patch +++ b/package/mac80211/patches/520-mac80211_cur_txpower.patch @@ -11,7 +11,7 @@ u16 listen_interval; --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -1940,7 +1940,7 @@ static int ieee80211_get_tx_power(struct +@@ -1956,7 +1956,7 @@ static int ieee80211_get_tx_power(struct { struct ieee80211_local *local = wiphy_priv(wiphy); diff --git a/package/mac80211/patches/521-ath9k_cur_txpower.patch b/package/mac80211/patches/521-ath9k_cur_txpower.patch index 2b478184cc..fa8d6c6b7b 100644 --- a/package/mac80211/patches/521-ath9k_cur_txpower.patch +++ b/package/mac80211/patches/521-ath9k_cur_txpower.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1245,6 +1245,8 @@ int ath9k_config(struct ieee80211_hw *hw +@@ -1208,6 +1208,8 @@ int ath9k_config(struct ieee80211_hw *hw return -EINVAL; } @@ -9,7 +9,7 @@ /* * The most recent snapshot of channel->noisefloor for the old * channel is only available after the hardware reset. Copy it to -@@ -1259,6 +1261,7 @@ int ath9k_config(struct ieee80211_hw *hw +@@ -1222,6 +1224,7 @@ int ath9k_config(struct ieee80211_hw *hw sc->config.txpowlimit = 2 * conf->power_level; ath9k_cmn_update_txpow(ah, sc->curtxpow, sc->config.txpowlimit, &sc->curtxpow); diff --git a/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch b/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch index 671ae7ae6f..4740608704 100644 --- a/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch +++ b/package/mac80211/patches/522-ath9k_per_chain_signal_strength.patch @@ -37,7 +37,7 @@ --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c -@@ -1263,6 +1263,7 @@ ieee80211_rx_h_sta_process(struct ieee80 +@@ -1254,6 +1254,7 @@ ieee80211_rx_h_sta_process(struct ieee80 struct sk_buff *skb = rx->skb; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; @@ -45,7 +45,7 @@ if (!sta) return RX_CONTINUE; -@@ -1307,6 +1308,19 @@ ieee80211_rx_h_sta_process(struct ieee80 +@@ -1298,6 +1299,19 @@ ieee80211_rx_h_sta_process(struct ieee80 ewma_add(&sta->avg_signal, -status->signal); } @@ -67,7 +67,7 @@ * exchange sequence. --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -256,6 +256,8 @@ struct sta_info *sta_info_alloc(struct i +@@ -254,6 +254,8 @@ struct sta_info *sta_info_alloc(struct i do_posix_clock_monotonic_gettime(&uptime); sta->last_connected = uptime.tv_sec; ewma_init(&sta->avg_signal, 1024, 8); @@ -78,7 +78,7 @@ kfree(sta); --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -527,6 +527,8 @@ struct station_parameters { +@@ -546,6 +546,8 @@ struct station_parameters { * @STATION_INFO_STA_FLAGS: @sta_flags filled * @STATION_INFO_BEACON_LOSS_COUNT: @beacon_loss_count filled * @STATION_INFO_T_OFFSET: @t_offset filled @@ -87,7 +87,7 @@ */ enum station_info_flags { STATION_INFO_INACTIVE_TIME = 1<<0, -@@ -550,6 +552,8 @@ enum station_info_flags { +@@ -569,6 +571,8 @@ enum station_info_flags { STATION_INFO_STA_FLAGS = 1<<18, STATION_INFO_BEACON_LOSS_COUNT = 1<<19, STATION_INFO_T_OFFSET = 1<<20, @@ -96,17 +96,17 @@ }; /** -@@ -631,6 +635,9 @@ struct sta_bss_parameters { - NOTE: For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. - * @signal_avg: avg signal strength, type depends on the wiphy's signal_type - NOTE: For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. +@@ -652,6 +656,9 @@ struct sta_bss_parameters { + * For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. + * @signal_avg: Average signal strength, type depends on the wiphy's signal_type. + * For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. + * @chains: bitmask for filled values in @chain_signal, @chain_signal_avg + * @chain_signal: per-chain signal strength of last received packet in dBm + * @chain_signal_avg: per-chain signal strength average in dBm * @txrate: current unicast bitrate from this station * @rxrate: current unicast bitrate to this station * @rx_packets: packets received from this station -@@ -663,6 +670,11 @@ struct station_info { +@@ -684,6 +691,11 @@ struct station_info { u8 plink_state; s8 signal; s8 signal_avg; @@ -137,7 +137,7 @@ u8 rs_num_delims; --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c -@@ -952,6 +952,7 @@ static int ath9k_rx_skb_preprocess(struc +@@ -955,6 +955,7 @@ static int ath9k_rx_skb_preprocess(struc bool *decrypt_error) { struct ath_hw *ah = common->ah; @@ -145,7 +145,7 @@ /* * everything but the rate is checked here, the rate check is done -@@ -977,6 +978,20 @@ static int ath9k_rx_skb_preprocess(struc +@@ -980,6 +981,20 @@ static int ath9k_rx_skb_preprocess(struc if (rx_stats->rs_moreaggr) rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL; @@ -229,7 +229,7 @@ if (ads.ds_rxstatus8 & AR_RxKeyIdxValid) --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -998,12 +998,12 @@ void ath_debug_stat_rx(struct ath_softc +@@ -997,12 +997,12 @@ void ath_debug_stat_rx(struct ath_softc #ifdef CONFIG_ATH9K_MAC_DEBUG spin_lock(&sc->debug.samp_lock); RX_SAMP_DBG(jiffies) = jiffies; @@ -250,7 +250,7 @@ RX_SAMP_DBG(rate) = rs->rs_rate; --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h -@@ -1699,6 +1699,8 @@ enum nl80211_sta_bss_param { +@@ -1729,6 +1729,8 @@ enum nl80211_sta_bss_param { * @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update. * @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32) * @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64) @@ -259,7 +259,7 @@ * @__NL80211_STA_INFO_AFTER_LAST: internal * @NL80211_STA_INFO_MAX: highest possible station info attribute */ -@@ -1723,6 +1725,8 @@ enum nl80211_sta_info { +@@ -1753,6 +1755,8 @@ enum nl80211_sta_info { NL80211_STA_INFO_STA_FLAGS, NL80211_STA_INFO_BEACON_LOSS, NL80211_STA_INFO_T_OFFSET, @@ -270,7 +270,7 @@ __NL80211_STA_INFO_AFTER_LAST, --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -2553,6 +2553,32 @@ nla_put_failure: +@@ -2648,6 +2648,32 @@ nla_put_failure: return false; } @@ -303,7 +303,7 @@ static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq, int flags, struct cfg80211_registered_device *rdev, -@@ -2614,6 +2640,18 @@ static int nl80211_send_station(struct s +@@ -2709,6 +2735,18 @@ static int nl80211_send_station(struct s default: break; } @@ -324,16 +324,16 @@ NL80211_STA_INFO_TX_BITRATE)) --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -354,6 +354,7 @@ static void sta_set_sinfo(struct sta_inf - { +@@ -355,6 +355,7 @@ static void sta_set_sinfo(struct sta_inf struct ieee80211_sub_if_data *sdata = sta->sdata; + struct ieee80211_local *local = sdata->local; struct timespec uptime; + int i; sinfo->generation = sdata->local->sta_generation; -@@ -391,6 +392,17 @@ static void sta_set_sinfo(struct sta_inf - sinfo->signal = (s8)sta->last_signal; +@@ -394,6 +395,17 @@ static void sta_set_sinfo(struct sta_inf + sinfo->signal = (s8)sta->last_signal; sinfo->signal_avg = (s8) -ewma_read(&sta->avg_signal); } + if (sta->chains) { diff --git a/package/mac80211/patches/530-ath9k_fix_initvals.patch b/package/mac80211/patches/530-ath9k_fix_initvals.patch index 99121f7ab5..d86e718f05 100644 --- a/package/mac80211/patches/530-ath9k_fix_initvals.patch +++ b/package/mac80211/patches/530-ath9k_fix_initvals.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h -@@ -533,108 +533,108 @@ static const u32 ar9300_2p2_baseband_cor +@@ -534,108 +534,108 @@ static const u32 ar9300_2p2_baseband_cor static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ diff --git a/package/mac80211/patches/540-ath9k_extra_leds.patch b/package/mac80211/patches/540-ath9k_extra_leds.patch index dbda5ef3fa..2dfc1ed856 100644 --- a/package/mac80211/patches/540-ath9k_extra_leds.patch +++ b/package/mac80211/patches/540-ath9k_extra_leds.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -519,6 +519,9 @@ static inline u16 ath9k_btcoex_aggr_limi +@@ -528,6 +528,9 @@ static inline void ath9k_btcoex_stop_gen #ifdef CONFIG_MAC80211_LEDS void ath_init_leds(struct ath_softc *sc); void ath_deinit_leds(struct ath_softc *sc); @@ -10,7 +10,7 @@ #else static inline void ath_init_leds(struct ath_softc *sc) { -@@ -637,6 +640,13 @@ struct ath9k_vif_iter_data { +@@ -645,6 +648,13 @@ struct ath9k_vif_iter_data { int nadhocs; /* number of adhoc vifs */ }; @@ -24,7 +24,7 @@ struct ath_softc { struct ieee80211_hw *hw; struct device *dev; -@@ -678,9 +688,8 @@ struct ath_softc { +@@ -686,9 +696,8 @@ struct ath_softc { struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; #ifdef CONFIG_MAC80211_LEDS @@ -182,7 +182,7 @@ #endif --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1256,6 +1256,61 @@ static const struct file_operations fops +@@ -1255,6 +1255,61 @@ static const struct file_operations fops .llseek = default_llseek, }; @@ -244,7 +244,7 @@ #ifdef CONFIG_ATH9K_MAC_DEBUG void ath9k_debug_samp_bb_mac(struct ath_softc *sc) -@@ -1681,6 +1736,11 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1680,6 +1735,11 @@ int ath9k_init_debug(struct ath_hw *ah) &fops_samps); #endif diff --git a/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch b/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch index ea066a843c..ae962b5a17 100644 --- a/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch +++ b/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -702,6 +702,8 @@ struct ieee80211_sub_if_data { +@@ -710,6 +710,8 @@ struct ieee80211_sub_if_data { /* bitmap of allowed (non-MCS) rate indexes for rate control */ u32 rc_rateidx_mask[IEEE80211_NUM_BANDS]; @@ -11,7 +11,7 @@ union { --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2119,9 +2119,20 @@ static int ieee80211_set_bitrate_mask(st +@@ -2135,9 +2135,20 @@ static int ieee80211_set_bitrate_mask(st } for (i = 0; i < IEEE80211_NUM_BANDS; i++) { @@ -34,7 +34,7 @@ return 0; --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -3676,7 +3676,7 @@ void ieee80211_send_bar(struct ieee80211 +@@ -3665,7 +3665,7 @@ void ieee80211_send_bar(struct ieee80211 * (deprecated; this will be removed once drivers get updated to use * rate_idx_mask) * @rate_idx_mask: user-requested (legacy) rate mask @@ -43,7 +43,7 @@ * @bss: whether this frame is sent out in AP or IBSS mode */ struct ieee80211_tx_rate_control { -@@ -3688,7 +3688,7 @@ struct ieee80211_tx_rate_control { +@@ -3677,7 +3677,7 @@ struct ieee80211_tx_rate_control { bool rts, short_preamble; u8 max_rate_idx; u32 rate_idx_mask; @@ -54,7 +54,7 @@ --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -637,9 +637,11 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021 +@@ -624,9 +624,11 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021 txrc.max_rate_idx = -1; else txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; @@ -69,7 +69,7 @@ txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP || tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT || tx->sdata->vif.type == NL80211_IFTYPE_ADHOC); -@@ -2475,8 +2477,6 @@ struct sk_buff *ieee80211_beacon_get_tim +@@ -2454,8 +2456,6 @@ struct sk_buff *ieee80211_beacon_get_tim txrc.max_rate_idx = -1; else txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; diff --git a/package/mac80211/patches/561-ath9k_antenna_mask_validate.patch b/package/mac80211/patches/561-ath9k_antenna_mask_validate.patch index 8b5005b7d8..9ad4f57d3d 100644 --- a/package/mac80211/patches/561-ath9k_antenna_mask_validate.patch +++ b/package/mac80211/patches/561-ath9k_antenna_mask_validate.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1929,12 +1929,29 @@ static u32 fill_chainmask(u32 cap, u32 n +@@ -1840,12 +1840,29 @@ static u32 fill_chainmask(u32 cap, u32 n return filled; } diff --git a/package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch b/package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch index 7503634776..72a56a6220 100644 --- a/package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch +++ b/package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -676,10 +676,6 @@ static int __ath9k_hw_init(struct ath_hw +@@ -680,10 +680,6 @@ static int __ath9k_hw_init(struct ath_hw if (!AR_SREV_9300_20_OR_LATER(ah)) ah->ani_function &= ~ATH9K_ANI_MRC_CCK; diff --git a/package/mac80211/patches/564-ath9k_fix_ani_update.patch b/package/mac80211/patches/564-ath9k_fix_ani_update.patch deleted file mode 100644 index 19df768d5d..0000000000 --- a/package/mac80211/patches/564-ath9k_fix_ani_update.patch +++ /dev/null @@ -1,115 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ani.c -+++ b/drivers/net/wireless/ath/ath9k/ani.c -@@ -140,7 +140,8 @@ static void ath9k_ani_restart(struct ath - } - - /* Adjust the OFDM Noise Immunity Level */ --static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel) -+static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel, -+ bool scan) - { - struct ar5416AniState *aniState = &ah->curchan->ani; - struct ath_common *common = ath9k_hw_common(ah); -@@ -153,7 +154,7 @@ static void ath9k_hw_set_ofdm_nil(struct - immunityLevel, BEACON_RSSI(ah), - aniState->rssiThrLow, aniState->rssiThrHigh); - -- if (aniState->update_ani) -+ if (!scan) - aniState->ofdmNoiseImmunityLevel = immunityLevel; - - entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel]; -@@ -199,13 +200,14 @@ static void ath9k_hw_ani_ofdm_err_trigge - aniState = &ah->curchan->ani; - - if (aniState->ofdmNoiseImmunityLevel < ATH9K_ANI_OFDM_MAX_LEVEL) -- ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel + 1); -+ ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel + 1, false); - } - - /* - * Set the ANI settings to match an CCK level. - */ --static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel) -+static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel, -+ bool scan) - { - struct ar5416AniState *aniState = &ah->curchan->ani; - struct ath_common *common = ath9k_hw_common(ah); -@@ -222,7 +224,7 @@ static void ath9k_hw_set_cck_nil(struct - immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI) - immunityLevel = ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI; - -- if (aniState->update_ani) -+ if (!scan) - aniState->cckNoiseImmunityLevel = immunityLevel; - - entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel]; -@@ -254,7 +256,8 @@ static void ath9k_hw_ani_cck_err_trigger - aniState = &ah->curchan->ani; - - if (aniState->cckNoiseImmunityLevel < ATH9K_ANI_CCK_MAX_LEVEL) -- ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel + 1); -+ ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel + 1, -+ false); - } - - /* -@@ -270,13 +273,15 @@ static void ath9k_hw_ani_lower_immunity( - /* lower OFDM noise immunity */ - if (aniState->ofdmNoiseImmunityLevel > 0 && - (aniState->ofdmsTurn || aniState->cckNoiseImmunityLevel == 0)) { -- ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel - 1); -+ ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel - 1, -+ false); - return; - } - - /* lower CCK noise immunity */ - if (aniState->cckNoiseImmunityLevel > 0) -- ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel - 1); -+ ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel - 1, -+ false); - } - - /* -@@ -338,7 +343,6 @@ void ath9k_ani_reset(struct ath_hw *ah, - aniState->ofdmNoiseImmunityLevel, - aniState->cckNoiseImmunityLevel); - -- aniState->update_ani = false; - ofdm_nil = ATH9K_ANI_OFDM_DEF_LEVEL; - cck_nil = ATH9K_ANI_CCK_DEF_LEVEL; - } -@@ -354,11 +358,9 @@ void ath9k_ani_reset(struct ath_hw *ah, - is_scanning, - aniState->ofdmNoiseImmunityLevel, - aniState->cckNoiseImmunityLevel); -- -- aniState->update_ani = true; - } -- ath9k_hw_set_ofdm_nil(ah, ofdm_nil); -- ath9k_hw_set_cck_nil(ah, cck_nil); -+ ath9k_hw_set_ofdm_nil(ah, ofdm_nil, is_scanning); -+ ath9k_hw_set_cck_nil(ah, cck_nil, is_scanning); - - /* - * enable phy counters if hw supports or if not, enable phy -@@ -538,7 +540,6 @@ void ath9k_hw_ani_init(struct ath_hw *ah - ani->ofdmWeakSigDetect = ATH9K_ANI_USE_OFDM_WEAK_SIG; - ani->cckNoiseImmunityLevel = ATH9K_ANI_CCK_DEF_LEVEL; - ani->ofdmNoiseImmunityLevel = ATH9K_ANI_OFDM_DEF_LEVEL; -- ani->update_ani = false; - } - - /* ---- a/drivers/net/wireless/ath/ath9k/ani.h -+++ b/drivers/net/wireless/ath/ath9k/ani.h -@@ -116,7 +116,6 @@ struct ar5416AniState { - u8 firstepLevel; - u8 ofdmWeakSigDetect; - u8 cckWeakSigThreshold; -- bool update_ani; - u32 listenTime; - int32_t rssiThrLow; - int32_t rssiThrHigh; diff --git a/package/mac80211/patches/567-ath9k_revert_initval_change.patch b/package/mac80211/patches/564-ath9k_revert_initval_change.patch index 49aea350c7..49aea350c7 100644 --- a/package/mac80211/patches/567-ath9k_revert_initval_change.patch +++ b/package/mac80211/patches/564-ath9k_revert_initval_change.patch diff --git a/package/mac80211/patches/565-ath9k_fix_txgain.patch b/package/mac80211/patches/565-ath9k_fix_txgain.patch new file mode 100644 index 0000000000..c2f54d6464 --- /dev/null +++ b/package/mac80211/patches/565-ath9k_fix_txgain.patch @@ -0,0 +1,66 @@ +--- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c +@@ -561,8 +561,8 @@ static void ar9003_tx_gain_table_mode1(s + 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), ++ ar9340Modes_high_ob_db_tx_gain_table_1p0, ++ ARRAY_SIZE(ar9340Modes_high_ob_db_tx_gain_table_1p0), + 5); + else if (AR_SREV_9485_11(ah)) + INIT_INI_ARRAY(&ah->iniModesTxGain, +@@ -605,8 +605,8 @@ static void ar9003_tx_gain_table_mode2(s + 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), ++ ar9340Modes_low_ob_db_tx_gain_table_1p0, ++ ARRAY_SIZE(ar9340Modes_low_ob_db_tx_gain_table_1p0), + 5); + else if (AR_SREV_9485_11(ah)) + INIT_INI_ARRAY(&ah->iniModesTxGain, +@@ -639,8 +639,8 @@ static void ar9003_tx_gain_table_mode3(s + 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), ++ ar9340Modes_high_power_tx_gain_table_1p0, ++ ARRAY_SIZE(ar9340Modes_high_power_tx_gain_table_1p0), + 5); + else if (AR_SREV_9485_11(ah)) + INIT_INI_ARRAY(&ah->iniModesTxGain, +@@ -659,6 +659,20 @@ static void ar9003_tx_gain_table_mode3(s + 5); + } + ++static void ar9003_tx_gain_table_mode4(struct ath_hw *ah) ++{ ++ if (AR_SREV_9340(ah)) ++ INIT_INI_ARRAY(&ah->iniModesTxGain, ++ ar9340Modes_mixed_ob_db_tx_gain_table_1p0, ++ ARRAY_SIZE(ar9340Modes_mixed_ob_db_tx_gain_table_1p0), ++ 5); ++ else if (AR_SREV_9580(ah)) ++ INIT_INI_ARRAY(&ah->iniModesTxGain, ++ ar9580_1p0_mixed_ob_db_tx_gain_table, ++ ARRAY_SIZE(ar9580_1p0_mixed_ob_db_tx_gain_table), ++ 5); ++} ++ + static void ar9003_tx_gain_table_apply(struct ath_hw *ah) + { + switch (ar9003_hw_get_tx_gain_idx(ah)) { +@@ -675,6 +689,9 @@ static void ar9003_tx_gain_table_apply(s + case 3: + ar9003_tx_gain_table_mode3(ah); + break; ++ case 4: ++ ar9003_tx_gain_table_mode4(ah); ++ break; + } + } + diff --git a/package/mac80211/patches/565-ath9k_update_ar9340_initvals.patch b/package/mac80211/patches/565-ath9k_update_ar9340_initvals.patch deleted file mode 100644 index 729829370a..0000000000 --- a/package/mac80211/patches/565-ath9k_update_ar9340_initvals.patch +++ /dev/null @@ -1,786 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9340_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9340_initvals.h -@@ -1,5 +1,6 @@ - /* -- * Copyright (c) 2011 Atheros Communications Inc. -+ * Copyright (c) 2010-2011 Atheros Communications Inc. -+ * Copyright (c) 2011-2012 Qualcomm Atheros 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 -@@ -18,16 +19,16 @@ - #define INITVALS_9340_H - - static const u32 ar9340_1p0_radio_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x000160ac, 0xa4646800, 0xa4646800, 0xa4646800, 0xa4646800}, -- {0x0001610c, 0x08000000, 0x08000000, 0x00000000, 0x00000000}, -+ {0x0001610c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, - {0x00016140, 0x10804000, 0x10804000, 0x50804000, 0x50804000}, -- {0x0001650c, 0x08000000, 0x08000000, 0x00000000, 0x00000000}, -+ {0x0001650c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, - {0x00016540, 0x10804000, 0x10804000, 0x50804000, 0x50804000}, - }; - - static const u32 ar9340Modes_lowest_ob_db_tx_gain_table_1p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, -@@ -100,20 +101,20 @@ static const u32 ar9340Modes_lowest_ob_d - }; - - static const u32 ar9340Modes_fast_clock_1p0[][3] = { -- /* Addr 5G_HT20 5G_HT40 */ -+ /* Addr 5G_HT20 5G_HT40 */ - {0x00001030, 0x00000268, 0x000004d0}, - {0x00001070, 0x0000018c, 0x00000318}, - {0x000010b0, 0x00000fd0, 0x00001fa0}, - {0x00008014, 0x044c044c, 0x08980898}, - {0x0000801c, 0x148ec02b, 0x148ec057}, - {0x00008318, 0x000044c0, 0x00008980}, -- {0x00009e00, 0x03721821, 0x03721821}, -+ {0x00009e00, 0x0372131c, 0x0372131c}, - {0x0000a230, 0x0000000b, 0x00000016}, - {0x0000a254, 0x00000898, 0x00001130}, - }; - - static const u32 ar9340_1p0_radio_core[][2] = { -- /* Addr allmodes */ -+ /* Addr allmodes */ - {0x00016000, 0x36db6db6}, - {0x00016004, 0x6db6db40}, - {0x00016008, 0x73f00000}, -@@ -146,15 +147,13 @@ static const u32 ar9340_1p0_radio_core[] - {0x00016100, 0x04cb0001}, - {0x00016104, 0xfff80000}, - {0x00016108, 0x00080010}, -- {0x0001610c, 0x00000000}, - {0x00016140, 0x50804008}, - {0x00016144, 0x01884080}, - {0x00016148, 0x000080c0}, - {0x00016280, 0x01000015}, -- {0x00016284, 0x05530000}, -+ {0x00016284, 0x15530000}, - {0x00016288, 0x00318000}, - {0x0001628c, 0x50000000}, -- {0x00016290, 0x4080294f}, - {0x00016380, 0x00000000}, - {0x00016384, 0x00000000}, - {0x00016388, 0x00800700}, -@@ -219,13 +218,14 @@ static const u32 ar9340_1p0_radio_core[] - }; - - static const u32 ar9340_1p0_radio_core_40M[][2] = { -+ /* Addr allmodes */ - {0x0001609c, 0x02566f3a}, - {0x000160ac, 0xa4647c00}, - {0x000160b0, 0x01885f5a}, - }; - - static const u32 ar9340_1p0_mac_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160}, - {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c}, - {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38}, -@@ -237,34 +237,37 @@ static const u32 ar9340_1p0_mac_postambl - }; - - static const u32 ar9340_1p0_soc_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023}, - }; - - static const u32 ar9340_1p0_baseband_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8011, 0xd00a8011}, - {0x00009820, 0x206a022e, 0x206a022e, 0x206a022e, 0x206a022e}, - {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, - {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881}, - {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, - {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c}, -- {0x00009c00, 0x00000044, 0x000000c4, 0x000000c4, 0x00000044}, -- {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0}, -- {0x00009e04, 0x00182020, 0x00182020, 0x00182020, 0x00182020}, -+ {0x00009c00, 0x000000c4, 0x000000c4, 0x000000c4, 0x000000c4}, -+ {0x00009e00, 0x0372111a, 0x0372111a, 0x037216a0, 0x037216a0}, -+ {0x00009e04, 0x001c2020, 0x001c2020, 0x001c2020, 0x001c2020}, - {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, - {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec88d2e, 0x7ec88d2e}, -- {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e}, -+ {0x00009e14, 0x37b95d5e, 0x37b9605e, 0x3379605e, 0x33795d5e}, - {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c}, - {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce}, - {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021}, -+ {0x00009e3c, 0xcf946220, 0xcf946220, 0xcf946222, 0xcf946222}, - {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27}, - {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, - {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, -- {0x0000a204, 0x00003fc0, 0x00003fc4, 0x00003fc4, 0x00003fc0}, -+ {0x0000a204, 0x00003ec0, 0x00003ec4, 0x00003ec4, 0x00003ec0}, - {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004}, -+ {0x0000a22c, 0x07e26a2f, 0x07e26a2f, 0x01026a2f, 0x01026a2f}, - {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b}, -+ {0x0000a234, 0x00000fff, 0x10000fff, 0x10000fff, 0x00000fff}, - {0x0000a238, 0xffb81018, 0xffb81018, 0xffb81018, 0xffb81018}, - {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108}, - {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898}, -@@ -277,11 +280,11 @@ static const u32 ar9340_1p0_baseband_pos - {0x0000a288, 0x00000220, 0x00000220, 0x00000110, 0x00000110}, - {0x0000a28c, 0x00011111, 0x00011111, 0x00022222, 0x00022222}, - {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, -- {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982}, -- {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, -+ {0x0000a2d0, 0x00041983, 0x00041983, 0x00041982, 0x00041982}, -+ {0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a}, - {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -- {0x0000ae04, 0x00180000, 0x00180000, 0x00180000, 0x00180000}, -+ {0x0000ae04, 0x001c0000, 0x001c0000, 0x001c0000, 0x001c0000}, - {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, - {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -@@ -289,21 +292,21 @@ static const u32 ar9340_1p0_baseband_pos - }; - - static const u32 ar9340_1p0_baseband_core[][2] = { -- /* Addr allmodes */ -+ /* Addr allmodes */ - {0x00009800, 0xafe68e30}, - {0x00009804, 0xfd14e000}, - {0x00009808, 0x9c0a9f6b}, - {0x0000980c, 0x04900000}, -- {0x00009814, 0xb280c00a}, -+ {0x00009814, 0x3280c00a}, - {0x00009818, 0x00000000}, - {0x0000981c, 0x00020028}, -- {0x00009834, 0x5f3ca3de}, -+ {0x00009834, 0x6400a190}, - {0x00009838, 0x0108ecff}, -- {0x0000983c, 0x14750600}, -+ {0x0000983c, 0x14000600}, - {0x00009880, 0x201fff00}, - {0x00009884, 0x00001042}, - {0x000098a4, 0x00200400}, -- {0x000098b0, 0x52440bbe}, -+ {0x000098b0, 0x32840bbe}, - {0x000098d0, 0x004b6a8e}, - {0x000098d4, 0x00000820}, - {0x000098dc, 0x00000000}, -@@ -329,7 +332,6 @@ static const u32 ar9340_1p0_baseband_cor - {0x00009e30, 0x06336f77}, - {0x00009e34, 0x6af6532f}, - {0x00009e38, 0x0cc80c00}, -- {0x00009e3c, 0xcf946222}, - {0x00009e40, 0x0d261820}, - {0x00009e4c, 0x00001004}, - {0x00009e50, 0x00ff03f1}, -@@ -342,8 +344,6 @@ static const u32 ar9340_1p0_baseband_cor - {0x0000a220, 0x00000000}, - {0x0000a224, 0x00000000}, - {0x0000a228, 0x10002310}, -- {0x0000a22c, 0x01036a1e}, -- {0x0000a234, 0x10000fff}, - {0x0000a23c, 0x00000000}, - {0x0000a244, 0x0c000000}, - {0x0000a2a0, 0x00000001}, -@@ -351,10 +351,6 @@ static const u32 ar9340_1p0_baseband_cor - {0x0000a2c8, 0x00000000}, - {0x0000a2cc, 0x18c43433}, - {0x0000a2d4, 0x00000000}, -- {0x0000a2dc, 0x00000000}, -- {0x0000a2e0, 0x00000000}, -- {0x0000a2e4, 0x00000000}, -- {0x0000a2e8, 0x00000000}, - {0x0000a2ec, 0x00000000}, - {0x0000a2f0, 0x00000000}, - {0x0000a2f4, 0x00000000}, -@@ -385,7 +381,7 @@ static const u32 ar9340_1p0_baseband_cor - {0x0000a3e8, 0x20202020}, - {0x0000a3ec, 0x20202020}, - {0x0000a3f0, 0x00000000}, -- {0x0000a3f4, 0x00000246}, -+ {0x0000a3f4, 0x00000000}, - {0x0000a3f8, 0x0cdbd380}, - {0x0000a3fc, 0x000f0f01}, - {0x0000a400, 0x8fa91f01}, -@@ -402,33 +398,17 @@ static const u32 ar9340_1p0_baseband_cor - {0x0000a430, 0x1ce739ce}, - {0x0000a434, 0x00000000}, - {0x0000a438, 0x00001801}, -- {0x0000a43c, 0x00000000}, -+ {0x0000a43c, 0x00100000}, - {0x0000a440, 0x00000000}, - {0x0000a444, 0x00000000}, -- {0x0000a448, 0x04000080}, -+ {0x0000a448, 0x05000080}, - {0x0000a44c, 0x00000001}, - {0x0000a450, 0x00010000}, - {0x0000a458, 0x00000000}, -- {0x0000a600, 0x00000000}, -- {0x0000a604, 0x00000000}, -- {0x0000a608, 0x00000000}, -- {0x0000a60c, 0x00000000}, -- {0x0000a610, 0x00000000}, -- {0x0000a614, 0x00000000}, -- {0x0000a618, 0x00000000}, -- {0x0000a61c, 0x00000000}, -- {0x0000a620, 0x00000000}, -- {0x0000a624, 0x00000000}, -- {0x0000a628, 0x00000000}, -- {0x0000a62c, 0x00000000}, -- {0x0000a630, 0x00000000}, -- {0x0000a634, 0x00000000}, -- {0x0000a638, 0x00000000}, -- {0x0000a63c, 0x00000000}, - {0x0000a640, 0x00000000}, - {0x0000a644, 0x3fad9d74}, - {0x0000a648, 0x0048060a}, -- {0x0000a64c, 0x00000637}, -+ {0x0000a64c, 0x00003c37}, - {0x0000a670, 0x03020100}, - {0x0000a674, 0x09080504}, - {0x0000a678, 0x0d0c0b0a}, -@@ -451,10 +431,6 @@ static const u32 ar9340_1p0_baseband_cor - {0x0000a8f4, 0x00000000}, - {0x0000b2d0, 0x00000080}, - {0x0000b2d4, 0x00000000}, -- {0x0000b2dc, 0x00000000}, -- {0x0000b2e0, 0x00000000}, -- {0x0000b2e4, 0x00000000}, -- {0x0000b2e8, 0x00000000}, - {0x0000b2ec, 0x00000000}, - {0x0000b2f0, 0x00000000}, - {0x0000b2f4, 0x00000000}, -@@ -465,80 +441,108 @@ static const u32 ar9340_1p0_baseband_cor - }; - - static const u32 ar9340Modes_high_power_tx_gain_table_1p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -+ {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, 0x02008501, 0x02008501}, -+ {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03}, -+ {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, -+ {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04}, -+ {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005}, -+ {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -- {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, -- {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, -- {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200}, -- {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202}, -- {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400}, -- {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402}, -- {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404}, -- {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603}, -- {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02}, -- {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04}, -- {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20}, -- {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20}, -- {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22}, -- {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24}, -- {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640}, -- {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, -- {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, -- {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, -- {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -- {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, -- {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, -- {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, -- {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9}, -- {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb}, -- {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a504, 0x04002222, 0x04002222, 0x02000001, 0x02000001}, -+ {0x0000a508, 0x09002421, 0x09002421, 0x05000003, 0x05000003}, -+ {0x0000a50c, 0x0d002621, 0x0d002621, 0x0a000005, 0x0a000005}, -+ {0x0000a510, 0x13004620, 0x13004620, 0x0e000201, 0x0e000201}, -+ {0x0000a514, 0x19004a20, 0x19004a20, 0x11000203, 0x11000203}, -+ {0x0000a518, 0x1d004e20, 0x1d004e20, 0x14000401, 0x14000401}, -+ {0x0000a51c, 0x21005420, 0x21005420, 0x18000403, 0x18000403}, -+ {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000602, 0x1b000602}, -+ {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000802, 0x1f000802}, -+ {0x0000a528, 0x2f005e42, 0x2f005e42, 0x21000620, 0x21000620}, -+ {0x0000a52c, 0x33005e44, 0x33005e44, 0x25000820, 0x25000820}, -+ {0x0000a530, 0x38005e65, 0x38005e65, 0x29000822, 0x29000822}, -+ {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2d000824, 0x2d000824}, -+ {0x0000a538, 0x40005e6b, 0x40005e6b, 0x30000828, 0x30000828}, -+ {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x3400082a, 0x3400082a}, -+ {0x0000a540, 0x49005e72, 0x49005e72, 0x38000849, 0x38000849}, -+ {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b000a2c, 0x3b000a2c}, -+ {0x0000a548, 0x53005f12, 0x53005f12, 0x3e000e2b, 0x3e000e2b}, -+ {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42000e2d, 0x42000e2d}, -+ {0x0000a550, 0x5e025f12, 0x5e025f12, 0x4500124a, 0x4500124a}, -+ {0x0000a554, 0x61027f12, 0x61027f12, 0x4900124c, 0x4900124c}, -+ {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c00126c, 0x4c00126c}, -+ {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x4f00128c, 0x4f00128c}, -+ {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x52001290, 0x52001290}, -+ {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001292, 0x56001292}, -+ {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001292, 0x56001292}, -+ {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001292, 0x56001292}, -+ {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001292, 0x56001292}, -+ {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001292, 0x56001292}, -+ {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001292, 0x56001292}, -+ {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001292, 0x56001292}, - {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -- {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002}, -- {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004}, -- {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200}, -- {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202}, -- {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400}, -- {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402}, -- {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404}, -- {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603}, -- {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02}, -- {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04}, -- {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20}, -- {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20}, -- {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22}, -- {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24}, -- {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640}, -- {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660}, -- {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861}, -- {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81}, -- {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83}, -- {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84}, -- {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3}, -- {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5}, -- {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9}, -- {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb}, -- {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x00016044, 0x056db2db, 0x056db2db, 0x056db2db, 0x056db2db}, -+ {0x0000a584, 0x04802222, 0x04802222, 0x02800001, 0x02800001}, -+ {0x0000a588, 0x09802421, 0x09802421, 0x05800003, 0x05800003}, -+ {0x0000a58c, 0x0d802621, 0x0d802621, 0x0a800005, 0x0a800005}, -+ {0x0000a590, 0x13804620, 0x13804620, 0x0e800201, 0x0e800201}, -+ {0x0000a594, 0x19804a20, 0x19804a20, 0x11800203, 0x11800203}, -+ {0x0000a598, 0x1d804e20, 0x1d804e20, 0x14800401, 0x14800401}, -+ {0x0000a59c, 0x21805420, 0x21805420, 0x18800403, 0x18800403}, -+ {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800602, 0x1b800602}, -+ {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800802, 0x1f800802}, -+ {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x21800620, 0x21800620}, -+ {0x0000a5ac, 0x33805e44, 0x33805e44, 0x25800820, 0x25800820}, -+ {0x0000a5b0, 0x38805e65, 0x38805e65, 0x29800822, 0x29800822}, -+ {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2d800824, 0x2d800824}, -+ {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x30800828, 0x30800828}, -+ {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x3480082a, 0x3480082a}, -+ {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38800849, 0x38800849}, -+ {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b800a2c, 0x3b800a2c}, -+ {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e800e2b, 0x3e800e2b}, -+ {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42800e2d, 0x42800e2d}, -+ {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x4580124a, 0x4580124a}, -+ {0x0000a5d4, 0x61827f12, 0x61827f12, 0x4980124c, 0x4980124c}, -+ {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c80126c, 0x4c80126c}, -+ {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x4f80128c, 0x4f80128c}, -+ {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x52801290, 0x52801290}, -+ {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801292, 0x56801292}, -+ {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801292, 0x56801292}, -+ {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801292, 0x56801292}, -+ {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801292, 0x56801292}, -+ {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801292, 0x56801292}, -+ {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801292, 0x56801292}, -+ {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801292, 0x56801292}, -+ {0x00016044, 0x056db2db, 0x056db2db, 0x022492db, 0x022492db}, - {0x00016048, 0x24925266, 0x24925266, 0x24925266, 0x24925266}, -- {0x00016444, 0x056db2db, 0x056db2db, 0x056db2db, 0x056db2db}, -+ {0x00016444, 0x056db2db, 0x056db2db, 0x022492db, 0x022492db}, - {0x00016448, 0x24925266, 0x24925266, 0x24925266, 0x24925266}, - }; - - static const u32 ar9340Modes_high_ob_db_tx_gain_table_1p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a2dc, 0x01feee00, 0x01feee00, 0x03aaa352, 0x03aaa352}, -+ {0x0000a2e0, 0x0000f000, 0x0000f000, 0x03ccc584, 0x03ccc584}, -+ {0x0000a2e4, 0x01ff0000, 0x01ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, - {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, -@@ -559,7 +563,7 @@ static const u32 ar9340Modes_high_ob_db_ - {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, - {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, - {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, -- {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -+ {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, - {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, - {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, - {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, -@@ -604,13 +608,43 @@ static const u32 ar9340Modes_high_ob_db_ - {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, - {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, - {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, -+ {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, -+ {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, -+ {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, -+ {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, -+ {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, -+ {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, -+ {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000b2dc, 0x01feee00, 0x01feee00, 0x03aaa352, 0x03aaa352}, -+ {0x0000b2e0, 0x0000f000, 0x0000f000, 0x03ccc584, 0x03ccc584}, -+ {0x0000b2e4, 0x01ff0000, 0x01ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x00016044, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4}, -- {0x00016048, 0x8e481266, 0x8e481266, 0x8e481266, 0x8e481266}, -+ {0x00016048, 0x8e481666, 0x8e481666, 0x8e481266, 0x8e481266}, -+ {0x00016280, 0x01000015, 0x01000015, 0x01001015, 0x01001015}, - {0x00016444, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4}, -- {0x00016448, 0x8e481266, 0x8e481266, 0x8e481266, 0x8e481266}, -+ {0x00016448, 0x8e481666, 0x8e481666, 0x8e481266, 0x8e481266}, - }; -+ - static const u32 ar9340Modes_ub124_tx_gain_table_1p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8005, 0xd00a8005}, -+ {0x00009820, 0x206a022e, 0x206a022e, 0x206a00ae, 0x206a00ae}, -+ {0x00009830, 0x0000059c, 0x0000059c, 0x0000059c, 0x0000059c}, -+ {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec82d2e, 0x7ec82d2e}, -+ {0x0000a2dc, 0xfef5d402, 0xfef5d402, 0xfdab5b52, 0xfdab5b52}, -+ {0x0000a2e0, 0xfe896600, 0xfe896600, 0xfd339c84, 0xfd339c84}, -+ {0x0000a2e4, 0xff01f800, 0xff01f800, 0xfec3e000, 0xfec3e000}, -+ {0x0000a2e8, 0xfffe0000, 0xfffe0000, 0xfffc0000, 0xfffc0000}, - {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, - {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, -@@ -676,15 +710,34 @@ static const u32 ar9340Modes_ub124_tx_ga - {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, - {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, - {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x00016044, 0x036db2db, 0x036db2db, 0x036db2db, 0x036db2db}, -- {0x00016048, 0x69b65266, 0x69b65266, 0x69b65266, 0x69b65266}, -- {0x00016444, 0x036db2db, 0x036db2db, 0x036db2db, 0x036db2db}, -- {0x00016448, 0x69b65266, 0x69b65266, 0x69b65266, 0x69b65266}, -+ {0x00016044, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4}, -+ {0x00016048, 0x8e480086, 0x8e480086, 0x8e480086, 0x8e480086}, -+ {0x00016444, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4, 0x03b6d2e4}, -+ {0x00016448, 0x8e480086, 0x8e480086, 0x8e480086, 0x8e480086}, -+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, -+ {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, -+ {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, -+ {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, -+ {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, -+ {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, -+ {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, -+ {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000b2dc, 0xfef5d402, 0xfef5d402, 0xfdab5b52, 0xfdab5b52}, -+ {0x0000b2e0, 0xfe896600, 0xfe896600, 0xfd339c84, 0xfd339c84}, -+ {0x0000b2e4, 0xff01f800, 0xff01f800, 0xfec3e000, 0xfec3e000}, -+ {0x0000b2e8, 0xfffe0000, 0xfffe0000, 0xfffc0000, 0xfffc0000}, - }; - -- - static const u32 ar9340Common_rx_gain_table_1p0[][2] = { -- /* Addr allmodes */ -+ /* Addr allmodes */ - {0x0000a000, 0x00010000}, - {0x0000a004, 0x00030002}, - {0x0000a008, 0x00050004}, -@@ -845,14 +898,14 @@ static const u32 ar9340Common_rx_gain_ta - {0x0000b074, 0x00000000}, - {0x0000b078, 0x00000000}, - {0x0000b07c, 0x00000000}, -- {0x0000b080, 0x32323232}, -- {0x0000b084, 0x2f2f3232}, -- {0x0000b088, 0x23282a2d}, -- {0x0000b08c, 0x1c1e2123}, -- {0x0000b090, 0x14171919}, -- {0x0000b094, 0x0e0e1214}, -- {0x0000b098, 0x03050707}, -- {0x0000b09c, 0x00030303}, -+ {0x0000b080, 0x23232323}, -+ {0x0000b084, 0x21232323}, -+ {0x0000b088, 0x19191c1e}, -+ {0x0000b08c, 0x12141417}, -+ {0x0000b090, 0x07070e0e}, -+ {0x0000b094, 0x03030305}, -+ {0x0000b098, 0x00000003}, -+ {0x0000b09c, 0x00000000}, - {0x0000b0a0, 0x00000000}, - {0x0000b0a4, 0x00000000}, - {0x0000b0a8, 0x00000000}, -@@ -944,7 +997,11 @@ static const u32 ar9340Common_rx_gain_ta - }; - - static const u32 ar9340Modes_low_ob_db_tx_gain_table_1p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, -@@ -952,8 +1009,8 @@ static const u32 ar9340Modes_low_ob_db_t - {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200}, - {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202}, - {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400}, -- {0x0000a518, 0x21020220, 0x21020220, 0x16000402, 0x16000402}, -- {0x0000a51c, 0x27020223, 0x27020223, 0x19000404, 0x19000404}, -+ {0x0000a518, 0x21002220, 0x21002220, 0x16000402, 0x16000402}, -+ {0x0000a51c, 0x27002223, 0x27002223, 0x19000404, 0x19000404}, - {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603}, - {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02}, - {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04}, -@@ -965,19 +1022,19 @@ static const u32 ar9340Modes_low_ob_db_t - {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660}, - {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861}, - {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81}, -- {0x0000a54c, 0x5c04286b, 0x5c04286b, 0x47001a83, 0x47001a83}, -- {0x0000a550, 0x61042a6c, 0x61042a6c, 0x4a001c84, 0x4a001c84}, -- {0x0000a554, 0x66062a6c, 0x66062a6c, 0x4e001ce3, 0x4e001ce3}, -- {0x0000a558, 0x6b062e6c, 0x6b062e6c, 0x52001ce5, 0x52001ce5}, -- {0x0000a55c, 0x7006308c, 0x7006308c, 0x56001ce9, 0x56001ce9}, -- {0x0000a560, 0x730a308a, 0x730a308a, 0x5a001ceb, 0x5a001ceb}, -- {0x0000a564, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec}, -- {0x0000a568, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec}, -- {0x0000a56c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec}, -- {0x0000a570, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec}, -- {0x0000a574, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec}, -- {0x0000a578, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec}, -- {0x0000a57c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec}, -+ {0x0000a54c, 0x5c02486b, 0x5c02486b, 0x47001a83, 0x47001a83}, -+ {0x0000a550, 0x61024a6c, 0x61024a6c, 0x4a001c84, 0x4a001c84}, -+ {0x0000a554, 0x66026a6c, 0x66026a6c, 0x4e001ce3, 0x4e001ce3}, -+ {0x0000a558, 0x6b026e6c, 0x6b026e6c, 0x52001ce5, 0x52001ce5}, -+ {0x0000a55c, 0x7002708c, 0x7002708c, 0x56001ce9, 0x56001ce9}, -+ {0x0000a560, 0x7302b08a, 0x7302b08a, 0x5a001ceb, 0x5a001ceb}, -+ {0x0000a564, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -+ {0x0000a568, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -+ {0x0000a56c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -+ {0x0000a570, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -+ {0x0000a574, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -+ {0x0000a578, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -+ {0x0000a57c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, - {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, - {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002}, - {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004}, -@@ -1010,14 +1067,40 @@ static const u32 ar9340Modes_low_ob_db_t - {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, - {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, - {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {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, 0x02008501, 0x02008501}, -+ {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03}, -+ {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, -+ {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04}, -+ {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005}, -+ {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x00016044, 0x056db2db, 0x056db2db, 0x056db2db, 0x056db2db}, -- {0x00016048, 0x24925266, 0x24925266, 0x24925266, 0x24925266}, -+ {0x00016048, 0x24925666, 0x24925666, 0x24925266, 0x24925266}, -+ {0x00016280, 0x01000015, 0x01000015, 0x01001015, 0x01001015}, -+ {0x00016288, 0xf0318000, 0xf0318000, 0xf0318000, 0xf0318000}, - {0x00016444, 0x056db2db, 0x056db2db, 0x056db2db, 0x056db2db}, -- {0x00016448, 0x24925266, 0x24925266, 0x24925266, 0x24925266}, -+ {0x00016448, 0x24925666, 0x24925666, 0x24925266, 0x24925266}, - }; - - static const u32 ar9340Modes_mixed_ob_db_tx_gain_table_1p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, -@@ -1025,8 +1108,8 @@ static const u32 ar9340Modes_mixed_ob_db - {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200}, - {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202}, - {0x0000a514, 0x1c000223, 0x1c000223, 0x11000400, 0x11000400}, -- {0x0000a518, 0x21020220, 0x21020220, 0x15000402, 0x15000402}, -- {0x0000a51c, 0x27020223, 0x27020223, 0x19000404, 0x19000404}, -+ {0x0000a518, 0x21002220, 0x21002220, 0x15000402, 0x15000402}, -+ {0x0000a51c, 0x27002223, 0x27002223, 0x19000404, 0x19000404}, - {0x0000a520, 0x2b022220, 0x2b022220, 0x1b000603, 0x1b000603}, - {0x0000a524, 0x2f022222, 0x2f022222, 0x1f000a02, 0x1f000a02}, - {0x0000a528, 0x34022225, 0x34022225, 0x23000a04, 0x23000a04}, -@@ -1038,19 +1121,19 @@ static const u32 ar9340Modes_mixed_ob_db - {0x0000a540, 0x4e02246c, 0x4e02246c, 0x38001660, 0x38001660}, - {0x0000a544, 0x5302266c, 0x5302266c, 0x3b001861, 0x3b001861}, - {0x0000a548, 0x5702286c, 0x5702286c, 0x3e001a81, 0x3e001a81}, -- {0x0000a54c, 0x5c04286b, 0x5c04286b, 0x42001a83, 0x42001a83}, -- {0x0000a550, 0x61042a6c, 0x61042a6c, 0x44001c84, 0x44001c84}, -- {0x0000a554, 0x66062a6c, 0x66062a6c, 0x48001ce3, 0x48001ce3}, -- {0x0000a558, 0x6b062e6c, 0x6b062e6c, 0x4c001ce5, 0x4c001ce5}, -- {0x0000a55c, 0x7006308c, 0x7006308c, 0x50001ce9, 0x50001ce9}, -- {0x0000a560, 0x730a308a, 0x730a308a, 0x54001ceb, 0x54001ceb}, -- {0x0000a564, 0x770a308c, 0x770a308c, 0x56001eec, 0x56001eec}, -- {0x0000a568, 0x770a308c, 0x770a308c, 0x56001eec, 0x56001eec}, -- {0x0000a56c, 0x770a308c, 0x770a308c, 0x56001eec, 0x56001eec}, -- {0x0000a570, 0x770a308c, 0x770a308c, 0x56001eec, 0x56001eec}, -- {0x0000a574, 0x770a308c, 0x770a308c, 0x56001eec, 0x56001eec}, -- {0x0000a578, 0x770a308c, 0x770a308c, 0x56001eec, 0x56001eec}, -- {0x0000a57c, 0x770a308c, 0x770a308c, 0x56001eec, 0x56001eec}, -+ {0x0000a54c, 0x5c02486b, 0x5c02486b, 0x42001a83, 0x42001a83}, -+ {0x0000a550, 0x61024a6c, 0x61024a6c, 0x44001c84, 0x44001c84}, -+ {0x0000a554, 0x66026a6c, 0x66026a6c, 0x48001ce3, 0x48001ce3}, -+ {0x0000a558, 0x6b026e6c, 0x6b026e6c, 0x4c001ce5, 0x4c001ce5}, -+ {0x0000a55c, 0x7002708c, 0x7002708c, 0x50001ce9, 0x50001ce9}, -+ {0x0000a560, 0x7302b08a, 0x7302b08a, 0x54001ceb, 0x54001ceb}, -+ {0x0000a564, 0x7702b08c, 0x7702b08c, 0x56001eec, 0x56001eec}, -+ {0x0000a568, 0x7702b08c, 0x7702b08c, 0x56001eec, 0x56001eec}, -+ {0x0000a56c, 0x7702b08c, 0x7702b08c, 0x56001eec, 0x56001eec}, -+ {0x0000a570, 0x7702b08c, 0x7702b08c, 0x56001eec, 0x56001eec}, -+ {0x0000a574, 0x7702b08c, 0x7702b08c, 0x56001eec, 0x56001eec}, -+ {0x0000a578, 0x7702b08c, 0x7702b08c, 0x56001eec, 0x56001eec}, -+ {0x0000a57c, 0x7702b08c, 0x7702b08c, 0x56001eec, 0x56001eec}, - {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, - {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002}, - {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004}, -@@ -1083,14 +1166,36 @@ static const u32 ar9340Modes_mixed_ob_db - {0x0000a5f4, 0x778a308c, 0x778a308c, 0x56801eec, 0x56801eec}, - {0x0000a5f8, 0x778a308c, 0x778a308c, 0x56801eec, 0x56801eec}, - {0x0000a5fc, 0x778a308c, 0x778a308c, 0x56801eec, 0x56801eec}, -+ {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, 0x02008501, 0x02008501}, -+ {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03}, -+ {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, -+ {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04}, -+ {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005}, -+ {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -+ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -+ {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x00016044, 0x056db2db, 0x056db2db, 0x03b6d2e4, 0x03b6d2e4}, -- {0x00016048, 0x24927266, 0x24927266, 0x8e483266, 0x8e483266}, -+ {0x00016048, 0x24925666, 0x24925666, 0x8e481266, 0x8e481266}, -+ {0x00016280, 0x01000015, 0x01000015, 0x01001015, 0x01001015}, -+ {0x00016288, 0x30318000, 0x30318000, 0x00318000, 0x00318000}, - {0x00016444, 0x056db2db, 0x056db2db, 0x03b6d2e4, 0x03b6d2e4}, -- {0x00016448, 0x24927266, 0x24927266, 0x8e482266, 0x8e482266}, -+ {0x00016448, 0x24925666, 0x24925666, 0x8e481266, 0x8e481266}, - }; - - static const u32 ar9340_1p0_mac_core[][2] = { -- /* Addr allmodes */ -+ /* Addr allmodes */ - {0x00000008, 0x00000000}, - {0x00000030, 0x00020085}, - {0x00000034, 0x00000005}, -@@ -1119,6 +1224,7 @@ static const u32 ar9340_1p0_mac_core[][2 - {0x00008004, 0x00000000}, - {0x00008008, 0x00000000}, - {0x0000800c, 0x00000000}, -+ {0x00008010, 0x00080800}, - {0x00008018, 0x00000000}, - {0x00008020, 0x00000000}, - {0x00008038, 0x00000000}, -@@ -1146,7 +1252,7 @@ static const u32 ar9340_1p0_mac_core[][2 - {0x000080bc, 0x00000000}, - {0x000080c0, 0x2a800000}, - {0x000080c4, 0x06900168}, -- {0x000080c8, 0x13881c20}, -+ {0x000080c8, 0x13881c22}, - {0x000080cc, 0x01f40000}, - {0x000080d0, 0x00252500}, - {0x000080d4, 0x00a00000}, -@@ -1250,11 +1356,11 @@ static const u32 ar9340_1p0_mac_core[][2 - {0x000083c4, 0x00000000}, - {0x000083c8, 0x00000000}, - {0x000083cc, 0x00000200}, -- {0x000083d0, 0x000301ff}, -+ {0x000083d0, 0x000101ff}, - }; - - static const u32 ar9340Common_wo_xlna_rx_gain_table_1p0[][2] = { -- /* Addr allmodes */ -+ /* Addr allmodes */ - {0x0000a000, 0x00010000}, - {0x0000a004, 0x00030002}, - {0x0000a008, 0x00050004}, -@@ -1514,12 +1620,11 @@ static const u32 ar9340Common_wo_xlna_rx - }; - - static const u32 ar9340_1p0_soc_preamble[][2] = { -- /* Addr allmodes */ -- {0x000040a4, 0x00a0c1c9}, -+ /* Addr allmodes */ - {0x00007008, 0x00000000}, - {0x00007020, 0x00000000}, - {0x00007034, 0x00000002}, - {0x00007038, 0x000004c2}, - }; - --#endif -+#endif /* INITVALS_9340_1P0_H */ diff --git a/package/mac80211/patches/566-ath9k_deduplicate_initvals.patch b/package/mac80211/patches/566-ath9k_deduplicate_initvals.patch deleted file mode 100644 index a3c918be0d..0000000000 --- a/package/mac80211/patches/566-ath9k_deduplicate_initvals.patch +++ /dev/null @@ -1,3745 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h -@@ -1,5 +1,6 @@ - /* - * Copyright (c) 2010-2011 Atheros Communications Inc. -+ * Copyright (c) 2011-2012 Qualcomm Atheros 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 ---- a/drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h -@@ -337,12 +337,7 @@ static const u32 ar9331_modes_low_ob_db_ - {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}, --}; -+#define ar9331_1p1_baseband_core_txfir_coeff_japan_2484 ar9462_2p0_baseband_core_txfir_coeff_japan_2484 - - static const u32 ar9331_1p1_xtal_25M[][2] = { - /* Addr allmodes */ -@@ -783,17 +778,7 @@ static const u32 ar9331_modes_high_power - {0x00016284, 0x14d3f000, 0x14d3f000, 0x14d3f000, 0x14d3f000}, - }; - --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}, --}; -+#define ar9331_1p1_mac_postamble ar9300_2p2_mac_postamble - - static const u32 ar9331_1p1_soc_preamble[][2] = { - /* Addr allmodes */ -@@ -1112,38 +1097,4 @@ static const u32 ar9331_common_tx_gain_o - {0x00000000}, - }; - --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 */ ---- a/drivers/net/wireless/ath/ath9k/ar9330_1p2_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9330_1p2_initvals.h -@@ -1,5 +1,6 @@ - /* -- * Copyright (c) 2011 Atheros Communications Inc. -+ * Copyright (c) 2010-2011 Atheros Communications Inc. -+ * Copyright (c) 2011-2012 Qualcomm Atheros 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 -@@ -17,8 +18,8 @@ - #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 */ -+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}, -@@ -102,8 +103,14 @@ static const u32 ar9331_modes_lowest_ob_ - {0x0000a63c, 0x04011004, 0x04011004, 0x04011004, 0x04011004}, - }; - -+#define ar9331_modes_high_power_tx_gain_1p2 ar9331_modes_high_ob_db_tx_gain_1p2 -+ -+#define ar9331_modes_low_ob_db_tx_gain_1p2 ar9331_modes_high_power_tx_gain_1p2 -+ -+#define ar9331_modes_lowest_ob_db_tx_gain_1p2 ar9331_modes_low_ob_db_tx_gain_1p2 -+ - static const u32 ar9331_1p2_baseband_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8005, 0xd00a8005}, - {0x00009820, 0x206a002e, 0x206a002e, 0x206a002e, 0x206a002e}, - {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -@@ -147,191 +154,6 @@ static const u32 ar9331_1p2_baseband_pos - {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}, -@@ -397,684 +219,24 @@ static const u32 ar9331_1p2_radio_core[] - {0x000163d4, 0x00000000}, - }; - --static const u32 ar9331_1p2_soc_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x00007010, 0x00000022, 0x00000022, 0x00000022, 0x00000022}, --}; -+#define ar9331_1p2_baseband_core_txfir_coeff_japan_2484 ar9331_1p1_baseband_core_txfir_coeff_japan_2484 - --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}, --}; -+#define ar9331_1p2_xtal_25M ar9331_1p1_xtal_25M - --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}, --}; -+#define ar9331_1p2_xtal_40M ar9331_1p1_xtal_40M - --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}, --}; -+#define ar9331_1p2_baseband_core ar9331_1p1_baseband_core - --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}, --}; -+#define ar9331_1p2_soc_postamble ar9331_1p1_soc_postamble - --static const u32 ar9331_1p2_soc_preamble[][2] = { -- /* Addr allmodes */ -- {0x00007020, 0x00000000}, -- {0x00007034, 0x00000002}, -- {0x00007038, 0x000002f8}, --}; -+#define ar9331_1p2_mac_postamble ar9331_1p1_mac_postamble - --static const u32 ar9331_1p2_xtal_40M[][2] = { -- /* Addr allmodes */ -- {0x00007038, 0x000004c2}, -- {0x00008244, 0x0010f400}, -- {0x0000824c, 0x0001e800}, -- {0x0001609c, 0x0b283f31}, --}; -+#define ar9331_1p2_soc_preamble ar9331_1p1_soc_preamble - --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}, --}; -+#define ar9331_1p2_mac_core ar9331_1p1_mac_core - --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}, --}; -+#define ar9331_common_wo_xlna_rx_gain_1p2 ar9331_common_wo_xlna_rx_gain_1p1 -+ -+#define ar9331_common_rx_gain_1p2 ar9485_common_rx_gain_1_1 - - #endif /* INITVALS_9330_1P2_H */ ---- a/drivers/net/wireless/ath/ath9k/ar9340_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9340_initvals.h -@@ -100,18 +100,7 @@ static const u32 ar9340Modes_lowest_ob_d - {0x00016448, 0x24925266, 0x24925266, 0x24925266, 0x24925266}, - }; - --static const u32 ar9340Modes_fast_clock_1p0[][3] = { -- /* Addr 5G_HT20 5G_HT40 */ -- {0x00001030, 0x00000268, 0x000004d0}, -- {0x00001070, 0x0000018c, 0x00000318}, -- {0x000010b0, 0x00000fd0, 0x00001fa0}, -- {0x00008014, 0x044c044c, 0x08980898}, -- {0x0000801c, 0x148ec02b, 0x148ec057}, -- {0x00008318, 0x000044c0, 0x00008980}, -- {0x00009e00, 0x0372131c, 0x0372131c}, -- {0x0000a230, 0x0000000b, 0x00000016}, -- {0x0000a254, 0x00000898, 0x00001130}, --}; -+#define ar9340Modes_fast_clock_1p0 ar9300Modes_fast_clock_2p2 - - static const u32 ar9340_1p0_radio_core[][2] = { - /* Addr allmodes */ -@@ -224,22 +213,9 @@ static const u32 ar9340_1p0_radio_core_4 - {0x000160b0, 0x01885f5a}, - }; - --static const u32 ar9340_1p0_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}, --}; -+#define ar9340_1p0_mac_postamble ar9300_2p2_mac_postamble - --static const u32 ar9340_1p0_soc_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023}, --}; -+#define ar9340_1p0_soc_postamble ar9300_2p2_soc_postamble - - static const u32 ar9340_1p0_baseband_postamble[][5] = { - /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -@@ -1359,265 +1335,7 @@ static const u32 ar9340_1p0_mac_core[][2 - {0x000083d0, 0x000101ff}, - }; - --static const u32 ar9340Common_wo_xlna_rx_gain_table_1p0[][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, 0x03820190}, -- {0x0000a030, 0x03840383}, -- {0x0000a034, 0x03880385}, -- {0x0000a038, 0x038a0389}, -- {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, 0x29292929}, -- {0x0000a084, 0x29292929}, -- {0x0000a088, 0x29292929}, -- {0x0000a08c, 0x29292929}, -- {0x0000a090, 0x22292929}, -- {0x0000a094, 0x1d1d2222}, -- {0x0000a098, 0x0c111117}, -- {0x0000a09c, 0x00030303}, -- {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}, -- {0x0000b000, 0x00010000}, -- {0x0000b004, 0x00030002}, -- {0x0000b008, 0x00050004}, -- {0x0000b00c, 0x00810080}, -- {0x0000b010, 0x00830082}, -- {0x0000b014, 0x01810180}, -- {0x0000b018, 0x01830182}, -- {0x0000b01c, 0x01850184}, -- {0x0000b020, 0x02810280}, -- {0x0000b024, 0x02830282}, -- {0x0000b028, 0x02850284}, -- {0x0000b02c, 0x02890288}, -- {0x0000b030, 0x028b028a}, -- {0x0000b034, 0x0388028c}, -- {0x0000b038, 0x038a0389}, -- {0x0000b03c, 0x038c038b}, -- {0x0000b040, 0x0390038d}, -- {0x0000b044, 0x03920391}, -- {0x0000b048, 0x03940393}, -- {0x0000b04c, 0x03960395}, -- {0x0000b050, 0x00000000}, -- {0x0000b054, 0x00000000}, -- {0x0000b058, 0x00000000}, -- {0x0000b05c, 0x00000000}, -- {0x0000b060, 0x00000000}, -- {0x0000b064, 0x00000000}, -- {0x0000b068, 0x00000000}, -- {0x0000b06c, 0x00000000}, -- {0x0000b070, 0x00000000}, -- {0x0000b074, 0x00000000}, -- {0x0000b078, 0x00000000}, -- {0x0000b07c, 0x00000000}, -- {0x0000b080, 0x32323232}, -- {0x0000b084, 0x2f2f3232}, -- {0x0000b088, 0x23282a2d}, -- {0x0000b08c, 0x1c1e2123}, -- {0x0000b090, 0x14171919}, -- {0x0000b094, 0x0e0e1214}, -- {0x0000b098, 0x03050707}, -- {0x0000b09c, 0x00030303}, -- {0x0000b0a0, 0x00000000}, -- {0x0000b0a4, 0x00000000}, -- {0x0000b0a8, 0x00000000}, -- {0x0000b0ac, 0x00000000}, -- {0x0000b0b0, 0x00000000}, -- {0x0000b0b4, 0x00000000}, -- {0x0000b0b8, 0x00000000}, -- {0x0000b0bc, 0x00000000}, -- {0x0000b0c0, 0x003f0020}, -- {0x0000b0c4, 0x00400041}, -- {0x0000b0c8, 0x0140005f}, -- {0x0000b0cc, 0x0160015f}, -- {0x0000b0d0, 0x017e017f}, -- {0x0000b0d4, 0x02410242}, -- {0x0000b0d8, 0x025f0240}, -- {0x0000b0dc, 0x027f0260}, -- {0x0000b0e0, 0x0341027e}, -- {0x0000b0e4, 0x035f0340}, -- {0x0000b0e8, 0x037f0360}, -- {0x0000b0ec, 0x04400441}, -- {0x0000b0f0, 0x0460045f}, -- {0x0000b0f4, 0x0541047f}, -- {0x0000b0f8, 0x055f0540}, -- {0x0000b0fc, 0x057f0560}, -- {0x0000b100, 0x06400641}, -- {0x0000b104, 0x0660065f}, -- {0x0000b108, 0x067e067f}, -- {0x0000b10c, 0x07410742}, -- {0x0000b110, 0x075f0740}, -- {0x0000b114, 0x077f0760}, -- {0x0000b118, 0x07800781}, -- {0x0000b11c, 0x07a0079f}, -- {0x0000b120, 0x07c107bf}, -- {0x0000b124, 0x000007c0}, -- {0x0000b128, 0x00000000}, -- {0x0000b12c, 0x00000000}, -- {0x0000b130, 0x00000000}, -- {0x0000b134, 0x00000000}, -- {0x0000b138, 0x00000000}, -- {0x0000b13c, 0x00000000}, -- {0x0000b140, 0x003f0020}, -- {0x0000b144, 0x00400041}, -- {0x0000b148, 0x0140005f}, -- {0x0000b14c, 0x0160015f}, -- {0x0000b150, 0x017e017f}, -- {0x0000b154, 0x02410242}, -- {0x0000b158, 0x025f0240}, -- {0x0000b15c, 0x027f0260}, -- {0x0000b160, 0x0341027e}, -- {0x0000b164, 0x035f0340}, -- {0x0000b168, 0x037f0360}, -- {0x0000b16c, 0x04400441}, -- {0x0000b170, 0x0460045f}, -- {0x0000b174, 0x0541047f}, -- {0x0000b178, 0x055f0540}, -- {0x0000b17c, 0x057f0560}, -- {0x0000b180, 0x06400641}, -- {0x0000b184, 0x0660065f}, -- {0x0000b188, 0x067e067f}, -- {0x0000b18c, 0x07410742}, -- {0x0000b190, 0x075f0740}, -- {0x0000b194, 0x077f0760}, -- {0x0000b198, 0x07800781}, -- {0x0000b19c, 0x07a0079f}, -- {0x0000b1a0, 0x07c107bf}, -- {0x0000b1a4, 0x000007c0}, -- {0x0000b1a8, 0x00000000}, -- {0x0000b1ac, 0x00000000}, -- {0x0000b1b0, 0x00000000}, -- {0x0000b1b4, 0x00000000}, -- {0x0000b1b8, 0x00000000}, -- {0x0000b1bc, 0x00000000}, -- {0x0000b1c0, 0x00000000}, -- {0x0000b1c4, 0x00000000}, -- {0x0000b1c8, 0x00000000}, -- {0x0000b1cc, 0x00000000}, -- {0x0000b1d0, 0x00000000}, -- {0x0000b1d4, 0x00000000}, -- {0x0000b1d8, 0x00000000}, -- {0x0000b1dc, 0x00000000}, -- {0x0000b1e0, 0x00000000}, -- {0x0000b1e4, 0x00000000}, -- {0x0000b1e8, 0x00000000}, -- {0x0000b1ec, 0x00000000}, -- {0x0000b1f0, 0x00000396}, -- {0x0000b1f4, 0x00000396}, -- {0x0000b1f8, 0x00000396}, -- {0x0000b1fc, 0x00000196}, --}; -+#define ar9340Common_wo_xlna_rx_gain_table_1p0 ar9300Common_wo_xlna_rx_gain_table_2p2 - - static const u32 ar9340_1p0_soc_preamble[][2] = { - /* Addr allmodes */ ---- a/drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h -@@ -1,5 +1,6 @@ - /* -- * Copyright (c) 2010 Atheros Communications Inc. -+ * Copyright (c) 2010-2011 Atheros Communications Inc. -+ * Copyright (c) 2011-2012 Qualcomm Atheros 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 -@@ -1007,7 +1008,7 @@ static const u32 ar9462_2p0_radio_core[] - - static const u32 ar9462_2p0_soc_preamble[][2] = { - /* Addr allmodes */ -- {0x000040a4 ,0x00a0c1c9}, -+ {0x000040a4, 0x00a0c1c9}, - {0x00007020, 0x00000000}, - {0x00007034, 0x00000002}, - {0x00007038, 0x000004c2}, ---- a/drivers/net/wireless/ath/ath9k/ar9485_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9485_initvals.h -@@ -1,5 +1,6 @@ - /* - * Copyright (c) 2010-2011 Atheros Communications Inc. -+ * Copyright (c) 2011-2012 Qualcomm Atheros 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 -@@ -17,599 +18,151 @@ - #ifndef INITVALS_9485_H - #define INITVALS_9485_H - --static const u32 ar9485_1_1_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, 0x13881c22}, -- {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}, -- {0x000081d4, 0x00000000}, -- {0x000081ec, 0x00000000}, -- {0x000081f0, 0x00000000}, -- {0x000081f4, 0x00000000}, -- {0x000081f8, 0x00000000}, -- {0x000081fc, 0x00000000}, -- {0x00008240, 0x00100000}, -- {0x00008244, 0x0010f400}, -- {0x00008248, 0x00000800}, -- {0x0000824c, 0x0001e800}, -- {0x00008250, 0x00000000}, -- {0x00008254, 0x00000000}, -- {0x00008258, 0x00000000}, -- {0x0000825c, 0x40000000}, -- {0x00008260, 0x00080922}, -- {0x00008264, 0x9ca00010}, -- {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, 0xa248105b}, -- {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 ar9485_1_1_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, 0x52440bbe}, -- {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}, -- {0x00009d1c, 0x00000000}, -- {0x00009e08, 0x0038233c}, -- {0x00009e24, 0x9927b515}, -- {0x00009e28, 0x12ef0200}, -- {0x00009e30, 0x06336f77}, -- {0x00009e34, 0x6af6532f}, -- {0x00009e38, 0x0cc80c00}, -- {0x00009e40, 0x0d261820}, -- {0x00009e4c, 0x00001004}, -- {0x00009e50, 0x00ff03f1}, -- {0x00009fc0, 0x80be4788}, -- {0x00009fc4, 0x0001efb5}, -- {0x00009fcc, 0x40000014}, -- {0x0000a20c, 0x00000000}, -- {0x0000a210, 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, 0x000000ff}, -- {0x0000a3a8, 0x3b3b3b3b}, -- {0x0000a3ac, 0x2f2f2f2f}, -- {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, 0x1ce739cf}, -- {0x0000a418, 0x2d0019ce}, -- {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}, -- {0x0000a5c4, 0xbfad9d74}, -- {0x0000a5c8, 0x0048060a}, -- {0x0000a5cc, 0x00000637}, -- {0x0000a760, 0x03020100}, -- {0x0000a764, 0x09080504}, -- {0x0000a768, 0x0d0c0b0a}, -- {0x0000a76c, 0x13121110}, -- {0x0000a770, 0x31301514}, -- {0x0000a774, 0x35343332}, -- {0x0000a778, 0x00000036}, -- {0x0000a780, 0x00000838}, -- {0x0000a7c0, 0x00000000}, -- {0x0000a7c4, 0xfffffffc}, -- {0x0000a7c8, 0x00000000}, -- {0x0000a7cc, 0x00000000}, -- {0x0000a7d0, 0x00000000}, -- {0x0000a7d4, 0x00000004}, -- {0x0000a7dc, 0x00000000}, --}; -- --static const u32 ar9485Common_1_1[][2] = { -- /* Addr allmodes */ -- {0x00007010, 0x00000022}, -- {0x00007020, 0x00000000}, -- {0x00007034, 0x00000002}, -- {0x00007038, 0x000004c2}, --}; -- --static const u32 ar9485_1_1_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, 0x037216a0, 0x037216a0}, -- {0x00009e04, 0x00182020, 0x00182020, 0x00182020, 0x00182020}, -- {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, -- {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 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, 0x00000021, 0x00000021}, -- {0x00009e3c, 0xcf946220, 0xcf946220, 0xcf946222, 0xcf946222}, -- {0x00009e44, 0x02321e27, 0x02321e27, 0x02282324, 0x02282324}, -- {0x00009e48, 0x5030201a, 0x5030201a, 0x50302010, 0x50302010}, -- {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, -- {0x0000a204, 0x01303fc0, 0x01303fc4, 0x01303fc4, 0x01303fc0}, -- {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004}, -- {0x0000a230, 0x0000400a, 0x00004014, 0x00004016, 0x0000400b}, -- {0x0000a234, 0x10000fff, 0x10000fff, 0x10000fff, 0x10000fff}, -- {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, 0x000002a0, 0x000002a0}, -- {0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, -- {0x0000a2d0, 0x00071981, 0x00071981, 0x00071982, 0x00071982}, -- {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, -- {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000be04, 0x00802020, 0x00802020, 0x00802020, 0x00802020}, -- {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, --}; -- --static const u32 ar9485Modes_high_ob_db_tx_gain_1_1[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x000098bc, 0x00000002, 0x00000002, 0x00000002, 0x00000002}, -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8}, -- {0x0000a458, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {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, 0x21000603, 0x21000603}, -- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x25000605, 0x25000605}, -- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2a000a03, 0x2a000a03}, -- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2c000a04, 0x2c000a04}, -- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x34000e20, 0x34000e20}, -- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x35000e21, 0x35000e21}, -- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x43000e62, 0x43000e62}, -- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x45000e63, 0x45000e63}, -- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x49000e65, 0x49000e65}, -- {0x0000a544, 0x6502feca, 0x6502feca, 0x4b000e66, 0x4b000e66}, -- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x4d001645, 0x4d001645}, -- {0x0000a54c, 0x7203feca, 0x7203feca, 0x51001865, 0x51001865}, -- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x55001a86, 0x55001a86}, -- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x57001ce9, 0x57001ce9}, -- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5a001ceb, 0x5a001ceb}, -- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000b500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b504, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b508, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b50c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b510, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b514, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b518, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b51c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b520, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b524, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b528, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b52c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b530, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b534, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b538, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b53c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b540, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b544, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b548, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b54c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b550, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b554, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b558, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b55c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b560, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b564, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b568, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b56c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b570, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b574, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b578, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b57c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x00016044, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db}, -- {0x00016048, 0x6c924260, 0x6c924260, 0x6c924260, 0x6c924260}, --}; -- --static const u32 ar9485_modes_lowest_ob_db_tx_gain_1_1[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x000098bc, 0x00000002, 0x00000002, 0x00000002, 0x00000002}, -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8}, -- {0x0000a458, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {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, 0x21000603, 0x21000603}, -- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x25000605, 0x25000605}, -- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2a000a03, 0x2a000a03}, -- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2c000a04, 0x2c000a04}, -- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x34000e20, 0x34000e20}, -- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x35000e21, 0x35000e21}, -- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x43000e62, 0x43000e62}, -- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x45000e63, 0x45000e63}, -- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x49000e65, 0x49000e65}, -- {0x0000a544, 0x6502feca, 0x6502feca, 0x4b000e66, 0x4b000e66}, -- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x4d001645, 0x4d001645}, -- {0x0000a54c, 0x7203feca, 0x7203feca, 0x51001865, 0x51001865}, -- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x55001a86, 0x55001a86}, -- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x57001ce9, 0x57001ce9}, -- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5a001ceb, 0x5a001ceb}, -- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000b500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b504, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b508, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b50c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b510, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b514, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b518, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b51c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b520, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b524, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b528, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b52c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b530, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b534, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b538, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b53c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b540, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b544, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b548, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b54c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b550, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b554, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b558, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b55c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b560, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b564, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b568, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b56c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b570, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b574, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b578, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b57c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x00016044, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db}, -- {0x00016048, 0x6c924260, 0x6c924260, 0x6c924260, 0x6c924260}, --}; -- --static const u32 ar9485_1_1_radio_postamble[][2] = { -- /* Addr allmodes */ -- {0x0001609c, 0x0b283f31}, -- {0x000160ac, 0x24611800}, -- {0x000160b0, 0x03284f3e}, -- {0x0001610c, 0x00170000}, -- {0x00016140, 0x50804008}, --}; -- --static const u32 ar9485_1_1_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}, --}; -+/* AR9485 1.0 */ - --static const u32 ar9485_1_1_radio_core[][2] = { -- /* Addr allmodes */ -- {0x00016000, 0x36db6db6}, -- {0x00016004, 0x6db6db40}, -- {0x00016008, 0x73800000}, -- {0x0001600c, 0x00000000}, -- {0x00016040, 0x7f80fff8}, -- {0x0001604c, 0x000f0278}, -- {0x00016050, 0x4db6db8c}, -- {0x00016054, 0x6db60000}, -- {0x00016080, 0x00080000}, -- {0x00016084, 0x0e48048c}, -- {0x00016088, 0x14214514}, -- {0x0001608c, 0x119f081e}, -- {0x00016090, 0x24926490}, -- {0x00016098, 0xd28b3330}, -- {0x000160a0, 0xc2108ffe}, -- {0x000160a4, 0x812fc370}, -- {0x000160a8, 0x423c8000}, -- {0x000160b4, 0x92480040}, -- {0x000160c0, 0x006db6db}, -- {0x000160c4, 0x0186db60}, -- {0x000160c8, 0x6db6db6c}, -- {0x000160cc, 0x6de6fbe0}, -- {0x000160d0, 0xf7dfcf3c}, -- {0x00016100, 0x04cb0001}, -- {0x00016104, 0xfff80015}, -- {0x00016108, 0x00080010}, -- {0x00016144, 0x01884080}, -- {0x00016148, 0x00008040}, -- {0x00016240, 0x08400000}, -- {0x00016244, 0x1bf90f00}, -- {0x00016248, 0x00000000}, -- {0x0001624c, 0x00000000}, -- {0x00016280, 0x01000015}, -- {0x00016284, 0x00d30000}, -- {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}, -- {0x00016c40, 0x13188278}, -- {0x00016c44, 0x12000000}, --}; -+#define ar9485_1_1_mac_postamble ar9300_2p2_mac_postamble - --static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_enable_L1[][2] = { -- /* Addr allmodes */ -- {0x00018c00, 0x18052e5e}, -+static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_disable_L1[][2] = { -+ /* Addr allmodes */ -+ {0x00018c00, 0x18012e5e}, - {0x00018c04, 0x000801d8}, - {0x00018c08, 0x0000080c}, - }; - -+static const u32 ar9485Common_wo_xlna_rx_gain_1_1[][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 ar9485Modes_high_power_tx_gain_1_1[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x000098bc, 0x00000002, 0x00000002, 0x00000002, 0x00000002}, - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8}, - {0x0000a458, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -@@ -681,8 +234,14 @@ static const u32 ar9485Modes_high_power_ - {0x00016048, 0x6c924260, 0x6c924260, 0x6c924260, 0x6c924260}, - }; - -+#define ar9485Modes_high_ob_db_tx_gain_1_1 ar9485Modes_high_power_tx_gain_1_1 -+ -+#define ar9485Modes_low_ob_db_tx_gain_1_1 ar9485Modes_high_ob_db_tx_gain_1_1 -+ -+#define ar9485_modes_lowest_ob_db_tx_gain_1_1 ar9485Modes_low_ob_db_tx_gain_1_1 -+ - static const u32 ar9485_1_1[][2] = { -- /* Addr allmodes */ -+ /* Addr allmodes */ - {0x0000a580, 0x00000000}, - {0x0000a584, 0x00000000}, - {0x0000a588, 0x00000000}, -@@ -701,194 +260,210 @@ static const u32 ar9485_1_1[][2] = { - {0x0000a5bc, 0x00000000}, - }; - --static const u32 ar9485_modes_green_ob_db_tx_gain_1_1[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x000098bc, 0x00000003, 0x00000003, 0x00000003, 0x00000003}, -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8}, -- {0x0000a458, 0x80000000, 0x80000000, 0x80000000, 0x80000000}, -- {0x0000a500, 0x00022200, 0x00022200, 0x00000006, 0x00000006}, -- {0x0000a504, 0x05062002, 0x05062002, 0x03000201, 0x03000201}, -- {0x0000a508, 0x0c002e00, 0x0c002e00, 0x06000203, 0x06000203}, -- {0x0000a50c, 0x11062202, 0x11062202, 0x0a000401, 0x0a000401}, -- {0x0000a510, 0x17022e00, 0x17022e00, 0x0e000403, 0x0e000403}, -- {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x12000405, 0x12000405}, -- {0x0000a518, 0x25020ec0, 0x25020ec0, 0x15000604, 0x15000604}, -- {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x18000605, 0x18000605}, -- {0x0000a520, 0x2f001f04, 0x2f001f04, 0x1c000a04, 0x1c000a04}, -- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x21000a06, 0x21000a06}, -- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x29000a24, 0x29000a24}, -- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2f000e21, 0x2f000e21}, -- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x31000e20, 0x31000e20}, -- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x33000e20, 0x33000e20}, -- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x43000e62, 0x43000e62}, -- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x45000e63, 0x45000e63}, -- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x49000e65, 0x49000e65}, -- {0x0000a544, 0x6502feca, 0x6502feca, 0x4b000e66, 0x4b000e66}, -- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x4d001645, 0x4d001645}, -- {0x0000a54c, 0x7203feca, 0x7203feca, 0x51001865, 0x51001865}, -- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x55001a86, 0x55001a86}, -- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x57001ce9, 0x57001ce9}, -- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5a001ceb, 0x5a001ceb}, -- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000b500, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b504, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b508, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b50c, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b510, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b514, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b518, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b51c, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b520, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b524, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b528, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -- {0x0000b52c, 0x0000002a, 0x0000002a, 0x0000002a, 0x0000002a}, -- {0x0000b530, 0x0000003a, 0x0000003a, 0x0000003a, 0x0000003a}, -- {0x0000b534, 0x0000004a, 0x0000004a, 0x0000004a, 0x0000004a}, -- {0x0000b538, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b53c, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b540, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b544, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b548, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b54c, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b550, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b554, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b558, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b55c, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b560, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b564, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b568, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b56c, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b570, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b574, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b578, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x0000b57c, 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b}, -- {0x00016044, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db}, -- {0x00016048, 0x6c924260, 0x6c924260, 0x6c924260, 0x6c924260}, --}; -- --static const u32 ar9485_1_1_pcie_phy_clkreq_disable_L1[][2] = { -- /* Addr allmodes */ -- {0x00018c00, 0x18013e5e}, -- {0x00018c04, 0x000801d8}, -- {0x00018c08, 0x0000080c}, --}; -- --static const u32 ar9485_1_1_soc_preamble[][2] = { -- /* Addr allmodes */ -- {0x00004014, 0xba280400}, -- {0x00004090, 0x00aa10aa}, -- {0x000040a4, 0x00a0c9c9}, -- {0x00007010, 0x00000022}, -- {0x00007020, 0x00000000}, -- {0x00007034, 0x00000002}, -- {0x00007038, 0x000004c2}, -- {0x00007048, 0x00000002}, --}; -- --static const u32 ar9485_1_1_baseband_core_txfir_coeff_japan_2484[][2] = { -- /* Addr allmodes */ -- {0x0000a398, 0x00000000}, -- {0x0000a39c, 0x6f7f0301}, -- {0x0000a3a0, 0xca9228ee}, --}; -- --static const u32 ar9485Modes_low_ob_db_tx_gain_1_1[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x000098bc, 0x00000002, 0x00000002, 0x00000002, 0x00000002}, -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8}, -- {0x0000a458, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {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, 0x21000603, 0x21000603}, -- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x25000605, 0x25000605}, -- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2a000a03, 0x2a000a03}, -- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2c000a04, 0x2c000a04}, -- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x34000e20, 0x34000e20}, -- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x35000e21, 0x35000e21}, -- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x43000e62, 0x43000e62}, -- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x45000e63, 0x45000e63}, -- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x49000e65, 0x49000e65}, -- {0x0000a544, 0x6502feca, 0x6502feca, 0x4b000e66, 0x4b000e66}, -- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x4d001645, 0x4d001645}, -- {0x0000a54c, 0x7203feca, 0x7203feca, 0x51001865, 0x51001865}, -- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x55001a86, 0x55001a86}, -- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x57001ce9, 0x57001ce9}, -- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x5a001ceb, 0x5a001ceb}, -- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x5e001eeb, 0x5e001eeb}, -- {0x0000b500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b504, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b508, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b50c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b510, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b514, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b518, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b51c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b520, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b524, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b528, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b52c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b530, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b534, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b538, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b53c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b540, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b544, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b548, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b54c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b550, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b554, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b558, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b55c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b560, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b564, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b568, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b56c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b570, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b574, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b578, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000b57c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x00016044, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db, 0x05d6b2db}, -- {0x00016048, 0x6c924260, 0x6c924260, 0x6c924260, 0x6c924260}, --}; -- --static const u32 ar9485_fast_clock_1_1_baseband_postamble[][3] = { -- /* Addr 5G_HT2 5G_HT40 */ -- {0x00009e00, 0x03721821, 0x03721821}, -- {0x0000a230, 0x0000400b, 0x00004016}, -- {0x0000a254, 0x00000898, 0x00001130}, -+static const u32 ar9485_1_1_radio_core[][2] = { -+ /* Addr allmodes */ -+ {0x00016000, 0x36db6db6}, -+ {0x00016004, 0x6db6db40}, -+ {0x00016008, 0x73800000}, -+ {0x0001600c, 0x00000000}, -+ {0x00016040, 0x7f80fff8}, -+ {0x0001604c, 0x000f0278}, -+ {0x00016050, 0x4db6db8c}, -+ {0x00016054, 0x6db60000}, -+ {0x00016080, 0x00080000}, -+ {0x00016084, 0x0e48048c}, -+ {0x00016088, 0x14214514}, -+ {0x0001608c, 0x119f081e}, -+ {0x00016090, 0x24926490}, -+ {0x00016098, 0xd28b3330}, -+ {0x000160a0, 0xc2108ffe}, -+ {0x000160a4, 0x812fc370}, -+ {0x000160a8, 0x423c8000}, -+ {0x000160b4, 0x92480040}, -+ {0x000160c0, 0x006db6db}, -+ {0x000160c4, 0x0186db60}, -+ {0x000160c8, 0x6db6db6c}, -+ {0x000160cc, 0x6de6fbe0}, -+ {0x000160d0, 0xf7dfcf3c}, -+ {0x00016100, 0x04cb0001}, -+ {0x00016104, 0xfff80015}, -+ {0x00016108, 0x00080010}, -+ {0x00016144, 0x01884080}, -+ {0x00016148, 0x00008040}, -+ {0x00016240, 0x08400000}, -+ {0x00016244, 0x1bf90f00}, -+ {0x00016248, 0x00000000}, -+ {0x0001624c, 0x00000000}, -+ {0x00016280, 0x01000015}, -+ {0x00016284, 0x00d30000}, -+ {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}, -+ {0x00016c40, 0x13188278}, -+ {0x00016c44, 0x12000000}, - }; - --static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_disable_L1[][2] = { -- /* Addr allmodes */ -- {0x00018c00, 0x18012e5e}, -- {0x00018c04, 0x000801d8}, -- {0x00018c08, 0x0000080c}, -+static const u32 ar9485_1_1_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, 0x52440bbe}, -+ {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}, -+ {0x00009d1c, 0x00000000}, -+ {0x00009e08, 0x0038233c}, -+ {0x00009e24, 0x9927b515}, -+ {0x00009e28, 0x12ef0200}, -+ {0x00009e30, 0x06336f77}, -+ {0x00009e34, 0x6af6532f}, -+ {0x00009e38, 0x0cc80c00}, -+ {0x00009e40, 0x0d261820}, -+ {0x00009e4c, 0x00001004}, -+ {0x00009e50, 0x00ff03f1}, -+ {0x00009fc0, 0x80be4788}, -+ {0x00009fc4, 0x0001efb5}, -+ {0x00009fcc, 0x40000014}, -+ {0x0000a20c, 0x00000000}, -+ {0x0000a210, 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, 0x000000ff}, -+ {0x0000a3a8, 0x3b3b3b3b}, -+ {0x0000a3ac, 0x2f2f2f2f}, -+ {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, 0x1ce739cf}, -+ {0x0000a418, 0x2d0019ce}, -+ {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}, -+ {0x0000a5c4, 0xbfad9d74}, -+ {0x0000a5c8, 0x0048060a}, -+ {0x0000a5cc, 0x00000637}, -+ {0x0000a760, 0x03020100}, -+ {0x0000a764, 0x09080504}, -+ {0x0000a768, 0x0d0c0b0a}, -+ {0x0000a76c, 0x13121110}, -+ {0x0000a770, 0x31301514}, -+ {0x0000a774, 0x35343332}, -+ {0x0000a778, 0x00000036}, -+ {0x0000a780, 0x00000838}, -+ {0x0000a7c0, 0x00000000}, -+ {0x0000a7c4, 0xfffffffc}, -+ {0x0000a7c8, 0x00000000}, -+ {0x0000a7cc, 0x00000000}, -+ {0x0000a7d0, 0x00000000}, -+ {0x0000a7d4, 0x00000004}, -+ {0x0000a7dc, 0x00000000}, - }; - - static const u32 ar9485_common_rx_gain_1_1[][2] = { -- /* Addr allmodes */ -+ /* Addr allmodes */ - {0x0000a000, 0x00010000}, - {0x0000a004, 0x00030002}, - {0x0000a008, 0x00050004}, -@@ -945,153 +520,14 @@ static const u32 ar9485_common_rx_gain_1 - {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}, --}; -- --static const u32 ar9485_1_1_pcie_phy_clkreq_enable_L1[][2] = { -- /* Addr allmodes */ -- {0x00018c00, 0x18053e5e}, -- {0x00018c04, 0x000801d8}, -- {0x00018c08, 0x0000080c}, --}; -- --static const u32 ar9485Common_wo_xlna_rx_gain_1_1[][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}, -+ {0x0000a0e0, 0x33013302}, -+ {0x0000a0e4, 0x331f3300}, -+ {0x0000a0e8, 0x4402331e}, -+ {0x0000a0ec, 0x44004401}, -+ {0x0000a0f0, 0x441e441f}, -+ {0x0000a0f4, 0x55015502}, -+ {0x0000a0f8, 0x551f5500}, -+ {0x0000a0fc, 0x6602551e}, - {0x0000a100, 0x66006601}, - {0x0000a104, 0x661e661f}, - {0x0000a108, 0x7703661d}, -@@ -1158,4 +594,260 @@ static const u32 ar9485Common_wo_xlna_rx - {0x0000a1fc, 0x00000296}, - }; - --#endif -+static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_enable_L1[][2] = { -+ /* Addr allmodes */ -+ {0x00018c00, 0x18052e5e}, -+ {0x00018c04, 0x000801d8}, -+ {0x00018c08, 0x0000080c}, -+}; -+ -+static const u32 ar9485_1_1_pcie_phy_clkreq_enable_L1[][2] = { -+ /* Addr allmodes */ -+ {0x00018c00, 0x18053e5e}, -+ {0x00018c04, 0x000801d8}, -+ {0x00018c08, 0x0000080c}, -+}; -+ -+static const u32 ar9485_1_1_soc_preamble[][2] = { -+ /* Addr allmodes */ -+ {0x00004014, 0xba280400}, -+ {0x00004090, 0x00aa10aa}, -+ {0x000040a4, 0x00a0c9c9}, -+ {0x00007010, 0x00000022}, -+ {0x00007020, 0x00000000}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00007048, 0x00000002}, -+}; -+ -+static const u32 ar9485_fast_clock_1_1_baseband_postamble[][3] = { -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x00009e00, 0x03721821, 0x03721821}, -+ {0x0000a230, 0x0000400b, 0x00004016}, -+ {0x0000a254, 0x00000898, 0x00001130}, -+}; -+ -+static const u32 ar9485_1_1_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, 0x037216a0, 0x037216a0}, -+ {0x00009e04, 0x00182020, 0x00182020, 0x00182020, 0x00182020}, -+ {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, -+ {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 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, 0x00000021, 0x00000021}, -+ {0x00009e3c, 0xcf946220, 0xcf946220, 0xcf946222, 0xcf946222}, -+ {0x00009e44, 0x02321e27, 0x02321e27, 0x02282324, 0x02282324}, -+ {0x00009e48, 0x5030201a, 0x5030201a, 0x50302010, 0x50302010}, -+ {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, -+ {0x0000a204, 0x01303fc0, 0x01303fc4, 0x01303fc4, 0x01303fc0}, -+ {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004}, -+ {0x0000a230, 0x0000400a, 0x00004014, 0x00004016, 0x0000400b}, -+ {0x0000a234, 0x10000fff, 0x10000fff, 0x10000fff, 0x10000fff}, -+ {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, 0x000002a0, 0x000002a0}, -+ {0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, -+ {0x0000a2d0, 0x00071981, 0x00071981, 0x00071982, 0x00071982}, -+ {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, -+ {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000be04, 0x00802020, 0x00802020, 0x00802020, 0x00802020}, -+ {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+}; -+ -+static const u32 ar9485_1_1_pcie_phy_clkreq_disable_L1[][2] = { -+ /* Addr allmodes */ -+ {0x00018c00, 0x18013e5e}, -+ {0x00018c04, 0x000801d8}, -+ {0x00018c08, 0x0000080c}, -+}; -+ -+static const u32 ar9485_1_1_radio_postamble[][2] = { -+ /* Addr allmodes */ -+ {0x0001609c, 0x0b283f31}, -+ {0x000160ac, 0x24611800}, -+ {0x000160b0, 0x03284f3e}, -+ {0x0001610c, 0x00170000}, -+ {0x00016140, 0x50804008}, -+}; -+ -+static const u32 ar9485_1_1_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, 0x13881c22}, -+ {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}, -+ {0x000081d4, 0x00000000}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000800}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x40000000}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x9ca00010}, -+ {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, 0xa248105b}, -+ {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}, -+}; -+ -+#endif /* INITVALS_9485_H */ ---- a/drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h -@@ -1,5 +1,6 @@ - /* -- * Copyright (c) 2010 Atheros Communications Inc. -+ * Copyright (c) 2010-2011 Atheros Communications Inc. -+ * Copyright (c) 2011-2012 Qualcomm Atheros 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 -@@ -19,18 +20,7 @@ - - /* AR9580 1.0 */ - --static const u32 ar9580_1p0_modes_fast_clock[][3] = { -- /* Addr 5G_HT20 5G_HT40 */ -- {0x00001030, 0x00000268, 0x000004d0}, -- {0x00001070, 0x0000018c, 0x00000318}, -- {0x000010b0, 0x00000fd0, 0x00001fa0}, -- {0x00008014, 0x044c044c, 0x08980898}, -- {0x0000801c, 0x148ec02b, 0x148ec057}, -- {0x00008318, 0x000044c0, 0x00008980}, -- {0x00009e00, 0x0372131c, 0x0372131c}, -- {0x0000a230, 0x0000000b, 0x00000016}, -- {0x0000a254, 0x00000898, 0x00001130}, --}; -+#define ar9580_1p0_modes_fast_clock ar9300Modes_fast_clock_2p2 - - static const u32 ar9580_1p0_radio_postamble[][5] = { - /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -@@ -208,17 +198,7 @@ static const u32 ar9580_1p0_baseband_cor - {0x0000c420, 0x00000000}, - }; - --static const u32 ar9580_1p0_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}, --}; -+#define ar9580_1p0_mac_postamble ar9300_2p2_mac_postamble - - static const u32 ar9580_1p0_low_ob_db_tx_gain_table[][5] = { - /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -@@ -326,111 +306,7 @@ static const u32 ar9580_1p0_low_ob_db_tx - {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, - }; - --static const u32 ar9580_1p0_high_power_tx_gain_table[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -- {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -- {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -- {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -- {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, -- {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004}, -- {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200}, -- {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202}, -- {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400}, -- {0x0000a518, 0x21002220, 0x21002220, 0x16000402, 0x16000402}, -- {0x0000a51c, 0x27002223, 0x27002223, 0x19000404, 0x19000404}, -- {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603}, -- {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02}, -- {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04}, -- {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20}, -- {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20}, -- {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22}, -- {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24}, -- {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640}, -- {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660}, -- {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861}, -- {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81}, -- {0x0000a54c, 0x5c02486b, 0x5c02486b, 0x47001a83, 0x47001a83}, -- {0x0000a550, 0x61024a6c, 0x61024a6c, 0x4a001c84, 0x4a001c84}, -- {0x0000a554, 0x66026a6c, 0x66026a6c, 0x4e001ce3, 0x4e001ce3}, -- {0x0000a558, 0x6b026e6c, 0x6b026e6c, 0x52001ce5, 0x52001ce5}, -- {0x0000a55c, 0x7002708c, 0x7002708c, 0x56001ce9, 0x56001ce9}, -- {0x0000a560, 0x7302b08a, 0x7302b08a, 0x5a001ceb, 0x5a001ceb}, -- {0x0000a564, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -- {0x0000a568, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -- {0x0000a56c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -- {0x0000a570, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -- {0x0000a574, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -- {0x0000a578, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -- {0x0000a57c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec}, -- {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -- {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002}, -- {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004}, -- {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200}, -- {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202}, -- {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400}, -- {0x0000a598, 0x21802220, 0x21802220, 0x16800402, 0x16800402}, -- {0x0000a59c, 0x27802223, 0x27802223, 0x19800404, 0x19800404}, -- {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603}, -- {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02}, -- {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04}, -- {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20}, -- {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20}, -- {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22}, -- {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24}, -- {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640}, -- {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660}, -- {0x0000a5c4, 0x5382266c, 0x5382266c, 0x3f801861, 0x3f801861}, -- {0x0000a5c8, 0x5782286c, 0x5782286c, 0x43801a81, 0x43801a81}, -- {0x0000a5cc, 0x5c82486b, 0x5c82486b, 0x47801a83, 0x47801a83}, -- {0x0000a5d0, 0x61824a6c, 0x61824a6c, 0x4a801c84, 0x4a801c84}, -- {0x0000a5d4, 0x66826a6c, 0x66826a6c, 0x4e801ce3, 0x4e801ce3}, -- {0x0000a5d8, 0x6b826e6c, 0x6b826e6c, 0x52801ce5, 0x52801ce5}, -- {0x0000a5dc, 0x7082708c, 0x7082708c, 0x56801ce9, 0x56801ce9}, -- {0x0000a5e0, 0x7382b08a, 0x7382b08a, 0x5a801ceb, 0x5a801ceb}, -- {0x0000a5e4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5e8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5ec, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f0, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, -- {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, 0x02008501, 0x02008501}, -- {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03}, -- {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, -- {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04}, -- {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005}, -- {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -- {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -- {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -- {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, -- {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -- {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -- {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -- {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -- {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -- {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, -- {0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, -- {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016448, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, -- {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016848, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, -- {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, --}; -+#define ar9580_1p0_high_power_tx_gain_table ar9580_1p0_low_ob_db_tx_gain_table - - static const u32 ar9580_1p0_lowest_ob_db_tx_gain_table[][5] = { - /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -@@ -538,12 +414,7 @@ static const u32 ar9580_1p0_lowest_ob_db - {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, - }; - --static const u32 ar9580_1p0_baseband_core_txfir_coeff_japan_2484[][2] = { -- /* Addr allmodes */ -- {0x0000a398, 0x00000000}, -- {0x0000a39c, 0x6f7f0301}, -- {0x0000a3a0, 0xca9228ee}, --}; -+#define ar9580_1p0_baseband_core_txfir_coeff_japan_2484 ar9462_2p0_baseband_core_txfir_coeff_japan_2484 - - static const u32 ar9580_1p0_mac_core[][2] = { - /* Addr allmodes */ -@@ -808,376 +679,11 @@ static const u32 ar9580_1p0_mixed_ob_db_ - {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, - }; - --static const u32 ar9580_1p0_wo_xlna_rx_gain_table[][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, 0x03820190}, -- {0x0000a030, 0x03840383}, -- {0x0000a034, 0x03880385}, -- {0x0000a038, 0x038a0389}, -- {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, 0x29292929}, -- {0x0000a084, 0x29292929}, -- {0x0000a088, 0x29292929}, -- {0x0000a08c, 0x29292929}, -- {0x0000a090, 0x22292929}, -- {0x0000a094, 0x1d1d2222}, -- {0x0000a098, 0x0c111117}, -- {0x0000a09c, 0x00030303}, -- {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}, -- {0x0000b000, 0x00010000}, -- {0x0000b004, 0x00030002}, -- {0x0000b008, 0x00050004}, -- {0x0000b00c, 0x00810080}, -- {0x0000b010, 0x00830082}, -- {0x0000b014, 0x01810180}, -- {0x0000b018, 0x01830182}, -- {0x0000b01c, 0x01850184}, -- {0x0000b020, 0x02810280}, -- {0x0000b024, 0x02830282}, -- {0x0000b028, 0x02850284}, -- {0x0000b02c, 0x02890288}, -- {0x0000b030, 0x028b028a}, -- {0x0000b034, 0x0388028c}, -- {0x0000b038, 0x038a0389}, -- {0x0000b03c, 0x038c038b}, -- {0x0000b040, 0x0390038d}, -- {0x0000b044, 0x03920391}, -- {0x0000b048, 0x03940393}, -- {0x0000b04c, 0x03960395}, -- {0x0000b050, 0x00000000}, -- {0x0000b054, 0x00000000}, -- {0x0000b058, 0x00000000}, -- {0x0000b05c, 0x00000000}, -- {0x0000b060, 0x00000000}, -- {0x0000b064, 0x00000000}, -- {0x0000b068, 0x00000000}, -- {0x0000b06c, 0x00000000}, -- {0x0000b070, 0x00000000}, -- {0x0000b074, 0x00000000}, -- {0x0000b078, 0x00000000}, -- {0x0000b07c, 0x00000000}, -- {0x0000b080, 0x32323232}, -- {0x0000b084, 0x2f2f3232}, -- {0x0000b088, 0x23282a2d}, -- {0x0000b08c, 0x1c1e2123}, -- {0x0000b090, 0x14171919}, -- {0x0000b094, 0x0e0e1214}, -- {0x0000b098, 0x03050707}, -- {0x0000b09c, 0x00030303}, -- {0x0000b0a0, 0x00000000}, -- {0x0000b0a4, 0x00000000}, -- {0x0000b0a8, 0x00000000}, -- {0x0000b0ac, 0x00000000}, -- {0x0000b0b0, 0x00000000}, -- {0x0000b0b4, 0x00000000}, -- {0x0000b0b8, 0x00000000}, -- {0x0000b0bc, 0x00000000}, -- {0x0000b0c0, 0x003f0020}, -- {0x0000b0c4, 0x00400041}, -- {0x0000b0c8, 0x0140005f}, -- {0x0000b0cc, 0x0160015f}, -- {0x0000b0d0, 0x017e017f}, -- {0x0000b0d4, 0x02410242}, -- {0x0000b0d8, 0x025f0240}, -- {0x0000b0dc, 0x027f0260}, -- {0x0000b0e0, 0x0341027e}, -- {0x0000b0e4, 0x035f0340}, -- {0x0000b0e8, 0x037f0360}, -- {0x0000b0ec, 0x04400441}, -- {0x0000b0f0, 0x0460045f}, -- {0x0000b0f4, 0x0541047f}, -- {0x0000b0f8, 0x055f0540}, -- {0x0000b0fc, 0x057f0560}, -- {0x0000b100, 0x06400641}, -- {0x0000b104, 0x0660065f}, -- {0x0000b108, 0x067e067f}, -- {0x0000b10c, 0x07410742}, -- {0x0000b110, 0x075f0740}, -- {0x0000b114, 0x077f0760}, -- {0x0000b118, 0x07800781}, -- {0x0000b11c, 0x07a0079f}, -- {0x0000b120, 0x07c107bf}, -- {0x0000b124, 0x000007c0}, -- {0x0000b128, 0x00000000}, -- {0x0000b12c, 0x00000000}, -- {0x0000b130, 0x00000000}, -- {0x0000b134, 0x00000000}, -- {0x0000b138, 0x00000000}, -- {0x0000b13c, 0x00000000}, -- {0x0000b140, 0x003f0020}, -- {0x0000b144, 0x00400041}, -- {0x0000b148, 0x0140005f}, -- {0x0000b14c, 0x0160015f}, -- {0x0000b150, 0x017e017f}, -- {0x0000b154, 0x02410242}, -- {0x0000b158, 0x025f0240}, -- {0x0000b15c, 0x027f0260}, -- {0x0000b160, 0x0341027e}, -- {0x0000b164, 0x035f0340}, -- {0x0000b168, 0x037f0360}, -- {0x0000b16c, 0x04400441}, -- {0x0000b170, 0x0460045f}, -- {0x0000b174, 0x0541047f}, -- {0x0000b178, 0x055f0540}, -- {0x0000b17c, 0x057f0560}, -- {0x0000b180, 0x06400641}, -- {0x0000b184, 0x0660065f}, -- {0x0000b188, 0x067e067f}, -- {0x0000b18c, 0x07410742}, -- {0x0000b190, 0x075f0740}, -- {0x0000b194, 0x077f0760}, -- {0x0000b198, 0x07800781}, -- {0x0000b19c, 0x07a0079f}, -- {0x0000b1a0, 0x07c107bf}, -- {0x0000b1a4, 0x000007c0}, -- {0x0000b1a8, 0x00000000}, -- {0x0000b1ac, 0x00000000}, -- {0x0000b1b0, 0x00000000}, -- {0x0000b1b4, 0x00000000}, -- {0x0000b1b8, 0x00000000}, -- {0x0000b1bc, 0x00000000}, -- {0x0000b1c0, 0x00000000}, -- {0x0000b1c4, 0x00000000}, -- {0x0000b1c8, 0x00000000}, -- {0x0000b1cc, 0x00000000}, -- {0x0000b1d0, 0x00000000}, -- {0x0000b1d4, 0x00000000}, -- {0x0000b1d8, 0x00000000}, -- {0x0000b1dc, 0x00000000}, -- {0x0000b1e0, 0x00000000}, -- {0x0000b1e4, 0x00000000}, -- {0x0000b1e8, 0x00000000}, -- {0x0000b1ec, 0x00000000}, -- {0x0000b1f0, 0x00000396}, -- {0x0000b1f4, 0x00000396}, -- {0x0000b1f8, 0x00000396}, -- {0x0000b1fc, 0x00000196}, --}; -+#define ar9580_1p0_wo_xlna_rx_gain_table ar9300Common_wo_xlna_rx_gain_table_2p2 - --static const u32 ar9580_1p0_soc_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023}, --}; -+#define ar9580_1p0_soc_postamble ar9300_2p2_soc_postamble - --static const u32 ar9580_1p0_high_ob_db_tx_gain_table[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x0000a2dc, 0x01feee00, 0x01feee00, 0x03aaa352, 0x03aaa352}, -- {0x0000a2e0, 0x0000f000, 0x0000f000, 0x03ccc584, 0x03ccc584}, -- {0x0000a2e4, 0x01ff0000, 0x01ff0000, 0x03f0f800, 0x03f0f800}, -- {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, -- {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -- {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, -- {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, -- {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200}, -- {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202}, -- {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400}, -- {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402}, -- {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404}, -- {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603}, -- {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02}, -- {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04}, -- {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20}, -- {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20}, -- {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22}, -- {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24}, -- {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640}, -- {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, -- {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, -- {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, -- {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, -- {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, -- {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, -- {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, -- {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9}, -- {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb}, -- {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -- {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -- {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002}, -- {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004}, -- {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200}, -- {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202}, -- {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400}, -- {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402}, -- {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404}, -- {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603}, -- {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02}, -- {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04}, -- {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20}, -- {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20}, -- {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22}, -- {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24}, -- {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640}, -- {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660}, -- {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861}, -- {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81}, -- {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83}, -- {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84}, -- {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3}, -- {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5}, -- {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9}, -- {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb}, -- {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -- {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, -- {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, -- {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, -- {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, -- {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, -- {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, -- {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, -- {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -- {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -- {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -- {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -- {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -- {0x0000b2dc, 0x01feee00, 0x01feee00, 0x03aaa352, 0x03aaa352}, -- {0x0000b2e0, 0x0000f000, 0x0000f000, 0x03ccc584, 0x03ccc584}, -- {0x0000b2e4, 0x01ff0000, 0x01ff0000, 0x03f0f800, 0x03f0f800}, -- {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x0000c2dc, 0x01feee00, 0x01feee00, 0x03aaa352, 0x03aaa352}, -- {0x0000c2e0, 0x0000f000, 0x0000f000, 0x03ccc584, 0x03ccc584}, -- {0x0000c2e4, 0x01ff0000, 0x01ff0000, 0x03f0f800, 0x03f0f800}, -- {0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4}, -- {0x00016048, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001}, -- {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016444, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4}, -- {0x00016448, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001}, -- {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016844, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4}, -- {0x00016848, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001}, -- {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, --}; -+#define ar9580_1p0_high_ob_db_tx_gain_table ar9300Modes_high_ob_db_tx_gain_table_2p2 - - static const u32 ar9580_1p0_soc_preamble[][2] = { - /* Addr allmodes */ -@@ -1189,265 +695,7 @@ static const u32 ar9580_1p0_soc_preamble - {0x00007048, 0x00000008}, - }; - --static const u32 ar9580_1p0_rx_gain_table[][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}, -- {0x0000b000, 0x00010000}, -- {0x0000b004, 0x00030002}, -- {0x0000b008, 0x00050004}, -- {0x0000b00c, 0x00810080}, -- {0x0000b010, 0x00830082}, -- {0x0000b014, 0x01810180}, -- {0x0000b018, 0x01830182}, -- {0x0000b01c, 0x01850184}, -- {0x0000b020, 0x02810280}, -- {0x0000b024, 0x02830282}, -- {0x0000b028, 0x02850284}, -- {0x0000b02c, 0x02890288}, -- {0x0000b030, 0x028b028a}, -- {0x0000b034, 0x0388028c}, -- {0x0000b038, 0x038a0389}, -- {0x0000b03c, 0x038c038b}, -- {0x0000b040, 0x0390038d}, -- {0x0000b044, 0x03920391}, -- {0x0000b048, 0x03940393}, -- {0x0000b04c, 0x03960395}, -- {0x0000b050, 0x00000000}, -- {0x0000b054, 0x00000000}, -- {0x0000b058, 0x00000000}, -- {0x0000b05c, 0x00000000}, -- {0x0000b060, 0x00000000}, -- {0x0000b064, 0x00000000}, -- {0x0000b068, 0x00000000}, -- {0x0000b06c, 0x00000000}, -- {0x0000b070, 0x00000000}, -- {0x0000b074, 0x00000000}, -- {0x0000b078, 0x00000000}, -- {0x0000b07c, 0x00000000}, -- {0x0000b080, 0x2a2d2f32}, -- {0x0000b084, 0x21232328}, -- {0x0000b088, 0x19191c1e}, -- {0x0000b08c, 0x12141417}, -- {0x0000b090, 0x07070e0e}, -- {0x0000b094, 0x03030305}, -- {0x0000b098, 0x00000003}, -- {0x0000b09c, 0x00000000}, -- {0x0000b0a0, 0x00000000}, -- {0x0000b0a4, 0x00000000}, -- {0x0000b0a8, 0x00000000}, -- {0x0000b0ac, 0x00000000}, -- {0x0000b0b0, 0x00000000}, -- {0x0000b0b4, 0x00000000}, -- {0x0000b0b8, 0x00000000}, -- {0x0000b0bc, 0x00000000}, -- {0x0000b0c0, 0x003f0020}, -- {0x0000b0c4, 0x00400041}, -- {0x0000b0c8, 0x0140005f}, -- {0x0000b0cc, 0x0160015f}, -- {0x0000b0d0, 0x017e017f}, -- {0x0000b0d4, 0x02410242}, -- {0x0000b0d8, 0x025f0240}, -- {0x0000b0dc, 0x027f0260}, -- {0x0000b0e0, 0x0341027e}, -- {0x0000b0e4, 0x035f0340}, -- {0x0000b0e8, 0x037f0360}, -- {0x0000b0ec, 0x04400441}, -- {0x0000b0f0, 0x0460045f}, -- {0x0000b0f4, 0x0541047f}, -- {0x0000b0f8, 0x055f0540}, -- {0x0000b0fc, 0x057f0560}, -- {0x0000b100, 0x06400641}, -- {0x0000b104, 0x0660065f}, -- {0x0000b108, 0x067e067f}, -- {0x0000b10c, 0x07410742}, -- {0x0000b110, 0x075f0740}, -- {0x0000b114, 0x077f0760}, -- {0x0000b118, 0x07800781}, -- {0x0000b11c, 0x07a0079f}, -- {0x0000b120, 0x07c107bf}, -- {0x0000b124, 0x000007c0}, -- {0x0000b128, 0x00000000}, -- {0x0000b12c, 0x00000000}, -- {0x0000b130, 0x00000000}, -- {0x0000b134, 0x00000000}, -- {0x0000b138, 0x00000000}, -- {0x0000b13c, 0x00000000}, -- {0x0000b140, 0x003f0020}, -- {0x0000b144, 0x00400041}, -- {0x0000b148, 0x0140005f}, -- {0x0000b14c, 0x0160015f}, -- {0x0000b150, 0x017e017f}, -- {0x0000b154, 0x02410242}, -- {0x0000b158, 0x025f0240}, -- {0x0000b15c, 0x027f0260}, -- {0x0000b160, 0x0341027e}, -- {0x0000b164, 0x035f0340}, -- {0x0000b168, 0x037f0360}, -- {0x0000b16c, 0x04400441}, -- {0x0000b170, 0x0460045f}, -- {0x0000b174, 0x0541047f}, -- {0x0000b178, 0x055f0540}, -- {0x0000b17c, 0x057f0560}, -- {0x0000b180, 0x06400641}, -- {0x0000b184, 0x0660065f}, -- {0x0000b188, 0x067e067f}, -- {0x0000b18c, 0x07410742}, -- {0x0000b190, 0x075f0740}, -- {0x0000b194, 0x077f0760}, -- {0x0000b198, 0x07800781}, -- {0x0000b19c, 0x07a0079f}, -- {0x0000b1a0, 0x07c107bf}, -- {0x0000b1a4, 0x000007c0}, -- {0x0000b1a8, 0x00000000}, -- {0x0000b1ac, 0x00000000}, -- {0x0000b1b0, 0x00000000}, -- {0x0000b1b4, 0x00000000}, -- {0x0000b1b8, 0x00000000}, -- {0x0000b1bc, 0x00000000}, -- {0x0000b1c0, 0x00000000}, -- {0x0000b1c4, 0x00000000}, -- {0x0000b1c8, 0x00000000}, -- {0x0000b1cc, 0x00000000}, -- {0x0000b1d0, 0x00000000}, -- {0x0000b1d4, 0x00000000}, -- {0x0000b1d8, 0x00000000}, -- {0x0000b1dc, 0x00000000}, -- {0x0000b1e0, 0x00000000}, -- {0x0000b1e4, 0x00000000}, -- {0x0000b1e8, 0x00000000}, -- {0x0000b1ec, 0x00000000}, -- {0x0000b1f0, 0x00000396}, -- {0x0000b1f4, 0x00000396}, -- {0x0000b1f8, 0x00000396}, -- {0x0000b1fc, 0x00000196}, --}; -+#define ar9580_1p0_rx_gain_table ar9462_common_rx_gain_table_2p0 - - static const u32 ar9580_1p0_radio_core[][2] = { - /* Addr allmodes */ diff --git a/package/mac80211/patches/568-ath9k_fix_ar9340_tx_gain.patch b/package/mac80211/patches/568-ath9k_fix_ar9340_tx_gain.patch deleted file mode 100644 index edde8fa366..0000000000 --- a/package/mac80211/patches/568-ath9k_fix_ar9340_tx_gain.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c -@@ -501,7 +501,7 @@ static void ar9003_tx_gain_table_mode1(s - 5); - else if (AR_SREV_9340(ah)) - INIT_INI_ARRAY(&ah->iniModesTxGain, -- ar9340Modes_lowest_ob_db_tx_gain_table_1p0, -+ ar9340Modes_high_ob_db_tx_gain_table_1p0, - ARRAY_SIZE(ar9340Modes_lowest_ob_db_tx_gain_table_1p0), - 5); - else if (AR_SREV_9485_11(ah)) -@@ -540,7 +540,7 @@ static void ar9003_tx_gain_table_mode2(s - 5); - else if (AR_SREV_9340(ah)) - INIT_INI_ARRAY(&ah->iniModesTxGain, -- ar9340Modes_lowest_ob_db_tx_gain_table_1p0, -+ ar9340Modes_low_ob_db_tx_gain_table_1p0, - ARRAY_SIZE(ar9340Modes_lowest_ob_db_tx_gain_table_1p0), - 5); - else if (AR_SREV_9485_11(ah)) -@@ -574,7 +574,7 @@ static void ar9003_tx_gain_table_mode3(s - 5); - else if (AR_SREV_9340(ah)) - INIT_INI_ARRAY(&ah->iniModesTxGain, -- ar9340Modes_lowest_ob_db_tx_gain_table_1p0, -+ ar9340Modes_high_power_tx_gain_table_1p0, - ARRAY_SIZE(ar9340Modes_lowest_ob_db_tx_gain_table_1p0), - 5); - else if (AR_SREV_9485_11(ah)) diff --git a/package/mac80211/patches/570-ath9k-define-DEVID-for-QCA955x.patch b/package/mac80211/patches/570-ath9k-define-DEVID-for-QCA955x.patch deleted file mode 100644 index 8713db18ed..0000000000 --- a/package/mac80211/patches/570-ath9k-define-DEVID-for-QCA955x.patch +++ /dev/null @@ -1,21 +0,0 @@ -From ba1e32844fcd396d90b357d3a620ffc1abcde614 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:13 +0200 -Subject: [PATCH 01/20] ath9k: define DEVID for QCA955x - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.h | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -48,6 +48,7 @@ - #define AR9300_DEVID_AR9580 0x0033 - #define AR9300_DEVID_AR9462 0x0034 - #define AR9300_DEVID_AR9330 0x0035 -+#define AR9300_DEVID_QCA955X 0x0038 - - #define AR5416_AR9100_DEVID 0x000b - diff --git a/package/mac80211/patches/570-ath9k_config_qlen.patch b/package/mac80211/patches/570-ath9k_config_qlen.patch index b0c573d31a..fcdcec665c 100644 --- a/package/mac80211/patches/570-ath9k_config_qlen.patch +++ b/package/mac80211/patches/570-ath9k_config_qlen.patch @@ -20,7 +20,7 @@ } --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -1988,7 +1988,8 @@ int ath_tx_start(struct ieee80211_hw *hw +@@ -1987,7 +1987,8 @@ int ath_tx_start(struct ieee80211_hw *hw ath_txq_lock(sc, txq); if (txq == sc->tx.txq_map[q] && @@ -30,7 +30,7 @@ ieee80211_stop_queue(sc->hw, q); txq->stopped = true; } -@@ -2047,7 +2048,8 @@ static void ath_tx_complete(struct ath_s +@@ -2046,7 +2047,8 @@ static void ath_tx_complete(struct ath_s if (WARN_ON(--txq->pending_frames < 0)) txq->pending_frames = 0; @@ -42,7 +42,7 @@ } --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1702,6 +1702,14 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1701,6 +1701,14 @@ int ath9k_init_debug(struct ath_hw *ah) &fops_interrupt); debugfs_create_file("xmit", S_IRUSR, sc->debug.debugfs_phy, sc, &fops_xmit); diff --git a/package/mac80211/patches/571-ath9k-define-MAC-version-for-AR9550.patch b/package/mac80211/patches/571-ath9k-define-MAC-version-for-AR9550.patch deleted file mode 100644 index 8e5a794734..0000000000 --- a/package/mac80211/patches/571-ath9k-define-MAC-version-for-AR9550.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b8122a3554e574b154cdf09ae843e6464d8ad1cc Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:13 +0200 -Subject: [PATCH 02/20] ath9k: define MAC version for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/reg.h | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/reg.h -+++ b/drivers/net/wireless/ath/ath9k/reg.h -@@ -798,6 +798,7 @@ - #define AR_SREV_REVISION_9580_10 4 /* AR9580 1.0 */ - #define AR_SREV_VERSION_9462 0x280 - #define AR_SREV_REVISION_9462_20 2 -+#define AR_SREV_VERSION_9550 0x400 - - #define AR_SREV_5416(_ah) \ - (((_ah)->hw_version.macVersion == AR_SREV_VERSION_5416_PCI) || \ -@@ -905,6 +906,9 @@ - (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462) && \ - ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9462_20)) - -+#define AR_SREV_9550(_ah) \ -+ (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9550)) -+ - #define AR_SREV_9580(_ah) \ - (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9580) && \ - ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9580_10)) diff --git a/package/mac80211/patches/572-ath9k-set-MAC-version-for-AR9550.patch b/package/mac80211/patches/572-ath9k-set-MAC-version-for-AR9550.patch deleted file mode 100644 index 866ff5fccd..0000000000 --- a/package/mac80211/patches/572-ath9k-set-MAC-version-for-AR9550.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 9bd8677ad5f1814e0f784f92d07ba8bd38c6bc13 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:14 +0200 -Subject: [PATCH 03/20] ath9k: set MAC version for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -343,6 +343,9 @@ static void ath9k_hw_read_revisions(stru - val = REG_READ(ah, AR_SREV); - ah->hw_version.macRev = MS(val, AR_SREV_REVISION2); - return; -+ case AR9300_DEVID_QCA955X: -+ ah->hw_version.macVersion = AR_SREV_VERSION_9550; -+ return; - } - - val = REG_READ(ah, AR_SREV) & AR_SREV_ID; diff --git a/package/mac80211/patches/573-ath9k-add-platform_device_id-for-AR9550.patch b/package/mac80211/patches/573-ath9k-add-platform_device_id-for-AR9550.patch deleted file mode 100644 index 15ea82c8c8..0000000000 --- a/package/mac80211/patches/573-ath9k-add-platform_device_id-for-AR9550.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 6583f34718e322373130daaca42660c669079384 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:59 +0200 -Subject: [PATCH 04/20] ath9k: add platform_device_id for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ahb.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ahb.c -+++ b/drivers/net/wireless/ath/ath9k/ahb.c -@@ -35,6 +35,10 @@ static const struct platform_device_id a - .name = "ar934x_wmac", - .driver_data = AR9300_DEVID_AR9340, - }, -+ { -+ .name = "qca955x_wmac", -+ .driver_data = AR9300_DEVID_QCA955X, -+ }, - {}, - }; - diff --git a/package/mac80211/patches/574-ath9k-add-BB-name-string-for-AR9550.patch b/package/mac80211/patches/574-ath9k-add-BB-name-string-for-AR9550.patch deleted file mode 100644 index b27efb98eb..0000000000 --- a/package/mac80211/patches/574-ath9k-add-BB-name-string-for-AR9550.patch +++ /dev/null @@ -1,21 +0,0 @@ -From 7ea9d187a4334e35d9ed1a3cbeb85d0b1275b24c Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:14 +0200 -Subject: [PATCH 05/20] ath9k: add BB name string for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -3135,6 +3135,7 @@ static struct { - { AR_SREV_VERSION_9340, "9340" }, - { AR_SREV_VERSION_9485, "9485" }, - { AR_SREV_VERSION_9462, "9462" }, -+ { AR_SREV_VERSION_9550, "9550" }, - }; - - /* For devices with external radios */ diff --git a/package/mac80211/patches/575-ath9k-clear-pciexpress-flag-for-AR9550.patch b/package/mac80211/patches/575-ath9k-clear-pciexpress-flag-for-AR9550.patch deleted file mode 100644 index 8cb4826067..0000000000 --- a/package/mac80211/patches/575-ath9k-clear-pciexpress-flag-for-AR9550.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 68e9cddb98d5a7de130b064ec301e2370679160a Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:15 +0200 -Subject: [PATCH 06/20] ath9k: clear pciexpress flag for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -667,7 +667,7 @@ static int __ath9k_hw_init(struct ath_hw - } - - if (AR_SREV_9271(ah) || AR_SREV_9100(ah) || AR_SREV_9340(ah) || -- AR_SREV_9330(ah)) -+ AR_SREV_9330(ah) || AR_SREV_9550(ah)) - ah->is_pciexpress = false; - - ah->hw_version.phyRev = REG_READ(ah, AR_PHY_CHIP_ID); diff --git a/package/mac80211/patches/576-ath9k-enable-TX-RX-data-byte-swap-for-AR9550.patch b/package/mac80211/patches/576-ath9k-enable-TX-RX-data-byte-swap-for-AR9550.patch deleted file mode 100644 index f5b1cac2df..0000000000 --- a/package/mac80211/patches/576-ath9k-enable-TX-RX-data-byte-swap-for-AR9550.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 3fa372b3d51c310023a20432ebc8f718c31feff0 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:15 +0200 -Subject: [PATCH 07/20] ath9k: enable TX/RX data byte swap for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1985,7 +1985,8 @@ 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_9330(ah) || AR_SREV_9340(ah)) -+ else if (AR_SREV_9330(ah) || AR_SREV_9340(ah) || -+ AR_SREV_9550(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/577-ath9k-add-initvals-for-AR9550.patch b/package/mac80211/patches/577-ath9k-add-initvals-for-AR9550.patch deleted file mode 100644 index a2d60f9138..0000000000 --- a/package/mac80211/patches/577-ath9k-add-initvals-for-AR9550.patch +++ /dev/null @@ -1,1317 +0,0 @@ -From 33b61be1c9174ed3f779a1d05aee0e4753eb4068 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:16 +0200 -Subject: [PATCH 08/20] ath9k: add initvals for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- -Note: Some lines are longer than the 80 character limit, -and checkpatch.pl complains about those. However I would like -to keep the existing format because the initval arrays are -more readable in this form. - -Gabor - - drivers/net/wireless/ath/ath9k/ar9003_hw.c | 1 + - .../net/wireless/ath/ath9k/ar955x_1p0_initvals.h | 1284 ++++++++++++++++++++ - 2 files changed, 1285 insertions(+), 0 deletions(-) - create mode 100644 drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h - ---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c -@@ -21,6 +21,7 @@ - #include "ar9340_initvals.h" - #include "ar9330_1p1_initvals.h" - #include "ar9330_1p2_initvals.h" -+#include "ar955x_1p0_initvals.h" - #include "ar9580_1p0_initvals.h" - #include "ar9462_2p0_initvals.h" - ---- /dev/null -+++ b/drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h -@@ -0,0 +1,1284 @@ -+/* -+ * Copyright (c) 2010-2011 Atheros Communications Inc. -+ * Copyright (c) 2011-2012 Qualcomm Atheros 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_955X_1P0_H -+#define INITVALS_955X_1P0_H -+ -+/* AR955X 1.0 */ -+ -+static const u32 ar955x_1p0_radio_postamble[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00016098, 0xd2dd5554, 0xd2dd5554, 0xd28b3330, 0xd28b3330}, -+ {0x0001609c, 0x0a566f3a, 0x0a566f3a, 0x06345f2a, 0x06345f2a}, -+ {0x000160ac, 0xa4647c00, 0xa4647c00, 0xa4646800, 0xa4646800}, -+ {0x000160b0, 0x01885f52, 0x01885f52, 0x04accf3a, 0x04accf3a}, -+ {0x00016104, 0xb7a00001, 0xb7a00001, 0xb7a00001, 0xb7a00001}, -+ {0x0001610c, 0xc0000000, 0xc0000000, 0xc0000000, 0xc0000000}, -+ {0x00016140, 0x10804008, 0x10804008, 0x10804008, 0x10804008}, -+ {0x00016504, 0xb7a00001, 0xb7a00001, 0xb7a00001, 0xb7a00001}, -+ {0x0001650c, 0xc0000000, 0xc0000000, 0xc0000000, 0xc0000000}, -+ {0x00016540, 0x10804008, 0x10804008, 0x10804008, 0x10804008}, -+ {0x00016904, 0xb7a00001, 0xb7a00001, 0xb7a00001, 0xb7a00001}, -+ {0x0001690c, 0xc0000000, 0xc0000000, 0xc0000000, 0xc0000000}, -+ {0x00016940, 0x10804008, 0x10804008, 0x10804008, 0x10804008}, -+}; -+ -+static const u32 ar955x_1p0_baseband_core_txfir_coeff_japan_2484[][2] = { -+ /* Addr allmodes */ -+ {0x0000a398, 0x00000000}, -+ {0x0000a39c, 0x6f7f0301}, -+ {0x0000a3a0, 0xca9228ee}, -+}; -+ -+static const u32 ar955x_1p0_baseband_postamble[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8011, 0xd00a8011}, -+ {0x00009820, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e}, -+ {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881}, -+ {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c}, -+ {0x00009c00, 0x000000c4, 0x000000c4, 0x000000c4, 0x000000c4}, -+ {0x00009e00, 0x0372111a, 0x0372111a, 0x037216a0, 0x037216a0}, -+ {0x00009e04, 0x001c2020, 0x001c2020, 0x001c2020, 0x001c2020}, -+ {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, -+ {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x00009e14, 0x37b95d5e, 0x37b9605e, 0x3379605e, 0x33795d5e}, -+ {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c}, -+ {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce}, -+ {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021}, -+ {0x00009e3c, 0xcfa10820, 0xcfa10820, 0xcfa10822, 0xcfa10822}, -+ {0x00009e44, 0xfe321e27, 0xfe321e27, 0xfe291e27, 0xfe291e27}, -+ {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, -+ {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, -+ {0x0000a204, 0x005c0ec0, 0x005c0ec4, 0x005c0ec4, 0x005c0ec0}, -+ {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004}, -+ {0x0000a22c, 0x07e26a2f, 0x07e26a2f, 0x01026a2f, 0x01026a2f}, -+ {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b}, -+ {0x0000a234, 0x00000fff, 0x10000fff, 0x10000fff, 0x00000fff}, -+ {0x0000a238, 0xffb01018, 0xffb01018, 0xffb01018, 0xffb01018}, -+ {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108}, -+ {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898}, -+ {0x0000a258, 0x02020002, 0x02020002, 0x02020002, 0x02020002}, -+ {0x0000a25c, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e}, -+ {0x0000a260, 0x0a021501, 0x0a021501, 0x3a021501, 0x3a021501}, -+ {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b}, -+ {0x0000a284, 0x00000000, 0x00000000, 0x00000010, 0x00000010}, -+ {0x0000a288, 0x00000110, 0x00000110, 0x00000110, 0x00000110}, -+ {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222}, -+ {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, -+ {0x0000a2cc, 0x18c50033, 0x18c43433, 0x18c41033, 0x18c44c33}, -+ {0x0000a2d0, 0x00041982, 0x00041982, 0x00041982, 0x00041982}, -+ {0x0000a2d8, 0x7999a83b, 0x7999a83b, 0x7999a83b, 0x7999a83b}, -+ {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000ae04, 0x001c0000, 0x001c0000, 0x001c0000, 0x001c0000}, -+ {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -+ {0x0000b284, 0x00000000, 0x00000000, 0x00000010, 0x00000010}, -+ {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000be04, 0x001c0000, 0x001c0000, 0x001c0000, 0x001c0000}, -+ {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -+ {0x0000c284, 0x00000000, 0x00000000, 0x00000010, 0x00000010}, -+}; -+ -+static const u32 ar955x_1p0_radio_core[][2] = { -+ /* Addr allmodes */ -+ {0x00016000, 0x36db6db6}, -+ {0x00016004, 0x6db6db40}, -+ {0x00016008, 0x73f00000}, -+ {0x0001600c, 0x00000000}, -+ {0x00016040, 0x7f80fff8}, -+ {0x0001604c, 0x76d005b5}, -+ {0x00016050, 0x557cf031}, -+ {0x00016054, 0x13449440}, -+ {0x00016058, 0x0c51c92c}, -+ {0x0001605c, 0x3db7fffc}, -+ {0x00016060, 0xfffffffc}, -+ {0x00016064, 0x000f0278}, -+ {0x00016068, 0x6db6db6c}, -+ {0x0001606c, 0x6db60000}, -+ {0x00016080, 0x00080000}, -+ {0x00016084, 0x0e48048c}, -+ {0x00016088, 0x14214514}, -+ {0x0001608c, 0x119f101e}, -+ {0x00016090, 0x24926490}, -+ {0x00016094, 0x00000000}, -+ {0x000160a0, 0x0a108ffe}, -+ {0x000160a4, 0x812fc370}, -+ {0x000160a8, 0x423c8000}, -+ {0x000160b4, 0x92480080}, -+ {0x000160c0, 0x006db6d0}, -+ {0x000160c4, 0x6db6db60}, -+ {0x000160c8, 0x6db6db6c}, -+ {0x000160cc, 0x01e6c000}, -+ {0x00016100, 0x11999601}, -+ {0x00016108, 0x00080010}, -+ {0x00016144, 0x02084080}, -+ {0x00016148, 0x000080c0}, -+ {0x00016280, 0x01800804}, -+ {0x00016284, 0x00038dc5}, -+ {0x00016288, 0x00000000}, -+ {0x0001628c, 0x00000040}, -+ {0x00016380, 0x00000000}, -+ {0x00016384, 0x00000000}, -+ {0x00016388, 0x00400705}, -+ {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}, -+ {0x00016400, 0x36db6db6}, -+ {0x00016404, 0x6db6db40}, -+ {0x00016408, 0x73f00000}, -+ {0x0001640c, 0x00000000}, -+ {0x00016440, 0x7f80fff8}, -+ {0x0001644c, 0x76d005b5}, -+ {0x00016450, 0x557cf031}, -+ {0x00016454, 0x13449440}, -+ {0x00016458, 0x0c51c92c}, -+ {0x0001645c, 0x3db7fffc}, -+ {0x00016460, 0xfffffffc}, -+ {0x00016464, 0x000f0278}, -+ {0x00016468, 0x6db6db6c}, -+ {0x0001646c, 0x6db60000}, -+ {0x00016500, 0x11999601}, -+ {0x00016508, 0x00080010}, -+ {0x00016544, 0x02084080}, -+ {0x00016548, 0x000080c0}, -+ {0x00016780, 0x00000000}, -+ {0x00016784, 0x00000000}, -+ {0x00016788, 0x00400705}, -+ {0x0001678c, 0x00800700}, -+ {0x00016790, 0x00800700}, -+ {0x00016794, 0x00000000}, -+ {0x00016798, 0x00000000}, -+ {0x0001679c, 0x00000000}, -+ {0x000167a0, 0x00000001}, -+ {0x000167a4, 0x00000001}, -+ {0x000167a8, 0x00000000}, -+ {0x000167ac, 0x00000000}, -+ {0x000167b0, 0x00000000}, -+ {0x000167b4, 0x00000000}, -+ {0x000167b8, 0x00000000}, -+ {0x000167bc, 0x00000000}, -+ {0x000167c0, 0x000000a0}, -+ {0x000167c4, 0x000c0000}, -+ {0x000167c8, 0x14021402}, -+ {0x000167cc, 0x00001402}, -+ {0x000167d0, 0x00000000}, -+ {0x000167d4, 0x00000000}, -+ {0x00016800, 0x36db6db6}, -+ {0x00016804, 0x6db6db40}, -+ {0x00016808, 0x73f00000}, -+ {0x0001680c, 0x00000000}, -+ {0x00016840, 0x7f80fff8}, -+ {0x0001684c, 0x76d005b5}, -+ {0x00016850, 0x557cf031}, -+ {0x00016854, 0x13449440}, -+ {0x00016858, 0x0c51c92c}, -+ {0x0001685c, 0x3db7fffc}, -+ {0x00016860, 0xfffffffc}, -+ {0x00016864, 0x000f0278}, -+ {0x00016868, 0x6db6db6c}, -+ {0x0001686c, 0x6db60000}, -+ {0x00016900, 0x11999601}, -+ {0x00016908, 0x00080010}, -+ {0x00016944, 0x02084080}, -+ {0x00016948, 0x000080c0}, -+ {0x00016b80, 0x00000000}, -+ {0x00016b84, 0x00000000}, -+ {0x00016b88, 0x00400705}, -+ {0x00016b8c, 0x00800700}, -+ {0x00016b90, 0x00800700}, -+ {0x00016b94, 0x00000000}, -+ {0x00016b98, 0x00000000}, -+ {0x00016b9c, 0x00000000}, -+ {0x00016ba0, 0x00000001}, -+ {0x00016ba4, 0x00000001}, -+ {0x00016ba8, 0x00000000}, -+ {0x00016bac, 0x00000000}, -+ {0x00016bb0, 0x00000000}, -+ {0x00016bb4, 0x00000000}, -+ {0x00016bb8, 0x00000000}, -+ {0x00016bbc, 0x00000000}, -+ {0x00016bc0, 0x000000a0}, -+ {0x00016bc4, 0x000c0000}, -+ {0x00016bc8, 0x14021402}, -+ {0x00016bcc, 0x00001402}, -+ {0x00016bd0, 0x00000000}, -+ {0x00016bd4, 0x00000000}, -+}; -+ -+static const u32 ar955x_1p0_modes_xpa_tx_gain_table[][9] = { -+ /* Addr 5G_HT20_L 5G_HT40_L 5G_HT20_M 5G_HT40_M 5G_HT20_H 5G_HT40_H 2G_HT40 2G_HT20 */ -+ {0x0000a2dc, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xfffd5aaa, 0xfffd5aaa}, -+ {0x0000a2e0, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xfffe9ccc, 0xfffe9ccc}, -+ {0x0000a2e4, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xffffe0f0, 0xffffe0f0}, -+ {0x0000a2e8, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xfffcff00, 0xfffcff00}, -+ {0x0000a410, 0x000050de, 0x000050de, 0x000050de, 0x000050de, 0x000050de, 0x000050de, 0x000050da, 0x000050da}, -+ {0x0000a500, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000000, 0x00000000}, -+ {0x0000a504, 0x04000005, 0x04000005, 0x04000005, 0x04000005, 0x04000005, 0x04000005, 0x04000002, 0x04000002}, -+ {0x0000a508, 0x08000009, 0x08000009, 0x08000009, 0x08000009, 0x08000009, 0x08000009, 0x08000004, 0x08000004}, -+ {0x0000a50c, 0x0c00000b, 0x0c00000b, 0x0c00000b, 0x0c00000b, 0x0c00000b, 0x0c00000b, 0x0c000006, 0x0c000006}, -+ {0x0000a510, 0x1000000d, 0x1000000d, 0x1000000d, 0x1000000d, 0x1000000d, 0x1000000d, 0x0f00000a, 0x0f00000a}, -+ {0x0000a514, 0x14000011, 0x14000011, 0x14000011, 0x14000011, 0x14000011, 0x14000011, 0x1300000c, 0x1300000c}, -+ {0x0000a518, 0x19004008, 0x19004008, 0x19004008, 0x19004008, 0x18004008, 0x18004008, 0x1700000e, 0x1700000e}, -+ {0x0000a51c, 0x1d00400a, 0x1d00400a, 0x1d00400a, 0x1d00400a, 0x1c00400a, 0x1c00400a, 0x1b000064, 0x1b000064}, -+ {0x0000a520, 0x230020a2, 0x230020a2, 0x210020a2, 0x210020a2, 0x200020a2, 0x200020a2, 0x1f000242, 0x1f000242}, -+ {0x0000a524, 0x2500006e, 0x2500006e, 0x2500006e, 0x2500006e, 0x2400006e, 0x2400006e, 0x23000229, 0x23000229}, -+ {0x0000a528, 0x29022221, 0x29022221, 0x28022221, 0x28022221, 0x27022221, 0x27022221, 0x270002a2, 0x270002a2}, -+ {0x0000a52c, 0x2d00062a, 0x2d00062a, 0x2c00062a, 0x2c00062a, 0x2a00062a, 0x2a00062a, 0x2c001203, 0x2c001203}, -+ {0x0000a530, 0x340220a5, 0x340220a5, 0x320220a5, 0x320220a5, 0x2f0220a5, 0x2f0220a5, 0x30001803, 0x30001803}, -+ {0x0000a534, 0x380022c5, 0x380022c5, 0x350022c5, 0x350022c5, 0x320022c5, 0x320022c5, 0x33000881, 0x33000881}, -+ {0x0000a538, 0x3b002486, 0x3b002486, 0x39002486, 0x39002486, 0x36002486, 0x36002486, 0x38001809, 0x38001809}, -+ {0x0000a53c, 0x3f00248a, 0x3f00248a, 0x3d00248a, 0x3d00248a, 0x3a00248a, 0x3a00248a, 0x3a000814, 0x3a000814}, -+ {0x0000a540, 0x4202242c, 0x4202242c, 0x4102242c, 0x4102242c, 0x3f02242c, 0x3f02242c, 0x3f001a0c, 0x3f001a0c}, -+ {0x0000a544, 0x490044c6, 0x490044c6, 0x460044c6, 0x460044c6, 0x420044c6, 0x420044c6, 0x43001a0e, 0x43001a0e}, -+ {0x0000a548, 0x4d024485, 0x4d024485, 0x4a024485, 0x4a024485, 0x46024485, 0x46024485, 0x46001812, 0x46001812}, -+ {0x0000a54c, 0x51044483, 0x51044483, 0x4e044483, 0x4e044483, 0x4a044483, 0x4a044483, 0x49001884, 0x49001884}, -+ {0x0000a550, 0x5404a40c, 0x5404a40c, 0x5204a40c, 0x5204a40c, 0x4d04a40c, 0x4d04a40c, 0x4d001e84, 0x4d001e84}, -+ {0x0000a554, 0x57024632, 0x57024632, 0x55024632, 0x55024632, 0x52024632, 0x52024632, 0x50001e69, 0x50001e69}, -+ {0x0000a558, 0x5c00a634, 0x5c00a634, 0x5900a634, 0x5900a634, 0x5600a634, 0x5600a634, 0x550006f4, 0x550006f4}, -+ {0x0000a55c, 0x5f026832, 0x5f026832, 0x5d026832, 0x5d026832, 0x5a026832, 0x5a026832, 0x59000ad3, 0x59000ad3}, -+ {0x0000a560, 0x6602b012, 0x6602b012, 0x6202b012, 0x6202b012, 0x5d02b012, 0x5d02b012, 0x5e000ad5, 0x5e000ad5}, -+ {0x0000a564, 0x6e02d0e1, 0x6e02d0e1, 0x6802d0e1, 0x6802d0e1, 0x6002d0e1, 0x6002d0e1, 0x61001ced, 0x61001ced}, -+ {0x0000a568, 0x7202b4c4, 0x7202b4c4, 0x6c02b4c4, 0x6c02b4c4, 0x6502b4c4, 0x6502b4c4, 0x660018d4, 0x660018d4}, -+ {0x0000a56c, 0x75007894, 0x75007894, 0x70007894, 0x70007894, 0x6b007894, 0x6b007894, 0x660018d4, 0x660018d4}, -+ {0x0000a570, 0x7b025c74, 0x7b025c74, 0x75025c74, 0x75025c74, 0x70025c74, 0x70025c74, 0x660018d4, 0x660018d4}, -+ {0x0000a574, 0x8300bcb5, 0x8300bcb5, 0x7a00bcb5, 0x7a00bcb5, 0x7600bcb5, 0x7600bcb5, 0x660018d4, 0x660018d4}, -+ {0x0000a578, 0x8a04dc74, 0x8a04dc74, 0x7f04dc74, 0x7f04dc74, 0x7c04dc74, 0x7c04dc74, 0x660018d4, 0x660018d4}, -+ {0x0000a57c, 0x8a04dc74, 0x8a04dc74, 0x7f04dc74, 0x7f04dc74, 0x7c04dc74, 0x7c04dc74, 0x660018d4, 0x660018d4}, -+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x03804000, 0x03804000}, -+ {0x0000a610, 0x04c08c01, 0x04c08c01, 0x04808b01, 0x04808b01, 0x04808a01, 0x04808a01, 0x0300ca02, 0x0300ca02}, -+ {0x0000a614, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x00000e04, 0x00000e04}, -+ {0x0000a618, 0x04010c01, 0x04010c01, 0x03c10b01, 0x03c10b01, 0x03810a01, 0x03810a01, 0x03014000, 0x03014000}, -+ {0x0000a61c, 0x03814e05, 0x03814e05, 0x03414d05, 0x03414d05, 0x03414d05, 0x03414d05, 0x00000000, 0x00000000}, -+ {0x0000a620, 0x04010303, 0x04010303, 0x03c10303, 0x03c10303, 0x03810303, 0x03810303, 0x00000000, 0x00000000}, -+ {0x0000a624, 0x03814e05, 0x03814e05, 0x03414d05, 0x03414d05, 0x03414d05, 0x03414d05, 0x03014000, 0x03014000}, -+ {0x0000a628, 0x00c0c000, 0x00c0c000, 0x00c0c000, 0x00c0c000, 0x00c0c000, 0x00c0c000, 0x03804c05, 0x03804c05}, -+ {0x0000a62c, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x00c0c303, 0x0701de06, 0x0701de06}, -+ {0x0000a630, 0x03418000, 0x03418000, 0x03018000, 0x03018000, 0x02c18000, 0x02c18000, 0x07819c07, 0x07819c07}, -+ {0x0000a634, 0x03815004, 0x03815004, 0x03414f04, 0x03414f04, 0x03414e04, 0x03414e04, 0x0701dc07, 0x0701dc07}, -+ {0x0000a638, 0x03005302, 0x03005302, 0x02c05202, 0x02c05202, 0x02805202, 0x02805202, 0x0701dc07, 0x0701dc07}, -+ {0x0000a63c, 0x04c09302, 0x04c09302, 0x04809202, 0x04809202, 0x04809202, 0x04809202, 0x0701dc07, 0x0701dc07}, -+ {0x0000b2dc, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xfffd5aaa, 0xfffd5aaa}, -+ {0x0000b2e0, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xfffe9ccc, 0xfffe9ccc}, -+ {0x0000b2e4, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xffffe0f0, 0xffffe0f0}, -+ {0x0000b2e8, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xfffcff00, 0xfffcff00}, -+ {0x0000c2dc, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xffffaaaa, 0xfffd5aaa, 0xfffd5aaa}, -+ {0x0000c2e0, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xffffcccc, 0xfffe9ccc, 0xfffe9ccc}, -+ {0x0000c2e4, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xfffff0f0, 0xffffe0f0, 0xffffe0f0}, -+ {0x0000c2e8, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xfffcff00, 0xfffcff00}, -+ {0x00016044, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x010002d4, 0x010002d4}, -+ {0x00016048, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x66482401, 0x66482401}, -+ {0x00016280, 0x01801e84, 0x01801e84, 0x01801e84, 0x01801e84, 0x01801e84, 0x01801e84, 0x01808e84, 0x01808e84}, -+ {0x00016444, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x010002d4, 0x010002d4}, -+ {0x00016448, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x66482401, 0x66482401}, -+ {0x00016844, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x010002d4, 0x010002d4}, -+ {0x00016848, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x62482401, 0x66482401, 0x66482401}, -+}; -+ -+static const u32 ar955x_1p0_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, 0x13881c22}, -+ {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}, -+ {0x00008140, 0x000000fe}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x000081c0, 0x00000000}, -+ {0x000081c4, 0x33332210}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000800}, -+ {0x0000824c, 0x0001e800}, -+ {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, 0x00001d40}, -+ {0x00008314, 0x00000000}, -+ {0x0000831c, 0x0000010d}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x0000001f}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000700}, -+ {0x00008338, 0xffff0000}, -+ {0x0000833c, 0x02400000}, -+ {0x00008340, 0x000107ff}, -+ {0x00008344, 0xaa48107b}, -+ {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, 0x8c7901ff}, -+}; -+ -+static const u32 ar955x_1p0_common_rx_gain_table[][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}, -+ {0x0000b000, 0x00010000}, -+ {0x0000b004, 0x00030002}, -+ {0x0000b008, 0x00050004}, -+ {0x0000b00c, 0x00810080}, -+ {0x0000b010, 0x00830082}, -+ {0x0000b014, 0x01810180}, -+ {0x0000b018, 0x01830182}, -+ {0x0000b01c, 0x01850184}, -+ {0x0000b020, 0x02810280}, -+ {0x0000b024, 0x02830282}, -+ {0x0000b028, 0x02850284}, -+ {0x0000b02c, 0x02890288}, -+ {0x0000b030, 0x028b028a}, -+ {0x0000b034, 0x0388028c}, -+ {0x0000b038, 0x038a0389}, -+ {0x0000b03c, 0x038c038b}, -+ {0x0000b040, 0x0390038d}, -+ {0x0000b044, 0x03920391}, -+ {0x0000b048, 0x03940393}, -+ {0x0000b04c, 0x03960395}, -+ {0x0000b050, 0x00000000}, -+ {0x0000b054, 0x00000000}, -+ {0x0000b058, 0x00000000}, -+ {0x0000b05c, 0x00000000}, -+ {0x0000b060, 0x00000000}, -+ {0x0000b064, 0x00000000}, -+ {0x0000b068, 0x00000000}, -+ {0x0000b06c, 0x00000000}, -+ {0x0000b070, 0x00000000}, -+ {0x0000b074, 0x00000000}, -+ {0x0000b078, 0x00000000}, -+ {0x0000b07c, 0x00000000}, -+ {0x0000b080, 0x23232323}, -+ {0x0000b084, 0x21232323}, -+ {0x0000b088, 0x19191c1e}, -+ {0x0000b08c, 0x12141417}, -+ {0x0000b090, 0x07070e0e}, -+ {0x0000b094, 0x03030305}, -+ {0x0000b098, 0x00000003}, -+ {0x0000b09c, 0x00000000}, -+ {0x0000b0a0, 0x00000000}, -+ {0x0000b0a4, 0x00000000}, -+ {0x0000b0a8, 0x00000000}, -+ {0x0000b0ac, 0x00000000}, -+ {0x0000b0b0, 0x00000000}, -+ {0x0000b0b4, 0x00000000}, -+ {0x0000b0b8, 0x00000000}, -+ {0x0000b0bc, 0x00000000}, -+ {0x0000b0c0, 0x003f0020}, -+ {0x0000b0c4, 0x00400041}, -+ {0x0000b0c8, 0x0140005f}, -+ {0x0000b0cc, 0x0160015f}, -+ {0x0000b0d0, 0x017e017f}, -+ {0x0000b0d4, 0x02410242}, -+ {0x0000b0d8, 0x025f0240}, -+ {0x0000b0dc, 0x027f0260}, -+ {0x0000b0e0, 0x0341027e}, -+ {0x0000b0e4, 0x035f0340}, -+ {0x0000b0e8, 0x037f0360}, -+ {0x0000b0ec, 0x04400441}, -+ {0x0000b0f0, 0x0460045f}, -+ {0x0000b0f4, 0x0541047f}, -+ {0x0000b0f8, 0x055f0540}, -+ {0x0000b0fc, 0x057f0560}, -+ {0x0000b100, 0x06400641}, -+ {0x0000b104, 0x0660065f}, -+ {0x0000b108, 0x067e067f}, -+ {0x0000b10c, 0x07410742}, -+ {0x0000b110, 0x075f0740}, -+ {0x0000b114, 0x077f0760}, -+ {0x0000b118, 0x07800781}, -+ {0x0000b11c, 0x07a0079f}, -+ {0x0000b120, 0x07c107bf}, -+ {0x0000b124, 0x000007c0}, -+ {0x0000b128, 0x00000000}, -+ {0x0000b12c, 0x00000000}, -+ {0x0000b130, 0x00000000}, -+ {0x0000b134, 0x00000000}, -+ {0x0000b138, 0x00000000}, -+ {0x0000b13c, 0x00000000}, -+ {0x0000b140, 0x003f0020}, -+ {0x0000b144, 0x00400041}, -+ {0x0000b148, 0x0140005f}, -+ {0x0000b14c, 0x0160015f}, -+ {0x0000b150, 0x017e017f}, -+ {0x0000b154, 0x02410242}, -+ {0x0000b158, 0x025f0240}, -+ {0x0000b15c, 0x027f0260}, -+ {0x0000b160, 0x0341027e}, -+ {0x0000b164, 0x035f0340}, -+ {0x0000b168, 0x037f0360}, -+ {0x0000b16c, 0x04400441}, -+ {0x0000b170, 0x0460045f}, -+ {0x0000b174, 0x0541047f}, -+ {0x0000b178, 0x055f0540}, -+ {0x0000b17c, 0x057f0560}, -+ {0x0000b180, 0x06400641}, -+ {0x0000b184, 0x0660065f}, -+ {0x0000b188, 0x067e067f}, -+ {0x0000b18c, 0x07410742}, -+ {0x0000b190, 0x075f0740}, -+ {0x0000b194, 0x077f0760}, -+ {0x0000b198, 0x07800781}, -+ {0x0000b19c, 0x07a0079f}, -+ {0x0000b1a0, 0x07c107bf}, -+ {0x0000b1a4, 0x000007c0}, -+ {0x0000b1a8, 0x00000000}, -+ {0x0000b1ac, 0x00000000}, -+ {0x0000b1b0, 0x00000000}, -+ {0x0000b1b4, 0x00000000}, -+ {0x0000b1b8, 0x00000000}, -+ {0x0000b1bc, 0x00000000}, -+ {0x0000b1c0, 0x00000000}, -+ {0x0000b1c4, 0x00000000}, -+ {0x0000b1c8, 0x00000000}, -+ {0x0000b1cc, 0x00000000}, -+ {0x0000b1d0, 0x00000000}, -+ {0x0000b1d4, 0x00000000}, -+ {0x0000b1d8, 0x00000000}, -+ {0x0000b1dc, 0x00000000}, -+ {0x0000b1e0, 0x00000000}, -+ {0x0000b1e4, 0x00000000}, -+ {0x0000b1e8, 0x00000000}, -+ {0x0000b1ec, 0x00000000}, -+ {0x0000b1f0, 0x00000396}, -+ {0x0000b1f4, 0x00000396}, -+ {0x0000b1f8, 0x00000396}, -+ {0x0000b1fc, 0x00000196}, -+}; -+ -+static const u32 ar955x_1p0_baseband_core[][2] = { -+ /* Addr allmodes */ -+ {0x00009800, 0xafe68e30}, -+ {0x00009804, 0xfd14e000}, -+ {0x00009808, 0x9c0a9f6b}, -+ {0x0000980c, 0x04900000}, -+ {0x00009814, 0x0280c00a}, -+ {0x00009818, 0x00000000}, -+ {0x0000981c, 0x00020028}, -+ {0x00009834, 0x6400a190}, -+ {0x00009838, 0x0108ecff}, -+ {0x0000983c, 0x14000600}, -+ {0x00009880, 0x201fff00}, -+ {0x00009884, 0x00001042}, -+ {0x000098a4, 0x00200400}, -+ {0x000098b0, 0x32840bbe}, -+ {0x000098bc, 0x00000002}, -+ {0x000098d0, 0x004b6a8e}, -+ {0x000098d4, 0x00000820}, -+ {0x000098dc, 0x00000000}, -+ {0x000098f0, 0x00000000}, -+ {0x000098f4, 0x00000000}, -+ {0x00009c04, 0xff55ff55}, -+ {0x00009c08, 0x0320ff55}, -+ {0x00009c0c, 0x00000000}, -+ {0x00009c10, 0x00000000}, -+ {0x00009c14, 0x00046384}, -+ {0x00009c18, 0x05b6b440}, -+ {0x00009c1c, 0x00b6b440}, -+ {0x00009d00, 0xc080a333}, -+ {0x00009d04, 0x40206c10}, -+ {0x00009d08, 0x009c4060}, -+ {0x00009d0c, 0x9883800a}, -+ {0x00009d10, 0x01834061}, -+ {0x00009d14, 0x00c0040b}, -+ {0x00009d18, 0x00000000}, -+ {0x00009e08, 0x0038230c}, -+ {0x00009e24, 0x990bb515}, -+ {0x00009e28, 0x0c6f0000}, -+ {0x00009e30, 0x06336f77}, -+ {0x00009e34, 0x6af6532f}, -+ {0x00009e38, 0x0cc80c00}, -+ {0x00009e40, 0x0d261820}, -+ {0x00009e4c, 0x00001004}, -+ {0x00009e50, 0x00ff03f1}, -+ {0x00009fc0, 0x813e4788}, -+ {0x00009fc4, 0x0001efb5}, -+ {0x00009fcc, 0x40000014}, -+ {0x00009fd0, 0x01193b93}, -+ {0x0000a20c, 0x00000000}, -+ {0x0000a220, 0x00000000}, -+ {0x0000a224, 0x00000000}, -+ {0x0000a228, 0x10002310}, -+ {0x0000a23c, 0x00000000}, -+ {0x0000a244, 0x0c000000}, -+ {0x0000a248, 0x00000140}, -+ {0x0000a2a0, 0x00000007}, -+ {0x0000a2c0, 0x00000007}, -+ {0x0000a2c8, 0x00000000}, -+ {0x0000a2d4, 0x00000000}, -+ {0x0000a2ec, 0x00000000}, -+ {0x0000a2f0, 0x00000000}, -+ {0x0000a2f4, 0x00000000}, -+ {0x0000a2f8, 0x00000000}, -+ {0x0000a344, 0x00000000}, -+ {0x0000a34c, 0x00000000}, -+ {0x0000a350, 0x0000a000}, -+ {0x0000a364, 0x00000000}, -+ {0x0000a370, 0x00000000}, -+ {0x0000a390, 0x00000001}, -+ {0x0000a394, 0x00000444}, -+ {0x0000a398, 0x1f020503}, -+ {0x0000a39c, 0x29180c03}, -+ {0x0000a3a0, 0x9a8b6844}, -+ {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, 0x00000000}, -+ {0x0000a3f8, 0x0c9bd380}, -+ {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, 0x00100000}, -+ {0x0000a444, 0x00000000}, -+ {0x0000a448, 0x05000080}, -+ {0x0000a44c, 0x00000001}, -+ {0x0000a450, 0x00010000}, -+ {0x0000a458, 0x00000000}, -+ {0x0000a644, 0x3fad9d74}, -+ {0x0000a648, 0x0048060a}, -+ {0x0000a64c, 0x00003c37}, -+ {0x0000a670, 0x03020100}, -+ {0x0000a674, 0x09080504}, -+ {0x0000a678, 0x0d0c0b0a}, -+ {0x0000a67c, 0x13121110}, -+ {0x0000a680, 0x31301514}, -+ {0x0000a684, 0x35343332}, -+ {0x0000a688, 0x00000036}, -+ {0x0000a690, 0x00000838}, -+ {0x0000a7cc, 0x00000000}, -+ {0x0000a7d0, 0x00000000}, -+ {0x0000a7d4, 0x00000004}, -+ {0x0000a7dc, 0x00000000}, -+ {0x0000a8d0, 0x004b6a8e}, -+ {0x0000a8d4, 0x00000820}, -+ {0x0000a8dc, 0x00000000}, -+ {0x0000a8f0, 0x00000000}, -+ {0x0000a8f4, 0x00000000}, -+ {0x0000b2d0, 0x00000080}, -+ {0x0000b2d4, 0x00000000}, -+ {0x0000b2ec, 0x00000000}, -+ {0x0000b2f0, 0x00000000}, -+ {0x0000b2f4, 0x00000000}, -+ {0x0000b2f8, 0x00000000}, -+ {0x0000b408, 0x0e79e5c0}, -+ {0x0000b40c, 0x00820820}, -+ {0x0000b420, 0x00000000}, -+ {0x0000b8d0, 0x004b6a8e}, -+ {0x0000b8d4, 0x00000820}, -+ {0x0000b8dc, 0x00000000}, -+ {0x0000b8f0, 0x00000000}, -+ {0x0000b8f4, 0x00000000}, -+ {0x0000c2d0, 0x00000080}, -+ {0x0000c2d4, 0x00000000}, -+ {0x0000c2ec, 0x00000000}, -+ {0x0000c2f0, 0x00000000}, -+ {0x0000c2f4, 0x00000000}, -+ {0x0000c2f8, 0x00000000}, -+ {0x0000c408, 0x0e79e5c0}, -+ {0x0000c40c, 0x00820820}, -+ {0x0000c420, 0x00000000}, -+}; -+ -+static const u32 ar955x_1p0_common_wo_xlna_rx_gain_table[][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, 0x03820190}, -+ {0x0000a030, 0x03840383}, -+ {0x0000a034, 0x03880385}, -+ {0x0000a038, 0x038a0389}, -+ {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, 0x29292929}, -+ {0x0000a084, 0x29292929}, -+ {0x0000a088, 0x29292929}, -+ {0x0000a08c, 0x29292929}, -+ {0x0000a090, 0x22292929}, -+ {0x0000a094, 0x1d1d2222}, -+ {0x0000a098, 0x0c111117}, -+ {0x0000a09c, 0x00030303}, -+ {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}, -+ {0x0000b000, 0x00010000}, -+ {0x0000b004, 0x00030002}, -+ {0x0000b008, 0x00050004}, -+ {0x0000b00c, 0x00810080}, -+ {0x0000b010, 0x00830082}, -+ {0x0000b014, 0x01810180}, -+ {0x0000b018, 0x01830182}, -+ {0x0000b01c, 0x01850184}, -+ {0x0000b020, 0x02810280}, -+ {0x0000b024, 0x02830282}, -+ {0x0000b028, 0x02850284}, -+ {0x0000b02c, 0x02890288}, -+ {0x0000b030, 0x028b028a}, -+ {0x0000b034, 0x0388028c}, -+ {0x0000b038, 0x038a0389}, -+ {0x0000b03c, 0x038c038b}, -+ {0x0000b040, 0x0390038d}, -+ {0x0000b044, 0x03920391}, -+ {0x0000b048, 0x03940393}, -+ {0x0000b04c, 0x03960395}, -+ {0x0000b050, 0x00000000}, -+ {0x0000b054, 0x00000000}, -+ {0x0000b058, 0x00000000}, -+ {0x0000b05c, 0x00000000}, -+ {0x0000b060, 0x00000000}, -+ {0x0000b064, 0x00000000}, -+ {0x0000b068, 0x00000000}, -+ {0x0000b06c, 0x00000000}, -+ {0x0000b070, 0x00000000}, -+ {0x0000b074, 0x00000000}, -+ {0x0000b078, 0x00000000}, -+ {0x0000b07c, 0x00000000}, -+ {0x0000b080, 0x32323232}, -+ {0x0000b084, 0x2f2f3232}, -+ {0x0000b088, 0x23282a2d}, -+ {0x0000b08c, 0x1c1e2123}, -+ {0x0000b090, 0x14171919}, -+ {0x0000b094, 0x0e0e1214}, -+ {0x0000b098, 0x03050707}, -+ {0x0000b09c, 0x00030303}, -+ {0x0000b0a0, 0x00000000}, -+ {0x0000b0a4, 0x00000000}, -+ {0x0000b0a8, 0x00000000}, -+ {0x0000b0ac, 0x00000000}, -+ {0x0000b0b0, 0x00000000}, -+ {0x0000b0b4, 0x00000000}, -+ {0x0000b0b8, 0x00000000}, -+ {0x0000b0bc, 0x00000000}, -+ {0x0000b0c0, 0x003f0020}, -+ {0x0000b0c4, 0x00400041}, -+ {0x0000b0c8, 0x0140005f}, -+ {0x0000b0cc, 0x0160015f}, -+ {0x0000b0d0, 0x017e017f}, -+ {0x0000b0d4, 0x02410242}, -+ {0x0000b0d8, 0x025f0240}, -+ {0x0000b0dc, 0x027f0260}, -+ {0x0000b0e0, 0x0341027e}, -+ {0x0000b0e4, 0x035f0340}, -+ {0x0000b0e8, 0x037f0360}, -+ {0x0000b0ec, 0x04400441}, -+ {0x0000b0f0, 0x0460045f}, -+ {0x0000b0f4, 0x0541047f}, -+ {0x0000b0f8, 0x055f0540}, -+ {0x0000b0fc, 0x057f0560}, -+ {0x0000b100, 0x06400641}, -+ {0x0000b104, 0x0660065f}, -+ {0x0000b108, 0x067e067f}, -+ {0x0000b10c, 0x07410742}, -+ {0x0000b110, 0x075f0740}, -+ {0x0000b114, 0x077f0760}, -+ {0x0000b118, 0x07800781}, -+ {0x0000b11c, 0x07a0079f}, -+ {0x0000b120, 0x07c107bf}, -+ {0x0000b124, 0x000007c0}, -+ {0x0000b128, 0x00000000}, -+ {0x0000b12c, 0x00000000}, -+ {0x0000b130, 0x00000000}, -+ {0x0000b134, 0x00000000}, -+ {0x0000b138, 0x00000000}, -+ {0x0000b13c, 0x00000000}, -+ {0x0000b140, 0x003f0020}, -+ {0x0000b144, 0x00400041}, -+ {0x0000b148, 0x0140005f}, -+ {0x0000b14c, 0x0160015f}, -+ {0x0000b150, 0x017e017f}, -+ {0x0000b154, 0x02410242}, -+ {0x0000b158, 0x025f0240}, -+ {0x0000b15c, 0x027f0260}, -+ {0x0000b160, 0x0341027e}, -+ {0x0000b164, 0x035f0340}, -+ {0x0000b168, 0x037f0360}, -+ {0x0000b16c, 0x04400441}, -+ {0x0000b170, 0x0460045f}, -+ {0x0000b174, 0x0541047f}, -+ {0x0000b178, 0x055f0540}, -+ {0x0000b17c, 0x057f0560}, -+ {0x0000b180, 0x06400641}, -+ {0x0000b184, 0x0660065f}, -+ {0x0000b188, 0x067e067f}, -+ {0x0000b18c, 0x07410742}, -+ {0x0000b190, 0x075f0740}, -+ {0x0000b194, 0x077f0760}, -+ {0x0000b198, 0x07800781}, -+ {0x0000b19c, 0x07a0079f}, -+ {0x0000b1a0, 0x07c107bf}, -+ {0x0000b1a4, 0x000007c0}, -+ {0x0000b1a8, 0x00000000}, -+ {0x0000b1ac, 0x00000000}, -+ {0x0000b1b0, 0x00000000}, -+ {0x0000b1b4, 0x00000000}, -+ {0x0000b1b8, 0x00000000}, -+ {0x0000b1bc, 0x00000000}, -+ {0x0000b1c0, 0x00000000}, -+ {0x0000b1c4, 0x00000000}, -+ {0x0000b1c8, 0x00000000}, -+ {0x0000b1cc, 0x00000000}, -+ {0x0000b1d0, 0x00000000}, -+ {0x0000b1d4, 0x00000000}, -+ {0x0000b1d8, 0x00000000}, -+ {0x0000b1dc, 0x00000000}, -+ {0x0000b1e0, 0x00000000}, -+ {0x0000b1e4, 0x00000000}, -+ {0x0000b1e8, 0x00000000}, -+ {0x0000b1ec, 0x00000000}, -+ {0x0000b1f0, 0x00000396}, -+ {0x0000b1f4, 0x00000396}, -+ {0x0000b1f8, 0x00000396}, -+ {0x0000b1fc, 0x00000196}, -+}; -+ -+static const u32 ar955x_1p0_soc_preamble[][2] = { -+ /* Addr allmodes */ -+ {0x00007000, 0x00000000}, -+ {0x00007004, 0x00000000}, -+ {0x00007008, 0x00000000}, -+ {0x0000700c, 0x00000000}, -+ {0x0000701c, 0x00000000}, -+ {0x00007020, 0x00000000}, -+ {0x00007024, 0x00000000}, -+ {0x00007028, 0x00000000}, -+ {0x0000702c, 0x00000000}, -+ {0x00007030, 0x00000000}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00007048, 0x00000000}, -+}; -+ -+static const u32 ar955x_1p0_common_wo_xlna_rx_gain_bounds[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00009e44, 0xfe321e27, 0xfe321e27, 0xfe291e27, 0xfe291e27}, -+ {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, -+}; -+ -+static const u32 ar955x_1p0_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 ar955x_1p0_common_rx_gain_bounds[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00009e44, 0xfe321e27, 0xfe321e27, 0xfe291e27, 0xfe291e27}, -+ {0x00009e48, 0x5030201a, 0x5030201a, 0x50302018, 0x50302018}, -+}; -+ -+static const u32 ar955x_1p0_modes_no_xpa_tx_gain_table[][9] = { -+ /* Addr 5G_HT20_L 5G_HT40_L 5G_HT20_M 5G_HT40_M 5G_HT20_H 5G_HT40_H 2G_HT40 2G_HT20 */ -+ {0x0000a2dc, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0xfffe5aaa, 0xfffe5aaa}, -+ {0x0000a2e0, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0xfffe9ccc, 0xfffe9ccc}, -+ {0x0000a2e4, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0xffffe0f0, 0xffffe0f0}, -+ {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffef00, 0xffffef00}, -+ {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d8, 0x000050d8, 0x000050d8, 0x000050d8, 0x000050d7, 0x000050d7}, -+ {0x0000a500, 0x00002220, 0x00002220, 0x00002220, 0x00002220, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -+ {0x0000a504, 0x04002222, 0x04002222, 0x04002222, 0x04002222, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, -+ {0x0000a508, 0x09002421, 0x09002421, 0x09002421, 0x09002421, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, -+ {0x0000a50c, 0x0d002621, 0x0d002621, 0x0d002621, 0x0d002621, 0x0d002621, 0x0d002621, 0x0b000006, 0x0b000006}, -+ {0x0000a510, 0x13004620, 0x13004620, 0x13004620, 0x13004620, 0x13004620, 0x13004620, 0x0f00000a, 0x0f00000a}, -+ {0x0000a514, 0x19004a20, 0x19004a20, 0x19004a20, 0x19004a20, 0x19004a20, 0x19004a20, 0x1300000c, 0x1300000c}, -+ {0x0000a518, 0x1d004e20, 0x1d004e20, 0x1d004e20, 0x1d004e20, 0x1d004e20, 0x1d004e20, 0x1700000e, 0x1700000e}, -+ {0x0000a51c, 0x21005420, 0x21005420, 0x21005420, 0x21005420, 0x21005420, 0x21005420, 0x1b000012, 0x1b000012}, -+ {0x0000a520, 0x26005e20, 0x26005e20, 0x26005e20, 0x26005e20, 0x26005e20, 0x26005e20, 0x1f00004a, 0x1f00004a}, -+ {0x0000a524, 0x2b005e40, 0x2b005e40, 0x2b005e40, 0x2b005e40, 0x2b005e40, 0x2b005e40, 0x23000244, 0x23000244}, -+ {0x0000a528, 0x2f005e42, 0x2f005e42, 0x2f005e42, 0x2f005e42, 0x2f005e42, 0x2f005e42, 0x2700022b, 0x2700022b}, -+ {0x0000a52c, 0x33005e44, 0x33005e44, 0x33005e44, 0x33005e44, 0x33005e44, 0x33005e44, 0x2b000625, 0x2b000625}, -+ {0x0000a530, 0x38005e65, 0x38005e65, 0x38005e65, 0x38005e65, 0x38005e65, 0x38005e65, 0x2f001006, 0x2f001006}, -+ {0x0000a534, 0x3c005e69, 0x3c005e69, 0x3c005e69, 0x3c005e69, 0x3c005e69, 0x3c005e69, 0x330008a0, 0x330008a0}, -+ {0x0000a538, 0x40005e6b, 0x40005e6b, 0x40005e6b, 0x40005e6b, 0x40005e6b, 0x40005e6b, 0x37000a2a, 0x37000a2a}, -+ {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x44005e6d, 0x44005e6d, 0x44005e6d, 0x44005e6d, 0x3b001c23, 0x3b001c23}, -+ {0x0000a540, 0x49005e72, 0x49005e72, 0x49005e72, 0x49005e72, 0x49005e72, 0x49005e72, 0x3f0014a0, 0x3f0014a0}, -+ {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x4e005eb2, 0x4e005eb2, 0x4e005eb2, 0x4e005eb2, 0x43001882, 0x43001882}, -+ {0x0000a548, 0x53005f12, 0x53005f12, 0x53005f12, 0x53005f12, 0x53005f12, 0x53005f12, 0x47001ca2, 0x47001ca2}, -+ {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x59025eb2, 0x59025eb2, 0x59025eb2, 0x59025eb2, 0x4b001ec3, 0x4b001ec3}, -+ {0x0000a550, 0x5e025f12, 0x5e025f12, 0x5e025f12, 0x5e025f12, 0x5e025f12, 0x5e025f12, 0x4f00148c, 0x4f00148c}, -+ {0x0000a554, 0x61027f12, 0x61027f12, 0x61027f12, 0x61027f12, 0x61027f12, 0x61027f12, 0x53001c6e, 0x53001c6e}, -+ {0x0000a558, 0x6702bf12, 0x6702bf12, 0x6702bf12, 0x6702bf12, 0x6702bf12, 0x6702bf12, 0x57001c92, 0x57001c92}, -+ {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x6b02bf14, 0x6b02bf14, 0x6b02bf14, 0x6b02bf14, 0x5c001af6, 0x5c001af6}, -+ {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x5c001af6, 0x5c001af6}, -+ {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a610, 0x00804000, 0x00804000, 0x00804000, 0x00804000, 0x00804000, 0x00804000, 0x04005001, 0x04005001}, -+ {0x0000a614, 0x00804201, 0x00804201, 0x00804201, 0x00804201, 0x00804201, 0x00804201, 0x03808e02, 0x03808e02}, -+ {0x0000a618, 0x0280c802, 0x0280c802, 0x0280c802, 0x0280c802, 0x0280c802, 0x0280c802, 0x0300c000, 0x0300c000}, -+ {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x0280ca03, 0x0280ca03, 0x0280ca03, 0x0280ca03, 0x03808e02, 0x03808e02}, -+ {0x0000a620, 0x04c15104, 0x04c15104, 0x04c15104, 0x04c15104, 0x04c15104, 0x04c15104, 0x03410c03, 0x03410c03}, -+ {0x0000a624, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04014c03, 0x04014c03}, -+ {0x0000a628, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x05818d04, 0x05818d04}, -+ {0x0000a62c, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x0801cd04, 0x0801cd04}, -+ {0x0000a630, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x0801e007, 0x0801e007}, -+ {0x0000a634, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x0801e007, 0x0801e007}, -+ {0x0000a638, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x0801e007, 0x0801e007}, -+ {0x0000a63c, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x0801e007, 0x0801e007}, -+ {0x0000b2dc, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0xfffe5aaa, 0xfffe5aaa}, -+ {0x0000b2e0, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0xfffe9ccc, 0xfffe9ccc}, -+ {0x0000b2e4, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0xffffe0f0, 0xffffe0f0}, -+ {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffef00, 0xffffef00}, -+ {0x0000c2dc, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0x01feee00, 0xfffe5aaa, 0xfffe5aaa}, -+ {0x0000c2e0, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0x0000f000, 0xfffe9ccc, 0xfffe9ccc}, -+ {0x0000c2e4, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0x01ff0000, 0xffffe0f0, 0xffffe0f0}, -+ {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffef00, 0xffffef00}, -+ {0x00016044, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x054922d4, 0x054922d4}, -+ {0x00016048, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401}, -+ {0x00016444, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x054922d4, 0x054922d4}, -+ {0x00016448, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401}, -+ {0x00016844, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x056db2d4, 0x054922d4, 0x054922d4}, -+ {0x00016848, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401, 0x66482401}, -+}; -+ -+static const u32 ar955x_1p0_soc_postamble[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023}, -+}; -+ -+static const u32 ar955x_1p0_modes_fast_clock[][3] = { -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x00001030, 0x00000268, 0x000004d0}, -+ {0x00001070, 0x0000018c, 0x00000318}, -+ {0x000010b0, 0x00000fd0, 0x00001fa0}, -+ {0x00008014, 0x044c044c, 0x08980898}, -+ {0x0000801c, 0x148ec02b, 0x148ec057}, -+ {0x00008318, 0x000044c0, 0x00008980}, -+ {0x00009e00, 0x0372131c, 0x0372131c}, -+ {0x0000a230, 0x0000000b, 0x00000016}, -+ {0x0000a254, 0x00000898, 0x00001130}, -+}; -+ -+#endif /* INITVALS_955X_1P0_H */ diff --git a/package/mac80211/patches/578-ath9k-add-mode-register-initialization-code-for-AR95.patch b/package/mac80211/patches/578-ath9k-add-mode-register-initialization-code-for-AR95.patch deleted file mode 100644 index 8a0501271b..0000000000 --- a/package/mac80211/patches/578-ath9k-add-mode-register-initialization-code-for-AR95.patch +++ /dev/null @@ -1,224 +0,0 @@ -From 2b4e3da2e595e1c76f65f7da752ec1f037446bd2 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:10:16 +0200 -Subject: [PATCH 09/20] ath9k: add mode register initialization code for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ar9003_hw.c | 86 ++++++++++++++++++++++++++- - drivers/net/wireless/ath/ath9k/ar9003_phy.c | 61 +++++++++++++++++++- - drivers/net/wireless/ath/ath9k/hw.h | 1 + - 3 files changed, 145 insertions(+), 3 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c -@@ -328,7 +328,61 @@ static void ar9003_hw_init_mode_regs(str - - INIT_INI_ARRAY(&ah->ini_japan2484, AR9462_BBC_TXIFR_COEFFJ, - ARRAY_SIZE(AR9462_BBC_TXIFR_COEFFJ), 2); -+ } else if (AR_SREV_9550(ah)) { -+ /* mac */ -+ INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE], -+ ar955x_1p0_mac_core, -+ ARRAY_SIZE(ar955x_1p0_mac_core), 2); -+ INIT_INI_ARRAY(&ah->iniMac[ATH_INI_POST], -+ ar955x_1p0_mac_postamble, -+ ARRAY_SIZE(ar955x_1p0_mac_postamble), 5); -+ -+ /* bb */ -+ INIT_INI_ARRAY(&ah->iniBB[ATH_INI_PRE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniBB[ATH_INI_CORE], -+ ar955x_1p0_baseband_core, -+ ARRAY_SIZE(ar955x_1p0_baseband_core), 2); -+ INIT_INI_ARRAY(&ah->iniBB[ATH_INI_POST], -+ ar955x_1p0_baseband_postamble, -+ ARRAY_SIZE(ar955x_1p0_baseband_postamble), 5); -+ -+ /* radio */ -+ INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_PRE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_CORE], -+ ar955x_1p0_radio_core, -+ ARRAY_SIZE(ar955x_1p0_radio_core), 2); -+ INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_POST], -+ ar955x_1p0_radio_postamble, -+ ARRAY_SIZE(ar955x_1p0_radio_postamble), 5); -+ -+ /* soc */ -+ INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_PRE], -+ ar955x_1p0_soc_preamble, -+ ARRAY_SIZE(ar955x_1p0_soc_preamble), 2); -+ INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_CORE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_POST], -+ ar955x_1p0_soc_postamble, -+ ARRAY_SIZE(ar955x_1p0_soc_postamble), 5); - -+ /* rx/tx gain */ -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar955x_1p0_common_wo_xlna_rx_gain_table, -+ ARRAY_SIZE(ar955x_1p0_common_wo_xlna_rx_gain_table), -+ 2); -+ INIT_INI_ARRAY(&ah->ini_modes_rx_gain_bounds, -+ ar955x_1p0_common_wo_xlna_rx_gain_bounds, -+ ARRAY_SIZE(ar955x_1p0_common_wo_xlna_rx_gain_bounds), -+ 5); -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar955x_1p0_modes_xpa_tx_gain_table, -+ ARRAY_SIZE(ar955x_1p0_modes_xpa_tx_gain_table), -+ 9); -+ -+ /* Fast clock modal settings */ -+ INIT_INI_ARRAY(&ah->iniModesFastClock, -+ ar955x_1p0_modes_fast_clock, -+ ARRAY_SIZE(ar955x_1p0_modes_fast_clock), 3); - } else if (AR_SREV_9580(ah)) { - /* mac */ - INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0); -@@ -471,6 +525,11 @@ static void ar9003_tx_gain_table_mode0(s - ar9485_modes_lowest_ob_db_tx_gain_1_1, - ARRAY_SIZE(ar9485_modes_lowest_ob_db_tx_gain_1_1), - 5); -+ else if (AR_SREV_9550(ah)) -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar955x_1p0_modes_xpa_tx_gain_table, -+ ARRAY_SIZE(ar955x_1p0_modes_xpa_tx_gain_table), -+ 9); - else if (AR_SREV_9580(ah)) - INIT_INI_ARRAY(&ah->iniModesTxGain, - ar9580_1p0_lowest_ob_db_tx_gain_table, -@@ -515,6 +574,11 @@ static void ar9003_tx_gain_table_mode1(s - ar9580_1p0_high_ob_db_tx_gain_table, - ARRAY_SIZE(ar9580_1p0_high_ob_db_tx_gain_table), - 5); -+ else if (AR_SREV_9550(ah)) -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar955x_1p0_modes_no_xpa_tx_gain_table, -+ ARRAY_SIZE(ar955x_1p0_modes_no_xpa_tx_gain_table), -+ 9); - else if (AR_SREV_9462_20(ah)) - INIT_INI_ARRAY(&ah->iniModesTxGain, - ar9462_modes_high_ob_db_tx_gain_table_2p0, -@@ -636,7 +700,16 @@ static void ar9003_rx_gain_table_mode0(s - ar9485Common_wo_xlna_rx_gain_1_1, - ARRAY_SIZE(ar9485Common_wo_xlna_rx_gain_1_1), - 2); -- else if (AR_SREV_9580(ah)) -+ else if (AR_SREV_9550(ah)) { -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar955x_1p0_common_rx_gain_table, -+ ARRAY_SIZE(ar955x_1p0_common_rx_gain_table), -+ 2); -+ INIT_INI_ARRAY(&ah->ini_modes_rx_gain_bounds, -+ ar955x_1p0_common_rx_gain_bounds, -+ ARRAY_SIZE(ar955x_1p0_common_rx_gain_bounds), -+ 5); -+ } else if (AR_SREV_9580(ah)) - INIT_INI_ARRAY(&ah->iniModesRxGain, - ar9580_1p0_rx_gain_table, - ARRAY_SIZE(ar9580_1p0_rx_gain_table), -@@ -680,7 +753,16 @@ static void ar9003_rx_gain_table_mode1(s - ar9462_common_wo_xlna_rx_gain_table_2p0, - ARRAY_SIZE(ar9462_common_wo_xlna_rx_gain_table_2p0), - 2); -- else if (AR_SREV_9580(ah)) -+ else if (AR_SREV_9550(ah)) { -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar955x_1p0_common_wo_xlna_rx_gain_table, -+ ARRAY_SIZE(ar955x_1p0_common_wo_xlna_rx_gain_table), -+ 2); -+ INIT_INI_ARRAY(&ah->ini_modes_rx_gain_bounds, -+ ar955x_1p0_common_wo_xlna_rx_gain_bounds, -+ ARRAY_SIZE(ar955x_1p0_common_wo_xlna_rx_gain_bounds), -+ 5); -+ } else if (AR_SREV_9580(ah)) - INIT_INI_ARRAY(&ah->iniModesRxGain, - ar9580_1p0_wo_xlna_rx_gain_table, - ARRAY_SIZE(ar9580_1p0_wo_xlna_rx_gain_table), ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -620,6 +620,50 @@ static void ar9003_hw_prog_ini(struct at - } - } - -+static int ar9550_hw_get_modes_txgain_index(struct ath_hw *ah, -+ struct ath9k_channel *chan) -+{ -+ int ret; -+ -+ switch (chan->chanmode) { -+ case CHANNEL_A: -+ case CHANNEL_A_HT20: -+ if (chan->channel <= 5350) -+ ret = 1; -+ else if ((chan->channel > 5350) && (chan->channel <= 5600)) -+ ret = 3; -+ else -+ ret = 5; -+ break; -+ -+ case CHANNEL_A_HT40PLUS: -+ case CHANNEL_A_HT40MINUS: -+ if (chan->channel <= 5350) -+ ret = 2; -+ else if ((chan->channel > 5350) && (chan->channel <= 5600)) -+ ret = 4; -+ else -+ ret = 6; -+ break; -+ -+ case CHANNEL_G: -+ case CHANNEL_G_HT20: -+ case CHANNEL_B: -+ ret = 8; -+ break; -+ -+ case CHANNEL_G_HT40PLUS: -+ case CHANNEL_G_HT40MINUS: -+ ret = 7; -+ break; -+ -+ default: -+ ret = -EINVAL; -+ } -+ -+ return ret; -+} -+ - static int ar9003_hw_process_ini(struct ath_hw *ah, - struct ath9k_channel *chan) - { -@@ -661,7 +705,22 @@ static int ar9003_hw_process_ini(struct - } - - REG_WRITE_ARRAY(&ah->iniModesRxGain, 1, regWrites); -- REG_WRITE_ARRAY(&ah->iniModesTxGain, modesIndex, regWrites); -+ if (AR_SREV_9550(ah)) -+ REG_WRITE_ARRAY(&ah->ini_modes_rx_gain_bounds, modesIndex, -+ regWrites); -+ -+ if (AR_SREV_9550(ah)) { -+ int modes_txgain_index; -+ -+ modes_txgain_index = ar9550_hw_get_modes_txgain_index(ah, chan); -+ if (modes_txgain_index < 0) -+ return -EINVAL; -+ -+ REG_WRITE_ARRAY(&ah->iniModesTxGain, modes_txgain_index, -+ regWrites); -+ } else { -+ REG_WRITE_ARRAY(&ah->iniModesTxGain, modesIndex, regWrites); -+ } - - /* - * For 5GHz channels requiring Fast Clock, apply ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -820,6 +820,7 @@ struct ath_hw { - struct ar5416IniArray iniModesFastClock; - struct ar5416IniArray iniAdditional; - struct ar5416IniArray iniModesRxGain; -+ struct ar5416IniArray ini_modes_rx_gain_bounds; - struct ar5416IniArray iniModesTxGain; - struct ar5416IniArray iniCckfirNormal; - struct ar5416IniArray iniCckfirJapan2484; diff --git a/package/mac80211/patches/579-ath9k-read-spur-frequency-information-from-eeprom-fo.patch b/package/mac80211/patches/579-ath9k-read-spur-frequency-information-from-eeprom-fo.patch deleted file mode 100644 index fe2f8189d1..0000000000 --- a/package/mac80211/patches/579-ath9k-read-spur-frequency-information-from-eeprom-fo.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 987807e9e1a0ec0767635d0bd63003766fb527ad Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:16:06 +0200 -Subject: [PATCH 10/20] ath9k: read spur frequency information from eeprom for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ar9003_phy.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -180,7 +180,8 @@ static void ar9003_hw_spur_mitigate_mrc_ - * is out-of-band and can be ignored. - */ - -- if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah)) { -+ if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah) || -+ AR_SREV_9550(ah)) { - spur_fbin_ptr = ar9003_get_spur_chan_ptr(ah, - IS_CHAN_2GHZ(chan)); - if (spur_fbin_ptr[0] == 0) /* No spur */ -@@ -207,7 +208,8 @@ static void ar9003_hw_spur_mitigate_mrc_ - if (AR_SREV_9462(ah) && (i == 0 || i == 3)) - continue; - negative = 0; -- if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah)) -+ if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah) || -+ AR_SREV_9550(ah)) - cur_bb_spur = ath9k_hw_fbin2freq(spur_fbin_ptr[i], - IS_CHAN_2GHZ(chan)); - else diff --git a/package/mac80211/patches/580-ath9k-fix-XPABIASLEVEL-settings-for-AR9550.patch b/package/mac80211/patches/580-ath9k-fix-XPABIASLEVEL-settings-for-AR9550.patch deleted file mode 100644 index 5fc02f9fbe..0000000000 --- a/package/mac80211/patches/580-ath9k-fix-XPABIASLEVEL-settings-for-AR9550.patch +++ /dev/null @@ -1,36 +0,0 @@ -From a317eaa189d885e53400dc86c131390be17fd760 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:58 +0200 -Subject: [PATCH 11/20] ath9k: fix XPABIASLEVEL settings for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +- - drivers/net/wireless/ath/ath9k/ar9003_phy.h | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -@@ -3519,7 +3519,7 @@ static void ar9003_hw_xpa_bias_level_app - - 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 if (AR_SREV_9462(ah)) -+ else if (AR_SREV_9462(ah) || AR_SREV_9550(ah)) - REG_RMW_FIELD(ah, AR_CH0_TOP, AR_CH0_TOP_XPABIASLVL, bias); - else { - REG_RMW_FIELD(ah, AR_CH0_TOP, AR_CH0_TOP_XPABIASLVL, bias); ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h -@@ -636,8 +636,8 @@ - - #define AR_CH0_TOP (AR_SREV_9300(ah) ? 0x16288 : \ - ((AR_SREV_9462(ah) ? 0x1628c : 0x16280))) --#define AR_CH0_TOP_XPABIASLVL (0x300) --#define AR_CH0_TOP_XPABIASLVL_S (8) -+#define AR_CH0_TOP_XPABIASLVL (AR_SREV_9550(ah) ? 0x3c0 : 0x300) -+#define AR_CH0_TOP_XPABIASLVL_S (AR_SREV_9550(ah) ? 6 : 8) - - #define AR_CH0_THERM (AR_SREV_9300(ah) ? 0x16290 : \ - ((AR_SREV_9485(ah) ? 0x1628c : 0x16294))) diff --git a/package/mac80211/patches/581-ath9k-fix-antenna-control-configuration-for-AR9550.patch b/package/mac80211/patches/581-ath9k-fix-antenna-control-configuration-for-AR9550.patch deleted file mode 100644 index 324e3a0a9b..0000000000 --- a/package/mac80211/patches/581-ath9k-fix-antenna-control-configuration-for-AR9550.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 48032d5c88c936fc84a2d676474c5fe714d8ef94 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:58 +0200 -Subject: [PATCH 12/20] ath9k: fix antenna control configuration for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 3 +++ - drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 ++ - 2 files changed, 5 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -@@ -3601,6 +3601,9 @@ static void ar9003_hw_ant_ctrl_apply(str - if (AR_SREV_9462(ah)) { - REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM, - AR_SWITCH_TABLE_COM_AR9462_ALL, value); -+ } else if (AR_SREV_9550(ah)) { -+ REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM, -+ AR_SWITCH_TABLE_COM_AR9550_ALL, value); - } else - REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM, - AR_SWITCH_TABLE_COM_ALL, value); ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h -@@ -650,6 +650,8 @@ - #define AR_SWITCH_TABLE_COM_ALL_S (0) - #define AR_SWITCH_TABLE_COM_AR9462_ALL (0xffffff) - #define AR_SWITCH_TABLE_COM_AR9462_ALL_S (0) -+#define AR_SWITCH_TABLE_COM_AR9550_ALL (0xffffff) -+#define AR_SWITCH_TABLE_COM_AR9550_ALL_S (0) - #define AR_SWITCH_TABLE_COM_SPDT (0x00f00000) - #define AR_SWITCH_TABLE_COM_SPDT_ALL (0x0000fff0) - #define AR_SWITCH_TABLE_COM_SPDT_ALL_S (4) diff --git a/package/mac80211/patches/582-ath9k-fix-PAPRD-settings-for-AR9550.patch b/package/mac80211/patches/582-ath9k-fix-PAPRD-settings-for-AR9550.patch deleted file mode 100644 index 11188bcd63..0000000000 --- a/package/mac80211/patches/582-ath9k-fix-PAPRD-settings-for-AR9550.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 76ea066dcf42308aec8d20ef75170c1ecae82e60 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:58 +0200 -Subject: [PATCH 13/20] ath9k: fix PAPRD settings for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ar9003_paprd.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c -@@ -211,7 +211,7 @@ static int ar9003_paprd_setup_single_tab - AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_NUM_CORR_STAGES, 7); - REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, - AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_MIN_LOOPBACK_DEL, 1); -- if (AR_SREV_9485(ah) || AR_SREV_9462(ah)) -+ if (AR_SREV_9485(ah) || AR_SREV_9462(ah) || AR_SREV_9550(ah)) - REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, - AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_QUICK_DROP, - -3); diff --git a/package/mac80211/patches/583-ath9k-fix-RF-channel-frequency-configuration-for-AR9.patch b/package/mac80211/patches/583-ath9k-fix-RF-channel-frequency-configuration-for-AR9.patch deleted file mode 100644 index b191bfd22e..0000000000 --- a/package/mac80211/patches/583-ath9k-fix-RF-channel-frequency-configuration-for-AR9.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 5e08c36e3ef57712fee83248d0db3d2837e13f5f Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:58 +0200 -Subject: [PATCH 14/20] ath9k: fix RF channel frequency configuration for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ar9003_phy.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -99,7 +99,7 @@ static int ar9003_hw_set_channel(struct - channelSel = (freq * 4) / 120; - chan_frac = (((freq * 4) % 120) * 0x20000) / 120; - channelSel = (channelSel << 17) | chan_frac; -- } else if (AR_SREV_9340(ah)) { -+ } else if (AR_SREV_9340(ah) || AR_SREV_9550(ah)) { - if (ah->is_clk_25mhz) { - u32 chan_frac; - -@@ -113,7 +113,8 @@ static int ar9003_hw_set_channel(struct - /* Set to 2G mode */ - bMode = 1; - } else { -- if (AR_SREV_9340(ah) && ah->is_clk_25mhz) { -+ if ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) && -+ ah->is_clk_25mhz) { - u32 chan_frac; - - channelSel = (freq * 2) / 75; diff --git a/package/mac80211/patches/584-ath9k-disable-SYNC_HOST1_FATAL-interrupts-for-AR9550.patch b/package/mac80211/patches/584-ath9k-disable-SYNC_HOST1_FATAL-interrupts-for-AR9550.patch deleted file mode 100644 index 9846fcf38f..0000000000 --- a/package/mac80211/patches/584-ath9k-disable-SYNC_HOST1_FATAL-interrupts-for-AR9550.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 70a436c98a8479f15fe6ba7f894f88eede238dfa Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:58 +0200 -Subject: [PATCH 15/20] ath9k: disable SYNC_HOST1_FATAL interrupts for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.c | 2 +- - drivers/net/wireless/ath/ath9k/mac.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -939,7 +939,7 @@ static void ath9k_hw_init_interrupt_mask - AR_IMR_RXORN | - AR_IMR_BCNMISC; - -- if (AR_SREV_9340(ah)) -+ if (AR_SREV_9340(ah) || AR_SREV_9550(ah)) - sync_default &= ~AR_INTR_SYNC_HOST1_FATAL; - - if (AR_SREV_9300_20_OR_LATER(ah)) { ---- a/drivers/net/wireless/ath/ath9k/mac.c -+++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -810,7 +810,7 @@ void ath9k_hw_enable_interrupts(struct a - return; - } - -- if (AR_SREV_9340(ah)) -+ if (AR_SREV_9340(ah) || AR_SREV_9550(ah)) - sync_default &= ~AR_INTR_SYNC_HOST1_FATAL; - - async_mask = AR_INTR_MAC_IRQ; diff --git a/package/mac80211/patches/585-ath9k-skip-internal-regulator-configuration-for-AR95.patch b/package/mac80211/patches/585-ath9k-skip-internal-regulator-configuration-for-AR95.patch deleted file mode 100644 index 9e91f8d99d..0000000000 --- a/package/mac80211/patches/585-ath9k-skip-internal-regulator-configuration-for-AR95.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 9c598271929ea9a54f57e82af15260dc4afea590 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:58 +0200 -Subject: [PATCH 16/20] ath9k: skip internal regulator configuration for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -@@ -3970,7 +3970,7 @@ static void ath9k_hw_ar9300_set_board_va - ar9003_hw_drive_strength_apply(ah); - ar9003_hw_atten_apply(ah, chan); - ar9003_hw_quick_drop_apply(ah, chan->channel); -- if (!AR_SREV_9330(ah) && !AR_SREV_9340(ah)) -+ if (!AR_SREV_9330(ah) && !AR_SREV_9340(ah) && !AR_SREV_9550(ah)) - ar9003_hw_internal_regulator_apply(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/586-ath9k-fix-PLL-initialization-for-AR9550.patch b/package/mac80211/patches/586-ath9k-fix-PLL-initialization-for-AR9550.patch deleted file mode 100644 index 102363066c..0000000000 --- a/package/mac80211/patches/586-ath9k-fix-PLL-initialization-for-AR9550.patch +++ /dev/null @@ -1,75 +0,0 @@ -From d211df2956ae9d696bb0cab985426e0d236544b8 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:16:00 +0200 -Subject: [PATCH 17/20] ath9k: fix PLL initialization for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.c | 27 +++++++++++++++++++-------- - 1 files changed, 19 insertions(+), 8 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -861,7 +861,7 @@ static void ath9k_hw_init_pll(struct ath - /* 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)) { -+ } else if (AR_SREV_9340(ah) || AR_SREV_9550(ah)) { - u32 regval, pll2_divint, pll2_divfrac, refdiv; - - REG_WRITE(ah, AR_RTC_PLL_CONTROL, 0x1142c); -@@ -875,9 +875,15 @@ static void ath9k_hw_init_pll(struct ath - pll2_divfrac = 0x1eb85; - refdiv = 3; - } else { -- pll2_divint = 88; -- pll2_divfrac = 0; -- refdiv = 5; -+ if (AR_SREV_9340(ah)) { -+ pll2_divint = 88; -+ pll2_divfrac = 0; -+ refdiv = 5; -+ } else { -+ pll2_divint = 0x11; -+ pll2_divfrac = 0x26666; -+ refdiv = 1; -+ } - } - - regval = REG_READ(ah, AR_PHY_PLL_MODE); -@@ -890,8 +896,12 @@ static void ath9k_hw_init_pll(struct ath - udelay(100); - - regval = REG_READ(ah, AR_PHY_PLL_MODE); -- regval = (regval & 0x80071fff) | (0x1 << 30) | (0x1 << 13) | -- (0x4 << 26) | (0x18 << 19); -+ if (AR_SREV_9340(ah)) -+ regval = (regval & 0x80071fff) | (0x1 << 30) | -+ (0x1 << 13) | (0x4 << 26) | (0x18 << 19); -+ else -+ regval = (regval & 0x80071fff) | (0x3 << 30) | -+ (0x1 << 13) | (0x4 << 26) | (0x60 << 19); - REG_WRITE(ah, AR_PHY_PLL_MODE, regval); - REG_WRITE(ah, AR_PHY_PLL_MODE, - REG_READ(ah, AR_PHY_PLL_MODE) & 0xfffeffff); -@@ -902,7 +912,8 @@ 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) || AR_SREV_9330(ah)) -+ if (AR_SREV_9485(ah) || AR_SREV_9340(ah) || AR_SREV_9330(ah) || -+ AR_SREV_9550(ah)) - udelay(1000); - - /* Switch the core clock for ar9271 to 117Mhz */ -@@ -915,7 +926,7 @@ static void ath9k_hw_init_pll(struct ath - - REG_WRITE(ah, AR_RTC_SLEEP_CLK, AR_RTC_FORCE_DERIVED_CLK); - -- if (AR_SREV_9340(ah)) { -+ if (AR_SREV_9340(ah) || AR_SREV_9550(ah)) { - if (ah->is_clk_25mhz) { - REG_WRITE(ah, AR_RTC_DERIVED_CLK, 0x17c << 1); - REG_WRITE(ah, AR_SLP32_MODE, 0x0010f3d7); diff --git a/package/mac80211/patches/587-ath9k-enable-PLL-workaround-for-AR9550.patch b/package/mac80211/patches/587-ath9k-enable-PLL-workaround-for-AR9550.patch deleted file mode 100644 index af03ecd119..0000000000 --- a/package/mac80211/patches/587-ath9k-enable-PLL-workaround-for-AR9550.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 29fe3ae617d86bf1b39d15e43cee29b723118648 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:59 +0200 -Subject: [PATCH 18/20] ath9k: enable PLL workaround for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/main.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -167,7 +167,8 @@ static void ath_restart_work(struct ath_ - - ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0); - -- if (AR_SREV_9485(sc->sc_ah) || AR_SREV_9340(sc->sc_ah)) -+ if (AR_SREV_9340(sc->sc_ah) || AR_SREV_9485(sc->sc_ah) || -+ AR_SREV_9550(sc->sc_ah)) - ieee80211_queue_delayed_work(sc->hw, &sc->hw_pll_work, - msecs_to_jiffies(ATH_PLL_WORK_INTERVAL)); - diff --git a/package/mac80211/patches/588-ath9k-set-4ADDRESS-bit-in-RX-filter-for-AR9550.patch b/package/mac80211/patches/588-ath9k-set-4ADDRESS-bit-in-RX-filter-for-AR9550.patch deleted file mode 100644 index aba87db0a5..0000000000 --- a/package/mac80211/patches/588-ath9k-set-4ADDRESS-bit-in-RX-filter-for-AR9550.patch +++ /dev/null @@ -1,34 +0,0 @@ -From f8e7d8fcb297db362c9288ef5f1cd778e7ddd1a9 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:15:59 +0200 -Subject: [PATCH 19/20] ath9k: set 4ADDRESS bit in RX filter for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/mac.h | 1 + - drivers/net/wireless/ath/ath9k/recv.c | 3 +++ - 2 files changed, 4 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/mac.h -+++ b/drivers/net/wireless/ath/ath9k/mac.h -@@ -642,6 +642,7 @@ enum ath9k_rx_filter { - ATH9K_RX_FILTER_PHYRADAR = 0x00002000, - ATH9K_RX_FILTER_MCAST_BCAST_ALL = 0x00008000, - ATH9K_RX_FILTER_CONTROL_WRAPPER = 0x00080000, -+ ATH9K_RX_FILTER_4ADDRESS = 0x00100000, - }; - - #define ATH9K_RATESERIES_RTS_CTS 0x0001 ---- a/drivers/net/wireless/ath/ath9k/recv.c -+++ b/drivers/net/wireless/ath/ath9k/recv.c -@@ -430,6 +430,9 @@ u32 ath_calcrxfilter(struct ath_softc *s - rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL; - } - -+ if (AR_SREV_9550(sc->sc_ah)) -+ rfilt |= ATH9K_RX_FILTER_4ADDRESS; -+ - return rfilt; - - } diff --git a/package/mac80211/patches/589-ath9k-enable-support-for-AR9550.patch b/package/mac80211/patches/589-ath9k-enable-support-for-AR9550.patch deleted file mode 100644 index 5574941c88..0000000000 --- a/package/mac80211/patches/589-ath9k-enable-support-for-AR9550.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 23693513280521914ceb6d92c1bd7613e7b19c58 Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Mon, 2 Jul 2012 17:16:00 +0200 -Subject: [PATCH 20/20] ath9k: enable support for AR9550 - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> ---- - drivers/net/wireless/ath/ath9k/hw.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -658,6 +658,7 @@ static int __ath9k_hw_init(struct ath_hw - case AR_SREV_VERSION_9485: - case AR_SREV_VERSION_9340: - case AR_SREV_VERSION_9462: -+ case AR_SREV_VERSION_9550: - break; - default: - ath_err(common, -@@ -735,6 +736,7 @@ int ath9k_hw_init(struct ath_hw *ah) - case AR9300_DEVID_AR9485_PCIE: - case AR9300_DEVID_AR9330: - case AR9300_DEVID_AR9340: -+ case AR9300_DEVID_QCA955X: - case AR9300_DEVID_AR9580: - case AR9300_DEVID_AR9462: - break; diff --git a/package/mac80211/patches/600-rt2x00-disable-pci-code-if-CONFIG_PCI-not-defined.patch b/package/mac80211/patches/600-rt2x00-disable-pci-code-if-CONFIG_PCI-not-defined.patch index 22d7dca6f9..a7609ede47 100644 --- a/package/mac80211/patches/600-rt2x00-disable-pci-code-if-CONFIG_PCI-not-defined.patch +++ b/package/mac80211/patches/600-rt2x00-disable-pci-code-if-CONFIG_PCI-not-defined.patch @@ -8,7 +8,7 @@ /* * PCI driver handlers. */ -@@ -383,6 +384,7 @@ int rt2x00pci_resume(struct pci_dev *pci +@@ -392,6 +393,7 @@ int rt2x00pci_resume(struct pci_dev *pci } EXPORT_SYMBOL_GPL(rt2x00pci_resume); #endif /* CONFIG_PM */ diff --git a/package/mac80211/patches/601-rt2x00-set_pci_mwi.patch b/package/mac80211/patches/601-rt2x00-set_pci_mwi.patch index 6651a6f9db..9ff50b7bfe 100644 --- a/package/mac80211/patches/601-rt2x00-set_pci_mwi.patch +++ b/package/mac80211/patches/601-rt2x00-set_pci_mwi.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c -@@ -272,8 +272,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ +@@ -273,8 +273,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ pci_set_master(pci_dev); diff --git a/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch b/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch index abfd41b640..0c979ec9c1 100644 --- a/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch +++ b/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch @@ -101,7 +101,7 @@ +} --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h -@@ -559,6 +559,7 @@ struct rt2x00lib_ops { +@@ -560,6 +560,7 @@ struct rt2x00lib_ops { const u8 *data, const size_t len); int (*load_firmware) (struct rt2x00_dev *rt2x00dev, const u8 *data, const size_t len); @@ -109,7 +109,7 @@ /* * Device initialization/deinitialization handlers. -@@ -720,6 +721,7 @@ enum rt2x00_capability_flags { +@@ -721,6 +722,7 @@ enum rt2x00_capability_flags { REQUIRE_SW_SEQNO, REQUIRE_HT_TX_DESC, REQUIRE_PS_AUTOWAKE, @@ -117,7 +117,7 @@ /* * Capabilities -@@ -975,6 +977,11 @@ struct rt2x00_dev { +@@ -976,6 +978,11 @@ struct rt2x00_dev { const struct firmware *fw; /* @@ -164,7 +164,7 @@ select RT2X00_LIB_CRYPTO select CRC_CCITT select EEPROM_93CX6 -@@ -204,6 +205,9 @@ config RT2X00_LIB_FIRMWARE +@@ -212,6 +213,9 @@ config RT2X00_LIB_FIRMWARE config RT2X00_LIB_CRYPTO boolean @@ -208,7 +208,7 @@ #ifdef CONFIG_PCI static void rt2800pci_eepromregister_read(struct eeprom_93cx6 *eeprom) -@@ -311,6 +301,20 @@ static int rt2800pci_write_firmware(stru +@@ -317,6 +307,20 @@ static int rt2800pci_write_firmware(stru } /* @@ -229,7 +229,7 @@ * Initialization functions. */ static bool rt2800pci_get_entry_state(struct queue_entry *entry) -@@ -1082,6 +1086,7 @@ static const struct rt2x00lib_ops rt2800 +@@ -1159,6 +1163,7 @@ static const struct rt2x00lib_ops rt2800 .get_firmware_name = rt2800pci_get_firmware_name, .check_firmware = rt2800_check_firmware, .load_firmware = rt2800_load_firmware, diff --git a/package/mac80211/patches/604-rt2x00-add-CONFIG_RT2X00_LIB_EEPROM-option.patch b/package/mac80211/patches/604-rt2x00-add-CONFIG_RT2X00_LIB_EEPROM-option.patch index d310f33bc8..5331b2678d 100644 --- a/package/mac80211/patches/604-rt2x00-add-CONFIG_RT2X00_LIB_EEPROM-option.patch +++ b/package/mac80211/patches/604-rt2x00-add-CONFIG_RT2X00_LIB_EEPROM-option.patch @@ -1,6 +1,6 @@ --- a/config.mk +++ b/config.mk -@@ -619,6 +619,7 @@ export CONFIG_RT2X00=y +@@ -624,6 +624,7 @@ export CONFIG_RT2X00=y export CONFIG_RT2X00_LIB=m export CONFIG_RT2800_LIB=m export CONFIG_RT2X00_LIB_FIRMWARE=y diff --git a/package/mac80211/patches/605-rt2x00-pci-eeprom.patch b/package/mac80211/patches/605-rt2x00-pci-eeprom.patch index 4630ae57bf..c2b46fd966 100644 --- a/package/mac80211/patches/605-rt2x00-pci-eeprom.patch +++ b/package/mac80211/patches/605-rt2x00-pci-eeprom.patch @@ -9,7 +9,7 @@ { memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE); } -@@ -968,8 +968,9 @@ static int rt2800pci_validate_eeprom(str +@@ -974,8 +974,9 @@ static int rt2800pci_validate_eeprom(str /* * Read EEPROM into buffer */ @@ -30,8 +30,8 @@ + struct rt2x00_platform_data *pdata; struct rt2x00_dev *rt2x00dev; int retval; - -@@ -299,6 +300,12 @@ int rt2x00pci_probe(struct pci_dev *pci_ + u16 chip; +@@ -300,6 +301,12 @@ int rt2x00pci_probe(struct pci_dev *pci_ rt2x00dev->irq = pci_dev->irq; rt2x00dev->name = pci_name(pci_dev); diff --git a/package/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch b/package/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch index 3fc1b3f097..57abb07ab6 100644 --- a/package/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch +++ b/package/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch @@ -37,7 +37,7 @@ num_rates += 4; --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h -@@ -424,6 +424,7 @@ struct hw_mode_spec { +@@ -425,6 +425,7 @@ struct hw_mode_spec { unsigned int supported_bands; #define SUPPORT_BAND_2GHZ 0x00000001 #define SUPPORT_BAND_5GHZ 0x00000002 diff --git a/package/mac80211/patches/608-add_platform_data_mac_addr.patch b/package/mac80211/patches/608-add_platform_data_mac_addr.patch index 17ca7381cc..5008180f7d 100644 --- a/package/mac80211/patches/608-add_platform_data_mac_addr.patch +++ b/package/mac80211/patches/608-add_platform_data_mac_addr.patch @@ -31,7 +31,7 @@ { --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h -@@ -1279,6 +1279,7 @@ static inline void rt2x00debug_dump_fram +@@ -1280,6 +1280,7 @@ static inline void rt2x00debug_dump_fram */ u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif); 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 6fe763647c..776d44e799 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 -@@ -5296,6 +5296,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") +@@ -5297,6 +5297,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/830-b43-workaround-pcie-bcm4716.patch b/package/mac80211/patches/830-b43-workaround-pcie-bcm4716.patch index d3131d4076..98153f01b7 100644 --- a/package/mac80211/patches/830-b43-workaround-pcie-bcm4716.patch +++ b/package/mac80211/patches/830-b43-workaround-pcie-bcm4716.patch @@ -88,7 +88,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> dev->phy.writes_counter = 0; --- a/drivers/net/wireless/b43/phy_n.c +++ b/drivers/net/wireless/b43/phy_n.c -@@ -4837,14 +4837,14 @@ static inline void check_phyreg(struct b +@@ -4838,14 +4838,14 @@ static inline void check_phyreg(struct b static u16 b43_nphy_op_read(struct b43_wldev *dev, u16 reg) { check_phyreg(dev, reg); @@ -105,7 +105,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> b43_write16(dev, B43_MMIO_PHY_DATA, value); } -@@ -4852,7 +4852,7 @@ static void b43_nphy_op_maskset(struct b +@@ -4853,7 +4853,7 @@ static void b43_nphy_op_maskset(struct b u16 set) { check_phyreg(dev, reg); @@ -114,7 +114,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> b43_maskset16(dev, B43_MMIO_PHY_DATA, mask, set); } -@@ -4863,7 +4863,7 @@ static u16 b43_nphy_op_radio_read(struct +@@ -4864,7 +4864,7 @@ static u16 b43_nphy_op_radio_read(struct /* N-PHY needs 0x100 for read access */ reg |= 0x100; @@ -123,7 +123,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW); } -@@ -4872,7 +4872,7 @@ static void b43_nphy_op_radio_write(stru +@@ -4873,7 +4873,7 @@ static void b43_nphy_op_radio_write(stru /* Register 1 is a 32-bit register. */ B43_WARN_ON(reg == 1); diff --git a/package/mac80211/patches/846-brcmsmac-remove-some-unnessessacry-casts-and-void-po.patch b/package/mac80211/patches/846-brcmsmac-remove-some-unnessessacry-casts-and-void-po.patch index 24c3e2356f..dacc2d230d 100644 --- a/package/mac80211/patches/846-brcmsmac-remove-some-unnessessacry-casts-and-void-po.patch +++ b/package/mac80211/patches/846-brcmsmac-remove-some-unnessessacry-casts-and-void-po.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -4233,9 +4233,8 @@ static void brcms_c_radio_timer(void *ar +@@ -4220,9 +4220,8 @@ static void brcms_c_radio_timer(void *ar } /* common low-level watchdog code */ @@ -11,7 +11,7 @@ struct brcms_hardware *wlc_hw = wlc->hw; BCMMSG(wlc->wiphy, "wl%d\n", wlc_hw->unit); -@@ -4256,10 +4255,8 @@ static void brcms_b_watchdog(void *arg) +@@ -4243,10 +4242,8 @@ static void brcms_b_watchdog(void *arg) } /* common watchdog code */ @@ -23,7 +23,7 @@ BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit); if (!wlc->pub->up) -@@ -4299,7 +4296,9 @@ static void brcms_c_watchdog(void *arg) +@@ -4286,7 +4283,9 @@ static void brcms_c_watchdog(void *arg) static void brcms_c_watchdog_by_timer(void *arg) { diff --git a/package/mac80211/patches/847-brcmsmac-add-suome-conditions-for-the-bcm4716-again.patch b/package/mac80211/patches/847-brcmsmac-add-suome-conditions-for-the-bcm4716-again.patch index 40ccde90b5..9da7269110 100644 --- a/package/mac80211/patches/847-brcmsmac-add-suome-conditions-for-the-bcm4716-again.patch +++ b/package/mac80211/patches/847-brcmsmac-add-suome-conditions-for-the-bcm4716-again.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -1943,7 +1943,8 @@ static bool brcms_b_radio_read_hwdisable +@@ -1944,7 +1944,8 @@ static bool brcms_b_radio_read_hwdisable * accesses phyreg throughput mac. This can be skipped since * only mac reg is accessed below */ @@ -10,7 +10,7 @@ /* * TODO: test suspend/resume -@@ -2024,7 +2025,8 @@ void brcms_b_corereset(struct brcms_hard +@@ -2025,7 +2026,8 @@ void brcms_b_corereset(struct brcms_hard * phyreg throughput mac, AND phy_reset is skipped at early stage when * band->pi is invalid. need to enable PHY CLK */ diff --git a/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch b/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch index c5cf2fd67f..f6efb714bd 100644 --- a/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch +++ b/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -270,7 +270,7 @@ struct brcms_c_bit_desc { +@@ -271,7 +271,7 @@ struct brcms_c_bit_desc { */ /* Starting corerev for the fifo size table */ @@ -9,7 +9,7 @@ struct d11init { __le16 addr; -@@ -334,6 +334,26 @@ const u8 wlc_prio2prec_map[] = { +@@ -335,6 +335,26 @@ const u8 wlc_prio2prec_map[] = { }; static const u16 xmtfifo_sz[][NFIFO] = { @@ -36,7 +36,7 @@ /* corerev 20: 5120, 49152, 49152, 5376, 4352, 1280 */ {20, 192, 192, 21, 17, 5}, /* corerev 21: 2304, 14848, 5632, 3584, 3584, 1280 */ -@@ -344,6 +364,18 @@ static const u16 xmtfifo_sz[][NFIFO] = { +@@ -345,6 +365,18 @@ static const u16 xmtfifo_sz[][NFIFO] = { {20, 192, 192, 21, 17, 5}, /* corerev 24: 2304, 14848, 5632, 3584, 3584, 1280 */ {9, 58, 22, 14, 14, 5}, @@ -55,7 +55,7 @@ }; #ifdef DEBUG -@@ -4611,8 +4643,15 @@ static int brcms_b_attach(struct brcms_c +@@ -4598,8 +4630,15 @@ static int brcms_b_attach(struct brcms_c wlc_hw->machwcap_backup = wlc_hw->machwcap; /* init tx fifo size */ diff --git a/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch b/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch index 2d09dff1cf..e7bf689ade 100644 --- a/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch +++ b/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch @@ -10,7 +10,7 @@ BCMA_CORETABLE_END --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -751,7 +751,7 @@ static void brcms_c_ucode_bsinit(struct +@@ -752,7 +752,7 @@ static void brcms_c_ucode_bsinit(struct brcms_c_write_mhf(wlc_hw, wlc_hw->band->mhfs); /* do band-specific ucode IHR, SHM, and SCR inits */ @@ -19,7 +19,7 @@ if (BRCMS_ISNPHY(wlc_hw->band)) brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16); else -@@ -2276,7 +2276,7 @@ static void brcms_ucode_download(struct +@@ -2277,7 +2277,7 @@ static void brcms_ucode_download(struct if (wlc_hw->ucode_loaded) return; @@ -28,7 +28,7 @@ if (BRCMS_ISNPHY(wlc_hw->band)) { brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo, ucode->bcm43xx_16_mimosz); -@@ -3252,7 +3252,7 @@ static void brcms_b_coreinit(struct brcm +@@ -3239,7 +3239,7 @@ static void brcms_b_coreinit(struct brcm sflags = bcma_aread32(core, BCMA_IOST); diff --git a/package/mac80211/patches/850-brcmsmac-add-support-for-BCM43224.patch b/package/mac80211/patches/850-brcmsmac-add-support-for-BCM43224.patch index df53b00f49..161da8c6c5 100644 --- a/package/mac80211/patches/850-brcmsmac-add-support-for-BCM43224.patch +++ b/package/mac80211/patches/850-brcmsmac-add-support-for-BCM43224.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -4166,6 +4166,7 @@ void brcms_c_wme_setparams(struct brcms_ +@@ -4153,6 +4153,7 @@ void brcms_c_wme_setparams(struct brcms_ M_EDCF_QINFO + wme_ac2fifo[aci] * M_EDCF_QLEN + i, *shm_entry++); @@ -8,7 +8,7 @@ } if (suspend) { -@@ -4570,7 +4571,8 @@ static int brcms_b_attach(struct brcms_c +@@ -4557,7 +4558,8 @@ static int brcms_b_attach(struct brcms_c /* check device id(srom, nvram etc.) to set bands */ if (wlc_hw->deviceid == BCM43224_D11N_ID || @@ -18,7 +18,7 @@ /* Dualband boards */ wlc_hw->_nbands = 2; else -@@ -5831,7 +5833,7 @@ bool brcms_c_chipmatch(u16 vendor, u16 d +@@ -5816,7 +5818,7 @@ bool brcms_c_chipmatch(u16 vendor, u16 d return false; } diff --git a/package/mac80211/patches/851-brcmsmac-start-adding-support-for-core-rev-28.patch b/package/mac80211/patches/851-brcmsmac-start-adding-support-for-core-rev-28.patch index dd50eb2941..4cb089a254 100644 --- a/package/mac80211/patches/851-brcmsmac-start-adding-support-for-core-rev-28.patch +++ b/package/mac80211/patches/851-brcmsmac-start-adding-support-for-core-rev-28.patch @@ -10,7 +10,7 @@ MODULE_DEVICE_TABLE(bcma, brcms_coreid_table); --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -751,7 +751,7 @@ static void brcms_c_ucode_bsinit(struct +@@ -752,7 +752,7 @@ static void brcms_c_ucode_bsinit(struct brcms_c_write_mhf(wlc_hw, wlc_hw->band->mhfs); /* do band-specific ucode IHR, SHM, and SCR inits */ @@ -19,7 +19,7 @@ if (BRCMS_ISNPHY(wlc_hw->band)) brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16); else -@@ -2276,7 +2276,7 @@ static void brcms_ucode_download(struct +@@ -2277,7 +2277,7 @@ static void brcms_ucode_download(struct if (wlc_hw->ucode_loaded) return; @@ -28,7 +28,7 @@ if (BRCMS_ISNPHY(wlc_hw->band)) { brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo, ucode->bcm43xx_16_mimosz); -@@ -3252,7 +3252,7 @@ static void brcms_b_coreinit(struct brcm +@@ -3239,7 +3239,7 @@ static void brcms_b_coreinit(struct brcm sflags = bcma_aread32(core, BCMA_IOST); |