From cb8ef040093b9be51905eec713d6a76aec8160ab Mon Sep 17 00:00:00 2001 From: jow Date: Sat, 12 Jun 2010 13:00:55 +0000 Subject: [PATCH 01/90] [backfire] merge r21492, r21556 and r21762 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21763 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/uhttpd/Makefile | 2 +- package/uhttpd/src/uhttpd-tls.c | 14 ++++++++++++-- package/uhttpd/src/uhttpd.c | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/package/uhttpd/Makefile b/package/uhttpd/Makefile index 0dcc6a900..eb4238c90 100644 --- a/package/uhttpd/Makefile +++ b/package/uhttpd/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uhttpd -PKG_RELEASE:=9 +PKG_RELEASE:=11 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) diff --git a/package/uhttpd/src/uhttpd-tls.c b/package/uhttpd/src/uhttpd-tls.c index cb5061638..26143ddf7 100644 --- a/package/uhttpd/src/uhttpd-tls.c +++ b/package/uhttpd/src/uhttpd-tls.c @@ -35,12 +35,22 @@ SSL_CTX * uh_tls_ctx_init() int uh_tls_ctx_cert(SSL_CTX *c, const char *file) { - return SSL_CTX_use_certificate_file(c, file, SSL_FILETYPE_ASN1); + int rv; + + if( (rv = SSL_CTX_use_certificate_file(c, file, SSL_FILETYPE_PEM)) < 1 ) + rv = SSL_CTX_use_certificate_file(c, file, SSL_FILETYPE_ASN1); + + return rv; } int uh_tls_ctx_key(SSL_CTX *c, const char *file) { - return SSL_CTX_use_PrivateKey_file(c, file, SSL_FILETYPE_ASN1); + int rv; + + if( (rv = SSL_CTX_use_PrivateKey_file(c, file, SSL_FILETYPE_PEM)) < 1 ) + rv = SSL_CTX_use_PrivateKey_file(c, file, SSL_FILETYPE_ASN1); + + return rv; } void uh_tls_ctx_free(struct listener *l) diff --git a/package/uhttpd/src/uhttpd.c b/package/uhttpd/src/uhttpd.c index 152e0b452..2f77a32a9 100644 --- a/package/uhttpd/src/uhttpd.c +++ b/package/uhttpd/src/uhttpd.c @@ -550,6 +550,7 @@ int main (int argc, char **argv) &hints, (opt == 's'), &conf ); + memset(bind, 0, sizeof(bind)); break; #ifdef HAVE_TLS From 87adaa5f5680d44510bde89aad1f4a518d099279 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 13 Jun 2010 11:45:40 +0000 Subject: [PATCH 02/90] backfire: swconfig: release switch in error path of swconfig_get_attr (backport of r21799) Signed-off-by: Karl Beldan git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21781 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/files/drivers/net/phy/swconfig.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c index 21a6a7b88..e83e795b8 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c @@ -684,7 +684,7 @@ swconfig_get_attr(struct sk_buff *skb, struct genl_info *info) memset(&val, 0, sizeof(val)); attr = swconfig_lookup_attr(dev, info, &val); if (!attr || !attr->get) - goto error_dev; + goto error; if (attr->type == SWITCH_TYPE_PORTS) { val.value.ports = dev->portbuf; @@ -733,9 +733,8 @@ swconfig_get_attr(struct sk_buff *skb, struct genl_info *info) nla_put_failure: if (msg) nlmsg_free(msg); -error_dev: - swconfig_put_dev(dev); error: + swconfig_put_dev(dev); if (!err) err = -ENOMEM; return err; From 072e16042068f47f8555c63087926f730955f2cd Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 13 Jun 2010 11:45:45 +0000 Subject: [PATCH 03/90] backfire: swconfig: fix lock imbalance in unregister_switch() (backport of r21780) Signed-off-by: Karl Beldan git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21782 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/files/drivers/net/phy/swconfig.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c index e83e795b8..4ca4ea32f 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c @@ -882,6 +882,7 @@ unregister_switch(struct switch_dev *dev) swconfig_lock(); list_del(&dev->dev_list); swconfig_unlock(); + spin_unlock(&dev->lock); } EXPORT_SYMBOL_GPL(unregister_switch); From f210f1fdc96ea21be1b5d5f3e7cfcfc1dc7adc65 Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 14 Jun 2010 18:35:45 +0000 Subject: [PATCH 04/90] [backfire] backport the ssb dma device change from trunk git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21802 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches-2.6.30/942-ssb_add_dma_dev.patch | 29 +++++++++++ .../patches-2.6.32/976-ssb_add_dma_dev.patch | 52 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 target/linux/generic-2.6/patches-2.6.30/942-ssb_add_dma_dev.patch create mode 100644 target/linux/generic-2.6/patches-2.6.32/976-ssb_add_dma_dev.patch diff --git a/target/linux/generic-2.6/patches-2.6.30/942-ssb_add_dma_dev.patch b/target/linux/generic-2.6/patches-2.6.30/942-ssb_add_dma_dev.patch new file mode 100644 index 000000000..6b57e876c --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.30/942-ssb_add_dma_dev.patch @@ -0,0 +1,29 @@ +--- a/drivers/ssb/main.c ++++ b/drivers/ssb/main.c +@@ -465,6 +465,7 @@ static int ssb_devices_register(struct s + #ifdef CONFIG_SSB_PCIHOST + sdev->irq = bus->host_pci->irq; + dev->parent = &bus->host_pci->dev; ++ sdev->dma_dev = dev->parent; + #endif + break; + case SSB_BUSTYPE_PCMCIA: +@@ -475,6 +476,7 @@ static int ssb_devices_register(struct s + break; + case SSB_BUSTYPE_SSB: + dev->dma_mask = &dev->coherent_dma_mask; ++ sdev->dma_dev = dev; + break; + default: + break; +--- a/include/linux/ssb/ssb.h ++++ b/include/linux/ssb/ssb.h +@@ -167,7 +167,7 @@ struct ssb_device { + * is an optimization. */ + const struct ssb_bus_ops *ops; + +- struct device *dev; ++ struct device *dev, *dma_dev; + + struct ssb_bus *bus; + struct ssb_device_id id; diff --git a/target/linux/generic-2.6/patches-2.6.32/976-ssb_add_dma_dev.patch b/target/linux/generic-2.6/patches-2.6.32/976-ssb_add_dma_dev.patch new file mode 100644 index 000000000..fd463b4a7 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.32/976-ssb_add_dma_dev.patch @@ -0,0 +1,52 @@ +From: FUJITA Tomonori + +Add dma_dev, a pointer to struct device, to struct ssb_device. We pass it +to the generic DMA API with SSB_BUSTYPE_PCI and SSB_BUSTYPE_SSB. +ssb_devices_register() sets up it properly. + +This is preparation for replacing the ssb bus specific DMA API (ssb_dma_*) +with the generic DMA API. + +Signed-off-by: FUJITA Tomonori +Acked-by: Michael Buesch +Cc: Gary Zambrano +Cc: Stefano Brivio +Cc: Larry Finger +Cc: John W. Linville +Acked-by: David S. Miller +Signed-off-by: Andrew Morton +--- + + drivers/ssb/main.c | 2 ++ + include/linux/ssb/ssb.h | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/ssb/main.c ++++ b/drivers/ssb/main.c +@@ -486,6 +486,7 @@ static int ssb_devices_register(struct s + #ifdef CONFIG_SSB_PCIHOST + sdev->irq = bus->host_pci->irq; + dev->parent = &bus->host_pci->dev; ++ sdev->dma_dev = dev->parent; + #endif + break; + case SSB_BUSTYPE_PCMCIA: +@@ -501,6 +502,7 @@ static int ssb_devices_register(struct s + break; + case SSB_BUSTYPE_SSB: + dev->dma_mask = &dev->coherent_dma_mask; ++ sdev->dma_dev = dev; + break; + } + +--- a/include/linux/ssb/ssb.h ++++ b/include/linux/ssb/ssb.h +@@ -167,7 +167,7 @@ struct ssb_device { + * is an optimization. */ + const struct ssb_bus_ops *ops; + +- struct device *dev; ++ struct device *dev, *dma_dev; + + struct ssb_bus *bus; + struct ssb_device_id id; From e775c43c07696f6bd38d690c9b8f80a4909dda9c Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 14 Jun 2010 18:35:47 +0000 Subject: [PATCH 05/90] [backfire] backport mac80211 updates from trunk git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21803 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/Makefile | 11 +- .../mac80211/patches/001-disable_b44.patch | 2 +- .../mac80211/patches/002-disable_rfkill.patch | 2 +- .../patches/005-disable_ssb_build.patch | 4 +- .../patches/007-remove_misc_drivers.patch | 12 +- package/mac80211/patches/010-no_pcmcia.patch | 2 +- package/mac80211/patches/011-no_sdio.patch | 2 +- .../patches/013-disable_b43_nphy.patch | 2 +- .../patches/015-remove-rt2x00-options.patch | 8 +- .../patches/016-remove_pid_algo.patch | 11 + .../patches/170-dma_set_coherent_mask.patch | 28 + .../201-ath5k-WAR-for-AR71xx-PCI-bug.patch | 2 +- ...h9k-fix-invalid-mac-address-handling.patch | 2 +- ...ROM-only-if-no-platform-data-present.patch | 6 +- ...rride-mac-address-from-platform-data.patch | 2 +- .../408-ath9k_tweak_rx_intr_mitigation.patch | 2 +- ...-add-wndr3700-antenna-initialization.patch | 8 +- .../410-ath9k-wndr3700-led-pin-fix.patch | 2 +- ...rel.patch => 500-ath9k_use_minstrel.patch} | 2 +- .../mac80211/patches/500-pending_work.patch | 9874 ----------------- .../mac80211/patches/510-pending_work.patch | 1893 ++++ .../patches/520-ath0k_hw_mcast_search.patch | 36 - .../patches/520-ath9k_enable_ar9300.patch | 10 + .../521-ath9k_common-use_mcast_search.patch | 72 - .../522-ath9k_remove_duplicate_code.patch | 255 - ...e-pci-code-if-CONFIG_PCI-not-defined.patch | 4 +- 26 files changed, 1982 insertions(+), 10272 deletions(-) create mode 100644 package/mac80211/patches/016-remove_pid_algo.patch create mode 100644 package/mac80211/patches/170-dma_set_coherent_mask.patch rename package/mac80211/patches/{510-ath9k_use_minstrel.patch => 500-ath9k_use_minstrel.patch} (87%) delete mode 100644 package/mac80211/patches/500-pending_work.patch create mode 100644 package/mac80211/patches/510-pending_work.patch delete mode 100644 package/mac80211/patches/520-ath0k_hw_mcast_search.patch create mode 100644 package/mac80211/patches/520-ath9k_enable_ar9300.patch delete mode 100644 package/mac80211/patches/521-ath9k_common-use_mcast_search.patch delete mode 100644 package/mac80211/patches/522-ath9k_remove_duplicate_code.patch diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 2d130a632..5ba92e4ec 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=2010-05-24 +PKG_VERSION:=2010-06-10 PKG_RELEASE:=1 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources # http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \ # http://wireless.kernel.org/download/compat-wireless-2.6 -PKG_MD5SUM:=3d465dc6e0213964d0349f61c485817f +PKG_MD5SUM:=4074469689f7a5a0d2e038f2b5dad0bb PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) @@ -777,7 +777,7 @@ BUILDFLAGS:= \ $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_B43_LEDS -DCONFIG_B43LEGACY_LEDS -DCONFIG_AR9170_LEDS) \ -DCONFIG_B43_HWRNG -DCONFIG_B43LEGACY_HWRNG \ $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS -DCONFIG_ATH9K_DEBUGFS) \ - $(if $(CONFIG_PACKAGE_ATH_DEBUG),-DCONFIG_ATH_DEBUG) \ + $(if $(CONFIG_PACKAGE_ATH_DEBUG),-DCONFIG_ATH_DEBUG -DCONFIG_ATH9K_PKTLOG) \ -D__CONFIG_MAC80211_RC_DEFAULT=minstrel \ -DCONFIG_MAC80211_RC_MINSTREL_HT \ $(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD=1) \ @@ -800,7 +800,6 @@ MAKE_OPTS:= \ EXTRA_CFLAGS="$(BUILDFLAGS)" \ $(foreach opt,$(CONFOPTS),CONFIG_$(opt)=m) \ CONFIG_MAC80211=$(if $(CONFIG_PACKAGE_kmod-mac80211),m) \ - CONFIG_MAC80211_RC_PID=y \ CONFIG_MAC80211_RC_MINSTREL=y \ CONFIG_MAC80211_LEDS=$(CONFIG_LEDS_TRIGGERS) \ CONFIG_MAC80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \ @@ -815,6 +814,7 @@ MAKE_OPTS:= \ CONFIG_B43LEGACY=$(if $(CONFIG_PACKAGE_kmod-b43legacy),m) \ CONFIG_ATH_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath),m) \ CONFIG_ATH_DEBUG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \ + CONFIG_ATH9K_PKTLOG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \ CONFIG_ATH5K=$(if $(CONFIG_PACKAGE_kmod-ath5k),m) \ CONFIG_ATH9K=$(if $(CONFIG_PACKAGE_kmod-ath9k),m) \ CONFIG_ATH9K_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \ @@ -987,7 +987,8 @@ endef define Build/b43-common tar xjf "$(DL_DIR)/$(PKG_B43_FWCUTTER_SOURCE)" -C "$(PKG_BUILD_DIR)" $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_OBJECT)" \ - CFLAGS="-I$(STAGING_DIR_HOST)/include -include endian.h" + CFLAGS="-I$(STAGING_DIR_HOST)/include -include endian.h" \ + QUIET_SPARSE=: $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_OBJECT)/b43-fwcutter $(STAGING_DIR_HOST)/bin/ ifeq ($(CONFIG_B43_OPENFIRMWARE),y) $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/ diff --git a/package/mac80211/patches/001-disable_b44.patch b/package/mac80211/patches/001-disable_b44.patch index 1869a5915..3182261fd 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 -@@ -256,8 +256,8 @@ endif +@@ -257,8 +257,8 @@ endif CONFIG_P54_PCI=m diff --git a/package/mac80211/patches/002-disable_rfkill.patch b/package/mac80211/patches/002-disable_rfkill.patch index 0a11c6171..c8183baae 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") -@@ -483,8 +483,8 @@ endif +@@ -488,8 +488,8 @@ endif # We need the backported rfkill module on kernel < 2.6.31. # In more recent kernel versions use the in kernel rfkill module. ifdef CONFIG_COMPAT_KERNEL_31 diff --git a/package/mac80211/patches/005-disable_ssb_build.patch b/package/mac80211/patches/005-disable_ssb_build.patch index 69f29f640..4b01fa3bb 100644 --- a/package/mac80211/patches/005-disable_ssb_build.patch +++ b/package/mac80211/patches/005-disable_ssb_build.patch @@ -19,7 +19,7 @@ else include $(KLIB_BUILD)/.config endif -@@ -239,21 +238,6 @@ CONFIG_IPW2200_QOS=y +@@ -240,21 +239,6 @@ CONFIG_IPW2200_QOS=y # # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface @@ -41,7 +41,7 @@ CONFIG_P54_PCI=m # CONFIG_B44=m -@@ -413,7 +397,6 @@ endif # end of SPI driver list +@@ -418,7 +402,6 @@ endif # end of SPI driver list ifneq ($(CONFIG_MMC),) diff --git a/package/mac80211/patches/007-remove_misc_drivers.patch b/package/mac80211/patches/007-remove_misc_drivers.patch index afd7161a2..4087e7450 100644 --- a/package/mac80211/patches/007-remove_misc_drivers.patch +++ b/package/mac80211/patches/007-remove_misc_drivers.patch @@ -1,21 +1,25 @@ --- a/config.mk +++ b/config.mk -@@ -270,10 +270,10 @@ endif +@@ -271,13 +271,13 @@ endif CONFIG_MWL8K=m # Ethernet drivers go here -CONFIG_ATL1=m -CONFIG_ATL2=m -CONFIG_ATL1E=m --CONFIG_ATL1C=m +# CONFIG_ATL1=m +# CONFIG_ATL2=m +# CONFIG_ATL1E=m + ifdef CONFIG_COMPAT_KERNEL_27 +-CONFIG_ATL1C=n ++# CONFIG_ATL1C=n + else +-CONFIG_ATL1C=m +# CONFIG_ATL1C=m + endif CONFIG_HERMES=m - CONFIG_HERMES_CACHE_FW_ON_INIT=y -@@ -326,10 +326,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n +@@ -331,10 +331,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n CONFIG_USB_NET_COMPAT_CDCETHER=n else diff --git a/package/mac80211/patches/010-no_pcmcia.patch b/package/mac80211/patches/010-no_pcmcia.patch index 8d5e5e955..078b8039f 100644 --- a/package/mac80211/patches/010-no_pcmcia.patch +++ b/package/mac80211/patches/010-no_pcmcia.patch @@ -9,7 +9,7 @@ else include $(KLIB_BUILD)/.config endif -@@ -180,7 +180,7 @@ CONFIG_B43=m +@@ -181,7 +181,7 @@ CONFIG_B43=m CONFIG_B43_HWRNG=y CONFIG_B43_PCI_AUTOSELECT=y ifneq ($(CONFIG_PCMCIA),) diff --git a/package/mac80211/patches/011-no_sdio.patch b/package/mac80211/patches/011-no_sdio.patch index 82d8c1b08..d0916e459 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 -@@ -382,7 +382,7 @@ endif # end of SPI driver list +@@ -387,7 +387,7 @@ endif # end of SPI driver list ifneq ($(CONFIG_MMC),) diff --git a/package/mac80211/patches/013-disable_b43_nphy.patch b/package/mac80211/patches/013-disable_b43_nphy.patch index e75bb9bf5..efdfb149a 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 -@@ -184,7 +184,7 @@ ifneq ($(CONFIG_PCMCIA),) +@@ -185,7 +185,7 @@ ifneq ($(CONFIG_PCMCIA),) endif CONFIG_B43_LEDS=y 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 dd0bcdb8b..a9176ece5 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 -@@ -232,12 +232,12 @@ CONFIG_RTL8180=m +@@ -233,12 +233,12 @@ CONFIG_RTL8180=m CONFIG_ADM8211=m @@ -15,9 +15,9 @@ # CONFIG_RT2800PCI_RT30XX=y # CONFIG_RT2800PCI_RT35XX=y # CONFIG_RT2800PCI_SOC=y -@@ -339,7 +339,7 @@ CONFIG_RT2800USB=m - # CONFIG_RT2800USB_RT35XX=y - # CONFIG_RT2800USB_UNKNOWN=y +@@ -344,7 +344,7 @@ CONFIG_RT2800USB_RT30XX=y + CONFIG_RT2800USB_RT35XX=y + CONFIG_RT2800USB_UNKNOWN=y endif -CONFIG_RT2X00_LIB_USB=m +# CONFIG_RT2X00_LIB_USB=m diff --git a/package/mac80211/patches/016-remove_pid_algo.patch b/package/mac80211/patches/016-remove_pid_algo.patch new file mode 100644 index 000000000..33b19cc67 --- /dev/null +++ b/package/mac80211/patches/016-remove_pid_algo.patch @@ -0,0 +1,11 @@ +--- a/config.mk ++++ b/config.mk +@@ -112,7 +112,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y + # This is the one used by our compat-wireless net/mac80211/rate.c + # in case you have and old kernel which is overriding this to pid. + CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel +-CONFIG_MAC80211_RC_PID=y ++# CONFIG_MAC80211_RC_PID=y + CONFIG_MAC80211_RC_MINSTREL=y + CONFIG_MAC80211_RC_MINSTREL_HT=y + CONFIG_MAC80211_LEDS=y diff --git a/package/mac80211/patches/170-dma_set_coherent_mask.patch b/package/mac80211/patches/170-dma_set_coherent_mask.patch new file mode 100644 index 000000000..9bafbeb87 --- /dev/null +++ b/package/mac80211/patches/170-dma_set_coherent_mask.patch @@ -0,0 +1,28 @@ +From 3c02b107ec11e14ef21e7a444ad83f0ef1e68f79 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 13 Jun 2010 20:41:55 +0200 +Subject: [PATCH 1/2] compat: backport dma_set_coherent_mask + + +Signed-off-by: Hauke Mehrtens +--- + include/linux/compat-2.6.34.h | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +--- a/include/linux/compat-2.6.34.h ++++ b/include/linux/compat-2.6.34.h +@@ -216,6 +216,14 @@ do { \ + #define dma_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) + #endif + ++static inline int dma_set_coherent_mask(struct device *dev, u64 mask) ++{ ++ if (!dma_supported(dev, mask)) ++ return -EIO; ++ dev->coherent_dma_mask = mask; ++ return 0; ++} ++ + #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) */ + + #endif /* LINUX_26_34_COMPAT_H */ diff --git a/package/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch b/package/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch index b4538a676..38f56edf4 100644 --- a/package/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch +++ b/package/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath5k/reset.c +++ b/drivers/net/wireless/ath/ath5k/reset.c -@@ -1374,10 +1374,18 @@ int ath5k_hw_reset(struct ath5k_hw *ah, +@@ -1334,10 +1334,18 @@ int ath5k_hw_reset(struct ath5k_hw *ah, * guess we can tweak it and see how it goes ;-) */ if (ah->ah_version != AR5K_AR5210) { diff --git a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch index 946dda567..2c6a5670f 100644 --- a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch +++ b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch @@ -8,7 +8,7 @@ #include #include "hw.h" -@@ -456,8 +457,16 @@ static int ath9k_hw_init_macaddr(struct +@@ -450,8 +451,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/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch b/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch index 58728c554..72d3701dc 100644 --- a/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch +++ b/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch @@ -10,7 +10,7 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -565,6 +565,7 @@ static int ath9k_init_softc(u16 devid, s +@@ -556,6 +556,7 @@ static int ath9k_init_softc(u16 devid, s { struct ath_hw *ah = NULL; struct ath_common *common; @@ -18,7 +18,7 @@ int ret = 0, i; int csz = 0; -@@ -576,6 +577,10 @@ static int ath9k_init_softc(u16 devid, s +@@ -567,6 +568,10 @@ static int ath9k_init_softc(u16 devid, s ah->hw_version.subsysid = subsysid; sc->sc_ah = ah; @@ -31,7 +31,7 @@ common->bus_ops = bus_ops; --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -429,10 +429,6 @@ static void ath9k_hw_init_defaults(struc +@@ -423,10 +423,6 @@ static void ath9k_hw_init_defaults(struc ah->hw_version.magic = AR5416_MAGIC; ah->hw_version.subvendorid = 0; diff --git a/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch b/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch index 20a33bbdb..7a3e71735 100644 --- a/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch +++ b/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch @@ -11,7 +11,7 @@ #include "hw.h" #include "hw-ops.h" #include "rc.h" -@@ -441,18 +443,23 @@ static void ath9k_hw_init_defaults(struc +@@ -435,18 +437,23 @@ static void ath9k_hw_init_defaults(struc static int ath9k_hw_init_macaddr(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); diff --git a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch index 6396e25d3..180368a1f 100644 --- a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch +++ b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1400,7 +1400,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1398,7 +1398,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st if (ah->config.rx_intr_mitigation) { REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500); diff --git a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch index 57a5678f8..1cdd45e4e 100644 --- a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch +++ b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch @@ -8,7 +8,7 @@ #include "ath9k.h" static char *dev_info = "ath9k"; -@@ -580,6 +581,8 @@ static int ath9k_init_softc(u16 devid, s +@@ -571,6 +572,8 @@ static int ath9k_init_softc(u16 devid, s pdata = (struct ath9k_platform_data *) sc->dev->platform_data; if (!pdata) ah->ah_flags |= AH_USE_EEPROM; @@ -17,7 +17,7 @@ common = ath9k_hw_common(ah); common->ops = &ath9k_common_ops; -@@ -702,6 +705,24 @@ void ath9k_set_hw_capab(struct ath_softc +@@ -693,6 +696,24 @@ void ath9k_set_hw_capab(struct ath_softc SET_IEEE80211_PERM_ADDR(hw, common->macaddr); } @@ -42,7 +42,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid, const struct ath_bus_ops *bus_ops) { -@@ -720,6 +741,9 @@ int ath9k_init_device(u16 devid, struct +@@ -711,6 +732,9 @@ int ath9k_init_device(u16 devid, struct common = ath9k_hw_common(ah); ath9k_set_hw_capab(sc, hw); @@ -54,7 +54,7 @@ ath9k_reg_notifier); --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -517,6 +517,8 @@ struct ath_softc { +@@ -583,6 +583,8 @@ struct ath_softc { int beacon_interval; diff --git a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch index c0e1e7f2e..eb1d316b5 100644 --- a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch +++ b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch @@ -13,7 +13,7 @@ sc->sc_ah->led_pin = ATH_LED_PIN_DEF; --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -392,6 +392,7 @@ void ath9k_btcoex_timer_pause(struct ath +@@ -458,6 +458,7 @@ void ath9k_btcoex_timer_pause(struct ath #define ATH_LED_PIN_DEF 1 #define ATH_LED_PIN_9287 8 diff --git a/package/mac80211/patches/510-ath9k_use_minstrel.patch b/package/mac80211/patches/500-ath9k_use_minstrel.patch similarity index 87% rename from package/mac80211/patches/510-ath9k_use_minstrel.patch rename to package/mac80211/patches/500-ath9k_use_minstrel.patch index 4dd81ce1c..8669c8c04 100644 --- a/package/mac80211/patches/510-ath9k_use_minstrel.patch +++ b/package/mac80211/patches/500-ath9k_use_minstrel.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -689,7 +689,11 @@ void ath9k_set_hw_capab(struct ath_softc +@@ -677,7 +677,11 @@ void ath9k_set_hw_capab(struct ath_softc hw->sta_data_size = sizeof(struct ath_node); hw->vif_data_size = sizeof(struct ath_vif); diff --git a/package/mac80211/patches/500-pending_work.patch b/package/mac80211/patches/500-pending_work.patch deleted file mode 100644 index 16ba6f5cc..000000000 --- a/package/mac80211/patches/500-pending_work.patch +++ /dev/null @@ -1,9874 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/Kconfig -+++ b/drivers/net/wireless/ath/ath9k/Kconfig -@@ -32,6 +32,13 @@ config ATH9K_DEBUGFS - - Also required for changing debug message flags at run time. - -+config ATH9K_PKTLOG -+ bool "ath9k packet logging support" -+ depends on ATH9K_DEBUGFS -+ ---help--- -+ Say Y to dump frame information during tx/rx, rate information -+ and ani state. -+ - config ATH9K_HTC - tristate "Atheros HTC based wireless cards support" - depends on USB && MAC80211 -@@ -53,3 +60,4 @@ config ATH9K_HTC_DEBUGFS - depends on ATH9K_HTC && DEBUG_FS - ---help--- - Say Y, if you need access to ath9k_htc's statistics. -+ ---- a/drivers/net/wireless/ath/ath9k/Makefile -+++ b/drivers/net/wireless/ath/ath9k/Makefile -@@ -10,6 +10,7 @@ ath9k-y += beacon.o \ - ath9k-$(CONFIG_PCI) += pci.o - ath9k-$(CONFIG_ATHEROS_AR71XX) += ahb.o - ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o -+ath9k-$(CONFIG_ATH9K_PKTLOG) += pktlog.o - - obj-$(CONFIG_ATH9K) += ath9k.o - ---- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c -@@ -215,7 +215,8 @@ static void ar9002_hw_fill_txdesc(struct - } - - static int ar9002_hw_proc_txdesc(struct ath_hw *ah, void *ds, -- struct ath_tx_status *ts) -+ struct ath_tx_status *ts, -+ void *txs_desc) - { - struct ar5416_desc *ads = AR5416DESC(ds); - ---- /dev/null -+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p0_initvals.h -@@ -0,0 +1,1784 @@ -+/* -+ * Copyright (c) 2010 Atheros Communications Inc. -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#ifndef INITVALS_9003_2P0_H -+#define INITVALS_9003_2P0_H -+ -+/* AR9003 2.0 */ -+ -+static const u32 ar9300_2p0_radio_postamble[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0001609c, 0x0dd08f29, 0x0dd08f29, 0x0b283f31, 0x0b283f31}, -+ {0x000160ac, 0xa4653c00, 0xa4653c00, 0x24652800, 0x24652800}, -+ {0x000160b0, 0x03284f3e, 0x03284f3e, 0x05d08f20, 0x05d08f20}, -+ {0x0001610c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00016140, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -+ {0x0001650c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00016540, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -+ {0x0001690c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00016940, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -+}; -+ -+static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p0[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {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, 0x21020220, 0x21020220, 0x16000402, 0x16000402}, -+ {0x0000a51c, 0x27020223, 0x27020223, 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, 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}, -+ {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, 0x21820220, 0x21820220, 0x16800402, 0x16800402}, -+ {0x0000a59c, 0x27820223, 0x27820223, 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, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83}, -+ {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84}, -+ {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3}, -+ {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5}, -+ {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9}, -+ {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb}, -+ {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -+ {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+ {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016448, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -+ {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+ {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016848, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -+ {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+}; -+ -+static const u32 ar9300Modes_fast_clock_2p0[][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, 0x03721821, 0x03721821}, -+ {0x0000a230, 0x0000000b, 0x00000016}, -+ {0x0000a254, 0x00000898, 0x00001130}, -+}; -+ -+static const u32 ar9300_2p0_radio_core[][2] = { -+ /* Addr allmodes */ -+ {0x00016000, 0x36db6db6}, -+ {0x00016004, 0x6db6db40}, -+ {0x00016008, 0x73f00000}, -+ {0x0001600c, 0x00000000}, -+ {0x00016040, 0x7f80fff8}, -+ {0x0001604c, 0x76d005b5}, -+ {0x00016050, 0x556cf031}, -+ {0x00016054, 0x13449440}, -+ {0x00016058, 0x0c51c92c}, -+ {0x0001605c, 0x3db7fffc}, -+ {0x00016060, 0xfffffffc}, -+ {0x00016064, 0x000f0278}, -+ {0x0001606c, 0x6db60000}, -+ {0x00016080, 0x00000000}, -+ {0x00016084, 0x0e48048c}, -+ {0x00016088, 0x54214514}, -+ {0x0001608c, 0x119f481e}, -+ {0x00016090, 0x24926490}, -+ {0x00016098, 0xd2888888}, -+ {0x000160a0, 0x0a108ffe}, -+ {0x000160a4, 0x812fc370}, -+ {0x000160a8, 0x423c8000}, -+ {0x000160b4, 0x92480080}, -+ {0x000160c0, 0x00adb6d0}, -+ {0x000160c4, 0x6db6db60}, -+ {0x000160c8, 0x6db6db6c}, -+ {0x000160cc, 0x01e6c000}, -+ {0x00016100, 0x3fffbe01}, -+ {0x00016104, 0xfff80000}, -+ {0x00016108, 0x00080010}, -+ {0x00016144, 0x02084080}, -+ {0x00016148, 0x00000000}, -+ {0x00016280, 0x058a0001}, -+ {0x00016284, 0x3d840208}, -+ {0x00016288, 0x05a20408}, -+ {0x0001628c, 0x00038c07}, -+ {0x00016290, 0x40000004}, -+ {0x00016294, 0x458aa14f}, -+ {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}, -+ {0x00016400, 0x36db6db6}, -+ {0x00016404, 0x6db6db40}, -+ {0x00016408, 0x73f00000}, -+ {0x0001640c, 0x00000000}, -+ {0x00016440, 0x7f80fff8}, -+ {0x0001644c, 0x76d005b5}, -+ {0x00016450, 0x556cf031}, -+ {0x00016454, 0x13449440}, -+ {0x00016458, 0x0c51c92c}, -+ {0x0001645c, 0x3db7fffc}, -+ {0x00016460, 0xfffffffc}, -+ {0x00016464, 0x000f0278}, -+ {0x0001646c, 0x6db60000}, -+ {0x00016500, 0x3fffbe01}, -+ {0x00016504, 0xfff80000}, -+ {0x00016508, 0x00080010}, -+ {0x00016544, 0x02084080}, -+ {0x00016548, 0x00000000}, -+ {0x00016780, 0x00000000}, -+ {0x00016784, 0x00000000}, -+ {0x00016788, 0x00800700}, -+ {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, 0x556cf031}, -+ {0x00016854, 0x13449440}, -+ {0x00016858, 0x0c51c92c}, -+ {0x0001685c, 0x3db7fffc}, -+ {0x00016860, 0xfffffffc}, -+ {0x00016864, 0x000f0278}, -+ {0x0001686c, 0x6db60000}, -+ {0x00016900, 0x3fffbe01}, -+ {0x00016904, 0xfff80000}, -+ {0x00016908, 0x00080010}, -+ {0x00016944, 0x02084080}, -+ {0x00016948, 0x00000000}, -+ {0x00016b80, 0x00000000}, -+ {0x00016b84, 0x00000000}, -+ {0x00016b88, 0x00800700}, -+ {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 ar9300Common_rx_gain_table_merlin_2p0[][2] = { -+ /* Addr allmodes */ -+ {0x0000a000, 0x02000101}, -+ {0x0000a004, 0x02000102}, -+ {0x0000a008, 0x02000103}, -+ {0x0000a00c, 0x02000104}, -+ {0x0000a010, 0x02000200}, -+ {0x0000a014, 0x02000201}, -+ {0x0000a018, 0x02000202}, -+ {0x0000a01c, 0x02000203}, -+ {0x0000a020, 0x02000204}, -+ {0x0000a024, 0x02000205}, -+ {0x0000a028, 0x02000208}, -+ {0x0000a02c, 0x02000302}, -+ {0x0000a030, 0x02000303}, -+ {0x0000a034, 0x02000304}, -+ {0x0000a038, 0x02000400}, -+ {0x0000a03c, 0x02010300}, -+ {0x0000a040, 0x02010301}, -+ {0x0000a044, 0x02010302}, -+ {0x0000a048, 0x02000500}, -+ {0x0000a04c, 0x02010400}, -+ {0x0000a050, 0x02020300}, -+ {0x0000a054, 0x02020301}, -+ {0x0000a058, 0x02020302}, -+ {0x0000a05c, 0x02020303}, -+ {0x0000a060, 0x02020400}, -+ {0x0000a064, 0x02030300}, -+ {0x0000a068, 0x02030301}, -+ {0x0000a06c, 0x02030302}, -+ {0x0000a070, 0x02030303}, -+ {0x0000a074, 0x02030400}, -+ {0x0000a078, 0x02040300}, -+ {0x0000a07c, 0x02040301}, -+ {0x0000a080, 0x02040302}, -+ {0x0000a084, 0x02040303}, -+ {0x0000a088, 0x02030500}, -+ {0x0000a08c, 0x02040400}, -+ {0x0000a090, 0x02050203}, -+ {0x0000a094, 0x02050204}, -+ {0x0000a098, 0x02050205}, -+ {0x0000a09c, 0x02040500}, -+ {0x0000a0a0, 0x02050301}, -+ {0x0000a0a4, 0x02050302}, -+ {0x0000a0a8, 0x02050303}, -+ {0x0000a0ac, 0x02050400}, -+ {0x0000a0b0, 0x02050401}, -+ {0x0000a0b4, 0x02050402}, -+ {0x0000a0b8, 0x02050403}, -+ {0x0000a0bc, 0x02050500}, -+ {0x0000a0c0, 0x02050501}, -+ {0x0000a0c4, 0x02050502}, -+ {0x0000a0c8, 0x02050503}, -+ {0x0000a0cc, 0x02050504}, -+ {0x0000a0d0, 0x02050600}, -+ {0x0000a0d4, 0x02050601}, -+ {0x0000a0d8, 0x02050602}, -+ {0x0000a0dc, 0x02050603}, -+ {0x0000a0e0, 0x02050604}, -+ {0x0000a0e4, 0x02050700}, -+ {0x0000a0e8, 0x02050701}, -+ {0x0000a0ec, 0x02050702}, -+ {0x0000a0f0, 0x02050703}, -+ {0x0000a0f4, 0x02050704}, -+ {0x0000a0f8, 0x02050705}, -+ {0x0000a0fc, 0x02050708}, -+ {0x0000a100, 0x02050709}, -+ {0x0000a104, 0x0205070a}, -+ {0x0000a108, 0x0205070b}, -+ {0x0000a10c, 0x0205070c}, -+ {0x0000a110, 0x0205070d}, -+ {0x0000a114, 0x02050710}, -+ {0x0000a118, 0x02050711}, -+ {0x0000a11c, 0x02050712}, -+ {0x0000a120, 0x02050713}, -+ {0x0000a124, 0x02050714}, -+ {0x0000a128, 0x02050715}, -+ {0x0000a12c, 0x02050730}, -+ {0x0000a130, 0x02050731}, -+ {0x0000a134, 0x02050732}, -+ {0x0000a138, 0x02050733}, -+ {0x0000a13c, 0x02050734}, -+ {0x0000a140, 0x02050735}, -+ {0x0000a144, 0x02050750}, -+ {0x0000a148, 0x02050751}, -+ {0x0000a14c, 0x02050752}, -+ {0x0000a150, 0x02050753}, -+ {0x0000a154, 0x02050754}, -+ {0x0000a158, 0x02050755}, -+ {0x0000a15c, 0x02050770}, -+ {0x0000a160, 0x02050771}, -+ {0x0000a164, 0x02050772}, -+ {0x0000a168, 0x02050773}, -+ {0x0000a16c, 0x02050774}, -+ {0x0000a170, 0x02050775}, -+ {0x0000a174, 0x00000776}, -+ {0x0000a178, 0x00000776}, -+ {0x0000a17c, 0x00000776}, -+ {0x0000a180, 0x00000776}, -+ {0x0000a184, 0x00000776}, -+ {0x0000a188, 0x00000776}, -+ {0x0000a18c, 0x00000776}, -+ {0x0000a190, 0x00000776}, -+ {0x0000a194, 0x00000776}, -+ {0x0000a198, 0x00000776}, -+ {0x0000a19c, 0x00000776}, -+ {0x0000a1a0, 0x00000776}, -+ {0x0000a1a4, 0x00000776}, -+ {0x0000a1a8, 0x00000776}, -+ {0x0000a1ac, 0x00000776}, -+ {0x0000a1b0, 0x00000776}, -+ {0x0000a1b4, 0x00000776}, -+ {0x0000a1b8, 0x00000776}, -+ {0x0000a1bc, 0x00000776}, -+ {0x0000a1c0, 0x00000776}, -+ {0x0000a1c4, 0x00000776}, -+ {0x0000a1c8, 0x00000776}, -+ {0x0000a1cc, 0x00000776}, -+ {0x0000a1d0, 0x00000776}, -+ {0x0000a1d4, 0x00000776}, -+ {0x0000a1d8, 0x00000776}, -+ {0x0000a1dc, 0x00000776}, -+ {0x0000a1e0, 0x00000776}, -+ {0x0000a1e4, 0x00000776}, -+ {0x0000a1e8, 0x00000776}, -+ {0x0000a1ec, 0x00000776}, -+ {0x0000a1f0, 0x00000776}, -+ {0x0000a1f4, 0x00000776}, -+ {0x0000a1f8, 0x00000776}, -+ {0x0000a1fc, 0x00000776}, -+ {0x0000b000, 0x02000101}, -+ {0x0000b004, 0x02000102}, -+ {0x0000b008, 0x02000103}, -+ {0x0000b00c, 0x02000104}, -+ {0x0000b010, 0x02000200}, -+ {0x0000b014, 0x02000201}, -+ {0x0000b018, 0x02000202}, -+ {0x0000b01c, 0x02000203}, -+ {0x0000b020, 0x02000204}, -+ {0x0000b024, 0x02000205}, -+ {0x0000b028, 0x02000208}, -+ {0x0000b02c, 0x02000302}, -+ {0x0000b030, 0x02000303}, -+ {0x0000b034, 0x02000304}, -+ {0x0000b038, 0x02000400}, -+ {0x0000b03c, 0x02010300}, -+ {0x0000b040, 0x02010301}, -+ {0x0000b044, 0x02010302}, -+ {0x0000b048, 0x02000500}, -+ {0x0000b04c, 0x02010400}, -+ {0x0000b050, 0x02020300}, -+ {0x0000b054, 0x02020301}, -+ {0x0000b058, 0x02020302}, -+ {0x0000b05c, 0x02020303}, -+ {0x0000b060, 0x02020400}, -+ {0x0000b064, 0x02030300}, -+ {0x0000b068, 0x02030301}, -+ {0x0000b06c, 0x02030302}, -+ {0x0000b070, 0x02030303}, -+ {0x0000b074, 0x02030400}, -+ {0x0000b078, 0x02040300}, -+ {0x0000b07c, 0x02040301}, -+ {0x0000b080, 0x02040302}, -+ {0x0000b084, 0x02040303}, -+ {0x0000b088, 0x02030500}, -+ {0x0000b08c, 0x02040400}, -+ {0x0000b090, 0x02050203}, -+ {0x0000b094, 0x02050204}, -+ {0x0000b098, 0x02050205}, -+ {0x0000b09c, 0x02040500}, -+ {0x0000b0a0, 0x02050301}, -+ {0x0000b0a4, 0x02050302}, -+ {0x0000b0a8, 0x02050303}, -+ {0x0000b0ac, 0x02050400}, -+ {0x0000b0b0, 0x02050401}, -+ {0x0000b0b4, 0x02050402}, -+ {0x0000b0b8, 0x02050403}, -+ {0x0000b0bc, 0x02050500}, -+ {0x0000b0c0, 0x02050501}, -+ {0x0000b0c4, 0x02050502}, -+ {0x0000b0c8, 0x02050503}, -+ {0x0000b0cc, 0x02050504}, -+ {0x0000b0d0, 0x02050600}, -+ {0x0000b0d4, 0x02050601}, -+ {0x0000b0d8, 0x02050602}, -+ {0x0000b0dc, 0x02050603}, -+ {0x0000b0e0, 0x02050604}, -+ {0x0000b0e4, 0x02050700}, -+ {0x0000b0e8, 0x02050701}, -+ {0x0000b0ec, 0x02050702}, -+ {0x0000b0f0, 0x02050703}, -+ {0x0000b0f4, 0x02050704}, -+ {0x0000b0f8, 0x02050705}, -+ {0x0000b0fc, 0x02050708}, -+ {0x0000b100, 0x02050709}, -+ {0x0000b104, 0x0205070a}, -+ {0x0000b108, 0x0205070b}, -+ {0x0000b10c, 0x0205070c}, -+ {0x0000b110, 0x0205070d}, -+ {0x0000b114, 0x02050710}, -+ {0x0000b118, 0x02050711}, -+ {0x0000b11c, 0x02050712}, -+ {0x0000b120, 0x02050713}, -+ {0x0000b124, 0x02050714}, -+ {0x0000b128, 0x02050715}, -+ {0x0000b12c, 0x02050730}, -+ {0x0000b130, 0x02050731}, -+ {0x0000b134, 0x02050732}, -+ {0x0000b138, 0x02050733}, -+ {0x0000b13c, 0x02050734}, -+ {0x0000b140, 0x02050735}, -+ {0x0000b144, 0x02050750}, -+ {0x0000b148, 0x02050751}, -+ {0x0000b14c, 0x02050752}, -+ {0x0000b150, 0x02050753}, -+ {0x0000b154, 0x02050754}, -+ {0x0000b158, 0x02050755}, -+ {0x0000b15c, 0x02050770}, -+ {0x0000b160, 0x02050771}, -+ {0x0000b164, 0x02050772}, -+ {0x0000b168, 0x02050773}, -+ {0x0000b16c, 0x02050774}, -+ {0x0000b170, 0x02050775}, -+ {0x0000b174, 0x00000776}, -+ {0x0000b178, 0x00000776}, -+ {0x0000b17c, 0x00000776}, -+ {0x0000b180, 0x00000776}, -+ {0x0000b184, 0x00000776}, -+ {0x0000b188, 0x00000776}, -+ {0x0000b18c, 0x00000776}, -+ {0x0000b190, 0x00000776}, -+ {0x0000b194, 0x00000776}, -+ {0x0000b198, 0x00000776}, -+ {0x0000b19c, 0x00000776}, -+ {0x0000b1a0, 0x00000776}, -+ {0x0000b1a4, 0x00000776}, -+ {0x0000b1a8, 0x00000776}, -+ {0x0000b1ac, 0x00000776}, -+ {0x0000b1b0, 0x00000776}, -+ {0x0000b1b4, 0x00000776}, -+ {0x0000b1b8, 0x00000776}, -+ {0x0000b1bc, 0x00000776}, -+ {0x0000b1c0, 0x00000776}, -+ {0x0000b1c4, 0x00000776}, -+ {0x0000b1c8, 0x00000776}, -+ {0x0000b1cc, 0x00000776}, -+ {0x0000b1d0, 0x00000776}, -+ {0x0000b1d4, 0x00000776}, -+ {0x0000b1d8, 0x00000776}, -+ {0x0000b1dc, 0x00000776}, -+ {0x0000b1e0, 0x00000776}, -+ {0x0000b1e4, 0x00000776}, -+ {0x0000b1e8, 0x00000776}, -+ {0x0000b1ec, 0x00000776}, -+ {0x0000b1f0, 0x00000776}, -+ {0x0000b1f4, 0x00000776}, -+ {0x0000b1f8, 0x00000776}, -+ {0x0000b1fc, 0x00000776}, -+}; -+ -+static const u32 ar9300_2p0_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 ar9300_2p0_soc_postamble[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023}, -+}; -+ -+static const u32 ar9200_merlin_2p0_radio_core[][2] = { -+ /* Addr allmodes */ -+ {0x00007800, 0x00040000}, -+ {0x00007804, 0xdb005012}, -+ {0x00007808, 0x04924914}, -+ {0x0000780c, 0x21084210}, -+ {0x00007810, 0x6d801300}, -+ {0x00007814, 0x0019beff}, -+ {0x00007818, 0x07e41000}, -+ {0x0000781c, 0x00392000}, -+ {0x00007820, 0x92592480}, -+ {0x00007824, 0x00040000}, -+ {0x00007828, 0xdb005012}, -+ {0x0000782c, 0x04924914}, -+ {0x00007830, 0x21084210}, -+ {0x00007834, 0x6d801300}, -+ {0x00007838, 0x0019beff}, -+ {0x0000783c, 0x07e40000}, -+ {0x00007840, 0x00392000}, -+ {0x00007844, 0x92592480}, -+ {0x00007848, 0x00100000}, -+ {0x0000784c, 0x773f0567}, -+ {0x00007850, 0x54214514}, -+ {0x00007854, 0x12035828}, -+ {0x00007858, 0x92592692}, -+ {0x0000785c, 0x00000000}, -+ {0x00007860, 0x56400000}, -+ {0x00007864, 0x0a8e370e}, -+ {0x00007868, 0xc0102850}, -+ {0x0000786c, 0x812d4000}, -+ {0x00007870, 0x807ec400}, -+ {0x00007874, 0x001b6db0}, -+ {0x00007878, 0x00376b63}, -+ {0x0000787c, 0x06db6db6}, -+ {0x00007880, 0x006d8000}, -+ {0x00007884, 0xffeffffe}, -+ {0x00007888, 0xffeffffe}, -+ {0x0000788c, 0x00010000}, -+ {0x00007890, 0x02060aeb}, -+ {0x00007894, 0x5a108000}, -+}; -+ -+static const u32 ar9300_2p0_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, 0x00000044, 0x000000c4, 0x000000c4, 0x00000044}, -+ {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0}, -+ {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020}, -+ {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, -+ {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {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}, -+ {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27}, -+ {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, -+ {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, -+ {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0}, -+ {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004}, -+ {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b}, -+ {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, 0x0a021501, 0x0a021501, 0x3a021501, 0x3a021501}, -+ {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b}, -+ {0x0000a284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, -+ {0x0000a288, 0x00000110, 0x00000110, 0x00000110, 0x00000110}, -+ {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222}, -+ {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, -+ {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982}, -+ {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, -+ {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -+ {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -+ {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, -+ {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -+ {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -+ {0x0000c284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, -+}; -+ -+static const u32 ar9300_2p0_baseband_core[][2] = { -+ /* Addr allmodes */ -+ {0x00009800, 0xafe68e30}, -+ {0x00009804, 0xfd14e000}, -+ {0x00009808, 0x9c0a9f6b}, -+ {0x0000980c, 0x04900000}, -+ {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, 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}, -+ {0x00009e3c, 0xcf946222}, -+ {0x00009e40, 0x0d261820}, -+ {0x00009e4c, 0x00001004}, -+ {0x00009e50, 0x00ff03f1}, -+ {0x00009e54, 0x00000000}, -+ {0x00009fc0, 0x803e4788}, -+ {0x00009fc4, 0x0001efb5}, -+ {0x00009fcc, 0x40000014}, -+ {0x00009fd0, 0x01193b93}, -+ {0x0000a20c, 0x00000000}, -+ {0x0000a220, 0x00000000}, -+ {0x0000a224, 0x00000000}, -+ {0x0000a228, 0x10002310}, -+ {0x0000a22c, 0x01036a1e}, -+ {0x0000a234, 0x10000fff}, -+ {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, 0x00000246}, -+ {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, 0x04000080}, -+ {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}, -+ {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}, -+ {0x0000a8d0, 0x004b6a8e}, -+ {0x0000a8d4, 0x00000820}, -+ {0x0000a8dc, 0x00000000}, -+ {0x0000a8f0, 0x00000000}, -+ {0x0000a8f4, 0x00000000}, -+ {0x0000b2d0, 0x00000080}, -+ {0x0000b2d4, 0x00000000}, -+ {0x0000b2dc, 0x00000000}, -+ {0x0000b2e0, 0x00000000}, -+ {0x0000b2e4, 0x00000000}, -+ {0x0000b2e8, 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}, -+ {0x0000c2dc, 0x00000000}, -+ {0x0000c2e0, 0x00000000}, -+ {0x0000c2e4, 0x00000000}, -+ {0x0000c2e8, 0x00000000}, -+ {0x0000c2ec, 0x00000000}, -+ {0x0000c2f0, 0x00000000}, -+ {0x0000c2f4, 0x00000000}, -+ {0x0000c2f8, 0x00000000}, -+ {0x0000c408, 0x0e79e5c0}, -+ {0x0000c40c, 0x00820820}, -+ {0x0000c420, 0x00000000}, -+}; -+ -+static const u32 ar9300Modes_high_power_tx_gain_table_2p0[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -+ {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -+ {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002}, -+ {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, -+ {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, -+ {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, -+ {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, -+ {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, -+ {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, -+ {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, -+ {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, -+ {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, -+ {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, -+ {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20}, -+ {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22}, -+ {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24}, -+ {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640}, -+ {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660}, -+ {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861}, -+ {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81}, -+ {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -+ {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84}, -+ {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3}, -+ {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5}, -+ {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9}, -+ {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb}, -+ {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -+ {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002}, -+ {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, -+ {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, -+ {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, -+ {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, -+ {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, -+ {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, -+ {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, -+ {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, -+ {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, -+ {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, -+ {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20}, -+ {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22}, -+ {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24}, -+ {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640}, -+ {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660}, -+ {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861}, -+ {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81}, -+ {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83}, -+ {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84}, -+ {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3}, -+ {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5}, -+ {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9}, -+ {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb}, -+ {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+ {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+ {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+}; -+ -+static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p0[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -+ {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -+ {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002}, -+ {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, -+ {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, -+ {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, -+ {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, -+ {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, -+ {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, -+ {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, -+ {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, -+ {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, -+ {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, -+ {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20}, -+ {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22}, -+ {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24}, -+ {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640}, -+ {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660}, -+ {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861}, -+ {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81}, -+ {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -+ {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84}, -+ {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3}, -+ {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5}, -+ {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9}, -+ {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb}, -+ {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -+ {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002}, -+ {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, -+ {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, -+ {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, -+ {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, -+ {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, -+ {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, -+ {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, -+ {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, -+ {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, -+ {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, -+ {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20}, -+ {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22}, -+ {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24}, -+ {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640}, -+ {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660}, -+ {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861}, -+ {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81}, -+ {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83}, -+ {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84}, -+ {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3}, -+ {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5}, -+ {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9}, -+ {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb}, -+ {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {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}, -+}; -+ -+static const u32 ar9300Common_rx_gain_table_2p0[][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, 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 ar9300Modes_low_ob_db_tx_gain_table_2p0[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {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, 0x21020220, 0x21020220, 0x16000402, 0x16000402}, -+ {0x0000a51c, 0x27020223, 0x27020223, 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, 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}, -+ {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, 0x21820220, 0x21820220, 0x16800402, 0x16800402}, -+ {0x0000a59c, 0x27820223, 0x27820223, 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, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83}, -+ {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84}, -+ {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3}, -+ {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5}, -+ {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9}, -+ {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb}, -+ {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -+ {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016048, 0x64000001, 0x64000001, 0x64000001, 0x64000001}, -+ {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+ {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016448, 0x64000001, 0x64000001, 0x64000001, 0x64000001}, -+ {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+ {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016848, 0x64000001, 0x64000001, 0x64000001, 0x64000001}, -+ {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+}; -+ -+static const u32 ar9300_2p0_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}, -+ {0x00008244, 0x0010f424}, -+ {0x00008248, 0x00000800}, -+ {0x0000824c, 0x0001e848}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x40000000}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x98a00010}, -+ {0x00008268, 0xffffffff}, -+ {0x0000826c, 0x0000ffff}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000004}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x000000ff}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000140}, -+ {0x00008314, 0x00000000}, -+ {0x0000831c, 0x0000010d}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000700}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x02400000}, -+ {0x00008340, 0x000107ff}, -+ {0x00008344, 0xaa48105b}, -+ {0x00008348, 0x008f0000}, -+ {0x0000835c, 0x00000000}, -+ {0x00008360, 0xffffffff}, -+ {0x00008364, 0xffffffff}, -+ {0x00008368, 0x00000000}, -+ {0x00008370, 0x00000000}, -+ {0x00008374, 0x000000ff}, -+ {0x00008378, 0x00000000}, -+ {0x0000837c, 0x00000000}, -+ {0x00008380, 0xffffffff}, -+ {0x00008384, 0xffffffff}, -+ {0x00008390, 0xffffffff}, -+ {0x00008394, 0xffffffff}, -+ {0x00008398, 0x00000000}, -+ {0x0000839c, 0x00000000}, -+ {0x000083a0, 0x00000000}, -+ {0x000083a4, 0x0000fa14}, -+ {0x000083a8, 0x000f0c00}, -+ {0x000083ac, 0x33332210}, -+ {0x000083b0, 0x33332210}, -+ {0x000083b4, 0x33332210}, -+ {0x000083b8, 0x33332210}, -+ {0x000083bc, 0x00000000}, -+ {0x000083c0, 0x00000000}, -+ {0x000083c4, 0x00000000}, -+ {0x000083c8, 0x00000000}, -+ {0x000083cc, 0x00000200}, -+ {0x000083d0, 0x000301ff}, -+}; -+ -+static const u32 ar9300Common_wo_xlna_rx_gain_table_2p0[][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 ar9300_2p0_soc_preamble[][2] = { -+ /* Addr allmodes */ -+ {0x000040a4, 0x00a0c1c9}, -+ {0x00007008, 0x00000000}, -+ {0x00007020, 0x00000000}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+}; -+ -+static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p0[][2] = { -+ /* Addr allmodes */ -+ {0x00004040, 0x08212e5e}, -+ {0x00004040, 0x0008003b}, -+ {0x00004044, 0x00000000}, -+}; -+ -+static const u32 ar9300PciePhy_clkreq_enable_L1_2p0[][2] = { -+ /* Addr allmodes */ -+ {0x00004040, 0x08253e5e}, -+ {0x00004040, 0x0008003b}, -+ {0x00004044, 0x00000000}, -+}; -+ -+static const u32 ar9300PciePhy_clkreq_disable_L1_2p0[][2] = { -+ /* Addr allmodes */ -+ {0x00004040, 0x08213e5e}, -+ {0x00004040, 0x0008003b}, -+ {0x00004044, 0x00000000}, -+}; -+ -+#endif /* INITVALS_9003_2P0_H */ ---- /dev/null -+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h -@@ -0,0 +1,1785 @@ -+/* -+ * Copyright (c) 2010 Atheros Communications Inc. -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#ifndef INITVALS_9003_2P2_H -+#define INITVALS_9003_2P2_H -+ -+/* AR9003 2.2 */ -+ -+static const u32 ar9300_2p2_radio_postamble[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0001609c, 0x0dd08f29, 0x0dd08f29, 0x0b283f31, 0x0b283f31}, -+ {0x000160ac, 0xa4653c00, 0xa4653c00, 0x24652800, 0x24652800}, -+ {0x000160b0, 0x03284f3e, 0x03284f3e, 0x05d08f20, 0x05d08f20}, -+ {0x0001610c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00016140, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -+ {0x0001650c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00016540, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -+ {0x0001690c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00016940, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -+}; -+ -+static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p2[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {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}, -+ {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -+ {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+ {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016448, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -+ {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+ {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -+ {0x00016848, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -+ {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+}; -+ -+static const u32 ar9300Modes_fast_clock_2p2[][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, 0x03721821, 0x03721821}, -+ {0x0000a230, 0x0000000b, 0x00000016}, -+ {0x0000a254, 0x00000898, 0x00001130}, -+}; -+ -+static const u32 ar9300_2p2_radio_core[][2] = { -+ /* Addr allmodes */ -+ {0x00016000, 0x36db6db6}, -+ {0x00016004, 0x6db6db40}, -+ {0x00016008, 0x73f00000}, -+ {0x0001600c, 0x00000000}, -+ {0x00016040, 0x7f80fff8}, -+ {0x0001604c, 0x76d005b5}, -+ {0x00016050, 0x556cf031}, -+ {0x00016054, 0x13449440}, -+ {0x00016058, 0x0c51c92c}, -+ {0x0001605c, 0x3db7fffc}, -+ {0x00016060, 0xfffffffc}, -+ {0x00016064, 0x000f0278}, -+ {0x0001606c, 0x6db60000}, -+ {0x00016080, 0x00000000}, -+ {0x00016084, 0x0e48048c}, -+ {0x00016088, 0x54214514}, -+ {0x0001608c, 0x119f481e}, -+ {0x00016090, 0x24926490}, -+ {0x00016098, 0xd2888888}, -+ {0x000160a0, 0x0a108ffe}, -+ {0x000160a4, 0x812fc370}, -+ {0x000160a8, 0x423c8000}, -+ {0x000160b4, 0x92480080}, -+ {0x000160c0, 0x00adb6d0}, -+ {0x000160c4, 0x6db6db60}, -+ {0x000160c8, 0x6db6db6c}, -+ {0x000160cc, 0x01e6c000}, -+ {0x00016100, 0x3fffbe01}, -+ {0x00016104, 0xfff80000}, -+ {0x00016108, 0x00080010}, -+ {0x00016144, 0x02084080}, -+ {0x00016148, 0x00000000}, -+ {0x00016280, 0x058a0001}, -+ {0x00016284, 0x3d840208}, -+ {0x00016288, 0x05a20408}, -+ {0x0001628c, 0x00038c07}, -+ {0x00016290, 0x00000004}, -+ {0x00016294, 0x458aa14f}, -+ {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}, -+ {0x00016400, 0x36db6db6}, -+ {0x00016404, 0x6db6db40}, -+ {0x00016408, 0x73f00000}, -+ {0x0001640c, 0x00000000}, -+ {0x00016440, 0x7f80fff8}, -+ {0x0001644c, 0x76d005b5}, -+ {0x00016450, 0x556cf031}, -+ {0x00016454, 0x13449440}, -+ {0x00016458, 0x0c51c92c}, -+ {0x0001645c, 0x3db7fffc}, -+ {0x00016460, 0xfffffffc}, -+ {0x00016464, 0x000f0278}, -+ {0x0001646c, 0x6db60000}, -+ {0x00016500, 0x3fffbe01}, -+ {0x00016504, 0xfff80000}, -+ {0x00016508, 0x00080010}, -+ {0x00016544, 0x02084080}, -+ {0x00016548, 0x00000000}, -+ {0x00016780, 0x00000000}, -+ {0x00016784, 0x00000000}, -+ {0x00016788, 0x00800700}, -+ {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, 0x556cf031}, -+ {0x00016854, 0x13449440}, -+ {0x00016858, 0x0c51c92c}, -+ {0x0001685c, 0x3db7fffc}, -+ {0x00016860, 0xfffffffc}, -+ {0x00016864, 0x000f0278}, -+ {0x0001686c, 0x6db60000}, -+ {0x00016900, 0x3fffbe01}, -+ {0x00016904, 0xfff80000}, -+ {0x00016908, 0x00080010}, -+ {0x00016944, 0x02084080}, -+ {0x00016948, 0x00000000}, -+ {0x00016b80, 0x00000000}, -+ {0x00016b84, 0x00000000}, -+ {0x00016b88, 0x00800700}, -+ {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 ar9300Common_rx_gain_table_merlin_2p2[][2] = { -+ /* Addr allmodes */ -+ {0x0000a000, 0x02000101}, -+ {0x0000a004, 0x02000102}, -+ {0x0000a008, 0x02000103}, -+ {0x0000a00c, 0x02000104}, -+ {0x0000a010, 0x02000200}, -+ {0x0000a014, 0x02000201}, -+ {0x0000a018, 0x02000202}, -+ {0x0000a01c, 0x02000203}, -+ {0x0000a020, 0x02000204}, -+ {0x0000a024, 0x02000205}, -+ {0x0000a028, 0x02000208}, -+ {0x0000a02c, 0x02000302}, -+ {0x0000a030, 0x02000303}, -+ {0x0000a034, 0x02000304}, -+ {0x0000a038, 0x02000400}, -+ {0x0000a03c, 0x02010300}, -+ {0x0000a040, 0x02010301}, -+ {0x0000a044, 0x02010302}, -+ {0x0000a048, 0x02000500}, -+ {0x0000a04c, 0x02010400}, -+ {0x0000a050, 0x02020300}, -+ {0x0000a054, 0x02020301}, -+ {0x0000a058, 0x02020302}, -+ {0x0000a05c, 0x02020303}, -+ {0x0000a060, 0x02020400}, -+ {0x0000a064, 0x02030300}, -+ {0x0000a068, 0x02030301}, -+ {0x0000a06c, 0x02030302}, -+ {0x0000a070, 0x02030303}, -+ {0x0000a074, 0x02030400}, -+ {0x0000a078, 0x02040300}, -+ {0x0000a07c, 0x02040301}, -+ {0x0000a080, 0x02040302}, -+ {0x0000a084, 0x02040303}, -+ {0x0000a088, 0x02030500}, -+ {0x0000a08c, 0x02040400}, -+ {0x0000a090, 0x02050203}, -+ {0x0000a094, 0x02050204}, -+ {0x0000a098, 0x02050205}, -+ {0x0000a09c, 0x02040500}, -+ {0x0000a0a0, 0x02050301}, -+ {0x0000a0a4, 0x02050302}, -+ {0x0000a0a8, 0x02050303}, -+ {0x0000a0ac, 0x02050400}, -+ {0x0000a0b0, 0x02050401}, -+ {0x0000a0b4, 0x02050402}, -+ {0x0000a0b8, 0x02050403}, -+ {0x0000a0bc, 0x02050500}, -+ {0x0000a0c0, 0x02050501}, -+ {0x0000a0c4, 0x02050502}, -+ {0x0000a0c8, 0x02050503}, -+ {0x0000a0cc, 0x02050504}, -+ {0x0000a0d0, 0x02050600}, -+ {0x0000a0d4, 0x02050601}, -+ {0x0000a0d8, 0x02050602}, -+ {0x0000a0dc, 0x02050603}, -+ {0x0000a0e0, 0x02050604}, -+ {0x0000a0e4, 0x02050700}, -+ {0x0000a0e8, 0x02050701}, -+ {0x0000a0ec, 0x02050702}, -+ {0x0000a0f0, 0x02050703}, -+ {0x0000a0f4, 0x02050704}, -+ {0x0000a0f8, 0x02050705}, -+ {0x0000a0fc, 0x02050708}, -+ {0x0000a100, 0x02050709}, -+ {0x0000a104, 0x0205070a}, -+ {0x0000a108, 0x0205070b}, -+ {0x0000a10c, 0x0205070c}, -+ {0x0000a110, 0x0205070d}, -+ {0x0000a114, 0x02050710}, -+ {0x0000a118, 0x02050711}, -+ {0x0000a11c, 0x02050712}, -+ {0x0000a120, 0x02050713}, -+ {0x0000a124, 0x02050714}, -+ {0x0000a128, 0x02050715}, -+ {0x0000a12c, 0x02050730}, -+ {0x0000a130, 0x02050731}, -+ {0x0000a134, 0x02050732}, -+ {0x0000a138, 0x02050733}, -+ {0x0000a13c, 0x02050734}, -+ {0x0000a140, 0x02050735}, -+ {0x0000a144, 0x02050750}, -+ {0x0000a148, 0x02050751}, -+ {0x0000a14c, 0x02050752}, -+ {0x0000a150, 0x02050753}, -+ {0x0000a154, 0x02050754}, -+ {0x0000a158, 0x02050755}, -+ {0x0000a15c, 0x02050770}, -+ {0x0000a160, 0x02050771}, -+ {0x0000a164, 0x02050772}, -+ {0x0000a168, 0x02050773}, -+ {0x0000a16c, 0x02050774}, -+ {0x0000a170, 0x02050775}, -+ {0x0000a174, 0x00000776}, -+ {0x0000a178, 0x00000776}, -+ {0x0000a17c, 0x00000776}, -+ {0x0000a180, 0x00000776}, -+ {0x0000a184, 0x00000776}, -+ {0x0000a188, 0x00000776}, -+ {0x0000a18c, 0x00000776}, -+ {0x0000a190, 0x00000776}, -+ {0x0000a194, 0x00000776}, -+ {0x0000a198, 0x00000776}, -+ {0x0000a19c, 0x00000776}, -+ {0x0000a1a0, 0x00000776}, -+ {0x0000a1a4, 0x00000776}, -+ {0x0000a1a8, 0x00000776}, -+ {0x0000a1ac, 0x00000776}, -+ {0x0000a1b0, 0x00000776}, -+ {0x0000a1b4, 0x00000776}, -+ {0x0000a1b8, 0x00000776}, -+ {0x0000a1bc, 0x00000776}, -+ {0x0000a1c0, 0x00000776}, -+ {0x0000a1c4, 0x00000776}, -+ {0x0000a1c8, 0x00000776}, -+ {0x0000a1cc, 0x00000776}, -+ {0x0000a1d0, 0x00000776}, -+ {0x0000a1d4, 0x00000776}, -+ {0x0000a1d8, 0x00000776}, -+ {0x0000a1dc, 0x00000776}, -+ {0x0000a1e0, 0x00000776}, -+ {0x0000a1e4, 0x00000776}, -+ {0x0000a1e8, 0x00000776}, -+ {0x0000a1ec, 0x00000776}, -+ {0x0000a1f0, 0x00000776}, -+ {0x0000a1f4, 0x00000776}, -+ {0x0000a1f8, 0x00000776}, -+ {0x0000a1fc, 0x00000776}, -+ {0x0000b000, 0x02000101}, -+ {0x0000b004, 0x02000102}, -+ {0x0000b008, 0x02000103}, -+ {0x0000b00c, 0x02000104}, -+ {0x0000b010, 0x02000200}, -+ {0x0000b014, 0x02000201}, -+ {0x0000b018, 0x02000202}, -+ {0x0000b01c, 0x02000203}, -+ {0x0000b020, 0x02000204}, -+ {0x0000b024, 0x02000205}, -+ {0x0000b028, 0x02000208}, -+ {0x0000b02c, 0x02000302}, -+ {0x0000b030, 0x02000303}, -+ {0x0000b034, 0x02000304}, -+ {0x0000b038, 0x02000400}, -+ {0x0000b03c, 0x02010300}, -+ {0x0000b040, 0x02010301}, -+ {0x0000b044, 0x02010302}, -+ {0x0000b048, 0x02000500}, -+ {0x0000b04c, 0x02010400}, -+ {0x0000b050, 0x02020300}, -+ {0x0000b054, 0x02020301}, -+ {0x0000b058, 0x02020302}, -+ {0x0000b05c, 0x02020303}, -+ {0x0000b060, 0x02020400}, -+ {0x0000b064, 0x02030300}, -+ {0x0000b068, 0x02030301}, -+ {0x0000b06c, 0x02030302}, -+ {0x0000b070, 0x02030303}, -+ {0x0000b074, 0x02030400}, -+ {0x0000b078, 0x02040300}, -+ {0x0000b07c, 0x02040301}, -+ {0x0000b080, 0x02040302}, -+ {0x0000b084, 0x02040303}, -+ {0x0000b088, 0x02030500}, -+ {0x0000b08c, 0x02040400}, -+ {0x0000b090, 0x02050203}, -+ {0x0000b094, 0x02050204}, -+ {0x0000b098, 0x02050205}, -+ {0x0000b09c, 0x02040500}, -+ {0x0000b0a0, 0x02050301}, -+ {0x0000b0a4, 0x02050302}, -+ {0x0000b0a8, 0x02050303}, -+ {0x0000b0ac, 0x02050400}, -+ {0x0000b0b0, 0x02050401}, -+ {0x0000b0b4, 0x02050402}, -+ {0x0000b0b8, 0x02050403}, -+ {0x0000b0bc, 0x02050500}, -+ {0x0000b0c0, 0x02050501}, -+ {0x0000b0c4, 0x02050502}, -+ {0x0000b0c8, 0x02050503}, -+ {0x0000b0cc, 0x02050504}, -+ {0x0000b0d0, 0x02050600}, -+ {0x0000b0d4, 0x02050601}, -+ {0x0000b0d8, 0x02050602}, -+ {0x0000b0dc, 0x02050603}, -+ {0x0000b0e0, 0x02050604}, -+ {0x0000b0e4, 0x02050700}, -+ {0x0000b0e8, 0x02050701}, -+ {0x0000b0ec, 0x02050702}, -+ {0x0000b0f0, 0x02050703}, -+ {0x0000b0f4, 0x02050704}, -+ {0x0000b0f8, 0x02050705}, -+ {0x0000b0fc, 0x02050708}, -+ {0x0000b100, 0x02050709}, -+ {0x0000b104, 0x0205070a}, -+ {0x0000b108, 0x0205070b}, -+ {0x0000b10c, 0x0205070c}, -+ {0x0000b110, 0x0205070d}, -+ {0x0000b114, 0x02050710}, -+ {0x0000b118, 0x02050711}, -+ {0x0000b11c, 0x02050712}, -+ {0x0000b120, 0x02050713}, -+ {0x0000b124, 0x02050714}, -+ {0x0000b128, 0x02050715}, -+ {0x0000b12c, 0x02050730}, -+ {0x0000b130, 0x02050731}, -+ {0x0000b134, 0x02050732}, -+ {0x0000b138, 0x02050733}, -+ {0x0000b13c, 0x02050734}, -+ {0x0000b140, 0x02050735}, -+ {0x0000b144, 0x02050750}, -+ {0x0000b148, 0x02050751}, -+ {0x0000b14c, 0x02050752}, -+ {0x0000b150, 0x02050753}, -+ {0x0000b154, 0x02050754}, -+ {0x0000b158, 0x02050755}, -+ {0x0000b15c, 0x02050770}, -+ {0x0000b160, 0x02050771}, -+ {0x0000b164, 0x02050772}, -+ {0x0000b168, 0x02050773}, -+ {0x0000b16c, 0x02050774}, -+ {0x0000b170, 0x02050775}, -+ {0x0000b174, 0x00000776}, -+ {0x0000b178, 0x00000776}, -+ {0x0000b17c, 0x00000776}, -+ {0x0000b180, 0x00000776}, -+ {0x0000b184, 0x00000776}, -+ {0x0000b188, 0x00000776}, -+ {0x0000b18c, 0x00000776}, -+ {0x0000b190, 0x00000776}, -+ {0x0000b194, 0x00000776}, -+ {0x0000b198, 0x00000776}, -+ {0x0000b19c, 0x00000776}, -+ {0x0000b1a0, 0x00000776}, -+ {0x0000b1a4, 0x00000776}, -+ {0x0000b1a8, 0x00000776}, -+ {0x0000b1ac, 0x00000776}, -+ {0x0000b1b0, 0x00000776}, -+ {0x0000b1b4, 0x00000776}, -+ {0x0000b1b8, 0x00000776}, -+ {0x0000b1bc, 0x00000776}, -+ {0x0000b1c0, 0x00000776}, -+ {0x0000b1c4, 0x00000776}, -+ {0x0000b1c8, 0x00000776}, -+ {0x0000b1cc, 0x00000776}, -+ {0x0000b1d0, 0x00000776}, -+ {0x0000b1d4, 0x00000776}, -+ {0x0000b1d8, 0x00000776}, -+ {0x0000b1dc, 0x00000776}, -+ {0x0000b1e0, 0x00000776}, -+ {0x0000b1e4, 0x00000776}, -+ {0x0000b1e8, 0x00000776}, -+ {0x0000b1ec, 0x00000776}, -+ {0x0000b1f0, 0x00000776}, -+ {0x0000b1f4, 0x00000776}, -+ {0x0000b1f8, 0x00000776}, -+ {0x0000b1fc, 0x00000776}, -+}; -+ -+static const u32 ar9300_2p2_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 ar9300_2p2_soc_postamble[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023}, -+}; -+ -+static const u32 ar9200_merlin_2p2_radio_core[][2] = { -+ /* Addr allmodes */ -+ {0x00007800, 0x00040000}, -+ {0x00007804, 0xdb005012}, -+ {0x00007808, 0x04924914}, -+ {0x0000780c, 0x21084210}, -+ {0x00007810, 0x6d801300}, -+ {0x00007814, 0x0019beff}, -+ {0x00007818, 0x07e41000}, -+ {0x0000781c, 0x00392000}, -+ {0x00007820, 0x92592480}, -+ {0x00007824, 0x00040000}, -+ {0x00007828, 0xdb005012}, -+ {0x0000782c, 0x04924914}, -+ {0x00007830, 0x21084210}, -+ {0x00007834, 0x6d801300}, -+ {0x00007838, 0x0019beff}, -+ {0x0000783c, 0x07e40000}, -+ {0x00007840, 0x00392000}, -+ {0x00007844, 0x92592480}, -+ {0x00007848, 0x00100000}, -+ {0x0000784c, 0x773f0567}, -+ {0x00007850, 0x54214514}, -+ {0x00007854, 0x12035828}, -+ {0x00007858, 0x92592692}, -+ {0x0000785c, 0x00000000}, -+ {0x00007860, 0x56400000}, -+ {0x00007864, 0x0a8e370e}, -+ {0x00007868, 0xc0102850}, -+ {0x0000786c, 0x812d4000}, -+ {0x00007870, 0x807ec400}, -+ {0x00007874, 0x001b6db0}, -+ {0x00007878, 0x00376b63}, -+ {0x0000787c, 0x06db6db6}, -+ {0x00007880, 0x006d8000}, -+ {0x00007884, 0xffeffffe}, -+ {0x00007888, 0xffeffffe}, -+ {0x0000788c, 0x00010000}, -+ {0x00007890, 0x02060aeb}, -+ {0x00007894, 0x5a108000}, -+}; -+ -+static const u32 ar9300_2p2_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, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0}, -+ {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020}, -+ {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, -+ {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {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}, -+ {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27}, -+ {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, -+ {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, -+ {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0}, -+ {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004}, -+ {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}, -+ {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, 0x00000150, 0x00000150}, -+ {0x0000a288, 0x00000110, 0x00000110, 0x00000110, 0x00000110}, -+ {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222}, -+ {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, -+ {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982}, -+ {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, -+ {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -+ {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -+ {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, -+ {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -+ {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -+ {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -+ {0x0000c284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, -+}; -+ -+static const u32 ar9300_2p2_baseband_core[][2] = { -+ /* Addr allmodes */ -+ {0x00009800, 0xafe68e30}, -+ {0x00009804, 0xfd14e000}, -+ {0x00009808, 0x9c0a9f6b}, -+ {0x0000980c, 0x04900000}, -+ {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, 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}, -+ {0x00009e3c, 0xcf946222}, -+ {0x00009e40, 0x0d261820}, -+ {0x00009e4c, 0x00001004}, -+ {0x00009e50, 0x00ff03f1}, -+ {0x00009e54, 0x00000000}, -+ {0x00009fc0, 0x803e4788}, -+ {0x00009fc4, 0x0001efb5}, -+ {0x00009fcc, 0x40000014}, -+ {0x00009fd0, 0x01193b93}, -+ {0x0000a20c, 0x00000000}, -+ {0x0000a220, 0x00000000}, -+ {0x0000a224, 0x00000000}, -+ {0x0000a228, 0x10002310}, -+ {0x0000a22c, 0x01036a1e}, -+ {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, 0x00000246}, -+ {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, 0x06000080}, -+ {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}, -+ {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}, -+ {0x0000a8d0, 0x004b6a8e}, -+ {0x0000a8d4, 0x00000820}, -+ {0x0000a8dc, 0x00000000}, -+ {0x0000a8f0, 0x00000000}, -+ {0x0000a8f4, 0x00000000}, -+ {0x0000b2d0, 0x00000080}, -+ {0x0000b2d4, 0x00000000}, -+ {0x0000b2dc, 0x00000000}, -+ {0x0000b2e0, 0x00000000}, -+ {0x0000b2e4, 0x00000000}, -+ {0x0000b2e8, 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}, -+ {0x0000c2dc, 0x00000000}, -+ {0x0000c2e0, 0x00000000}, -+ {0x0000c2e4, 0x00000000}, -+ {0x0000c2e8, 0x00000000}, -+ {0x0000c2ec, 0x00000000}, -+ {0x0000c2f0, 0x00000000}, -+ {0x0000c2f4, 0x00000000}, -+ {0x0000c2f8, 0x00000000}, -+ {0x0000c408, 0x0e79e5c0}, -+ {0x0000c40c, 0x00820820}, -+ {0x0000c420, 0x00000000}, -+}; -+ -+static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -+ {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -+ {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002}, -+ {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, -+ {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, -+ {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, -+ {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, -+ {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, -+ {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, -+ {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, -+ {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, -+ {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, -+ {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, -+ {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20}, -+ {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22}, -+ {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24}, -+ {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640}, -+ {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660}, -+ {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861}, -+ {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81}, -+ {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -+ {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84}, -+ {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3}, -+ {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5}, -+ {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9}, -+ {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb}, -+ {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -+ {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002}, -+ {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, -+ {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, -+ {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, -+ {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, -+ {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, -+ {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, -+ {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, -+ {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, -+ {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, -+ {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, -+ {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20}, -+ {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22}, -+ {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24}, -+ {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640}, -+ {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660}, -+ {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861}, -+ {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81}, -+ {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83}, -+ {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84}, -+ {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3}, -+ {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5}, -+ {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9}, -+ {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb}, -+ {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+ {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+ {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+}; -+ -+static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -+ {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -+ {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002}, -+ {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, -+ {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, -+ {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, -+ {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, -+ {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, -+ {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, -+ {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, -+ {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, -+ {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, -+ {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, -+ {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20}, -+ {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22}, -+ {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24}, -+ {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640}, -+ {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660}, -+ {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861}, -+ {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81}, -+ {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -+ {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84}, -+ {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3}, -+ {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5}, -+ {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9}, -+ {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb}, -+ {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -+ {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -+ {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002}, -+ {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, -+ {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, -+ {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, -+ {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, -+ {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, -+ {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, -+ {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, -+ {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, -+ {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, -+ {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, -+ {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20}, -+ {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22}, -+ {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24}, -+ {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640}, -+ {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660}, -+ {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861}, -+ {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81}, -+ {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83}, -+ {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84}, -+ {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3}, -+ {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5}, -+ {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9}, -+ {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb}, -+ {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -+ {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}, -+}; -+ -+static const u32 ar9300Common_rx_gain_table_2p2[][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, 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 ar9300Modes_low_ob_db_tx_gain_table_2p2[][5] = { -+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -+ {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}, -+ {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}, -+}; -+ -+static const u32 ar9300_2p2_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}, -+ {0x00008244, 0x0010f424}, -+ {0x00008248, 0x00000800}, -+ {0x0000824c, 0x0001e848}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x40000000}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x9bc00010}, -+ {0x00008268, 0xffffffff}, -+ {0x0000826c, 0x0000ffff}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000004}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x000000ff}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000140}, -+ {0x00008314, 0x00000000}, -+ {0x0000831c, 0x0000010d}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000700}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x02400000}, -+ {0x00008340, 0x000107ff}, -+ {0x00008344, 0xaa48105b}, -+ {0x00008348, 0x008f0000}, -+ {0x0000835c, 0x00000000}, -+ {0x00008360, 0xffffffff}, -+ {0x00008364, 0xffffffff}, -+ {0x00008368, 0x00000000}, -+ {0x00008370, 0x00000000}, -+ {0x00008374, 0x000000ff}, -+ {0x00008378, 0x00000000}, -+ {0x0000837c, 0x00000000}, -+ {0x00008380, 0xffffffff}, -+ {0x00008384, 0xffffffff}, -+ {0x00008390, 0xffffffff}, -+ {0x00008394, 0xffffffff}, -+ {0x00008398, 0x00000000}, -+ {0x0000839c, 0x00000000}, -+ {0x000083a0, 0x00000000}, -+ {0x000083a4, 0x0000fa14}, -+ {0x000083a8, 0x000f0c00}, -+ {0x000083ac, 0x33332210}, -+ {0x000083b0, 0x33332210}, -+ {0x000083b4, 0x33332210}, -+ {0x000083b8, 0x33332210}, -+ {0x000083bc, 0x00000000}, -+ {0x000083c0, 0x00000000}, -+ {0x000083c4, 0x00000000}, -+ {0x000083c8, 0x00000000}, -+ {0x000083cc, 0x00000200}, -+ {0x000083d0, 0x000301ff}, -+}; -+ -+static const u32 ar9300Common_wo_xlna_rx_gain_table_2p2[][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 ar9300_2p2_soc_preamble[][2] = { -+ /* Addr allmodes */ -+ {0x000040a4, 0x00a0c1c9}, -+ {0x00007008, 0x00000000}, -+ {0x00007020, 0x00000000}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00007048, 0x00000008}, -+}; -+ -+static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p2[][2] = { -+ /* Addr allmodes */ -+ {0x00004040, 0x08212e5e}, -+ {0x00004040, 0x0008003b}, -+ {0x00004044, 0x00000000}, -+}; -+ -+static const u32 ar9300PciePhy_clkreq_enable_L1_2p2[][2] = { -+ /* Addr allmodes */ -+ {0x00004040, 0x08253e5e}, -+ {0x00004040, 0x0008003b}, -+ {0x00004044, 0x00000000}, -+}; -+ -+static const u32 ar9300PciePhy_clkreq_disable_L1_2p2[][2] = { -+ /* Addr allmodes */ -+ {0x00004040, 0x08213e5e}, -+ {0x00004040, 0x0008003b}, -+ {0x00004044, 0x00000000}, -+}; -+ -+#endif /* INITVALS_9003_2P2_H */ ---- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c -@@ -739,6 +739,12 @@ static bool ar9003_hw_init_cal(struct at - */ - ar9003_hw_set_chain_masks(ah, 0x7, 0x7); - -+ /* Do Tx IQ Calibration */ -+ ar9003_hw_tx_iq_cal(ah); -+ REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS); -+ udelay(5); -+ REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN); -+ - /* Calibrate the AGC */ - REG_WRITE(ah, AR_PHY_AGC_CONTROL, - REG_READ(ah, AR_PHY_AGC_CONTROL) | -@@ -753,10 +759,6 @@ static bool ar9003_hw_init_cal(struct at - return false; - } - -- /* Do Tx IQ Calibration */ -- if (ah->config.tx_iq_calibration) -- ar9003_hw_tx_iq_cal(ah); -- - /* Revert chainmasks to their original values before NF cal */ - ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask); - ---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c -@@ -16,7 +16,8 @@ - - #include "hw.h" - #include "ar9003_mac.h" --#include "ar9003_initvals.h" -+#include "ar9003_2p0_initvals.h" -+#include "ar9003_2p2_initvals.h" - - /* General hardware code for the AR9003 hadware family */ - -@@ -31,12 +32,8 @@ static bool ar9003_hw_macversion_support - return false; - } - --/* AR9003 2.0 - new INI format (pre, core, post arrays per subsystem) */ --/* -- * XXX: move TX/RX gain INI to its own init_mode_gain_regs after -- * ensuring it does not affect hardware bring up -- */ --static void ar9003_hw_init_mode_regs(struct ath_hw *ah) -+/* AR9003 2.0 */ -+static void ar9003_2p0_hw_init_mode_regs(struct ath_hw *ah) - { - /* mac */ - INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0); -@@ -106,27 +103,128 @@ static void ar9003_hw_init_mode_regs(str - 3); - } - -+/* AR9003 2.2 */ -+static void ar9003_2p2_hw_init_mode_regs(struct ath_hw *ah) -+{ -+ /* mac */ -+ INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE], -+ ar9300_2p2_mac_core, -+ ARRAY_SIZE(ar9300_2p2_mac_core), 2); -+ INIT_INI_ARRAY(&ah->iniMac[ATH_INI_POST], -+ ar9300_2p2_mac_postamble, -+ ARRAY_SIZE(ar9300_2p2_mac_postamble), 5); -+ -+ /* bb */ -+ INIT_INI_ARRAY(&ah->iniBB[ATH_INI_PRE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniBB[ATH_INI_CORE], -+ ar9300_2p2_baseband_core, -+ ARRAY_SIZE(ar9300_2p2_baseband_core), 2); -+ INIT_INI_ARRAY(&ah->iniBB[ATH_INI_POST], -+ ar9300_2p2_baseband_postamble, -+ ARRAY_SIZE(ar9300_2p2_baseband_postamble), 5); -+ -+ /* radio */ -+ INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_PRE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_CORE], -+ ar9300_2p2_radio_core, -+ ARRAY_SIZE(ar9300_2p2_radio_core), 2); -+ INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_POST], -+ ar9300_2p2_radio_postamble, -+ ARRAY_SIZE(ar9300_2p2_radio_postamble), 5); -+ -+ /* soc */ -+ INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_PRE], -+ ar9300_2p2_soc_preamble, -+ ARRAY_SIZE(ar9300_2p2_soc_preamble), 2); -+ INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_CORE], NULL, 0, 0); -+ INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_POST], -+ ar9300_2p2_soc_postamble, -+ ARRAY_SIZE(ar9300_2p2_soc_postamble), 5); -+ -+ /* rx/tx gain */ -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar9300Common_rx_gain_table_2p2, -+ ARRAY_SIZE(ar9300Common_rx_gain_table_2p2), 2); -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar9300Modes_lowest_ob_db_tx_gain_table_2p2, -+ ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p2), -+ 5); -+ -+ /* Load PCIE SERDES settings from INI */ -+ -+ /* Awake Setting */ -+ -+ INIT_INI_ARRAY(&ah->iniPcieSerdes, -+ ar9300PciePhy_pll_on_clkreq_disable_L1_2p2, -+ ARRAY_SIZE(ar9300PciePhy_pll_on_clkreq_disable_L1_2p2), -+ 2); -+ -+ /* Sleep Setting */ -+ -+ INIT_INI_ARRAY(&ah->iniPcieSerdesLowPower, -+ ar9300PciePhy_clkreq_enable_L1_2p2, -+ ARRAY_SIZE(ar9300PciePhy_clkreq_enable_L1_2p2), -+ 2); -+ -+ /* Fast clock modal settings */ -+ INIT_INI_ARRAY(&ah->iniModesAdditional, -+ ar9300Modes_fast_clock_2p2, -+ ARRAY_SIZE(ar9300Modes_fast_clock_2p2), -+ 3); -+} -+ -+/* -+ * The AR9003 family uses a new INI format (pre, core, post -+ * arrays per subsystem). -+ */ -+static void ar9003_hw_init_mode_regs(struct ath_hw *ah) -+{ -+ if (AR_SREV_9300_20(ah)) -+ ar9003_2p0_hw_init_mode_regs(ah); -+ else -+ ar9003_2p2_hw_init_mode_regs(ah); -+} -+ - static void ar9003_tx_gain_table_apply(struct ath_hw *ah) - { - switch (ar9003_hw_get_tx_gain_idx(ah)) { - case 0: - default: -- INIT_INI_ARRAY(&ah->iniModesTxGain, -- ar9300Modes_lowest_ob_db_tx_gain_table_2p0, -- ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p0), -- 5); -+ if (AR_SREV_9300_20(ah)) -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar9300Modes_lowest_ob_db_tx_gain_table_2p0, -+ ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p0), -+ 5); -+ else -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar9300Modes_lowest_ob_db_tx_gain_table_2p2, -+ ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p2), -+ 5); - break; - case 1: -- INIT_INI_ARRAY(&ah->iniModesTxGain, -- ar9300Modes_high_ob_db_tx_gain_table_2p0, -- ARRAY_SIZE(ar9300Modes_high_ob_db_tx_gain_table_2p0), -- 5); -+ if (AR_SREV_9300_20(ah)) -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar9300Modes_high_ob_db_tx_gain_table_2p0, -+ ARRAY_SIZE(ar9300Modes_high_ob_db_tx_gain_table_2p0), -+ 5); -+ else -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar9300Modes_high_ob_db_tx_gain_table_2p2, -+ ARRAY_SIZE(ar9300Modes_high_ob_db_tx_gain_table_2p2), -+ 5); - break; - case 2: -- INIT_INI_ARRAY(&ah->iniModesTxGain, -- ar9300Modes_low_ob_db_tx_gain_table_2p0, -- ARRAY_SIZE(ar9300Modes_low_ob_db_tx_gain_table_2p0), -- 5); -+ if (AR_SREV_9300_20(ah)) -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar9300Modes_low_ob_db_tx_gain_table_2p0, -+ ARRAY_SIZE(ar9300Modes_low_ob_db_tx_gain_table_2p0), -+ 5); -+ else -+ INIT_INI_ARRAY(&ah->iniModesTxGain, -+ ar9300Modes_low_ob_db_tx_gain_table_2p2, -+ ARRAY_SIZE(ar9300Modes_low_ob_db_tx_gain_table_2p2), -+ 5); - break; - } - } -@@ -136,15 +234,28 @@ static void ar9003_rx_gain_table_apply(s - switch (ar9003_hw_get_rx_gain_idx(ah)) { - case 0: - default: -- INIT_INI_ARRAY(&ah->iniModesRxGain, ar9300Common_rx_gain_table_2p0, -- ARRAY_SIZE(ar9300Common_rx_gain_table_2p0), -- 2); -+ if (AR_SREV_9300_20(ah)) -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar9300Common_rx_gain_table_2p0, -+ ARRAY_SIZE(ar9300Common_rx_gain_table_2p0), -+ 2); -+ else -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar9300Common_rx_gain_table_2p2, -+ ARRAY_SIZE(ar9300Common_rx_gain_table_2p2), -+ 2); - break; - case 1: -- INIT_INI_ARRAY(&ah->iniModesRxGain, -- ar9300Common_wo_xlna_rx_gain_table_2p0, -- ARRAY_SIZE(ar9300Common_wo_xlna_rx_gain_table_2p0), -- 2); -+ if (AR_SREV_9300_20(ah)) -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar9300Common_wo_xlna_rx_gain_table_2p0, -+ ARRAY_SIZE(ar9300Common_wo_xlna_rx_gain_table_2p0), -+ 2); -+ else -+ INIT_INI_ARRAY(&ah->iniModesRxGain, -+ ar9300Common_wo_xlna_rx_gain_table_2p2, -+ ARRAY_SIZE(ar9300Common_wo_xlna_rx_gain_table_2p2), -+ 2); - break; - } - } ---- a/drivers/net/wireless/ath/ath9k/ar9003_initvals.h -+++ /dev/null -@@ -1,1784 +0,0 @@ --/* -- * Copyright (c) 2010 Atheros Communications Inc. -- * -- * Permission to use, copy, modify, and/or distribute this software for any -- * purpose with or without fee is hereby granted, provided that the above -- * copyright notice and this permission notice appear in all copies. -- * -- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- */ -- --#ifndef INITVALS_9003_H --#define INITVALS_9003_H -- --/* AR9003 2.0 */ -- --static const u32 ar9300_2p0_radio_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x0001609c, 0x0dd08f29, 0x0dd08f29, 0x0b283f31, 0x0b283f31}, -- {0x000160ac, 0xa4653c00, 0xa4653c00, 0x24652800, 0x24652800}, -- {0x000160b0, 0x03284f3e, 0x03284f3e, 0x05d08f20, 0x05d08f20}, -- {0x0001610c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x00016140, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -- {0x0001650c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x00016540, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, -- {0x0001690c, 0x08000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x00016940, 0x10804008, 0x10804008, 0x50804008, 0x50804008}, --}; -- --static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {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, 0x21020220, 0x21020220, 0x16000402, 0x16000402}, -- {0x0000a51c, 0x27020223, 0x27020223, 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, 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}, -- {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, 0x21820220, 0x21820220, 0x16800402, 0x16800402}, -- {0x0000a59c, 0x27820223, 0x27820223, 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, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83}, -- {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84}, -- {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3}, -- {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5}, -- {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9}, -- {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb}, -- {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -- {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016448, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -- {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016848, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, -- {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, --}; -- --static const u32 ar9300Modes_fast_clock_2p0[][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, 0x03721821, 0x03721821}, -- {0x0000a230, 0x0000000b, 0x00000016}, -- {0x0000a254, 0x00000898, 0x00001130}, --}; -- --static const u32 ar9300_2p0_radio_core[][2] = { -- /* Addr allmodes */ -- {0x00016000, 0x36db6db6}, -- {0x00016004, 0x6db6db40}, -- {0x00016008, 0x73f00000}, -- {0x0001600c, 0x00000000}, -- {0x00016040, 0x7f80fff8}, -- {0x0001604c, 0x76d005b5}, -- {0x00016050, 0x556cf031}, -- {0x00016054, 0x13449440}, -- {0x00016058, 0x0c51c92c}, -- {0x0001605c, 0x3db7fffc}, -- {0x00016060, 0xfffffffc}, -- {0x00016064, 0x000f0278}, -- {0x0001606c, 0x6db60000}, -- {0x00016080, 0x00000000}, -- {0x00016084, 0x0e48048c}, -- {0x00016088, 0x54214514}, -- {0x0001608c, 0x119f481e}, -- {0x00016090, 0x24926490}, -- {0x00016098, 0xd2888888}, -- {0x000160a0, 0x0a108ffe}, -- {0x000160a4, 0x812fc370}, -- {0x000160a8, 0x423c8000}, -- {0x000160b4, 0x92480080}, -- {0x000160c0, 0x00adb6d0}, -- {0x000160c4, 0x6db6db60}, -- {0x000160c8, 0x6db6db6c}, -- {0x000160cc, 0x01e6c000}, -- {0x00016100, 0x3fffbe01}, -- {0x00016104, 0xfff80000}, -- {0x00016108, 0x00080010}, -- {0x00016144, 0x02084080}, -- {0x00016148, 0x00000000}, -- {0x00016280, 0x058a0001}, -- {0x00016284, 0x3d840208}, -- {0x00016288, 0x05a20408}, -- {0x0001628c, 0x00038c07}, -- {0x00016290, 0x40000004}, -- {0x00016294, 0x458aa14f}, -- {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}, -- {0x00016400, 0x36db6db6}, -- {0x00016404, 0x6db6db40}, -- {0x00016408, 0x73f00000}, -- {0x0001640c, 0x00000000}, -- {0x00016440, 0x7f80fff8}, -- {0x0001644c, 0x76d005b5}, -- {0x00016450, 0x556cf031}, -- {0x00016454, 0x13449440}, -- {0x00016458, 0x0c51c92c}, -- {0x0001645c, 0x3db7fffc}, -- {0x00016460, 0xfffffffc}, -- {0x00016464, 0x000f0278}, -- {0x0001646c, 0x6db60000}, -- {0x00016500, 0x3fffbe01}, -- {0x00016504, 0xfff80000}, -- {0x00016508, 0x00080010}, -- {0x00016544, 0x02084080}, -- {0x00016548, 0x00000000}, -- {0x00016780, 0x00000000}, -- {0x00016784, 0x00000000}, -- {0x00016788, 0x00800700}, -- {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, 0x556cf031}, -- {0x00016854, 0x13449440}, -- {0x00016858, 0x0c51c92c}, -- {0x0001685c, 0x3db7fffc}, -- {0x00016860, 0xfffffffc}, -- {0x00016864, 0x000f0278}, -- {0x0001686c, 0x6db60000}, -- {0x00016900, 0x3fffbe01}, -- {0x00016904, 0xfff80000}, -- {0x00016908, 0x00080010}, -- {0x00016944, 0x02084080}, -- {0x00016948, 0x00000000}, -- {0x00016b80, 0x00000000}, -- {0x00016b84, 0x00000000}, -- {0x00016b88, 0x00800700}, -- {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 ar9300Common_rx_gain_table_merlin_2p0[][2] = { -- /* Addr allmodes */ -- {0x0000a000, 0x02000101}, -- {0x0000a004, 0x02000102}, -- {0x0000a008, 0x02000103}, -- {0x0000a00c, 0x02000104}, -- {0x0000a010, 0x02000200}, -- {0x0000a014, 0x02000201}, -- {0x0000a018, 0x02000202}, -- {0x0000a01c, 0x02000203}, -- {0x0000a020, 0x02000204}, -- {0x0000a024, 0x02000205}, -- {0x0000a028, 0x02000208}, -- {0x0000a02c, 0x02000302}, -- {0x0000a030, 0x02000303}, -- {0x0000a034, 0x02000304}, -- {0x0000a038, 0x02000400}, -- {0x0000a03c, 0x02010300}, -- {0x0000a040, 0x02010301}, -- {0x0000a044, 0x02010302}, -- {0x0000a048, 0x02000500}, -- {0x0000a04c, 0x02010400}, -- {0x0000a050, 0x02020300}, -- {0x0000a054, 0x02020301}, -- {0x0000a058, 0x02020302}, -- {0x0000a05c, 0x02020303}, -- {0x0000a060, 0x02020400}, -- {0x0000a064, 0x02030300}, -- {0x0000a068, 0x02030301}, -- {0x0000a06c, 0x02030302}, -- {0x0000a070, 0x02030303}, -- {0x0000a074, 0x02030400}, -- {0x0000a078, 0x02040300}, -- {0x0000a07c, 0x02040301}, -- {0x0000a080, 0x02040302}, -- {0x0000a084, 0x02040303}, -- {0x0000a088, 0x02030500}, -- {0x0000a08c, 0x02040400}, -- {0x0000a090, 0x02050203}, -- {0x0000a094, 0x02050204}, -- {0x0000a098, 0x02050205}, -- {0x0000a09c, 0x02040500}, -- {0x0000a0a0, 0x02050301}, -- {0x0000a0a4, 0x02050302}, -- {0x0000a0a8, 0x02050303}, -- {0x0000a0ac, 0x02050400}, -- {0x0000a0b0, 0x02050401}, -- {0x0000a0b4, 0x02050402}, -- {0x0000a0b8, 0x02050403}, -- {0x0000a0bc, 0x02050500}, -- {0x0000a0c0, 0x02050501}, -- {0x0000a0c4, 0x02050502}, -- {0x0000a0c8, 0x02050503}, -- {0x0000a0cc, 0x02050504}, -- {0x0000a0d0, 0x02050600}, -- {0x0000a0d4, 0x02050601}, -- {0x0000a0d8, 0x02050602}, -- {0x0000a0dc, 0x02050603}, -- {0x0000a0e0, 0x02050604}, -- {0x0000a0e4, 0x02050700}, -- {0x0000a0e8, 0x02050701}, -- {0x0000a0ec, 0x02050702}, -- {0x0000a0f0, 0x02050703}, -- {0x0000a0f4, 0x02050704}, -- {0x0000a0f8, 0x02050705}, -- {0x0000a0fc, 0x02050708}, -- {0x0000a100, 0x02050709}, -- {0x0000a104, 0x0205070a}, -- {0x0000a108, 0x0205070b}, -- {0x0000a10c, 0x0205070c}, -- {0x0000a110, 0x0205070d}, -- {0x0000a114, 0x02050710}, -- {0x0000a118, 0x02050711}, -- {0x0000a11c, 0x02050712}, -- {0x0000a120, 0x02050713}, -- {0x0000a124, 0x02050714}, -- {0x0000a128, 0x02050715}, -- {0x0000a12c, 0x02050730}, -- {0x0000a130, 0x02050731}, -- {0x0000a134, 0x02050732}, -- {0x0000a138, 0x02050733}, -- {0x0000a13c, 0x02050734}, -- {0x0000a140, 0x02050735}, -- {0x0000a144, 0x02050750}, -- {0x0000a148, 0x02050751}, -- {0x0000a14c, 0x02050752}, -- {0x0000a150, 0x02050753}, -- {0x0000a154, 0x02050754}, -- {0x0000a158, 0x02050755}, -- {0x0000a15c, 0x02050770}, -- {0x0000a160, 0x02050771}, -- {0x0000a164, 0x02050772}, -- {0x0000a168, 0x02050773}, -- {0x0000a16c, 0x02050774}, -- {0x0000a170, 0x02050775}, -- {0x0000a174, 0x00000776}, -- {0x0000a178, 0x00000776}, -- {0x0000a17c, 0x00000776}, -- {0x0000a180, 0x00000776}, -- {0x0000a184, 0x00000776}, -- {0x0000a188, 0x00000776}, -- {0x0000a18c, 0x00000776}, -- {0x0000a190, 0x00000776}, -- {0x0000a194, 0x00000776}, -- {0x0000a198, 0x00000776}, -- {0x0000a19c, 0x00000776}, -- {0x0000a1a0, 0x00000776}, -- {0x0000a1a4, 0x00000776}, -- {0x0000a1a8, 0x00000776}, -- {0x0000a1ac, 0x00000776}, -- {0x0000a1b0, 0x00000776}, -- {0x0000a1b4, 0x00000776}, -- {0x0000a1b8, 0x00000776}, -- {0x0000a1bc, 0x00000776}, -- {0x0000a1c0, 0x00000776}, -- {0x0000a1c4, 0x00000776}, -- {0x0000a1c8, 0x00000776}, -- {0x0000a1cc, 0x00000776}, -- {0x0000a1d0, 0x00000776}, -- {0x0000a1d4, 0x00000776}, -- {0x0000a1d8, 0x00000776}, -- {0x0000a1dc, 0x00000776}, -- {0x0000a1e0, 0x00000776}, -- {0x0000a1e4, 0x00000776}, -- {0x0000a1e8, 0x00000776}, -- {0x0000a1ec, 0x00000776}, -- {0x0000a1f0, 0x00000776}, -- {0x0000a1f4, 0x00000776}, -- {0x0000a1f8, 0x00000776}, -- {0x0000a1fc, 0x00000776}, -- {0x0000b000, 0x02000101}, -- {0x0000b004, 0x02000102}, -- {0x0000b008, 0x02000103}, -- {0x0000b00c, 0x02000104}, -- {0x0000b010, 0x02000200}, -- {0x0000b014, 0x02000201}, -- {0x0000b018, 0x02000202}, -- {0x0000b01c, 0x02000203}, -- {0x0000b020, 0x02000204}, -- {0x0000b024, 0x02000205}, -- {0x0000b028, 0x02000208}, -- {0x0000b02c, 0x02000302}, -- {0x0000b030, 0x02000303}, -- {0x0000b034, 0x02000304}, -- {0x0000b038, 0x02000400}, -- {0x0000b03c, 0x02010300}, -- {0x0000b040, 0x02010301}, -- {0x0000b044, 0x02010302}, -- {0x0000b048, 0x02000500}, -- {0x0000b04c, 0x02010400}, -- {0x0000b050, 0x02020300}, -- {0x0000b054, 0x02020301}, -- {0x0000b058, 0x02020302}, -- {0x0000b05c, 0x02020303}, -- {0x0000b060, 0x02020400}, -- {0x0000b064, 0x02030300}, -- {0x0000b068, 0x02030301}, -- {0x0000b06c, 0x02030302}, -- {0x0000b070, 0x02030303}, -- {0x0000b074, 0x02030400}, -- {0x0000b078, 0x02040300}, -- {0x0000b07c, 0x02040301}, -- {0x0000b080, 0x02040302}, -- {0x0000b084, 0x02040303}, -- {0x0000b088, 0x02030500}, -- {0x0000b08c, 0x02040400}, -- {0x0000b090, 0x02050203}, -- {0x0000b094, 0x02050204}, -- {0x0000b098, 0x02050205}, -- {0x0000b09c, 0x02040500}, -- {0x0000b0a0, 0x02050301}, -- {0x0000b0a4, 0x02050302}, -- {0x0000b0a8, 0x02050303}, -- {0x0000b0ac, 0x02050400}, -- {0x0000b0b0, 0x02050401}, -- {0x0000b0b4, 0x02050402}, -- {0x0000b0b8, 0x02050403}, -- {0x0000b0bc, 0x02050500}, -- {0x0000b0c0, 0x02050501}, -- {0x0000b0c4, 0x02050502}, -- {0x0000b0c8, 0x02050503}, -- {0x0000b0cc, 0x02050504}, -- {0x0000b0d0, 0x02050600}, -- {0x0000b0d4, 0x02050601}, -- {0x0000b0d8, 0x02050602}, -- {0x0000b0dc, 0x02050603}, -- {0x0000b0e0, 0x02050604}, -- {0x0000b0e4, 0x02050700}, -- {0x0000b0e8, 0x02050701}, -- {0x0000b0ec, 0x02050702}, -- {0x0000b0f0, 0x02050703}, -- {0x0000b0f4, 0x02050704}, -- {0x0000b0f8, 0x02050705}, -- {0x0000b0fc, 0x02050708}, -- {0x0000b100, 0x02050709}, -- {0x0000b104, 0x0205070a}, -- {0x0000b108, 0x0205070b}, -- {0x0000b10c, 0x0205070c}, -- {0x0000b110, 0x0205070d}, -- {0x0000b114, 0x02050710}, -- {0x0000b118, 0x02050711}, -- {0x0000b11c, 0x02050712}, -- {0x0000b120, 0x02050713}, -- {0x0000b124, 0x02050714}, -- {0x0000b128, 0x02050715}, -- {0x0000b12c, 0x02050730}, -- {0x0000b130, 0x02050731}, -- {0x0000b134, 0x02050732}, -- {0x0000b138, 0x02050733}, -- {0x0000b13c, 0x02050734}, -- {0x0000b140, 0x02050735}, -- {0x0000b144, 0x02050750}, -- {0x0000b148, 0x02050751}, -- {0x0000b14c, 0x02050752}, -- {0x0000b150, 0x02050753}, -- {0x0000b154, 0x02050754}, -- {0x0000b158, 0x02050755}, -- {0x0000b15c, 0x02050770}, -- {0x0000b160, 0x02050771}, -- {0x0000b164, 0x02050772}, -- {0x0000b168, 0x02050773}, -- {0x0000b16c, 0x02050774}, -- {0x0000b170, 0x02050775}, -- {0x0000b174, 0x00000776}, -- {0x0000b178, 0x00000776}, -- {0x0000b17c, 0x00000776}, -- {0x0000b180, 0x00000776}, -- {0x0000b184, 0x00000776}, -- {0x0000b188, 0x00000776}, -- {0x0000b18c, 0x00000776}, -- {0x0000b190, 0x00000776}, -- {0x0000b194, 0x00000776}, -- {0x0000b198, 0x00000776}, -- {0x0000b19c, 0x00000776}, -- {0x0000b1a0, 0x00000776}, -- {0x0000b1a4, 0x00000776}, -- {0x0000b1a8, 0x00000776}, -- {0x0000b1ac, 0x00000776}, -- {0x0000b1b0, 0x00000776}, -- {0x0000b1b4, 0x00000776}, -- {0x0000b1b8, 0x00000776}, -- {0x0000b1bc, 0x00000776}, -- {0x0000b1c0, 0x00000776}, -- {0x0000b1c4, 0x00000776}, -- {0x0000b1c8, 0x00000776}, -- {0x0000b1cc, 0x00000776}, -- {0x0000b1d0, 0x00000776}, -- {0x0000b1d4, 0x00000776}, -- {0x0000b1d8, 0x00000776}, -- {0x0000b1dc, 0x00000776}, -- {0x0000b1e0, 0x00000776}, -- {0x0000b1e4, 0x00000776}, -- {0x0000b1e8, 0x00000776}, -- {0x0000b1ec, 0x00000776}, -- {0x0000b1f0, 0x00000776}, -- {0x0000b1f4, 0x00000776}, -- {0x0000b1f8, 0x00000776}, -- {0x0000b1fc, 0x00000776}, --}; -- --static const u32 ar9300_2p0_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 ar9300_2p0_soc_postamble[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023}, --}; -- --static const u32 ar9200_merlin_2p0_radio_core[][2] = { -- /* Addr allmodes */ -- {0x00007800, 0x00040000}, -- {0x00007804, 0xdb005012}, -- {0x00007808, 0x04924914}, -- {0x0000780c, 0x21084210}, -- {0x00007810, 0x6d801300}, -- {0x00007814, 0x0019beff}, -- {0x00007818, 0x07e41000}, -- {0x0000781c, 0x00392000}, -- {0x00007820, 0x92592480}, -- {0x00007824, 0x00040000}, -- {0x00007828, 0xdb005012}, -- {0x0000782c, 0x04924914}, -- {0x00007830, 0x21084210}, -- {0x00007834, 0x6d801300}, -- {0x00007838, 0x0019beff}, -- {0x0000783c, 0x07e40000}, -- {0x00007840, 0x00392000}, -- {0x00007844, 0x92592480}, -- {0x00007848, 0x00100000}, -- {0x0000784c, 0x773f0567}, -- {0x00007850, 0x54214514}, -- {0x00007854, 0x12035828}, -- {0x00007858, 0x92592692}, -- {0x0000785c, 0x00000000}, -- {0x00007860, 0x56400000}, -- {0x00007864, 0x0a8e370e}, -- {0x00007868, 0xc0102850}, -- {0x0000786c, 0x812d4000}, -- {0x00007870, 0x807ec400}, -- {0x00007874, 0x001b6db0}, -- {0x00007878, 0x00376b63}, -- {0x0000787c, 0x06db6db6}, -- {0x00007880, 0x006d8000}, -- {0x00007884, 0xffeffffe}, -- {0x00007888, 0xffeffffe}, -- {0x0000788c, 0x00010000}, -- {0x00007890, 0x02060aeb}, -- {0x00007894, 0x5a108000}, --}; -- --static const u32 ar9300_2p0_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, 0x00000044, 0x000000c4, 0x000000c4, 0x00000044}, -- {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0}, -- {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020}, -- {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, -- {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e}, -- {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}, -- {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27}, -- {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, -- {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, -- {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0}, -- {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004}, -- {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b}, -- {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, 0x0a021501, 0x0a021501, 0x3a021501, 0x3a021501}, -- {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -- {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b}, -- {0x0000a284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, -- {0x0000a288, 0x00000110, 0x00000110, 0x00000110, 0x00000110}, -- {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222}, -- {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, -- {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982}, -- {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, -- {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -- {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -- {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -- {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -- {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, -- {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -- {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -- {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, -- {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, -- {0x0000c284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, --}; -- --static const u32 ar9300_2p0_baseband_core[][2] = { -- /* Addr allmodes */ -- {0x00009800, 0xafe68e30}, -- {0x00009804, 0xfd14e000}, -- {0x00009808, 0x9c0a9f6b}, -- {0x0000980c, 0x04900000}, -- {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, 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}, -- {0x00009e3c, 0xcf946222}, -- {0x00009e40, 0x0d261820}, -- {0x00009e4c, 0x00001004}, -- {0x00009e50, 0x00ff03f1}, -- {0x00009e54, 0x00000000}, -- {0x00009fc0, 0x803e4788}, -- {0x00009fc4, 0x0001efb5}, -- {0x00009fcc, 0x40000014}, -- {0x00009fd0, 0x01193b93}, -- {0x0000a20c, 0x00000000}, -- {0x0000a220, 0x00000000}, -- {0x0000a224, 0x00000000}, -- {0x0000a228, 0x10002310}, -- {0x0000a22c, 0x01036a1e}, -- {0x0000a234, 0x10000fff}, -- {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, 0x00000246}, -- {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, 0x04000080}, -- {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}, -- {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}, -- {0x0000a8d0, 0x004b6a8e}, -- {0x0000a8d4, 0x00000820}, -- {0x0000a8dc, 0x00000000}, -- {0x0000a8f0, 0x00000000}, -- {0x0000a8f4, 0x00000000}, -- {0x0000b2d0, 0x00000080}, -- {0x0000b2d4, 0x00000000}, -- {0x0000b2dc, 0x00000000}, -- {0x0000b2e0, 0x00000000}, -- {0x0000b2e4, 0x00000000}, -- {0x0000b2e8, 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}, -- {0x0000c2dc, 0x00000000}, -- {0x0000c2e0, 0x00000000}, -- {0x0000c2e4, 0x00000000}, -- {0x0000c2e8, 0x00000000}, -- {0x0000c2ec, 0x00000000}, -- {0x0000c2f0, 0x00000000}, -- {0x0000c2f4, 0x00000000}, -- {0x0000c2f8, 0x00000000}, -- {0x0000c408, 0x0e79e5c0}, -- {0x0000c40c, 0x00820820}, -- {0x0000c420, 0x00000000}, --}; -- --static const u32 ar9300Modes_high_power_tx_gain_table_2p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -- {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -- {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002}, -- {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, -- {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, -- {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, -- {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, -- {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, -- {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, -- {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, -- {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, -- {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, -- {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, -- {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20}, -- {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22}, -- {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24}, -- {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640}, -- {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660}, -- {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861}, -- {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81}, -- {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -- {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84}, -- {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3}, -- {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5}, -- {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9}, -- {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb}, -- {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -- {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002}, -- {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, -- {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, -- {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, -- {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, -- {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, -- {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, -- {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, -- {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, -- {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, -- {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, -- {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20}, -- {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22}, -- {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24}, -- {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640}, -- {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660}, -- {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861}, -- {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81}, -- {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83}, -- {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84}, -- {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3}, -- {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5}, -- {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9}, -- {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb}, -- {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -- {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -- {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -- {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -- {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -- {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -- {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -- {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -- {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, --}; -- --static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -- {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -- {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002}, -- {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, -- {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, -- {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, -- {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, -- {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, -- {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, -- {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, -- {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, -- {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, -- {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, -- {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20}, -- {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22}, -- {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24}, -- {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640}, -- {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660}, -- {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861}, -- {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81}, -- {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, -- {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84}, -- {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3}, -- {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5}, -- {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9}, -- {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb}, -- {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec}, -- {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -- {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002}, -- {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, -- {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, -- {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, -- {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, -- {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, -- {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, -- {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, -- {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, -- {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, -- {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, -- {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20}, -- {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22}, -- {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24}, -- {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640}, -- {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660}, -- {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861}, -- {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81}, -- {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83}, -- {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84}, -- {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3}, -- {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5}, -- {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9}, -- {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb}, -- {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec}, -- {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}, --}; -- --static const u32 ar9300Common_rx_gain_table_2p0[][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, 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 ar9300Modes_low_ob_db_tx_gain_table_2p0[][5] = { -- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {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, 0x21020220, 0x21020220, 0x16000402, 0x16000402}, -- {0x0000a51c, 0x27020223, 0x27020223, 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, 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}, -- {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, 0x21820220, 0x21820220, 0x16800402, 0x16800402}, -- {0x0000a59c, 0x27820223, 0x27820223, 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, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83}, -- {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84}, -- {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3}, -- {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5}, -- {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9}, -- {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb}, -- {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec}, -- {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016048, 0x64000001, 0x64000001, 0x64000001, 0x64000001}, -- {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016448, 0x64000001, 0x64000001, 0x64000001, 0x64000001}, -- {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016848, 0x64000001, 0x64000001, 0x64000001, 0x64000001}, -- {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, --}; -- --static const u32 ar9300_2p0_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}, -- {0x00008244, 0x0010f424}, -- {0x00008248, 0x00000800}, -- {0x0000824c, 0x0001e848}, -- {0x00008250, 0x00000000}, -- {0x00008254, 0x00000000}, -- {0x00008258, 0x00000000}, -- {0x0000825c, 0x40000000}, -- {0x00008260, 0x00080922}, -- {0x00008264, 0x98a00010}, -- {0x00008268, 0xffffffff}, -- {0x0000826c, 0x0000ffff}, -- {0x00008270, 0x00000000}, -- {0x00008274, 0x40000000}, -- {0x00008278, 0x003e4180}, -- {0x0000827c, 0x00000004}, -- {0x00008284, 0x0000002c}, -- {0x00008288, 0x0000002c}, -- {0x0000828c, 0x000000ff}, -- {0x00008294, 0x00000000}, -- {0x00008298, 0x00000000}, -- {0x0000829c, 0x00000000}, -- {0x00008300, 0x00000140}, -- {0x00008314, 0x00000000}, -- {0x0000831c, 0x0000010d}, -- {0x00008328, 0x00000000}, -- {0x0000832c, 0x00000007}, -- {0x00008330, 0x00000302}, -- {0x00008334, 0x00000700}, -- {0x00008338, 0x00ff0000}, -- {0x0000833c, 0x02400000}, -- {0x00008340, 0x000107ff}, -- {0x00008344, 0xaa48105b}, -- {0x00008348, 0x008f0000}, -- {0x0000835c, 0x00000000}, -- {0x00008360, 0xffffffff}, -- {0x00008364, 0xffffffff}, -- {0x00008368, 0x00000000}, -- {0x00008370, 0x00000000}, -- {0x00008374, 0x000000ff}, -- {0x00008378, 0x00000000}, -- {0x0000837c, 0x00000000}, -- {0x00008380, 0xffffffff}, -- {0x00008384, 0xffffffff}, -- {0x00008390, 0xffffffff}, -- {0x00008394, 0xffffffff}, -- {0x00008398, 0x00000000}, -- {0x0000839c, 0x00000000}, -- {0x000083a0, 0x00000000}, -- {0x000083a4, 0x0000fa14}, -- {0x000083a8, 0x000f0c00}, -- {0x000083ac, 0x33332210}, -- {0x000083b0, 0x33332210}, -- {0x000083b4, 0x33332210}, -- {0x000083b8, 0x33332210}, -- {0x000083bc, 0x00000000}, -- {0x000083c0, 0x00000000}, -- {0x000083c4, 0x00000000}, -- {0x000083c8, 0x00000000}, -- {0x000083cc, 0x00000200}, -- {0x000083d0, 0x000301ff}, --}; -- --static const u32 ar9300Common_wo_xlna_rx_gain_table_2p0[][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 ar9300_2p0_soc_preamble[][2] = { -- /* Addr allmodes */ -- {0x000040a4, 0x00a0c1c9}, -- {0x00007008, 0x00000000}, -- {0x00007020, 0x00000000}, -- {0x00007034, 0x00000002}, -- {0x00007038, 0x000004c2}, --}; -- --static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p0[][2] = { -- /* Addr allmodes */ -- {0x00004040, 0x08212e5e}, -- {0x00004040, 0x0008003b}, -- {0x00004044, 0x00000000}, --}; -- --static const u32 ar9300PciePhy_clkreq_enable_L1_2p0[][2] = { -- /* Addr allmodes */ -- {0x00004040, 0x08253e5e}, -- {0x00004040, 0x0008003b}, -- {0x00004044, 0x00000000}, --}; -- --static const u32 ar9300PciePhy_clkreq_disable_L1_2p0[][2] = { -- /* Addr allmodes */ -- {0x00004040, 0x08213e5e}, -- {0x00004040, 0x0008003b}, -- {0x00004044, 0x00000000}, --}; -- --#endif /* INITVALS_9003_H */ ---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -90,6 +90,8 @@ static bool ar9003_hw_get_isr(struct ath - MAP_ISR_S2_CST); - mask2 |= ((isr2 & AR_ISR_S2_TSFOOR) >> - MAP_ISR_S2_TSFOOR); -+ mask2 |= ((isr2 & AR_ISR_S2_BB_WATCHDOG) >> -+ MAP_ISR_S2_BB_WATCHDOG); - - if (!(pCap->hw_caps & ATH9K_HW_CAP_RAC_SUPPORTED)) { - REG_WRITE(ah, AR_ISR_S2, isr2); -@@ -167,6 +169,9 @@ static bool ar9003_hw_get_isr(struct ath - - (void) REG_READ(ah, AR_ISR); - } -+ -+ if (*masked & ATH9K_INT_BB_WATCHDOG) -+ ar9003_hw_bb_watchdog_read(ah); - } - - if (sync_cause) { -@@ -229,7 +234,8 @@ static void ar9003_hw_fill_txdesc(struct - } - - static int ar9003_hw_proc_txdesc(struct ath_hw *ah, void *ds, -- struct ath_tx_status *ts) -+ struct ath_tx_status *ts, -+ void *txs_desc) - { - struct ar9003_txs *ads; - -@@ -300,6 +306,7 @@ static int ar9003_hw_proc_txdesc(struct - - ts->tid = MS(ads->status8, AR_TxTid); - -+ memcpy(txs_desc, ads, sizeof(*ads)); - memset(ads, 0, sizeof(*ads)); - - return 0; ---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.h -@@ -47,6 +47,7 @@ - #define MAP_ISR_S2_DTIMSYNC 7 - #define MAP_ISR_S2_DTIM 7 - #define MAP_ISR_S2_TSFOOR 4 -+#define MAP_ISR_S2_BB_WATCHDOG 6 - - #define AR9003TXC_CONST(_ds) ((const struct ar9003_txc *) _ds) - ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -1132,3 +1132,122 @@ void ar9003_hw_attach_phy_ops(struct ath - priv_ops->do_getnf = ar9003_hw_do_getnf; - priv_ops->loadnf = ar9003_hw_loadnf; - } -+ -+void ar9003_hw_bb_watchdog_config(struct ath_hw *ah) -+{ -+ struct ath_common *common = ath9k_hw_common(ah); -+ u32 idle_tmo_ms = ah->bb_watchdog_timeout_ms; -+ u32 val, idle_count; -+ -+ if (!idle_tmo_ms) { -+ /* disable IRQ, disable chip-reset for BB panic */ -+ REG_WRITE(ah, AR_PHY_WATCHDOG_CTL_2, -+ REG_READ(ah, AR_PHY_WATCHDOG_CTL_2) & -+ ~(AR_PHY_WATCHDOG_RST_ENABLE | -+ AR_PHY_WATCHDOG_IRQ_ENABLE)); -+ -+ /* disable watchdog in non-IDLE mode, disable in IDLE mode */ -+ REG_WRITE(ah, AR_PHY_WATCHDOG_CTL_1, -+ REG_READ(ah, AR_PHY_WATCHDOG_CTL_1) & -+ ~(AR_PHY_WATCHDOG_NON_IDLE_ENABLE | -+ AR_PHY_WATCHDOG_IDLE_ENABLE)); -+ -+ ath_print(common, ATH_DBG_RESET, "Disabled BB Watchdog\n"); -+ return; -+ } -+ -+ /* enable IRQ, disable chip-reset for BB watchdog */ -+ val = REG_READ(ah, AR_PHY_WATCHDOG_CTL_2) & AR_PHY_WATCHDOG_CNTL2_MASK; -+ REG_WRITE(ah, AR_PHY_WATCHDOG_CTL_2, -+ (val | AR_PHY_WATCHDOG_IRQ_ENABLE) & -+ ~AR_PHY_WATCHDOG_RST_ENABLE); -+ -+ /* bound limit to 10 secs */ -+ if (idle_tmo_ms > 10000) -+ idle_tmo_ms = 10000; -+ -+ /* -+ * The time unit for watchdog event is 2^15 44/88MHz cycles. -+ * -+ * For HT20 we have a time unit of 2^15/44 MHz = .74 ms per tick -+ * For HT40 we have a time unit of 2^15/88 MHz = .37 ms per tick -+ * -+ * Given we use fast clock now in 5 GHz, these time units should -+ * be common for both 2 GHz and 5 GHz. -+ */ -+ idle_count = (100 * idle_tmo_ms) / 74; -+ if (ah->curchan && IS_CHAN_HT40(ah->curchan)) -+ idle_count = (100 * idle_tmo_ms) / 37; -+ -+ /* -+ * enable watchdog in non-IDLE mode, disable in IDLE mode, -+ * set idle time-out. -+ */ -+ REG_WRITE(ah, AR_PHY_WATCHDOG_CTL_1, -+ AR_PHY_WATCHDOG_NON_IDLE_ENABLE | -+ AR_PHY_WATCHDOG_IDLE_MASK | -+ (AR_PHY_WATCHDOG_NON_IDLE_MASK & (idle_count << 2))); -+ -+ ath_print(common, ATH_DBG_RESET, -+ "Enabled BB Watchdog timeout (%u ms)\n", -+ idle_tmo_ms); -+} -+ -+void ar9003_hw_bb_watchdog_read(struct ath_hw *ah) -+{ -+ /* -+ * we want to avoid printing in ISR context so we save the -+ * watchdog status to be printed later in bottom half context. -+ */ -+ ah->bb_watchdog_last_status = REG_READ(ah, AR_PHY_WATCHDOG_STATUS); -+ -+ /* -+ * the watchdog timer should reset on status read but to be sure -+ * sure we write 0 to the watchdog status bit. -+ */ -+ REG_WRITE(ah, AR_PHY_WATCHDOG_STATUS, -+ ah->bb_watchdog_last_status & ~AR_PHY_WATCHDOG_STATUS_CLR); -+} -+ -+void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah) -+{ -+ struct ath_common *common = ath9k_hw_common(ah); -+ u32 rxc_pcnt = 0, rxf_pcnt = 0, txf_pcnt = 0, status; -+ -+ if (likely(!(common->debug_mask & ATH_DBG_RESET))) -+ return; -+ -+ status = ah->bb_watchdog_last_status; -+ ath_print(common, ATH_DBG_RESET, -+ "\n==== BB update: BB status=0x%08x ====\n", status); -+ ath_print(common, ATH_DBG_RESET, -+ "** BB state: wd=%u det=%u rdar=%u rOFDM=%d " -+ "rCCK=%u tOFDM=%u tCCK=%u agc=%u src=%u **\n", -+ MS(status, AR_PHY_WATCHDOG_INFO), -+ MS(status, AR_PHY_WATCHDOG_DET_HANG), -+ MS(status, AR_PHY_WATCHDOG_RADAR_SM), -+ MS(status, AR_PHY_WATCHDOG_RX_OFDM_SM), -+ MS(status, AR_PHY_WATCHDOG_RX_CCK_SM), -+ MS(status, AR_PHY_WATCHDOG_TX_OFDM_SM), -+ MS(status, AR_PHY_WATCHDOG_TX_CCK_SM), -+ MS(status, AR_PHY_WATCHDOG_AGC_SM), -+ MS(status,AR_PHY_WATCHDOG_SRCH_SM)); -+ -+ ath_print(common, ATH_DBG_RESET, -+ "** BB WD cntl: cntl1=0x%08x cntl2=0x%08x **\n", -+ REG_READ(ah, AR_PHY_WATCHDOG_CTL_1), -+ REG_READ(ah, AR_PHY_WATCHDOG_CTL_2)); -+ ath_print(common, ATH_DBG_RESET, -+ "** BB mode: BB_gen_controls=0x%08x **\n", -+ REG_READ(ah, AR_PHY_GEN_CTRL)); -+ -+ if (ath9k_hw_GetMibCycleCountsPct(ah, &rxc_pcnt, &rxf_pcnt, &txf_pcnt)) -+ ath_print(common, ATH_DBG_RESET, -+ "** BB busy times: rx_clear=%d%%, " -+ "rx_frame=%d%%, tx_frame=%d%% **\n", -+ rxc_pcnt, rxf_pcnt, txf_pcnt); -+ -+ ath_print(common, ATH_DBG_RESET, -+ "==== BB update: done ====\n\n"); -+} -+EXPORT_SYMBOL(ar9003_hw_bb_watchdog_dbg_info); ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h -@@ -483,10 +483,10 @@ - #define AR_PHY_TX_IQCAL_STATUS_B0 (AR_SM_BASE + 0x48c) - #define AR_PHY_TX_IQCAL_CORR_COEFF_01_B0 (AR_SM_BASE + 0x450) - --#define AR_PHY_PANIC_WD_STATUS (AR_SM_BASE + 0x5c0) --#define AR_PHY_PANIC_WD_CTL_1 (AR_SM_BASE + 0x5c4) --#define AR_PHY_PANIC_WD_CTL_2 (AR_SM_BASE + 0x5c8) --#define AR_PHY_BT_CTL (AR_SM_BASE + 0x5cc) -+#define AR_PHY_WATCHDOG_STATUS (AR_SM_BASE + 0x5c0) -+#define AR_PHY_WATCHDOG_CTL_1 (AR_SM_BASE + 0x5c4) -+#define AR_PHY_WATCHDOG_CTL_2 (AR_SM_BASE + 0x5c8) -+#define AR_PHY_WATCHDOG_CTL (AR_SM_BASE + 0x5cc) - #define AR_PHY_ONLY_WARMRESET (AR_SM_BASE + 0x5d0) - #define AR_PHY_ONLY_CTL (AR_SM_BASE + 0x5d4) - #define AR_PHY_ECO_CTRL (AR_SM_BASE + 0x5dc) -@@ -812,35 +812,35 @@ - #define AR_PHY_CAL_MEAS_2_9300_10(_i) (AR_PHY_IQ_ADC_MEAS_2_B0_9300_10 + (AR_PHY_CHAIN_OFFSET * (_i))) - #define AR_PHY_CAL_MEAS_3_9300_10(_i) (AR_PHY_IQ_ADC_MEAS_3_B0_9300_10 + (AR_PHY_CHAIN_OFFSET * (_i))) - --#define AR_PHY_BB_PANIC_NON_IDLE_ENABLE 0x00000001 --#define AR_PHY_BB_PANIC_IDLE_ENABLE 0x00000002 --#define AR_PHY_BB_PANIC_IDLE_MASK 0xFFFF0000 --#define AR_PHY_BB_PANIC_NON_IDLE_MASK 0x0000FFFC -- --#define AR_PHY_BB_PANIC_RST_ENABLE 0x00000002 --#define AR_PHY_BB_PANIC_IRQ_ENABLE 0x00000004 --#define AR_PHY_BB_PANIC_CNTL2_MASK 0xFFFFFFF9 -- --#define AR_PHY_BB_WD_STATUS 0x00000007 --#define AR_PHY_BB_WD_STATUS_S 0 --#define AR_PHY_BB_WD_DET_HANG 0x00000008 --#define AR_PHY_BB_WD_DET_HANG_S 3 --#define AR_PHY_BB_WD_RADAR_SM 0x000000F0 --#define AR_PHY_BB_WD_RADAR_SM_S 4 --#define AR_PHY_BB_WD_RX_OFDM_SM 0x00000F00 --#define AR_PHY_BB_WD_RX_OFDM_SM_S 8 --#define AR_PHY_BB_WD_RX_CCK_SM 0x0000F000 --#define AR_PHY_BB_WD_RX_CCK_SM_S 12 --#define AR_PHY_BB_WD_TX_OFDM_SM 0x000F0000 --#define AR_PHY_BB_WD_TX_OFDM_SM_S 16 --#define AR_PHY_BB_WD_TX_CCK_SM 0x00F00000 --#define AR_PHY_BB_WD_TX_CCK_SM_S 20 --#define AR_PHY_BB_WD_AGC_SM 0x0F000000 --#define AR_PHY_BB_WD_AGC_SM_S 24 --#define AR_PHY_BB_WD_SRCH_SM 0xF0000000 --#define AR_PHY_BB_WD_SRCH_SM_S 28 -+#define AR_PHY_WATCHDOG_NON_IDLE_ENABLE 0x00000001 -+#define AR_PHY_WATCHDOG_IDLE_ENABLE 0x00000002 -+#define AR_PHY_WATCHDOG_IDLE_MASK 0xFFFF0000 -+#define AR_PHY_WATCHDOG_NON_IDLE_MASK 0x0000FFFC -+ -+#define AR_PHY_WATCHDOG_RST_ENABLE 0x00000002 -+#define AR_PHY_WATCHDOG_IRQ_ENABLE 0x00000004 -+#define AR_PHY_WATCHDOG_CNTL2_MASK 0xFFFFFFF9 -+ -+#define AR_PHY_WATCHDOG_INFO 0x00000007 -+#define AR_PHY_WATCHDOG_INFO_S 0 -+#define AR_PHY_WATCHDOG_DET_HANG 0x00000008 -+#define AR_PHY_WATCHDOG_DET_HANG_S 3 -+#define AR_PHY_WATCHDOG_RADAR_SM 0x000000F0 -+#define AR_PHY_WATCHDOG_RADAR_SM_S 4 -+#define AR_PHY_WATCHDOG_RX_OFDM_SM 0x00000F00 -+#define AR_PHY_WATCHDOG_RX_OFDM_SM_S 8 -+#define AR_PHY_WATCHDOG_RX_CCK_SM 0x0000F000 -+#define AR_PHY_WATCHDOG_RX_CCK_SM_S 12 -+#define AR_PHY_WATCHDOG_TX_OFDM_SM 0x000F0000 -+#define AR_PHY_WATCHDOG_TX_OFDM_SM_S 16 -+#define AR_PHY_WATCHDOG_TX_CCK_SM 0x00F00000 -+#define AR_PHY_WATCHDOG_TX_CCK_SM_S 20 -+#define AR_PHY_WATCHDOG_AGC_SM 0x0F000000 -+#define AR_PHY_WATCHDOG_AGC_SM_S 24 -+#define AR_PHY_WATCHDOG_SRCH_SM 0xF0000000 -+#define AR_PHY_WATCHDOG_SRCH_SM_S 28 - --#define AR_PHY_BB_WD_STATUS_CLR 0x00000008 -+#define AR_PHY_WATCHDOG_STATUS_CLR 0x00000008 - - void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); - ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -23,6 +23,7 @@ - - #include "debug.h" - #include "common.h" -+#include "pktlog.h" - - /* - * Header for the ath9k.ko driver core *only* -- hw code nor any other driver -@@ -206,6 +207,69 @@ struct ath_txq { - u8 txq_tailidx; - }; - -+struct ath_atx_ac { -+ int sched; -+ int qnum; -+ struct list_head list; -+ struct list_head tid_q; -+}; -+ -+struct ath_buf_state { -+ int bfs_nframes; -+ u16 bfs_al; -+ u16 bfs_frmlen; -+ int bfs_seqno; -+ int bfs_tidno; -+ int bfs_retries; -+ u8 bf_type; -+ u32 bfs_keyix; -+ enum ath9k_key_type bfs_keytype; -+}; -+ -+struct ath_buf { -+ struct list_head list; -+ struct ath_buf *bf_lastbf; /* last buf of this unit (a frame or -+ an aggregate) */ -+ struct ath_buf *bf_next; /* next subframe in the aggregate */ -+ struct sk_buff *bf_mpdu; /* enclosing frame structure */ -+ void *bf_desc; /* virtual addr of desc */ -+ dma_addr_t bf_daddr; /* physical addr of desc */ -+ dma_addr_t bf_buf_addr; /* physical addr of data buffer */ -+ bool bf_stale; -+ bool bf_isnullfunc; -+ bool bf_tx_aborted; -+ u16 bf_flags; -+ struct ath_buf_state bf_state; -+ dma_addr_t bf_dmacontext; -+ struct ath_wiphy *aphy; -+}; -+ -+struct ath_atx_tid { -+ struct list_head list; -+ struct list_head buf_q; -+ struct ath_node *an; -+ struct ath_atx_ac *ac; -+ struct ath_buf *tx_buf[ATH_TID_MAX_BUFS]; -+ u16 seq_start; -+ u16 seq_next; -+ u16 baw_size; -+ int tidno; -+ int baw_head; /* first un-acked tx buffer */ -+ int baw_tail; /* next unused tx buffer slot */ -+ int sched; -+ int paused; -+ u8 state; -+}; -+ -+struct ath_node { -+ struct ath_common *common; -+ struct ath_atx_tid tid[WME_NUM_TID]; -+ struct ath_atx_ac ac[WME_NUM_AC]; -+ u16 maxampdu; -+ u8 mpdudensity; -+ int last_rssi; -+}; -+ - #define AGGR_CLEANUP BIT(1) - #define AGGR_ADDBA_COMPLETE BIT(2) - #define AGGR_ADDBA_PROGRESS BIT(3) -@@ -446,6 +510,7 @@ void ath_deinit_leds(struct ath_softc *s - #define SC_OP_TSF_RESET BIT(11) - #define SC_OP_BT_PRIORITY_DETECTED BIT(12) - #define SC_OP_BT_SCAN BIT(13) -+#define SC_OP_PKTLOGGING BIT(14) - - /* Powersave flags */ - #define PS_WAIT_FOR_BEACON BIT(0) -@@ -523,6 +588,10 @@ struct ath_softc { - #ifdef CONFIG_ATH9K_DEBUGFS - struct ath9k_debug debug; - #endif -+#ifdef CONFIG_ATH9K_PKTLOG -+ struct ath_pktlog_debugfs pktlog; -+#endif -+ bool is_pkt_logging; - struct ath_beacon_config cur_beacon_conf; - struct delayed_work tx_complete_work; - struct ath_btcoex btcoex; ---- a/drivers/net/wireless/ath/ath9k/beacon.c -+++ b/drivers/net/wireless/ath/ath9k/beacon.c -@@ -76,22 +76,13 @@ static void ath_beacon_setup(struct ath_ - ds = bf->bf_desc; - flags = ATH9K_TXDESC_NOACK; - -- if (((sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) || -- (sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT)) && -- (ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) { -- ds->ds_link = bf->bf_daddr; /* self-linked */ -- flags |= ATH9K_TXDESC_VEOL; -- /* Let hardware handle antenna switching. */ -- antenna = 0; -- } else { -- ds->ds_link = 0; -- /* -- * Switch antenna every beacon. -- * Should only switch every beacon period, not for every SWBA -- * XXX assumes two antennae -- */ -- antenna = ((sc->beacon.ast_be_xmit / sc->nbcnvifs) & 1 ? 2 : 1); -- } -+ ds->ds_link = 0; -+ /* -+ * Switch antenna every beacon. -+ * Should only switch every beacon period, not for every SWBA -+ * XXX assumes two antennae -+ */ -+ antenna = ((sc->beacon.ast_be_xmit / sc->nbcnvifs) & 1 ? 2 : 1); - - sband = &sc->sbands[common->hw->conf.channel->band]; - rate = sband->bitrates[rateidx].hw_value; -@@ -215,36 +206,6 @@ static struct ath_buf *ath_beacon_genera - return bf; - } - --/* -- * Startup beacon transmission for adhoc mode when they are sent entirely -- * by the hardware using the self-linked descriptor + veol trick. --*/ --static void ath_beacon_start_adhoc(struct ath_softc *sc, -- struct ieee80211_vif *vif) --{ -- struct ath_hw *ah = sc->sc_ah; -- struct ath_common *common = ath9k_hw_common(ah); -- struct ath_buf *bf; -- struct ath_vif *avp; -- struct sk_buff *skb; -- -- avp = (void *)vif->drv_priv; -- -- if (avp->av_bcbuf == NULL) -- return; -- -- bf = avp->av_bcbuf; -- skb = bf->bf_mpdu; -- -- ath_beacon_setup(sc, avp, bf, 0); -- -- /* NB: caller is known to have already stopped tx dma */ -- ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bf->bf_daddr); -- ath9k_hw_txstart(ah, sc->beacon.beaconq); -- ath_print(common, ATH_DBG_BEACON, "TXDP%u = %llx (%p)\n", -- sc->beacon.beaconq, ito64(bf->bf_daddr), bf->bf_desc); --} -- - int ath_beacon_alloc(struct ath_wiphy *aphy, struct ieee80211_vif *vif) - { - struct ath_softc *sc = aphy->sc; -@@ -265,7 +226,8 @@ int ath_beacon_alloc(struct ath_wiphy *a - list_del(&avp->av_bcbuf->list); - - if (sc->sc_ah->opmode == NL80211_IFTYPE_AP || -- !(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) { -+ sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC || -+ sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT) { - int slot; - /* - * Assign the vif to a beacon xmit slot. As -@@ -274,17 +236,11 @@ int ath_beacon_alloc(struct ath_wiphy *a - avp->av_bslot = 0; - for (slot = 0; slot < ATH_BCBUF; slot++) - if (sc->beacon.bslot[slot] == NULL) { -- /* -- * XXX hack, space out slots to better -- * deal with misses -- */ -- if (slot+1 < ATH_BCBUF && -- sc->beacon.bslot[slot+1] == NULL) { -- avp->av_bslot = slot+1; -- break; -- } - avp->av_bslot = slot; -+ - /* 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; -@@ -721,8 +677,7 @@ static void ath_beacon_config_adhoc(stru - * self-linked tx descriptor and let the hardware deal with things. - */ - intval |= ATH9K_BEACON_ENA; -- if (!(ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) -- ah->imask |= ATH9K_INT_SWBA; -+ ah->imask |= ATH9K_INT_SWBA; - - ath_beaconq_config(sc); - -@@ -732,10 +687,6 @@ static void ath_beacon_config_adhoc(stru - ath9k_beacon_init(sc, nexttbtt, intval); - sc->beacon.bmisscnt = 0; - ath9k_hw_set_interrupts(ah, ah->imask); -- -- /* FIXME: Handle properly when vif is NULL */ -- if (vif && ah->caps.hw_caps & ATH9K_HW_CAP_VEOL) -- ath_beacon_start_adhoc(sc, vif); - } - - void ath_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif) ---- a/drivers/net/wireless/ath/ath9k/common.c -+++ b/drivers/net/wireless/ath/ath9k/common.c -@@ -27,270 +27,6 @@ MODULE_AUTHOR("Atheros Communications"); - MODULE_DESCRIPTION("Shared library for Atheros wireless 802.11n LAN cards."); - MODULE_LICENSE("Dual BSD/GPL"); - --/* Common RX processing */ -- --/* Assumes you've already done the endian to CPU conversion */ --static bool ath9k_rx_accept(struct ath_common *common, -- struct sk_buff *skb, -- struct ieee80211_rx_status *rxs, -- struct ath_rx_status *rx_stats, -- bool *decrypt_error) --{ -- struct ath_hw *ah = common->ah; -- struct ieee80211_hdr *hdr; -- __le16 fc; -- -- hdr = (struct ieee80211_hdr *) skb->data; -- fc = hdr->frame_control; -- -- if (!rx_stats->rs_datalen) -- return false; -- /* -- * rs_status follows rs_datalen so if rs_datalen is too large -- * we can take a hint that hardware corrupted it, so ignore -- * those frames. -- */ -- if (rx_stats->rs_datalen > common->rx_bufsize) -- return false; -- -- /* -- * rs_more indicates chained descriptors which can be used -- * to link buffers together for a sort of scatter-gather -- * operation. -- * reject the frame, we don't support scatter-gather yet and -- * the frame is probably corrupt anyway -- */ -- if (rx_stats->rs_more) -- return false; -- -- /* -- * The rx_stats->rs_status will not be set until the end of the -- * chained descriptors so it can be ignored if rs_more is set. The -- * rs_more will be false at the last element of the chained -- * descriptors. -- */ -- if (rx_stats->rs_status != 0) { -- if (rx_stats->rs_status & ATH9K_RXERR_CRC) -- rxs->flag |= RX_FLAG_FAILED_FCS_CRC; -- if (rx_stats->rs_status & ATH9K_RXERR_PHY) -- return false; -- -- if (rx_stats->rs_status & ATH9K_RXERR_DECRYPT) { -- *decrypt_error = true; -- } else if (rx_stats->rs_status & ATH9K_RXERR_MIC) { -- if (ieee80211_is_ctl(fc)) -- /* -- * Sometimes, we get invalid -- * MIC failures on valid control frames. -- * Remove these mic errors. -- */ -- rx_stats->rs_status &= ~ATH9K_RXERR_MIC; -- else -- rxs->flag |= RX_FLAG_MMIC_ERROR; -- } -- /* -- * Reject error frames with the exception of -- * decryption and MIC failures. For monitor mode, -- * we also ignore the CRC error. -- */ -- if (ah->opmode == NL80211_IFTYPE_MONITOR) { -- if (rx_stats->rs_status & -- ~(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_MIC | -- ATH9K_RXERR_CRC)) -- return false; -- } else { -- if (rx_stats->rs_status & -- ~(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_MIC)) { -- return false; -- } -- } -- } -- return true; --} -- --static int ath9k_process_rate(struct ath_common *common, -- struct ieee80211_hw *hw, -- struct ath_rx_status *rx_stats, -- struct ieee80211_rx_status *rxs, -- struct sk_buff *skb) --{ -- struct ieee80211_supported_band *sband; -- enum ieee80211_band band; -- unsigned int i = 0; -- -- band = hw->conf.channel->band; -- sband = hw->wiphy->bands[band]; -- -- if (rx_stats->rs_rate & 0x80) { -- /* HT rate */ -- rxs->flag |= RX_FLAG_HT; -- if (rx_stats->rs_flags & ATH9K_RX_2040) -- rxs->flag |= RX_FLAG_40MHZ; -- if (rx_stats->rs_flags & ATH9K_RX_GI) -- rxs->flag |= RX_FLAG_SHORT_GI; -- rxs->rate_idx = rx_stats->rs_rate & 0x7f; -- return 0; -- } -- -- for (i = 0; i < sband->n_bitrates; i++) { -- if (sband->bitrates[i].hw_value == rx_stats->rs_rate) { -- rxs->rate_idx = i; -- return 0; -- } -- if (sband->bitrates[i].hw_value_short == rx_stats->rs_rate) { -- rxs->flag |= RX_FLAG_SHORTPRE; -- rxs->rate_idx = i; -- return 0; -- } -- } -- -- /* -- * No valid hardware bitrate found -- we should not get here -- * because hardware has already validated this frame as OK. -- */ -- ath_print(common, ATH_DBG_XMIT, "unsupported hw bitrate detected " -- "0x%02x using 1 Mbit\n", rx_stats->rs_rate); -- if ((common->debug_mask & ATH_DBG_XMIT)) -- print_hex_dump_bytes("", DUMP_PREFIX_NONE, skb->data, skb->len); -- -- return -EINVAL; --} -- --static void ath9k_process_rssi(struct ath_common *common, -- struct ieee80211_hw *hw, -- struct sk_buff *skb, -- struct ath_rx_status *rx_stats) --{ -- struct ath_hw *ah = common->ah; -- struct ieee80211_sta *sta; -- struct ieee80211_hdr *hdr; -- struct ath_node *an; -- int last_rssi = ATH_RSSI_DUMMY_MARKER; -- __le16 fc; -- -- hdr = (struct ieee80211_hdr *)skb->data; -- fc = hdr->frame_control; -- -- rcu_read_lock(); -- /* -- * XXX: use ieee80211_find_sta! This requires quite a bit of work -- * under the current ath9k virtual wiphy implementation as we have -- * no way of tying a vif to wiphy. Typically vifs are attached to -- * at least one sdata of a wiphy on mac80211 but with ath9k virtual -- * wiphy you'd have to iterate over every wiphy and each sdata. -- */ -- sta = ieee80211_find_sta_by_hw(hw, hdr->addr2); -- if (sta) { -- an = (struct ath_node *) sta->drv_priv; -- if (rx_stats->rs_rssi != ATH9K_RSSI_BAD && -- !rx_stats->rs_moreaggr) -- ATH_RSSI_LPF(an->last_rssi, rx_stats->rs_rssi); -- last_rssi = an->last_rssi; -- } -- rcu_read_unlock(); -- -- if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) -- rx_stats->rs_rssi = ATH_EP_RND(last_rssi, -- ATH_RSSI_EP_MULTIPLIER); -- if (rx_stats->rs_rssi < 0) -- rx_stats->rs_rssi = 0; -- -- /* Update Beacon RSSI, this is used by ANI. */ -- if (ieee80211_is_beacon(fc)) -- ah->stats.avgbrssi = rx_stats->rs_rssi; --} -- --/* -- * For Decrypt or Demic errors, we only mark packet status here and always push -- * up the frame up to let mac80211 handle the actual error case, be it no -- * decryption key or real decryption error. This let us keep statistics there. -- */ --int ath9k_cmn_rx_skb_preprocess(struct ath_common *common, -- struct ieee80211_hw *hw, -- struct sk_buff *skb, -- struct ath_rx_status *rx_stats, -- struct ieee80211_rx_status *rx_status, -- bool *decrypt_error) --{ -- struct ath_hw *ah = common->ah; -- -- memset(rx_status, 0, sizeof(struct ieee80211_rx_status)); -- -- /* -- * everything but the rate is checked here, the rate check is done -- * separately to avoid doing two lookups for a rate for each frame. -- */ -- if (!ath9k_rx_accept(common, skb, rx_status, rx_stats, decrypt_error)) -- return -EINVAL; -- -- ath9k_process_rssi(common, hw, skb, rx_stats); -- -- if (ath9k_process_rate(common, hw, rx_stats, rx_status, skb)) -- return -EINVAL; -- -- rx_status->mactime = ath9k_hw_extend_tsf(ah, rx_stats->rs_tstamp); -- rx_status->band = hw->conf.channel->band; -- rx_status->freq = hw->conf.channel->center_freq; -- rx_status->signal = ATH_DEFAULT_NOISE_FLOOR + rx_stats->rs_rssi; -- rx_status->antenna = rx_stats->rs_antenna; -- rx_status->flag |= RX_FLAG_TSFT; -- -- return 0; --} --EXPORT_SYMBOL(ath9k_cmn_rx_skb_preprocess); -- --void ath9k_cmn_rx_skb_postprocess(struct ath_common *common, -- struct sk_buff *skb, -- struct ath_rx_status *rx_stats, -- struct ieee80211_rx_status *rxs, -- bool decrypt_error) --{ -- struct ath_hw *ah = common->ah; -- struct ieee80211_hdr *hdr; -- int hdrlen, padpos, padsize; -- u8 keyix; -- __le16 fc; -- -- /* see if any padding is done by the hw and remove it */ -- hdr = (struct ieee80211_hdr *) skb->data; -- hdrlen = ieee80211_get_hdrlen_from_skb(skb); -- fc = hdr->frame_control; -- padpos = ath9k_cmn_padpos(hdr->frame_control); -- -- /* The MAC header is padded to have 32-bit boundary if the -- * packet payload is non-zero. The general calculation for -- * padsize would take into account odd header lengths: -- * padsize = (4 - padpos % 4) % 4; However, since only -- * even-length headers are used, padding can only be 0 or 2 -- * bytes and we can optimize this a bit. In addition, we must -- * not try to remove padding from short control frames that do -- * not have payload. */ -- padsize = padpos & 3; -- if (padsize && skb->len>=padpos+padsize+FCS_LEN) { -- memmove(skb->data + padsize, skb->data, padpos); -- skb_pull(skb, padsize); -- } -- -- keyix = rx_stats->rs_keyix; -- -- if (!(keyix == ATH9K_RXKEYIX_INVALID) && !decrypt_error && -- ieee80211_has_protected(fc)) { -- rxs->flag |= RX_FLAG_DECRYPTED; -- } else if (ieee80211_has_protected(fc) -- && !decrypt_error && skb->len >= hdrlen + 4) { -- keyix = skb->data[hdrlen + 3] >> 6; -- -- if (test_bit(keyix, common->keymap)) -- rxs->flag |= RX_FLAG_DECRYPTED; -- } -- if (ah->sw_mgmt_crypto && -- (rxs->flag & RX_FLAG_DECRYPTED) && -- ieee80211_is_mgmt(fc)) -- /* Use software decrypt for management frames. */ -- rxs->flag &= ~RX_FLAG_DECRYPTED; --} --EXPORT_SYMBOL(ath9k_cmn_rx_skb_postprocess); -- - int ath9k_cmn_padpos(__le16 frame_control) - { - int padpos = 24; ---- a/drivers/net/wireless/ath/ath9k/common.h -+++ b/drivers/net/wireless/ath/ath9k/common.h -@@ -52,82 +52,6 @@ - #define ATH_EP_RND(x, mul) \ - ((((x)%(mul)) >= ((mul)/2)) ? ((x) + ((mul) - 1)) / (mul) : (x)/(mul)) - --struct ath_atx_ac { -- int sched; -- int qnum; -- struct list_head list; -- struct list_head tid_q; --}; -- --struct ath_buf_state { -- int bfs_nframes; -- u16 bfs_al; -- u16 bfs_frmlen; -- int bfs_seqno; -- int bfs_tidno; -- int bfs_retries; -- u8 bf_type; -- u32 bfs_keyix; -- enum ath9k_key_type bfs_keytype; --}; -- --struct ath_buf { -- struct list_head list; -- struct ath_buf *bf_lastbf; /* last buf of this unit (a frame or -- an aggregate) */ -- struct ath_buf *bf_next; /* next subframe in the aggregate */ -- struct sk_buff *bf_mpdu; /* enclosing frame structure */ -- void *bf_desc; /* virtual addr of desc */ -- dma_addr_t bf_daddr; /* physical addr of desc */ -- dma_addr_t bf_buf_addr; /* physical addr of data buffer */ -- bool bf_stale; -- bool bf_isnullfunc; -- bool bf_tx_aborted; -- u16 bf_flags; -- struct ath_buf_state bf_state; -- dma_addr_t bf_dmacontext; -- struct ath_wiphy *aphy; --}; -- --struct ath_atx_tid { -- struct list_head list; -- struct list_head buf_q; -- struct ath_node *an; -- struct ath_atx_ac *ac; -- struct ath_buf *tx_buf[ATH_TID_MAX_BUFS]; -- u16 seq_start; -- u16 seq_next; -- u16 baw_size; -- int tidno; -- int baw_head; /* first un-acked tx buffer */ -- int baw_tail; /* next unused tx buffer slot */ -- int sched; -- int paused; -- u8 state; --}; -- --struct ath_node { -- struct ath_common *common; -- struct ath_atx_tid tid[WME_NUM_TID]; -- struct ath_atx_ac ac[WME_NUM_AC]; -- u16 maxampdu; -- u8 mpdudensity; -- int last_rssi; --}; -- --int ath9k_cmn_rx_skb_preprocess(struct ath_common *common, -- struct ieee80211_hw *hw, -- struct sk_buff *skb, -- struct ath_rx_status *rx_stats, -- struct ieee80211_rx_status *rx_status, -- bool *decrypt_error); -- --void ath9k_cmn_rx_skb_postprocess(struct ath_common *common, -- struct sk_buff *skb, -- struct ath_rx_status *rx_stats, -- struct ieee80211_rx_status *rxs, -- bool decrypt_error); -- - int ath9k_cmn_padpos(__le16 frame_control); - int ath9k_cmn_get_hw_crypto_keytype(struct sk_buff *skb); - void ath9k_cmn_update_ichannel(struct ieee80211_hw *hw, ---- a/drivers/net/wireless/ath/ath9k/debug.c -+++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -15,6 +15,7 @@ - */ - - #include -+#include - #include - - #include "ath9k.h" -@@ -32,6 +33,19 @@ static int ath9k_debugfs_open(struct ino - return 0; - } - -+static ssize_t ath9k_debugfs_read_buf(struct file *file, char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ u8 *buf = file->private_data; -+ return simple_read_from_buffer(user_buf, count, ppos, buf, strlen(buf)); -+} -+ -+static int ath9k_debugfs_release_buf (struct inode *inode, struct file *file) -+{ -+ vfree(file->private_data); -+ return 0; -+} -+ - #ifdef CONFIG_ATH_DEBUG - - static ssize_t read_file_debug(struct file *file, char __user *user_buf, -@@ -269,6 +283,8 @@ void ath_debug_stat_interrupt(struct ath - sc->debug.stats.istats.rxlp++; - if (status & ATH9K_INT_RXHP) - sc->debug.stats.istats.rxhp++; -+ if (status & ATH9K_INT_BB_WATCHDOG) -+ sc->debug.stats.istats.bb_watchdog++; - } else { - if (status & ATH9K_INT_RX) - sc->debug.stats.istats.rxok++; -@@ -319,6 +335,9 @@ static ssize_t read_file_interrupt(struc - "%8s: %10u\n", "RXLP", sc->debug.stats.istats.rxlp); - len += snprintf(buf + len, sizeof(buf) - len, - "%8s: %10u\n", "RXHP", sc->debug.stats.istats.rxhp); -+ len += snprintf(buf + len, sizeof(buf) - len, -+ "%8s: %10u\n", "WATCHDOG", -+ sc->debug.stats.istats.bb_watchdog); - } else { - len += snprintf(buf + len, sizeof(buf) - len, - "%8s: %10u\n", "RX", sc->debug.stats.istats.rxok); -@@ -871,7 +890,38 @@ static ssize_t write_file_regval(struct - static const struct file_operations fops_regval = { - .read = read_file_regval, - .write = write_file_regval, -- .open = ath9k_debugfs_open, -+}; -+ -+#define REGDUMP_LINE_SIZE 20 -+#define REGDUMP_NUM_REGS (0x16bd4 / 4 + 1) -+#define REGDUMP_DATA_LEN (REGDUMP_NUM_REGS * REGDUMP_LINE_SIZE + 1) -+ -+static int open_file_regdump(struct inode *inode, struct file *file) -+{ -+ struct ath_softc *sc = inode->i_private; -+ unsigned int len = 0; -+ u8 *buf; -+ int i; -+ -+ buf = vmalloc(REGDUMP_DATA_LEN); -+ if (!buf) -+ return -ENOMEM; -+ -+ ath9k_ps_wakeup(sc); -+ for (i = 0; i < REGDUMP_NUM_REGS; i++) -+ len += scnprintf(buf + len, REGDUMP_DATA_LEN - len, -+ "0x%06x 0x%08x\n", i << 2, REG_READ(sc->sc_ah, i << 2)); -+ ath9k_ps_restore(sc); -+ -+ file->private_data = buf; -+ -+ return 0; -+} -+ -+static const struct file_operations fops_regdump = { -+ .open = open_file_regdump, -+ .read = ath9k_debugfs_read_buf, -+ .release = ath9k_debugfs_release_buf, - .owner = THIS_MODULE - }; - -@@ -935,6 +985,16 @@ int ath9k_init_debug(struct ath_hw *ah) - goto err; - - sc->debug.regidx = 0; -+ -+ if (!debugfs_create_file("regdump", S_IRUSR, sc->debug.debugfs_phy, -+ sc, &fops_regdump)) -+ goto err; -+ -+#ifdef CONFIG_ATH9K_PKTLOG -+ if (ath9k_init_pktlog(sc) != 0) -+ goto err; -+#endif -+ - return 0; - err: - ath9k_exit_debug(ah); -@@ -946,6 +1006,10 @@ void ath9k_exit_debug(struct ath_hw *ah) - struct ath_common *common = ath9k_hw_common(ah); - struct ath_softc *sc = (struct ath_softc *) common->priv; - -+#ifdef CONFIG_ATH9K_PKTLOG -+ ath9k_deinit_pktlog(sc); -+#endif -+ debugfs_remove(sc->debug.debugfs_regdump); - debugfs_remove_recursive(sc->debug.debugfs_phy); - } - ---- a/drivers/net/wireless/ath/ath9k/debug.h -+++ b/drivers/net/wireless/ath/ath9k/debug.h -@@ -53,6 +53,7 @@ struct ath_buf; - * @cabend: RX End of CAB traffic - * @dtimsync: DTIM sync lossage - * @dtim: RX Beacon with DTIM -+ * @bb_watchdog: Baseband watchdog - */ - struct ath_interrupt_stats { - u32 total; -@@ -76,6 +77,7 @@ struct ath_interrupt_stats { - u32 cabend; - u32 dtimsync; - u32 dtim; -+ u32 bb_watchdog; - }; - - struct ath_rc_stats { -@@ -154,6 +156,14 @@ struct ath_stats { - struct ath9k_debug { - struct dentry *debugfs_phy; - u32 regidx; -+ struct dentry *debugfs_debug; -+ struct dentry *debugfs_dma; -+ struct dentry *debugfs_interrupt; -+ struct dentry *debugfs_rcstat; -+ struct dentry *debugfs_wiphy; -+ struct dentry *debugfs_xmit; -+ struct dentry *debugfs_recv; -+ struct dentry *debugfs_regdump; - struct ath_stats stats; - }; - ---- a/drivers/net/wireless/ath/ath9k/hw-ops.h -+++ b/drivers/net/wireless/ath/ath9k/hw-ops.h -@@ -67,9 +67,10 @@ static inline void ath9k_hw_filltxdesc(s - } - - static inline int ath9k_hw_txprocdesc(struct ath_hw *ah, void *ds, -- struct ath_tx_status *ts) -+ struct ath_tx_status *ts, -+ void *txs_desc) - { -- return ath9k_hw_ops(ah)->proc_txdesc(ah, ds, ts); -+ return ath9k_hw_ops(ah)->proc_txdesc(ah, ds, ts, txs_desc); - } - - static inline void ath9k_hw_set11n_txdesc(struct ath_hw *ah, void *ds, ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -395,12 +395,6 @@ static void ath9k_hw_init_config(struct - ah->config.rx_intr_mitigation = true; - - /* -- * Tx IQ Calibration (ah->config.tx_iq_calibration) is only -- * used by AR9003, but it is showing reliability issues. -- * It will take a while to fix so this is currently disabled. -- */ -- -- /* - * We need this for PCI devices only (Cardbus, PCI, miniPCI) - * _and_ if on non-uniprocessor systems (Multiprocessor/HT). - * This means we use it for all AR5416 devices, and the few -@@ -639,6 +633,7 @@ static int __ath9k_hw_init(struct ath_hw - ar9003_hw_set_nf_limits(ah); - - ath9k_init_nfcal_hist_buffer(ah); -+ ah->bb_watchdog_timeout_ms = 25; - - common->state = ATH_HW_INITIALIZED; - -@@ -1453,6 +1448,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st - if (AR_SREV_9300_20_OR_LATER(ah)) { - ath9k_hw_loadnf(ah, curchan); - ath9k_hw_start_nfcal(ah); -+ ar9003_hw_bb_watchdog_config(ah); - } - - return 0; -@@ -2177,7 +2173,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw - pCap->hw_caps |= ATH9K_HW_CAP_RFSILENT; - } - #endif -- if (AR_SREV_9271(ah)) -+ if (AR_SREV_9271(ah) || AR_SREV_9300_20_OR_LATER(ah)) - pCap->hw_caps |= ATH9K_HW_CAP_AUTOSLEEP; - else - pCap->hw_caps &= ~ATH9K_HW_CAP_AUTOSLEEP; -@@ -2244,6 +2240,9 @@ int ath9k_hw_fill_cap_info(struct ath_hw - if (AR_SREV_9300_20_OR_LATER(ah)) - pCap->hw_caps |= ATH9K_HW_CAP_RAC_SUPPORTED; - -+ if (AR_SREV_9287_10_OR_LATER(ah)) -+ pCap->hw_caps |= ATH9K_HW_CAP_SGI_20; -+ - return 0; - } - -@@ -2478,7 +2477,7 @@ void ath9k_hw_setrxfilter(struct ath_hw - phybits |= AR_PHY_ERR_RADAR; - if (bits & ATH9K_RX_FILTER_PHYERR) - phybits |= AR_PHY_ERR_OFDM_TIMING | AR_PHY_ERR_CCK_TIMING; -- REG_WRITE(ah, AR_PHY_ERR, phybits); -+ REG_WRITE(ah, AR_PHY_ERR, 0xffffffff); - - if (phybits) - REG_WRITE(ah, AR_RXCFG, ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -199,6 +199,7 @@ enum ath9k_hw_caps { - ATH9K_HW_CAP_RAC_SUPPORTED = BIT(18), - ATH9K_HW_CAP_LDPC = BIT(19), - ATH9K_HW_CAP_FASTCLOCK = BIT(20), -+ ATH9K_HW_CAP_SGI_20 = BIT(21), - }; - - enum ath9k_capability_type { -@@ -262,7 +263,6 @@ struct ath9k_ops_config { - #define AR_BASE_FREQ_5GHZ 4900 - #define AR_SPUR_FEEQ_BOUND_HT40 19 - #define AR_SPUR_FEEQ_BOUND_HT20 10 -- bool tx_iq_calibration; /* Only available for >= AR9003 */ - int spurmode; - u16 spurchans[AR_EEPROM_MODAL_SPURS][2]; - u8 max_txtrig_level; -@@ -279,6 +279,7 @@ enum ath9k_int { - ATH9K_INT_TX = 0x00000040, - ATH9K_INT_TXDESC = 0x00000080, - ATH9K_INT_TIM_TIMER = 0x00000100, -+ ATH9K_INT_BB_WATCHDOG = 0x00000400, - ATH9K_INT_TXURN = 0x00000800, - ATH9K_INT_MIB = 0x00001000, - ATH9K_INT_RXPHY = 0x00004000, -@@ -581,7 +582,7 @@ struct ath_hw_ops { - const void *ds0, dma_addr_t buf_addr, - unsigned int qcu); - int (*proc_txdesc)(struct ath_hw *ah, void *ds, -- struct ath_tx_status *ts); -+ struct ath_tx_status *ts, void* txs_desc); - void (*set11n_txdesc)(struct ath_hw *ah, void *ds, - u32 pktLen, enum ath9k_pkt_type type, - u32 txPower, u32 keyIx, -@@ -789,6 +790,11 @@ struct ath_hw { - u32 ts_paddr_end; - u16 ts_tail; - u8 ts_size; -+ -+ u32 bb_watchdog_last_status; -+ u32 bb_watchdog_timeout_ms; /* in ms, 0 to disable */ -+ -+ bool is_pkt_logging; - }; - - static inline struct ath_common *ath9k_hw_common(struct ath_hw *ah) -@@ -910,10 +916,13 @@ void ar9002_hw_enable_async_fifo(struct - void ar9002_hw_enable_wep_aggregation(struct ath_hw *ah); - - /* -- * Code specifric to AR9003, we stuff these here to avoid callbacks -+ * Code specific to AR9003, we stuff these here to avoid callbacks - * for older families - */ - void ar9003_hw_set_nf_limits(struct ath_hw *ah); -+void ar9003_hw_bb_watchdog_config(struct ath_hw *ah); -+void ar9003_hw_bb_watchdog_read(struct ath_hw *ah); -+void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah); - - /* Hardware family op attach helpers */ - void ar5008_hw_attach_phy_ops(struct ath_hw *ah); ---- a/drivers/net/wireless/ath/ath9k/init.c -+++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -209,6 +209,9 @@ static void setup_ht_cap(struct ath_soft - if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_LDPC) - ht_info->cap |= IEEE80211_HT_CAP_LDPC_CODING; - -+ if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_SGI_20) -+ ht_info->cap |= IEEE80211_HT_CAP_SGI_20; -+ - ht_info->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; - ht_info->ampdu_density = IEEE80211_HT_MPDU_DENSITY_8; - ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -521,6 +521,12 @@ irqreturn_t ath_isr(int irq, void *dev) - !(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA))) - goto chip_reset; - -+ if ((ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) && -+ (status & ATH9K_INT_BB_WATCHDOG)) { -+ ar9003_hw_bb_watchdog_dbg_info(ah); -+ goto chip_reset; -+ } -+ - if (status & ATH9K_INT_SWBA) - tasklet_schedule(&sc->bcon_tasklet); - -@@ -1196,7 +1202,9 @@ static int ath9k_start(struct ieee80211_ - ATH9K_INT_GLOBAL; - - if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) -- ah->imask |= ATH9K_INT_RXHP | ATH9K_INT_RXLP; -+ ah->imask |= ATH9K_INT_RXHP | -+ ATH9K_INT_RXLP | -+ ATH9K_INT_BB_WATCHDOG; - else - ah->imask |= ATH9K_INT_RX; - -@@ -1275,7 +1283,8 @@ static int ath9k_tx(struct ieee80211_hw - * completed and if needed, also for RX of buffered frames. - */ - ath9k_ps_wakeup(sc); -- ath9k_hw_setrxabort(sc->sc_ah, 0); -+ if (!(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_AUTOSLEEP)) -+ ath9k_hw_setrxabort(sc->sc_ah, 0); - if (ieee80211_is_pspoll(hdr->frame_control)) { - ath_print(common, ATH_DBG_PS, - "Sending PS-Poll to pick a buffered frame\n"); -@@ -1539,8 +1548,8 @@ void ath9k_enable_ps(struct ath_softc *s - ah->imask |= ATH9K_INT_TIM_TIMER; - ath9k_hw_set_interrupts(ah, ah->imask); - } -+ ath9k_hw_setrxabort(ah, 1); - } -- ath9k_hw_setrxabort(ah, 1); - } - - static int ath9k_config(struct ieee80211_hw *hw, u32 changed) ---- a/drivers/net/wireless/ath/ath9k/pci.c -+++ b/drivers/net/wireless/ath/ath9k/pci.c -@@ -29,6 +29,7 @@ static DEFINE_PCI_DEVICE_TABLE(ath_pci_i - { PCI_VDEVICE(ATHEROS, 0x002C) }, /* PCI-E 802.11n bonded out */ - { PCI_VDEVICE(ATHEROS, 0x002D) }, /* PCI */ - { PCI_VDEVICE(ATHEROS, 0x002E) }, /* PCI-E */ -+ { PCI_VDEVICE(ATHEROS, 0x0030) }, /* PCI-E AR9300 */ - { 0 } - }; - ---- /dev/null -+++ b/drivers/net/wireless/ath/ath9k/pktlog.c -@@ -0,0 +1,783 @@ -+ -+#include -+#include -+#include "ath9k.h" -+ -+static int ath9k_debugfs_open(struct inode *inode, struct file *file) -+{ -+ file->private_data = inode->i_private; -+ return 0; -+} -+ -+static struct page *pktlog_virt_to_logical(void *addr) -+{ -+ struct page *page; -+ unsigned long vpage = 0UL; -+ -+ page = vmalloc_to_page(addr); -+ if (page) { -+ vpage = (unsigned long) page_address(page); -+ vpage |= ((unsigned long) addr & (PAGE_SIZE - 1)); -+ } -+ return virt_to_page((void *) vpage); -+} -+ -+static void ath_pktlog_release(struct ath_pktlog *pktlog) -+{ -+ unsigned long page_cnt, vaddr; -+ struct page *page; -+ -+ page_cnt = -+ ((sizeof(*(pktlog->pktlog_buf)) + -+ pktlog->pktlog_buf_size) / PAGE_SIZE) + 1; -+ -+ for (vaddr = (unsigned long) (pktlog->pktlog_buf); vaddr < -+ (unsigned long) (pktlog->pktlog_buf) + -+ (page_cnt * PAGE_SIZE); -+ vaddr += PAGE_SIZE) { -+ page = pktlog_virt_to_logical((void *) vaddr); -+ clear_bit(PG_reserved, &page->flags); -+ } -+ -+ vfree(pktlog->pktlog_buf); -+ pktlog->pktlog_buf = NULL; -+} -+ -+static int ath_alloc_pktlog_buf(struct ath_softc *sc) -+{ -+ u32 page_cnt; -+ unsigned long vaddr; -+ struct page *page; -+ struct ath_pktlog *pktlog = &sc->pktlog.pktlog; -+ -+ if (pktlog->pktlog_buf_size == 0) -+ return -EINVAL; -+ -+ page_cnt = (sizeof(*(pktlog->pktlog_buf)) + -+ pktlog->pktlog_buf_size) / PAGE_SIZE; -+ -+ pktlog->pktlog_buf = vmalloc((page_cnt + 2) * PAGE_SIZE); -+ if (pktlog->pktlog_buf == NULL) { -+ printk(KERN_ERR "Failed to allocate memory for pktlog"); -+ return -ENOMEM; -+ } -+ -+ pktlog->pktlog_buf = (struct ath_pktlog_buf *) -+ (((unsigned long) -+ (pktlog->pktlog_buf) -+ + PAGE_SIZE - 1) & PAGE_MASK); -+ -+ for (vaddr = (unsigned long) (pktlog->pktlog_buf); -+ vaddr < ((unsigned long) (pktlog->pktlog_buf) -+ + (page_cnt * PAGE_SIZE)); vaddr += PAGE_SIZE) { -+ page = pktlog_virt_to_logical((void *)vaddr); -+ set_bit(PG_reserved, &page->flags); -+ } -+ -+ return 0; -+} -+ -+static void ath_init_pktlog_buf(struct ath_pktlog *pktlog) -+{ -+ pktlog->pktlog_buf->bufhdr.magic_num = PKTLOG_MAGIC_NUM; -+ pktlog->pktlog_buf->bufhdr.version = CUR_PKTLOG_VER; -+ pktlog->pktlog_buf->rd_offset = -1; -+ pktlog->pktlog_buf->wr_offset = 0; -+ if (pktlog->pktlog_filter == 0) -+ pktlog->pktlog_filter = ATH_PKTLOG_FILTER_DEFAULT; -+} -+ -+static char *ath_pktlog_getbuf(struct ath_pktlog *pl_info, -+ u16 log_type, size_t log_size, -+ u32 flags) -+{ -+ struct ath_pktlog_buf *log_buf; -+ struct ath_pktlog_hdr *log_hdr; -+ int32_t cur_wr_offset, buf_size; -+ char *log_ptr; -+ -+ log_buf = pl_info->pktlog_buf; -+ buf_size = pl_info->pktlog_buf_size; -+ -+ spin_lock_bh(&pl_info->pktlog_lock); -+ cur_wr_offset = log_buf->wr_offset; -+ /* Move read offset to the next entry if there is a buffer overlap */ -+ if (log_buf->rd_offset >= 0) { -+ if ((cur_wr_offset <= log_buf->rd_offset) -+ && (cur_wr_offset + -+ sizeof(struct ath_pktlog_hdr)) > -+ log_buf->rd_offset) -+ PKTLOG_MOV_RD_IDX(log_buf->rd_offset, log_buf, -+ buf_size); -+ } else { -+ log_buf->rd_offset = cur_wr_offset; -+ } -+ -+ log_hdr = -+ (struct ath_pktlog_hdr *) (log_buf->log_data + cur_wr_offset); -+ log_hdr->log_type = log_type; -+ log_hdr->flags = flags; -+ log_hdr->timestamp = jiffies; -+ log_hdr->size = (u16) log_size; -+ -+ cur_wr_offset += sizeof(*log_hdr); -+ -+ if ((buf_size - cur_wr_offset) < log_size) { -+ while ((cur_wr_offset <= log_buf->rd_offset) -+ && (log_buf->rd_offset < buf_size)) -+ PKTLOG_MOV_RD_IDX(log_buf->rd_offset, log_buf, -+ buf_size); -+ cur_wr_offset = 0; -+ } -+ -+ while ((cur_wr_offset <= log_buf->rd_offset) -+ && (cur_wr_offset + log_size) > log_buf->rd_offset) -+ PKTLOG_MOV_RD_IDX(log_buf->rd_offset, log_buf, buf_size); -+ -+ log_ptr = &(log_buf->log_data[cur_wr_offset]); -+ -+ cur_wr_offset += log_hdr->size; -+ -+ log_buf->wr_offset = -+ ((buf_size - cur_wr_offset) >= -+ sizeof(struct ath_pktlog_hdr)) ? cur_wr_offset : 0; -+ spin_unlock_bh(&pl_info->pktlog_lock); -+ -+ return log_ptr; -+} -+ -+static void ath9k_hw_get_descinfo(struct ath_hw *ah, struct ath_desc_info *desc_info) -+{ -+ desc_info->txctl_numwords = TXCTL_NUMWORDS(ah); -+ desc_info->txctl_offset = TXCTL_OFFSET(ah); -+ desc_info->txstatus_numwords = TXSTATUS_NUMWORDS(ah); -+ desc_info->txstatus_offset = TXSTATUS_OFFSET(ah); -+ -+ desc_info->rxctl_numwords = RXCTL_NUMWORDS(ah); -+ desc_info->rxctl_offset = RXCTL_OFFSET(ah); -+ desc_info->rxstatus_numwords = RXSTATUS_NUMWORDS(ah); -+ desc_info->rxstatus_offset = RXSTATUS_OFFSET(ah); -+} -+ -+static int pktlog_pgfault(struct vm_area_struct *vma, struct vm_fault *vmf) -+{ -+ unsigned long address = (unsigned long) vmf->virtual_address; -+ -+ if (address == 0UL) -+ return VM_FAULT_NOPAGE; -+ -+ if (vmf->pgoff > vma->vm_end) -+ return VM_FAULT_SIGBUS; -+ -+ get_page(virt_to_page(address)); -+ vmf->page = virt_to_page(address); -+ return VM_FAULT_MINOR; -+} -+ -+static struct vm_operations_struct pktlog_vmops = { -+ .fault = pktlog_pgfault -+}; -+ -+static int ath_pktlog_mmap(struct file *file, struct vm_area_struct *vma) -+{ -+ struct ath_softc *sc = file->private_data; -+ -+ /* entire buffer should be mapped */ -+ if (vma->vm_pgoff != 0) -+ return -EINVAL; -+ -+ if (!sc->pktlog.pktlog.pktlog_buf) { -+ printk(KERN_ERR "Can't allocate pktlog buf"); -+ return -ENOMEM; -+ } -+ -+ vma->vm_flags |= VM_LOCKED; -+ vma->vm_ops = &pktlog_vmops; -+ -+ return 0; -+} -+ -+static ssize_t ath_pktlog_read(struct file *file, char __user *userbuf, -+ size_t count, loff_t *ppos) -+{ -+ size_t bufhdr_size; -+ size_t nbytes = 0, ret_val = 0; -+ int rem_len; -+ int start_offset, end_offset; -+ int fold_offset, ppos_data, cur_rd_offset; -+ struct ath_softc *sc = file->private_data; -+ struct ath_pktlog *pktlog_info = &sc->pktlog.pktlog; -+ struct ath_pktlog_buf *log_buf = pktlog_info->pktlog_buf; -+ -+ if (log_buf == NULL) -+ return 0; -+ -+ bufhdr_size = sizeof(log_buf->bufhdr); -+ -+ /* copy valid log entries from circular buffer into user space */ -+ rem_len = count; -+ -+ nbytes = 0; -+ -+ if (*ppos < bufhdr_size) { -+ nbytes = min((int) (bufhdr_size - *ppos), rem_len); -+ if (copy_to_user(userbuf, -+ ((char *) &log_buf->bufhdr) + *ppos, nbytes)) -+ return -EFAULT; -+ rem_len -= nbytes; -+ ret_val += nbytes; -+ } -+ -+ start_offset = log_buf->rd_offset; -+ -+ if ((rem_len == 0) || (start_offset < 0)) -+ goto read_done; -+ -+ fold_offset = -1; -+ cur_rd_offset = start_offset; -+ -+ /* Find the last offset and fold-offset if the buffer is folded */ -+ do { -+ struct ath_pktlog_hdr *log_hdr; -+ int log_data_offset; -+ -+ log_hdr = -+ (struct ath_pktlog_hdr *) (log_buf->log_data + -+ cur_rd_offset); -+ -+ log_data_offset = cur_rd_offset + sizeof(struct ath_pktlog_hdr); -+ -+ if ((fold_offset == -1) -+ && ((pktlog_info->pktlog_buf_size - -+ log_data_offset) <= log_hdr->size)) -+ fold_offset = log_data_offset - 1; -+ -+ PKTLOG_MOV_RD_IDX(cur_rd_offset, log_buf, -+ pktlog_info->pktlog_buf_size); -+ -+ if ((fold_offset == -1) && (cur_rd_offset == 0) -+ && (cur_rd_offset != log_buf->wr_offset)) -+ fold_offset = log_data_offset + log_hdr->size - 1; -+ -+ end_offset = log_data_offset + log_hdr->size - 1; -+ } while (cur_rd_offset != log_buf->wr_offset); -+ -+ ppos_data = *ppos + ret_val - bufhdr_size + start_offset; -+ -+ if (fold_offset == -1) { -+ if (ppos_data > end_offset) -+ goto read_done; -+ -+ nbytes = min(rem_len, end_offset - ppos_data + 1); -+ if (copy_to_user(userbuf + ret_val, -+ log_buf->log_data + ppos_data, nbytes)) -+ return -EFAULT; -+ ret_val += nbytes; -+ rem_len -= nbytes; -+ } else { -+ if (ppos_data <= fold_offset) { -+ nbytes = min(rem_len, fold_offset - ppos_data + 1); -+ if (copy_to_user(userbuf + ret_val, -+ log_buf->log_data + ppos_data, -+ nbytes)) -+ return -EFAULT; -+ ret_val += nbytes; -+ rem_len -= nbytes; -+ } -+ -+ if (rem_len == 0) -+ goto read_done; -+ -+ ppos_data = -+ *ppos + ret_val - (bufhdr_size + -+ (fold_offset - start_offset + 1)); -+ -+ if (ppos_data <= end_offset) { -+ nbytes = min(rem_len, end_offset - ppos_data + 1); -+ if (copy_to_user(userbuf + ret_val, log_buf->log_data -+ + ppos_data, -+ nbytes)) -+ return -EFAULT; -+ ret_val += nbytes; -+ rem_len -= nbytes; -+ } -+ } -+ -+read_done: -+ *ppos += ret_val; -+ -+ return ret_val; -+} -+ -+static const struct file_operations fops_pktlog_dump = { -+ .read = ath_pktlog_read, -+ .mmap = ath_pktlog_mmap, -+ .open = ath9k_debugfs_open -+}; -+ -+static ssize_t write_pktlog_start(struct file *file, const char __user *ubuf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ struct ath_pktlog *pktlog = &sc->pktlog.pktlog; -+ char buf[32]; -+ int buf_size; -+ int start_pktlog, err; -+ -+ buf_size = min(count, sizeof(buf) - 1); -+ if (copy_from_user(buf, ubuf, buf_size)) -+ return -EFAULT; -+ -+ sscanf(buf, "%d", &start_pktlog); -+ if (start_pktlog) { -+ if (pktlog->pktlog_buf != NULL) -+ ath_pktlog_release(pktlog); -+ -+ err = ath_alloc_pktlog_buf(sc); -+ if (err != 0) -+ return err; -+ -+ ath_init_pktlog_buf(pktlog); -+ pktlog->pktlog_buf->rd_offset = -1; -+ pktlog->pktlog_buf->wr_offset = 0; -+ sc->is_pkt_logging = 1; -+ } else { -+ sc->is_pkt_logging = 0; -+ } -+ -+ sc->sc_ah->is_pkt_logging = sc->is_pkt_logging; -+ return count; -+} -+ -+static ssize_t read_pktlog_start(struct file *file, char __user *ubuf, -+ size_t count, loff_t *ppos) -+{ -+ char buf[32]; -+ struct ath_softc *sc = file->private_data; -+ int len = 0; -+ -+ len = scnprintf(buf, sizeof(buf) - len, "%d", sc->is_pkt_logging); -+ return simple_read_from_buffer(ubuf, count, ppos, buf, len); -+} -+ -+static const struct file_operations fops_pktlog_start = { -+ .read = read_pktlog_start, -+ .write = write_pktlog_start, -+ .open = ath9k_debugfs_open -+}; -+ -+static ssize_t pktlog_size_write(struct file *file, const char __user *ubuf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ char buf[32]; -+ u32 pktlog_size; -+ int buf_size; -+ -+ buf_size = min(count, sizeof(buf) - 1); -+ if (copy_from_user(buf, ubuf, buf_size)) -+ return -EFAULT; -+ -+ sscanf(buf, "%d", &pktlog_size); -+ -+ if (pktlog_size == sc->pktlog.pktlog.pktlog_buf_size) -+ return count; -+ -+ if (sc->is_pkt_logging) { -+ printk(KERN_DEBUG "Stop packet logging before" -+ " changing the pktlog size \n"); -+ return -EINVAL; -+ } -+ -+ sc->pktlog.pktlog.pktlog_buf_size = pktlog_size; -+ -+ return count; -+} -+ -+static ssize_t pktlog_size_read(struct file *file, char __user *ubuf, -+ size_t count, loff_t *ppos) -+{ -+ char buf[32]; -+ struct ath_softc *sc = file->private_data; -+ int len = 0; -+ -+ len = scnprintf(buf, sizeof(buf) - len, "%ul", -+ sc->pktlog.pktlog.pktlog_buf_size); -+ return simple_read_from_buffer(ubuf, count, ppos, buf, len); -+} -+ -+static const struct file_operations fops_pktlog_size = { -+ .read = pktlog_size_read, -+ .write = pktlog_size_write, -+ .open = ath9k_debugfs_open -+}; -+ -+static ssize_t pktlog_filter_write(struct file *file, const char __user *ubuf, -+ size_t count, loff_t *ppos) -+{ -+ char buf[32]; -+ struct ath_softc *sc = file->private_data; -+ u32 filter; -+ int buf_count; -+ -+ buf_count = min(count, sizeof(buf) - 1); -+ if (copy_from_user(buf, ubuf, buf_count)) -+ return -EFAULT; -+ -+ if (sscanf(buf, "%x", &filter)) -+ sc->pktlog.pktlog.pktlog_filter = filter; -+ else -+ sc->pktlog.pktlog.pktlog_filter = 0; -+ -+ return count; -+} -+ -+static ssize_t pktlog_filter_read(struct file *file, char __user *ubuf, -+ size_t count, loff_t *ppos) -+{ -+ char buf[32]; -+ struct ath_softc *sc = file->private_data; -+ int len = 0; -+ -+ len = scnprintf(buf, sizeof(buf) - len, "%ul", -+ sc->pktlog.pktlog.pktlog_filter); -+ -+ return simple_read_from_buffer(ubuf, count, ppos, buf, len); -+} -+ -+static const struct file_operations fops_pktlog_filter = { -+ .read = pktlog_filter_read, -+ .write = pktlog_filter_write, -+ .open = ath9k_debugfs_open -+}; -+ -+void ath_pktlog_txctl(struct ath_softc *sc, struct ath_buf *bf) -+{ -+ struct ath_pktlog_txctl *tx_log; -+ struct ath_pktlog *pl_info; -+ struct ieee80211_hdr *hdr; -+ struct ath_desc_info desc_info; -+ int i; -+ u32 *ds_words, flags = 0; -+ -+ pl_info = &sc->pktlog.pktlog; -+ -+ if ((pl_info->pktlog_filter & ATH_PKTLOG_TX) == 0 || -+ bf->bf_mpdu == NULL || !sc->is_pkt_logging) -+ return; -+ -+ flags |= (((sc->sc_ah->hw_version.macRev << -+ PHFLAGS_MACREV_SFT) & PHFLAGS_MACREV_MASK) | -+ ((sc->sc_ah->hw_version.macVersion << PHFLAGS_MACVERSION_SFT) -+ & PHFLAGS_MACVERSION_MASK)); -+ -+ tx_log = (struct ath_pktlog_txctl *)ath_pktlog_getbuf(pl_info, -+ PKTLOG_TYPE_TXCTL, sizeof(*tx_log), flags); -+ -+ memset(tx_log, 0, sizeof(*tx_log)); -+ -+ hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data; -+ tx_log->framectrl = hdr->frame_control; -+ tx_log->seqctrl = hdr->seq_ctrl; -+ -+ if (ieee80211_has_tods(tx_log->framectrl)) { -+ tx_log->bssid_tail = (hdr->addr1[ETH_ALEN - 2] << 8) | -+ (hdr->addr1[ETH_ALEN - 1]); -+ tx_log->sa_tail = (hdr->addr2[ETH_ALEN - 2] << 8) | -+ (hdr->addr2[ETH_ALEN - 1]); -+ tx_log->da_tail = (hdr->addr3[ETH_ALEN - 2] << 8) | -+ (hdr->addr3[ETH_ALEN - 1]); -+ } else if (ieee80211_has_fromds(tx_log->framectrl)) { -+ tx_log->bssid_tail = (hdr->addr2[ETH_ALEN - 2] << 8) | -+ (hdr->addr2[ETH_ALEN - 1]); -+ tx_log->sa_tail = (hdr->addr3[ETH_ALEN - 2] << 8) | -+ (hdr->addr3[ETH_ALEN - 1]); -+ tx_log->da_tail = (hdr->addr1[ETH_ALEN - 2] << 8) | -+ (hdr->addr1[ETH_ALEN - 1]); -+ } else { -+ tx_log->bssid_tail = (hdr->addr3[ETH_ALEN - 2] << 8) | -+ (hdr->addr3[ETH_ALEN - 1]); -+ tx_log->sa_tail = (hdr->addr2[ETH_ALEN - 2] << 8) | -+ (hdr->addr2[ETH_ALEN - 1]); -+ tx_log->da_tail = (hdr->addr1[ETH_ALEN - 2] << 8) | -+ (hdr->addr1[ETH_ALEN - 1]); -+ } -+ -+ ath9k_hw_get_descinfo(sc->sc_ah, &desc_info); -+ -+ ds_words = (u32 *)(bf->bf_desc) + desc_info.txctl_offset; -+ for (i = 0; i < desc_info.txctl_numwords; i++) -+ tx_log->txdesc_ctl[i] = ds_words[i]; -+} -+ -+void ath_pktlog_txstatus(struct ath_softc *sc, void *ds) -+{ -+ struct ath_pktlog_txstatus *tx_log; -+ struct ath_pktlog *pl_info; -+ struct ath_desc_info desc_info; -+ int i; -+ u32 *ds_words, flags = 0; -+ -+ pl_info = &sc->pktlog.pktlog; -+ -+ if ((pl_info->pktlog_filter & ATH_PKTLOG_TX) == 0 || -+ !sc->is_pkt_logging) -+ return; -+ -+ flags |= (((sc->sc_ah->hw_version.macRev << -+ PHFLAGS_MACREV_SFT) & PHFLAGS_MACREV_MASK) | -+ ((sc->sc_ah->hw_version.macVersion << PHFLAGS_MACVERSION_SFT) -+ & PHFLAGS_MACVERSION_MASK)); -+ tx_log = (struct ath_pktlog_txstatus *)ath_pktlog_getbuf(pl_info, -+ PKTLOG_TYPE_TXSTATUS, sizeof(*tx_log), flags); -+ -+ memset(tx_log, 0, sizeof(*tx_log)); -+ -+ ath9k_hw_get_descinfo(sc->sc_ah, &desc_info); -+ -+ ds_words = (u32 *)(ds) + desc_info.txstatus_offset; -+ -+ for (i = 0; i < desc_info.txstatus_numwords; i++) -+ tx_log->txdesc_status[i] = ds_words[i]; -+} -+ -+void ath_pktlog_rx(struct ath_softc *sc, void *desc, struct sk_buff *skb) -+{ -+ struct ath_pktlog_rx *rx_log; -+ struct ath_pktlog *pl_info; -+ struct ieee80211_hdr *hdr; -+ struct ath_desc_info desc_info; -+ int i; -+ u32 *ds_words, flags = 0; -+ -+ pl_info = &sc->pktlog.pktlog; -+ -+ if ((pl_info->pktlog_filter & ATH_PKTLOG_RX) == 0 || -+ !sc->is_pkt_logging) -+ return; -+ -+ flags |= (((sc->sc_ah->hw_version.macRev << -+ PHFLAGS_MACREV_SFT) & PHFLAGS_MACREV_MASK) | -+ ((sc->sc_ah->hw_version.macVersion << -+ PHFLAGS_MACVERSION_SFT) & PHFLAGS_MACVERSION_MASK)); -+ -+ rx_log = (struct ath_pktlog_rx *)ath_pktlog_getbuf(pl_info, PKTLOG_TYPE_RX, -+ sizeof(*rx_log), flags); -+ -+ memset(rx_log, 0, sizeof(*rx_log)); -+ -+ if (skb->len > sizeof(struct ieee80211_hdr)) { -+ hdr = (struct ieee80211_hdr *) skb->data; -+ rx_log->framectrl = hdr->frame_control; -+ rx_log->seqctrl = hdr->seq_ctrl; -+ -+ if (ieee80211_has_tods(rx_log->framectrl)) { -+ rx_log->bssid_tail = (hdr->addr1[ETH_ALEN - 2] << 8) | -+ (hdr->addr1[ETH_ALEN - 1]); -+ rx_log->sa_tail = (hdr->addr2[ETH_ALEN - 2] << 8) | -+ (hdr->addr2[ETH_ALEN - 1]); -+ rx_log->da_tail = (hdr->addr3[ETH_ALEN - 2] << 8) | -+ (hdr->addr3[ETH_ALEN - 1]); -+ } else if (ieee80211_has_fromds(rx_log->framectrl)) { -+ rx_log->bssid_tail = (hdr->addr2[ETH_ALEN - 2] << 8) | -+ (hdr->addr2[ETH_ALEN - 1]); -+ rx_log->sa_tail = (hdr->addr3[ETH_ALEN - 2] << 8) | -+ (hdr->addr3[ETH_ALEN - 1]); -+ rx_log->da_tail = (hdr->addr1[ETH_ALEN - 2] << 8) | -+ (hdr->addr1[ETH_ALEN - 1]); -+ } else { -+ rx_log->bssid_tail = (hdr->addr3[ETH_ALEN - 2] << 8) | -+ (hdr->addr3[ETH_ALEN - 1]); -+ rx_log->sa_tail = (hdr->addr2[ETH_ALEN - 2] << 8) | -+ (hdr->addr2[ETH_ALEN - 1]); -+ rx_log->da_tail = (hdr->addr1[ETH_ALEN - 2] << 8) | -+ (hdr->addr1[ETH_ALEN - 1]); -+ } -+ } else { -+ hdr = (struct ieee80211_hdr *) skb->data; -+ -+ if (ieee80211_is_ctl(hdr->frame_control)) { -+ rx_log->framectrl = hdr->frame_control; -+ rx_log->da_tail = (hdr->addr1[ETH_ALEN - 2] << 8) | -+ (hdr->addr1[ETH_ALEN - 1]); -+ if (skb->len < sizeof(struct ieee80211_rts)) { -+ rx_log->sa_tail = 0; -+ } else { -+ rx_log->sa_tail = (hdr->addr2[ETH_ALEN - 2] -+ << 8) | -+ (hdr->addr2[ETH_ALEN - 1]); -+ } -+ } else { -+ rx_log->framectrl = 0xFFFF; -+ rx_log->da_tail = 0; -+ rx_log->sa_tail = 0; -+ } -+ -+ rx_log->seqctrl = 0; -+ rx_log->bssid_tail = 0; -+ } -+ -+ ath9k_hw_get_descinfo(sc->sc_ah, &desc_info); -+ -+ ds_words = (u32 *)(desc) + desc_info.rxstatus_offset; -+ -+ for (i = 0; i < desc_info.rxstatus_numwords; i++) -+ rx_log->rxdesc_status[i] = ds_words[i]; -+} -+ -+void ath9k_pktlog_rc(struct ath_softc *sc, struct ath_rate_priv *ath_rc_priv, -+ int8_t ratecode, u8 rate, int8_t is_probing, u16 ac) -+{ -+ struct ath_pktlog_rcfind *rcf_log; -+ struct ath_pktlog *pl_info; -+ u32 flags = 0; -+ -+ pl_info = &sc->pktlog.pktlog; -+ -+ if ((pl_info->pktlog_filter & ATH_PKTLOG_RCFIND) == 0 || -+ !sc->is_pkt_logging) -+ return; -+ -+ flags |= (((sc->sc_ah->hw_version.macRev << -+ PHFLAGS_MACREV_SFT) & PHFLAGS_MACREV_MASK) | -+ ((sc->sc_ah->hw_version.macVersion << -+ PHFLAGS_MACVERSION_SFT) & PHFLAGS_MACVERSION_MASK)); -+ rcf_log = (struct ath_pktlog_rcfind *)ath_pktlog_getbuf(pl_info, -+ PKTLOG_TYPE_RCFIND, sizeof(*rcf_log), flags); -+ -+ rcf_log->rate = rate; -+ rcf_log->rateCode = ratecode; -+ rcf_log->rcProbeRate = is_probing ? ath_rc_priv->probe_rate : 0; -+ rcf_log->isProbing = is_probing; -+ rcf_log->ac = ac; -+ rcf_log->rcRateMax = ath_rc_priv->rate_max_phy; -+ rcf_log->rcRateTableSize = ath_rc_priv->rate_table_size; -+} -+ -+void ath9k_pktlog_rcupdate(struct ath_softc *sc, struct ath_rate_priv *ath_rc_priv, u8 tx_rate, -+ u8 rate_code, u8 xretries, u8 retries, int8_t rssi, u16 ac) -+{ -+ struct ath_pktlog_rcupdate *rcu_log; -+ struct ath_pktlog *pl_info; -+ int i; -+ u32 flags = 0; -+ -+ pl_info = &sc->pktlog.pktlog; -+ -+ if ((pl_info->pktlog_filter & ATH_PKTLOG_RCUPDATE) == 0 || -+ !sc->is_pkt_logging) -+ return; -+ -+ flags |= (((sc->sc_ah->hw_version.macRev << -+ PHFLAGS_MACREV_SFT) & PHFLAGS_MACREV_MASK) | -+ ((sc->sc_ah->hw_version.macVersion << -+ PHFLAGS_MACVERSION_SFT) & PHFLAGS_MACVERSION_MASK)); -+ rcu_log = (struct ath_pktlog_rcupdate *)ath_pktlog_getbuf(pl_info, -+ PKTLOG_TYPE_RCUPDATE, -+ sizeof(*rcu_log), flags); -+ -+ memset(rcu_log, 0, sizeof(*rcu_log)); -+ -+ rcu_log->txRate = tx_rate; -+ rcu_log->rateCode = rate_code; -+ rcu_log->Xretries = xretries; -+ rcu_log->retries = retries; -+ rcu_log->rssiAck = rssi; -+ rcu_log->ac = ac; -+ rcu_log->rcProbeRate = ath_rc_priv->probe_rate; -+ rcu_log->rcRateMax = ath_rc_priv->rate_max_phy; -+ -+ for (i = 0; i < RATE_TABLE_SIZE; i++) { -+ rcu_log->rcPer[i] = ath_rc_priv->per[i]; -+ } -+} -+ -+void ath9k_pktlog_txcomplete(struct ath_softc *sc, struct list_head *bf_head, -+ struct ath_buf *bf, struct ath_buf *bf_last) -+{ -+ struct log_tx ; -+ struct ath_buf *tbf; -+ -+ list_for_each_entry(tbf, bf_head, list) -+ ath_pktlog_txctl(sc, tbf); -+ -+ if (bf->bf_next == NULL && bf_last->bf_stale) -+ ath_pktlog_txctl(sc, bf_last); -+} -+ -+void ath9k_pktlog_txctrl(struct ath_softc *sc, struct list_head *bf_head, struct ath_buf *lastbf) -+{ -+ struct log_tx ; -+ struct ath_buf *tbf; -+ -+ list_for_each_entry(tbf, bf_head, list) -+ ath_pktlog_txctl(sc, tbf); -+ -+ /* log the last descriptor. */ -+ ath_pktlog_txctl(sc, lastbf); -+} -+ -+static void pktlog_init(struct ath_softc *sc) -+{ -+ spin_lock_init(&sc->pktlog.pktlog.pktlog_lock); -+ sc->pktlog.pktlog.pktlog_buf_size = ATH_DEBUGFS_PKTLOG_SIZE_DEFAULT; -+ sc->pktlog.pktlog.pktlog_buf = NULL; -+ sc->pktlog.pktlog.pktlog_filter = 0; -+} -+ -+int ath9k_init_pktlog(struct ath_softc *sc) -+{ -+ sc->pktlog.debugfs_pktlog = debugfs_create_dir("pktlog", -+ sc->debug.debugfs_phy); -+ if (!sc->pktlog.debugfs_pktlog) -+ goto err; -+ -+ sc->pktlog.pktlog_start = debugfs_create_file("pktlog_start", -+ S_IRUGO | S_IWUSR, -+ sc->pktlog.debugfs_pktlog, -+ sc, &fops_pktlog_start); -+ if (!sc->pktlog.pktlog_start) -+ goto err; -+ -+ sc->pktlog.pktlog_size = debugfs_create_file("pktlog_size", -+ S_IRUGO | S_IWUSR, -+ sc->pktlog.debugfs_pktlog, -+ sc, &fops_pktlog_size); -+ if (!sc->pktlog.pktlog_size) -+ goto err; -+ -+ sc->pktlog.pktlog_filter = debugfs_create_file("pktlog_filter", -+ S_IRUGO | S_IWUSR, -+ sc->pktlog.debugfs_pktlog, -+ sc, &fops_pktlog_filter); -+ if (!sc->pktlog.pktlog_filter) -+ goto err; -+ -+ sc->pktlog.pktlog_dump = debugfs_create_file("pktlog_dump", -+ S_IRUGO, -+ sc->pktlog.debugfs_pktlog, -+ sc, &fops_pktlog_dump); -+ if (!sc->pktlog.pktlog_dump) -+ goto err; -+ -+ pktlog_init(sc); -+ -+ return 0; -+ -+err: -+ return -ENOMEM; -+} -+ -+void ath9k_deinit_pktlog(struct ath_softc *sc) -+{ -+ struct ath_pktlog *pktlog = &sc->pktlog.pktlog; -+ -+ if (pktlog->pktlog_buf != NULL) -+ ath_pktlog_release(pktlog); -+ -+ debugfs_remove(sc->pktlog.pktlog_start); -+ debugfs_remove(sc->pktlog.pktlog_size); -+ debugfs_remove(sc->pktlog.pktlog_filter); -+ debugfs_remove(sc->pktlog.pktlog_dump); -+ debugfs_remove(sc->pktlog.debugfs_pktlog); -+} ---- /dev/null -+++ b/drivers/net/wireless/ath/ath9k/pktlog.h -@@ -0,0 +1,235 @@ -+#ifndef PKTLOG_H -+#define PKTLOG_H -+ -+#ifdef CONFIG_ATH9K_PKTLOG -+#define CUR_PKTLOG_VER 10010 /* Packet log version */ -+#define PKTLOG_MAGIC_NUM 7735225 -+#define ATH_PKTLOG_TX 0x000000001 -+#define ATH_PKTLOG_RX 0x000000002 -+#define ATH_PKTLOG_RCFIND 0x000000004 -+#define ATH_PKTLOG_RCUPDATE 0x000000008 -+ -+#define ATH_DEBUGFS_PKTLOG_SIZE_DEFAULT (1024 * 1024) -+#define ATH_PKTLOG_FILTER_DEFAULT (ATH_PKTLOG_TX | ATH_PKTLOG_RX | \ -+ ATH_PKTLOG_RCFIND | ATH_PKTLOG_RCUPDATE) -+ -+#define PHFLAGS_MACVERSION_MASK 0x00ff0000 -+#define PHFLAGS_MACVERSION_SFT 16 -+#define PHFLAGS_MACREV_MASK 0xff0 /* MAC revision */ -+#define PHFLAGS_MACREV_SFT 4 -+ -+struct ath_pktlog_hdr { -+ u32 flags; -+ u16 log_type; /* Type of log information foll this header */ -+ int16_t size; /* Size of variable length log information in bytes */ -+ u32 timestamp; -+} __packed; -+ -+/* Types of packet log events */ -+#define PKTLOG_TYPE_TXCTL 0 -+#define PKTLOG_TYPE_TXSTATUS 1 -+#define PKTLOG_TYPE_RX 2 -+#define PKTLOG_TYPE_RCFIND 3 -+#define PKTLOG_TYPE_RCUPDATE 4 -+ -+#define PKTLOG_MAX_TXCTL_WORDS 12 -+#define PKTLOG_MAX_TXSTATUS_WORDS 10 -+#define PKTLOG_MAX_PROTO_WORDS 16 -+ -+struct ath_pktlog_txctl { -+ __le16 framectrl; /* frame control field from header */ -+ __le16 seqctrl; /* frame control field from header */ -+ u16 bssid_tail; /* last two octets of bssid */ -+ u16 sa_tail; /* last two octets of SA */ -+ u16 da_tail; /* last two octets of DA */ -+ u16 resvd; -+ u32 txdesc_ctl[PKTLOG_MAX_TXCTL_WORDS]; /* Tx descriptor words */ -+ unsigned long proto_hdr; /* protocol header (variable length!) */ -+ int32_t misc[0]; /* Can be used for HT specific or other misc info */ -+} __packed; -+ -+struct ath_pktlog_txstatus { -+ /* Tx descriptor status words */ -+ u32 txdesc_status[PKTLOG_MAX_TXSTATUS_WORDS]; -+ int32_t misc[0]; /* Can be used for HT specific or other misc info */ -+} __packed; -+ -+#define PKTLOG_MAX_RXSTATUS_WORDS 11 -+ -+struct ath_pktlog_rx { -+ u16 framectrl; /* frame control field from header */ -+ u16 seqctrl; /* sequence control field */ -+ u16 bssid_tail; /* last two octets of bssid */ -+ u16 sa_tail; /* last two octets of SA */ -+ u16 da_tail; /* last two octets of DA */ -+ u16 resvd; -+ u32 rxdesc_status[PKTLOG_MAX_RXSTATUS_WORDS]; /* Rx descriptor words */ -+ unsigned long proto_hdr; /* protocol header (variable length!) */ -+ int32_t misc[0]; /* Can be used for HT specific or other misc info */ -+} __packed; -+ -+struct ath_pktlog_rcfind { -+ u8 rate; -+ u8 rateCode; -+ s8 rcRssiLast; -+ s8 rcRssiLastPrev; -+ s8 rcRssiLastPrev2; -+ s8 rssiReduce; -+ u8 rcProbeRate; -+ s8 isProbing; -+ s8 primeInUse; -+ s8 currentPrimeState; -+ u8 rcRateTableSize; -+ u8 rcRateMax; -+ u8 ac; -+ int32_t misc[0]; /* Can be used for HT specific or other misc info */ -+} __packed; -+ -+struct ath_pktlog_rcupdate { -+ u8 txRate; -+ u8 rateCode; -+ s8 rssiAck; -+ u8 Xretries; -+ u8 retries; -+ s8 rcRssiLast; -+ s8 rcRssiLastLkup; -+ s8 rcRssiLastPrev; -+ s8 rcRssiLastPrev2; -+ u8 rcProbeRate; -+ u8 rcRateMax; -+ s8 useTurboPrime; -+ s8 currentBoostState; -+ u8 rcHwMaxRetryRate; -+ u8 ac; -+ u8 resvd[2]; -+ s8 rcRssiThres[RATE_TABLE_SIZE]; -+ u8 rcPer[RATE_TABLE_SIZE]; -+ u8 resv2[RATE_TABLE_SIZE + 5]; -+ int32_t misc[0]; /* Can be used for HT specific or other misc info */ -+}; -+ -+#define TXCTL_OFFSET(ah) (AR_SREV_9300_20_OR_LATER(ah) ? 11 : 2) -+#define TXCTL_NUMWORDS(ah) (AR_SREV_5416_20_OR_LATER(ah) ? 12 : 8) -+#define TXSTATUS_OFFSET(ah) (AR_SREV_9300_20_OR_LATER(ah) ? 2 : 14) -+#define TXSTATUS_NUMWORDS(ah) (AR_SREV_9300_20_OR_LATER(ah) ? 7 : 10) -+ -+#define RXCTL_OFFSET(ah) (AR_SREV_9300_20_OR_LATER(ah) ? 0 : 3) -+#define RXCTL_NUMWORDS(ah) (AR_SREV_9300_20_OR_LATER(ah) ? 0 : 1) -+#define RXSTATUS_OFFSET(ah) (AR_SREV_9300_20_OR_LATER(ah) ? 1 : 4) -+#define RXSTATUS_NUMWORDS(ah) (AR_SREV_9300_20_OR_LATER(ah) ? 11 : 9) -+ -+struct ath_desc_info { -+ u8 txctl_offset; -+ u8 txctl_numwords; -+ u8 txstatus_offset; -+ u8 txstatus_numwords; -+ u8 rxctl_offset; -+ u8 rxctl_numwords; -+ u8 rxstatus_offset; -+ u8 rxstatus_numwords; -+}; -+ -+#define PKTLOG_MOV_RD_IDX(_rd_offset, _log_buf, _log_size) \ -+ do { \ -+ if ((_rd_offset + sizeof(struct ath_pktlog_hdr) + \ -+ ((struct ath_pktlog_hdr *)((_log_buf)->log_data + \ -+ (_rd_offset)))->size) <= _log_size) { \ -+ _rd_offset = ((_rd_offset) + \ -+ sizeof(struct ath_pktlog_hdr) + \ -+ ((struct ath_pktlog_hdr *) \ -+ ((_log_buf)->log_data + \ -+ (_rd_offset)))->size); \ -+ } else { \ -+ _rd_offset = ((struct ath_pktlog_hdr *) \ -+ ((_log_buf)->log_data + \ -+ (_rd_offset)))->size; \ -+ } \ -+ (_rd_offset) = (((_log_size) - (_rd_offset)) >= \ -+ sizeof(struct ath_pktlog_hdr)) ? \ -+ _rd_offset : 0; \ -+ } while (0); -+ -+struct ath_pktlog_bufhdr { -+ u32 magic_num; /* Used by post processing scripts */ -+ u32 version; /* Set to CUR_PKTLOG_VER */ -+}; -+ -+struct ath_pktlog_buf { -+ struct ath_pktlog_bufhdr bufhdr; -+ int32_t rd_offset; -+ int32_t wr_offset; -+ char log_data[0]; -+}; -+ -+struct ath_pktlog { -+ struct ath_pktlog_buf *pktlog_buf; -+ u32 pktlog_filter; -+ u32 pktlog_buf_size; /* Size of buffer in bytes */ -+ spinlock_t pktlog_lock; -+}; -+ -+struct ath_pktlog_debugfs { -+ struct dentry *debugfs_pktlog; -+ struct dentry *pktlog_enable; -+ struct dentry *pktlog_start; -+ struct dentry *pktlog_filter; -+ struct dentry *pktlog_size; -+ struct dentry *pktlog_dump; -+ struct ath_pktlog pktlog; -+}; -+ -+void ath_pktlog_txctl(struct ath_softc *sc, struct ath_buf *bf); -+void ath_pktlog_txstatus(struct ath_softc *sc, void *ds); -+void ath_pktlog_rx(struct ath_softc *sc, void *ds, struct sk_buff *skb); -+void ath9k_pktlog_rc(struct ath_softc *sc, struct ath_rate_priv *ath_rc_priv, -+ int8_t ratecode, u8 rate, int8_t is_probing, u16 ac); -+void ath9k_pktlog_rcupdate(struct ath_softc *sc, -+ struct ath_rate_priv *ath_rc_priv, u8 tx_rate, -+ u8 rate_code, u8 xretries, u8 retries, int8_t rssi, -+ u16 ac); -+void ath9k_pktlog_txcomplete(struct ath_softc *sc ,struct list_head *bf_head, -+ struct ath_buf *bf, struct ath_buf *bf_last); -+void ath9k_pktlog_txctrl(struct ath_softc *sc, struct list_head *bf_head, -+ struct ath_buf *lastbf); -+int ath9k_init_pktlog(struct ath_softc *sc); -+void ath9k_deinit_pktlog(struct ath_softc *sc); -+#else /* CONFIG_ATH9K_PKTLOG */ -+static inline void ath_pktlog_txstatus(struct ath_softc *sc, void *ds) -+{ -+} -+ -+static inline void ath_pktlog_rx(struct ath_softc *sc, void *ds, -+ struct sk_buff *skb) -+{ -+} -+ -+static inline void ath9k_pktlog_rc(struct ath_softc *sc, -+ struct ath_rate_priv *ath_rc_priv, -+ int8_t ratecode, u8 rate, -+ int8_t is_probing, u16 ac) -+{ -+} -+ -+static inline void ath9k_pktlog_rcupdate(struct ath_softc *sc, -+ struct ath_rate_priv *ath_rc_priv, -+ u8 tx_rate, u8 rate_code, -+ u8 xretries, u8 retries, -+ int8_t rssi, u16 ac) -+{ -+} -+ -+static inline void ath9k_pktlog_txcomplete(struct ath_softc *sc, -+ struct list_head *bf_head, -+ struct ath_buf *bf, -+ struct ath_buf *bf_last) -+{ -+} -+ -+static inline void ath9k_pktlog_txctrl(struct ath_softc *sc, -+ struct list_head *bf_head, -+ struct ath_buf *lastbf) -+{ -+} -+#endif /* CONFIG_ATH9K_PKTLOG */ -+ -+#endif ---- a/drivers/net/wireless/ath/ath9k/rc.c -+++ b/drivers/net/wireless/ath/ath9k/rc.c -@@ -40,73 +40,75 @@ static const struct ath_rate_table ar541 - { VALID, VALID, WLAN_RC_PHY_OFDM, 54000, /* 54 Mb */ - 29300, 7, 108, 4, 7, 7, 7, 7 }, - { VALID_2040, VALID_2040, WLAN_RC_PHY_HT_20_SS, 6500, /* 6.5 Mb */ -- 6400, 0, 0, 0, 8, 24, 8, 24 }, -+ 6400, 0, 0, 0, 8, 25, 8, 25 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 13000, /* 13 Mb */ -- 12700, 1, 1, 2, 9, 25, 9, 25 }, -+ 12700, 1, 1, 2, 9, 26, 9, 26 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 19500, /* 19.5 Mb */ -- 18800, 2, 2, 2, 10, 26, 10, 26 }, -+ 18800, 2, 2, 2, 10, 27, 10, 27 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 26000, /* 26 Mb */ -- 25000, 3, 3, 4, 11, 27, 11, 27 }, -+ 25000, 3, 3, 4, 11, 28, 11, 28 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 39000, /* 39 Mb */ -- 36700, 4, 4, 4, 12, 28, 12, 28 }, -+ 36700, 4, 4, 4, 12, 29, 12, 29 }, - { INVALID, VALID_20, WLAN_RC_PHY_HT_20_SS, 52000, /* 52 Mb */ -- 48100, 5, 5, 4, 13, 29, 13, 29 }, -+ 48100, 5, 5, 4, 13, 30, 13, 30 }, - { INVALID, VALID_20, WLAN_RC_PHY_HT_20_SS, 58500, /* 58.5 Mb */ -- 53500, 6, 6, 4, 14, 30, 14, 30 }, -+ 53500, 6, 6, 4, 14, 31, 14, 31 }, - { INVALID, VALID_20, WLAN_RC_PHY_HT_20_SS, 65000, /* 65 Mb */ -- 59000, 7, 7, 4, 15, 31, 15, 32 }, -+ 59000, 7, 7, 4, 15, 32, 15, 33 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_20_DS, 13000, /* 13 Mb */ -- 12700, 8, 8, 3, 16, 33, 16, 33 }, -+ 12700, 8, 8, 3, 16, 34, 16, 34 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_20_DS, 26000, /* 26 Mb */ -- 24800, 9, 9, 2, 17, 34, 17, 34 }, -+ 24800, 9, 9, 2, 17, 35, 17, 35 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_20_DS, 39000, /* 39 Mb */ -- 36600, 10, 10, 2, 18, 35, 18, 35 }, -+ 36600, 10, 10, 2, 18, 36, 18, 36 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 52000, /* 52 Mb */ -- 48100, 11, 11, 4, 19, 36, 19, 36 }, -+ 48100, 11, 11, 4, 19, 37, 19, 37 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 78000, /* 78 Mb */ -- 69500, 12, 12, 4, 20, 37, 20, 37 }, -+ 69500, 12, 12, 4, 20, 38, 20, 38 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 104000, /* 104 Mb */ -- 89500, 13, 13, 4, 21, 38, 21, 38 }, -+ 89500, 13, 13, 4, 21, 39, 21, 39 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 117000, /* 117 Mb */ -- 98900, 14, 14, 4, 22, 39, 22, 39 }, -+ 98900, 14, 14, 4, 22, 40, 22, 40 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 130000, /* 130 Mb */ -- 108300, 15, 15, 4, 23, 40, 23, 41 }, -+ 108300, 15, 15, 4, 23, 41, 24, 42 }, -+ { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS_HGI, 144400, /* 144.4 Mb */ -+ 12000, 15, 15, 4, 23, 41, 24, 42 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 13500, /* 13.5 Mb */ -- 13200, 0, 0, 0, 8, 24, 24, 24 }, -+ 13200, 0, 0, 0, 8, 25, 25, 25 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 27500, /* 27.0 Mb */ -- 25900, 1, 1, 2, 9, 25, 25, 25 }, -+ 25900, 1, 1, 2, 9, 26, 26, 26 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 40500, /* 40.5 Mb */ -- 38600, 2, 2, 2, 10, 26, 26, 26 }, -+ 38600, 2, 2, 2, 10, 27, 27, 27 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 54000, /* 54 Mb */ -- 49800, 3, 3, 4, 11, 27, 27, 27 }, -+ 49800, 3, 3, 4, 11, 28, 28, 28 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 81500, /* 81 Mb */ -- 72200, 4, 4, 4, 12, 28, 28, 28 }, -+ 72200, 4, 4, 4, 12, 29, 29, 29 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS, 108000, /* 108 Mb */ -- 92900, 5, 5, 4, 13, 29, 29, 29 }, -+ 92900, 5, 5, 4, 13, 30, 30, 30 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS, 121500, /* 121.5 Mb */ -- 102700, 6, 6, 4, 14, 30, 30, 30 }, -+ 102700, 6, 6, 4, 14, 31, 31, 31 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS, 135000, /* 135 Mb */ -- 112000, 7, 7, 4, 15, 31, 32, 32 }, -+ 112000, 7, 7, 4, 15, 32, 33, 33 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS_HGI, 150000, /* 150 Mb */ -- 122000, 7, 7, 4, 15, 31, 32, 32 }, -+ 122000, 7, 7, 4, 15, 32, 33, 33 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_40_DS, 27000, /* 27 Mb */ -- 25800, 8, 8, 0, 16, 33, 33, 33 }, -+ 25800, 8, 8, 0, 16, 34, 34, 34 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_40_DS, 54000, /* 54 Mb */ -- 49800, 9, 9, 2, 17, 34, 34, 34 }, -+ 49800, 9, 9, 2, 17, 35, 35, 35 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_40_DS, 81000, /* 81 Mb */ -- 71900, 10, 10, 2, 18, 35, 35, 35 }, -+ 71900, 10, 10, 2, 18, 36, 36, 36 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 108000, /* 108 Mb */ -- 92500, 11, 11, 4, 19, 36, 36, 36 }, -+ 92500, 11, 11, 4, 19, 37, 37, 37 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 162000, /* 162 Mb */ -- 130300, 12, 12, 4, 20, 37, 37, 37 }, -+ 130300, 12, 12, 4, 20, 38, 38, 38 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 216000, /* 216 Mb */ -- 162800, 13, 13, 4, 21, 38, 38, 38 }, -+ 162800, 13, 13, 4, 21, 39, 39, 39 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 243000, /* 243 Mb */ -- 178200, 14, 14, 4, 22, 39, 39, 39 }, -+ 178200, 14, 14, 4, 22, 40, 40, 40 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 270000, /* 270 Mb */ -- 192100, 15, 15, 4, 23, 40, 41, 41 }, -+ 192100, 15, 15, 4, 23, 41, 42, 42 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS_HGI, 300000, /* 300 Mb */ -- 207000, 15, 15, 4, 23, 40, 41, 41 }, -+ 207000, 15, 15, 4, 23, 41, 42, 42 }, - }, - 50, /* probe interval */ - WLAN_RC_HT_FLAG, /* Phy rates allowed initially */ -@@ -144,73 +146,75 @@ static const struct ath_rate_table ar541 - { VALID, VALID, WLAN_RC_PHY_OFDM, 54000, /* 54 Mb */ - 30900, 11, 108, 8, 11, 11, 11, 11 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_20_SS, 6500, /* 6.5 Mb */ -- 6400, 0, 0, 4, 12, 28, 12, 28 }, -+ 6400, 0, 0, 4, 12, 29, 12, 29 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 13000, /* 13 Mb */ -- 12700, 1, 1, 6, 13, 29, 13, 29 }, -+ 12700, 1, 1, 6, 13, 30, 13, 30 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 19500, /* 19.5 Mb */ -- 18800, 2, 2, 6, 14, 30, 14, 30 }, -+ 18800, 2, 2, 6, 14, 31, 14, 31 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 26000, /* 26 Mb */ -- 25000, 3, 3, 8, 15, 31, 15, 31 }, -+ 25000, 3, 3, 8, 15, 32, 15, 32 }, - { VALID_20, VALID_20, WLAN_RC_PHY_HT_20_SS, 39000, /* 39 Mb */ -- 36700, 4, 4, 8, 16, 32, 16, 32 }, -+ 36700, 4, 4, 8, 16, 33, 16, 33 }, - { INVALID, VALID_20, WLAN_RC_PHY_HT_20_SS, 52000, /* 52 Mb */ -- 48100, 5, 5, 8, 17, 33, 17, 33 }, -+ 48100, 5, 5, 8, 17, 34, 17, 34 }, - { INVALID, VALID_20, WLAN_RC_PHY_HT_20_SS, 58500, /* 58.5 Mb */ -- 53500, 6, 6, 8, 18, 34, 18, 34 }, -+ 53500, 6, 6, 8, 18, 35, 18, 35 }, - { INVALID, VALID_20, WLAN_RC_PHY_HT_20_SS, 65000, /* 65 Mb */ -- 59000, 7, 7, 8, 19, 35, 19, 36 }, -+ 59000, 7, 7, 8, 19, 36, 19, 37 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_20_DS, 13000, /* 13 Mb */ -- 12700, 8, 8, 4, 20, 37, 20, 37 }, -+ 12700, 8, 8, 4, 20, 38, 20, 38 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_20_DS, 26000, /* 26 Mb */ -- 24800, 9, 9, 6, 21, 38, 21, 38 }, -+ 24800, 9, 9, 6, 21, 39, 21, 39 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_20_DS, 39000, /* 39 Mb */ -- 36600, 10, 10, 6, 22, 39, 22, 39 }, -+ 36600, 10, 10, 6, 22, 40, 22, 40 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 52000, /* 52 Mb */ -- 48100, 11, 11, 8, 23, 40, 23, 40 }, -+ 48100, 11, 11, 8, 23, 41, 23, 41 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 78000, /* 78 Mb */ -- 69500, 12, 12, 8, 24, 41, 24, 41 }, -+ 69500, 12, 12, 8, 24, 42, 24, 42 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 104000, /* 104 Mb */ -- 89500, 13, 13, 8, 25, 42, 25, 42 }, -+ 89500, 13, 13, 8, 25, 43, 25, 43 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 117000, /* 117 Mb */ -- 98900, 14, 14, 8, 26, 43, 26, 44 }, -+ 98900, 14, 14, 8, 26, 44, 26, 44 }, - { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS, 130000, /* 130 Mb */ -- 108300, 15, 15, 8, 27, 44, 27, 45 }, -+ 108300, 15, 15, 8, 27, 45, 28, 46 }, -+ { VALID_20, INVALID, WLAN_RC_PHY_HT_20_DS_HGI, 144400, /* 130 Mb */ -+ 120000, 15, 15, 8, 27, 45, 28, 46 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 13500, /* 13.5 Mb */ -- 13200, 0, 0, 8, 12, 28, 28, 28 }, -+ 13200, 0, 0, 8, 12, 29, 29, 29 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 27500, /* 27.0 Mb */ -- 25900, 1, 1, 8, 13, 29, 29, 29 }, -+ 25900, 1, 1, 8, 13, 30, 30, 30 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 40500, /* 40.5 Mb */ -- 38600, 2, 2, 8, 14, 30, 30, 30 }, -+ 38600, 2, 2, 8, 14, 31, 31, 31 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 54000, /* 54 Mb */ -- 49800, 3, 3, 8, 15, 31, 31, 31 }, -+ 49800, 3, 3, 8, 15, 32, 32, 32 }, - { VALID_40, VALID_40, WLAN_RC_PHY_HT_40_SS, 81500, /* 81 Mb */ -- 72200, 4, 4, 8, 16, 32, 32, 32 }, -+ 72200, 4, 4, 8, 16, 33, 33, 33 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS, 108000, /* 108 Mb */ -- 92900, 5, 5, 8, 17, 33, 33, 33 }, -+ 92900, 5, 5, 8, 17, 34, 34, 34 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS, 121500, /* 121.5 Mb */ -- 102700, 6, 6, 8, 18, 34, 34, 34 }, -+ 102700, 6, 6, 8, 18, 35, 35, 35 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS, 135000, /* 135 Mb */ -- 112000, 7, 7, 8, 19, 35, 36, 36 }, -+ 112000, 7, 7, 8, 19, 36, 37, 37 }, - { INVALID, VALID_40, WLAN_RC_PHY_HT_40_SS_HGI, 150000, /* 150 Mb */ -- 122000, 7, 7, 8, 19, 35, 36, 36 }, -+ 122000, 7, 7, 8, 19, 36, 37, 37 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_40_DS, 27000, /* 27 Mb */ -- 25800, 8, 8, 8, 20, 37, 37, 37 }, -+ 25800, 8, 8, 8, 20, 38, 38, 38 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_40_DS, 54000, /* 54 Mb */ -- 49800, 9, 9, 8, 21, 38, 38, 38 }, -+ 49800, 9, 9, 8, 21, 39, 39, 39 }, - { INVALID, INVALID, WLAN_RC_PHY_HT_40_DS, 81000, /* 81 Mb */ -- 71900, 10, 10, 8, 22, 39, 39, 39 }, -+ 71900, 10, 10, 8, 22, 40, 40, 40 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 108000, /* 108 Mb */ -- 92500, 11, 11, 8, 23, 40, 40, 40 }, -+ 92500, 11, 11, 8, 23, 41, 41, 41 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 162000, /* 162 Mb */ -- 130300, 12, 12, 8, 24, 41, 41, 41 }, -+ 130300, 12, 12, 8, 24, 42, 42, 42 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 216000, /* 216 Mb */ -- 162800, 13, 13, 8, 25, 42, 42, 42 }, -+ 162800, 13, 13, 8, 25, 43, 43, 43 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 243000, /* 243 Mb */ -- 178200, 14, 14, 8, 26, 43, 43, 43 }, -+ 178200, 14, 14, 8, 26, 44, 44, 44 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS, 270000, /* 270 Mb */ -- 192100, 15, 15, 8, 27, 44, 45, 45 }, -+ 192100, 15, 15, 8, 27, 45, 46, 46 }, - { VALID_40, INVALID, WLAN_RC_PHY_HT_40_DS_HGI, 300000, /* 300 Mb */ -- 207000, 15, 15, 8, 27, 44, 45, 45 }, -+ 207000, 15, 15, 8, 27, 45, 46, 46 }, - }, - 50, /* probe interval */ - WLAN_RC_HT_FLAG, /* Phy rates allowed initially */ -@@ -510,7 +514,7 @@ static u8 ath_rc_setvalid_htrates(struct - static u8 ath_rc_get_highest_rix(struct ath_softc *sc, - struct ath_rate_priv *ath_rc_priv, - const struct ath_rate_table *rate_table, -- int *is_probing) -+ int *is_probing, u16 ac) - { - u32 best_thruput, this_thruput, now_msec; - u8 rate, next_rate, best_rate, maxindex, minindex; -@@ -598,6 +602,8 @@ static u8 ath_rc_get_highest_rix(struct - - rate = ath_rc_priv->valid_rate_index[0]; - -+ ath9k_pktlog_rc(sc, ath_rc_priv, rate_table->info[rate].ratecode, -+ rate, *is_probing, ac); - return rate; - } - -@@ -689,7 +695,7 @@ static void ath_get_rate(void *priv, str - try_per_rate = 4; - - rate_table = sc->cur_rate_table; -- rix = ath_rc_get_highest_rix(sc, ath_rc_priv, rate_table, &is_probe); -+ rix = ath_rc_get_highest_rix(sc, ath_rc_priv, rate_table, &is_probe, skb_get_queue_mapping(skb)); - - /* - * If we're in HT mode and both us and our peer supports LDPC. -@@ -929,7 +935,8 @@ static bool ath_rc_update_per(struct ath - static void ath_rc_update_ht(struct ath_softc *sc, - struct ath_rate_priv *ath_rc_priv, - struct ieee80211_tx_info *tx_info, -- int tx_rate, int xretries, int retries) -+ int tx_rate, int xretries, int retries, -+ u16 ac) - { - u32 now_msec = jiffies_to_msecs(jiffies); - int rate; -@@ -998,6 +1005,9 @@ static void ath_rc_update_ht(struct ath_ - ath_debug_stat_retries(sc, tx_rate, xretries, retries, - ath_rc_priv->per[tx_rate]); - -+ ath9k_pktlog_rcupdate(sc, ath_rc_priv, tx_rate, -+ rate_table->info[tx_rate].ratecode, -+ xretries, retries, tx_info->status.ack_signal, ac); - } - - static int ath_rc_get_rateindex(const struct ath_rate_table *rate_table, -@@ -1025,7 +1035,8 @@ static int ath_rc_get_rateindex(const st - static void ath_rc_tx_status(struct ath_softc *sc, - struct ath_rate_priv *ath_rc_priv, - struct ieee80211_tx_info *tx_info, -- int final_ts_idx, int xretries, int long_retry) -+ int final_ts_idx, int xretries, int long_retry, -+ u16 ac) - { - const struct ath_rate_table *rate_table; - struct ieee80211_tx_rate *rates = tx_info->status.rates; -@@ -1054,7 +1065,7 @@ static void ath_rc_tx_status(struct ath_ - rix = ath_rc_get_rateindex(rate_table, &rates[i]); - ath_rc_update_ht(sc, ath_rc_priv, tx_info, - rix, xretries ? 1 : 2, -- rates[i].count); -+ rates[i].count, ac); - } - } - } else { -@@ -1076,7 +1087,7 @@ static void ath_rc_tx_status(struct ath_ - return; - - rix = ath_rc_get_rateindex(rate_table, &rates[i]); -- ath_rc_update_ht(sc, ath_rc_priv, tx_info, rix, xretries, long_retry); -+ ath_rc_update_ht(sc, ath_rc_priv, tx_info, rix, xretries, long_retry, ac); - } - - static const -@@ -1193,7 +1204,7 @@ static void ath_rc_init(struct ath_softc - } - - static u8 ath_rc_build_ht_caps(struct ath_softc *sc, struct ieee80211_sta *sta, -- bool is_cw40, bool is_sgi40) -+ bool is_cw40, bool is_sgi) - { - u8 caps = 0; - -@@ -1206,8 +1217,9 @@ static u8 ath_rc_build_ht_caps(struct at - } - if (is_cw40) - caps |= WLAN_RC_40_FLAG; -- if (is_sgi40) -+ if (is_sgi) - caps |= WLAN_RC_SGI_FLAG; -+ - } - - return caps; -@@ -1272,7 +1284,8 @@ static void ath_tx_status(void *priv, st - tx_status = 1; - - ath_rc_tx_status(sc, ath_rc_priv, tx_info, final_ts_idx, tx_status, -- (is_underrun) ? sc->hw->max_rate_tries : long_retry); -+ (is_underrun) ? sc->hw->max_rate_tries : long_retry, -+ skb_get_queue_mapping(skb)); - - /* Check if aggregation has to be enabled for this tid */ - if (conf_is_ht(&sc->hw->conf) && -@@ -1300,7 +1313,7 @@ static void ath_rate_init(void *priv, st - struct ath_softc *sc = priv; - struct ath_rate_priv *ath_rc_priv = priv_sta; - const struct ath_rate_table *rate_table; -- bool is_cw40, is_sgi40; -+ bool is_cw40, is_sgi = false; - int i, j = 0; - - for (i = 0; i < sband->n_bitrates; i++) { -@@ -1323,7 +1336,11 @@ static void ath_rate_init(void *priv, st - } - - is_cw40 = sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40; -- is_sgi40 = sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40; -+ -+ if (is_cw40) -+ is_sgi = sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40; -+ else if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_SGI_20) -+ is_sgi = sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20; - - /* Choose rate table first */ - -@@ -1336,7 +1353,7 @@ static void ath_rate_init(void *priv, st - rate_table = hw_rate_table[sc->cur_rate_mode]; - } - -- ath_rc_priv->ht_cap = ath_rc_build_ht_caps(sc, sta, is_cw40, is_sgi40); -+ ath_rc_priv->ht_cap = ath_rc_build_ht_caps(sc, sta, is_cw40, is_sgi); - ath_rc_init(sc, priv_sta, sband, sta, rate_table); - } - -@@ -1347,10 +1364,10 @@ static void ath_rate_update(void *priv, - struct ath_softc *sc = priv; - struct ath_rate_priv *ath_rc_priv = priv_sta; - const struct ath_rate_table *rate_table = NULL; -- bool oper_cw40 = false, oper_sgi40; -+ bool oper_cw40 = false, oper_sgi; - bool local_cw40 = (ath_rc_priv->ht_cap & WLAN_RC_40_FLAG) ? - true : false; -- bool local_sgi40 = (ath_rc_priv->ht_cap & WLAN_RC_SGI_FLAG) ? -+ bool local_sgi = (ath_rc_priv->ht_cap & WLAN_RC_SGI_FLAG) ? - true : false; - - /* FIXME: Handle AP mode later when we support CWM */ -@@ -1363,15 +1380,21 @@ static void ath_rate_update(void *priv, - oper_chan_type == NL80211_CHAN_HT40PLUS) - oper_cw40 = true; - -- oper_sgi40 = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) ? -- true : false; -+ if (oper_cw40) -+ oper_sgi = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) ? -+ true : false; -+ else if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_SGI_20) -+ oper_sgi = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? -+ true : false; -+ else -+ oper_sgi = false; - -- if ((local_cw40 != oper_cw40) || (local_sgi40 != oper_sgi40)) { -+ if ((local_cw40 != oper_cw40) || (local_sgi != oper_sgi)) { - rate_table = ath_choose_rate_table(sc, sband->band, - sta->ht_cap.ht_supported, - oper_cw40); - ath_rc_priv->ht_cap = ath_rc_build_ht_caps(sc, sta, -- oper_cw40, oper_sgi40); -+ oper_cw40, oper_sgi); - ath_rc_init(sc, priv_sta, sband, sta, rate_table); - - ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_CONFIG, ---- a/drivers/net/wireless/ath/ath9k/recv.c -+++ b/drivers/net/wireless/ath/ath9k/recv.c -@@ -700,12 +700,16 @@ static bool ath_edma_get_buffers(struct - bf = SKB_CB_ATHBUF(skb); - BUG_ON(!bf); - -- dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, -+ dma_sync_single_for_cpu(sc->dev, bf->bf_buf_addr, - common->rx_bufsize, DMA_FROM_DEVICE); - - ret = ath9k_hw_process_rxdesc_edma(ah, NULL, skb->data); -- if (ret == -EINPROGRESS) -+ if (ret == -EINPROGRESS) { -+ /*let device gain the buffer again*/ -+ dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, -+ common->rx_bufsize, DMA_FROM_DEVICE); - return false; -+ } - - __skb_unlink(skb, &rx_edma->rx_fifo); - if (ret == -EINVAL) { -@@ -814,13 +818,266 @@ static struct ath_buf *ath_get_next_rx_b - * 1. accessing the frame - * 2. requeueing the same buffer to h/w - */ -- dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, -+ dma_sync_single_for_cpu(sc->dev, bf->bf_buf_addr, - common->rx_bufsize, - DMA_FROM_DEVICE); - - return bf; - } - -+/* Assumes you've already done the endian to CPU conversion */ -+static bool ath9k_rx_accept(struct ath_common *common, -+ struct ieee80211_hdr *hdr, -+ struct ieee80211_rx_status *rxs, -+ struct ath_rx_status *rx_stats, -+ bool *decrypt_error) -+{ -+ struct ath_hw *ah = common->ah; -+ __le16 fc; -+ u8 rx_status_len = ah->caps.rx_status_len; -+ -+ fc = hdr->frame_control; -+ -+ if (!rx_stats->rs_datalen) -+ return false; -+ /* -+ * rs_status follows rs_datalen so if rs_datalen is too large -+ * we can take a hint that hardware corrupted it, so ignore -+ * those frames. -+ */ -+ if (rx_stats->rs_datalen > (common->rx_bufsize - rx_status_len)) -+ return false; -+ -+ /* -+ * rs_more indicates chained descriptors which can be used -+ * to link buffers together for a sort of scatter-gather -+ * operation. -+ * reject the frame, we don't support scatter-gather yet and -+ * the frame is probably corrupt anyway -+ */ -+ if (rx_stats->rs_more) -+ return false; -+ -+ /* -+ * The rx_stats->rs_status will not be set until the end of the -+ * chained descriptors so it can be ignored if rs_more is set. The -+ * rs_more will be false at the last element of the chained -+ * descriptors. -+ */ -+ if (rx_stats->rs_status != 0) { -+ if (rx_stats->rs_status & ATH9K_RXERR_CRC) -+ rxs->flag |= RX_FLAG_FAILED_FCS_CRC; -+ if (rx_stats->rs_status & ATH9K_RXERR_PHY) -+ return false; -+ -+ if (rx_stats->rs_status & ATH9K_RXERR_DECRYPT) { -+ *decrypt_error = true; -+ } else if (rx_stats->rs_status & ATH9K_RXERR_MIC) { -+ if (ieee80211_is_ctl(fc)) -+ /* -+ * Sometimes, we get invalid -+ * MIC failures on valid control frames. -+ * Remove these mic errors. -+ */ -+ rx_stats->rs_status &= ~ATH9K_RXERR_MIC; -+ else -+ rxs->flag |= RX_FLAG_MMIC_ERROR; -+ } -+ /* -+ * Reject error frames with the exception of -+ * decryption and MIC failures. For monitor mode, -+ * we also ignore the CRC error. -+ */ -+ if (ah->opmode == NL80211_IFTYPE_MONITOR) { -+ if (rx_stats->rs_status & -+ ~(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_MIC | -+ ATH9K_RXERR_CRC)) -+ return false; -+ } else { -+ if (rx_stats->rs_status & -+ ~(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_MIC)) { -+ return false; -+ } -+ } -+ } -+ return true; -+} -+ -+static int ath9k_process_rate(struct ath_common *common, -+ struct ieee80211_hw *hw, -+ struct ath_rx_status *rx_stats, -+ struct ieee80211_rx_status *rxs) -+{ -+ struct ieee80211_supported_band *sband; -+ enum ieee80211_band band; -+ unsigned int i = 0; -+ -+ band = hw->conf.channel->band; -+ sband = hw->wiphy->bands[band]; -+ -+ if (rx_stats->rs_rate & 0x80) { -+ /* HT rate */ -+ rxs->flag |= RX_FLAG_HT; -+ if (rx_stats->rs_flags & ATH9K_RX_2040) -+ rxs->flag |= RX_FLAG_40MHZ; -+ if (rx_stats->rs_flags & ATH9K_RX_GI) -+ rxs->flag |= RX_FLAG_SHORT_GI; -+ rxs->rate_idx = rx_stats->rs_rate & 0x7f; -+ return 0; -+ } -+ -+ for (i = 0; i < sband->n_bitrates; i++) { -+ if (sband->bitrates[i].hw_value == rx_stats->rs_rate) { -+ rxs->rate_idx = i; -+ return 0; -+ } -+ if (sband->bitrates[i].hw_value_short == rx_stats->rs_rate) { -+ rxs->flag |= RX_FLAG_SHORTPRE; -+ rxs->rate_idx = i; -+ return 0; -+ } -+ } -+ -+ /* -+ * No valid hardware bitrate found -- we should not get here -+ * because hardware has already validated this frame as OK. -+ */ -+ ath_print(common, ATH_DBG_XMIT, "unsupported hw bitrate detected " -+ "0x%02x using 1 Mbit\n", rx_stats->rs_rate); -+ -+ return -EINVAL; -+} -+ -+static void ath9k_process_rssi(struct ath_common *common, -+ struct ieee80211_hw *hw, -+ struct ieee80211_hdr *hdr, -+ struct ath_rx_status *rx_stats) -+{ -+ struct ath_hw *ah = common->ah; -+ struct ieee80211_sta *sta; -+ struct ath_node *an; -+ int last_rssi = ATH_RSSI_DUMMY_MARKER; -+ __le16 fc; -+ -+ fc = hdr->frame_control; -+ -+ rcu_read_lock(); -+ /* -+ * XXX: use ieee80211_find_sta! This requires quite a bit of work -+ * under the current ath9k virtual wiphy implementation as we have -+ * no way of tying a vif to wiphy. Typically vifs are attached to -+ * at least one sdata of a wiphy on mac80211 but with ath9k virtual -+ * wiphy you'd have to iterate over every wiphy and each sdata. -+ */ -+ sta = ieee80211_find_sta_by_hw(hw, hdr->addr2); -+ if (sta) { -+ an = (struct ath_node *) sta->drv_priv; -+ if (rx_stats->rs_rssi != ATH9K_RSSI_BAD && -+ !rx_stats->rs_moreaggr) -+ ATH_RSSI_LPF(an->last_rssi, rx_stats->rs_rssi); -+ last_rssi = an->last_rssi; -+ } -+ rcu_read_unlock(); -+ -+ if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) -+ rx_stats->rs_rssi = ATH_EP_RND(last_rssi, -+ ATH_RSSI_EP_MULTIPLIER); -+ if (rx_stats->rs_rssi < 0) -+ rx_stats->rs_rssi = 0; -+ -+ /* Update Beacon RSSI, this is used by ANI. */ -+ if (ieee80211_is_beacon(fc)) -+ ah->stats.avgbrssi = rx_stats->rs_rssi; -+} -+ -+/* -+ * For Decrypt or Demic errors, we only mark packet status here and always push -+ * up the frame up to let mac80211 handle the actual error case, be it no -+ * decryption key or real decryption error. This let us keep statistics there. -+ */ -+static int ath9k_rx_skb_preprocess(struct ath_common *common, -+ struct ieee80211_hw *hw, -+ struct ieee80211_hdr *hdr, -+ struct ath_rx_status *rx_stats, -+ struct ieee80211_rx_status *rx_status, -+ bool *decrypt_error) -+{ -+ struct ath_hw *ah = common->ah; -+ -+ memset(rx_status, 0, sizeof(struct ieee80211_rx_status)); -+ -+ /* -+ * everything but the rate is checked here, the rate check is done -+ * separately to avoid doing two lookups for a rate for each frame. -+ */ -+ if (!ath9k_rx_accept(common, hdr, rx_status, rx_stats, decrypt_error)) -+ return -EINVAL; -+ -+ ath9k_process_rssi(common, hw, hdr, rx_stats); -+ -+ if (ath9k_process_rate(common, hw, rx_stats, rx_status)) -+ return -EINVAL; -+ -+ rx_status->mactime = ath9k_hw_extend_tsf(ah, rx_stats->rs_tstamp); -+ rx_status->band = hw->conf.channel->band; -+ rx_status->freq = hw->conf.channel->center_freq; -+ rx_status->signal = ATH_DEFAULT_NOISE_FLOOR + rx_stats->rs_rssi; -+ rx_status->antenna = rx_stats->rs_antenna; -+ rx_status->flag |= RX_FLAG_TSFT; -+ -+ return 0; -+} -+ -+static void ath9k_rx_skb_postprocess(struct ath_common *common, -+ struct sk_buff *skb, -+ struct ath_rx_status *rx_stats, -+ struct ieee80211_rx_status *rxs, -+ bool decrypt_error) -+{ -+ struct ath_hw *ah = common->ah; -+ struct ieee80211_hdr *hdr; -+ int hdrlen, padpos, padsize; -+ u8 keyix; -+ __le16 fc; -+ -+ /* see if any padding is done by the hw and remove it */ -+ hdr = (struct ieee80211_hdr *) skb->data; -+ hdrlen = ieee80211_get_hdrlen_from_skb(skb); -+ fc = hdr->frame_control; -+ padpos = ath9k_cmn_padpos(hdr->frame_control); -+ -+ /* The MAC header is padded to have 32-bit boundary if the -+ * packet payload is non-zero. The general calculation for -+ * padsize would take into account odd header lengths: -+ * padsize = (4 - padpos % 4) % 4; However, since only -+ * even-length headers are used, padding can only be 0 or 2 -+ * bytes and we can optimize this a bit. In addition, we must -+ * not try to remove padding from short control frames that do -+ * not have payload. */ -+ padsize = padpos & 3; -+ if (padsize && skb->len>=padpos+padsize+FCS_LEN) { -+ memmove(skb->data + padsize, skb->data, padpos); -+ skb_pull(skb, padsize); -+ } -+ -+ keyix = rx_stats->rs_keyix; -+ -+ if (!(keyix == ATH9K_RXKEYIX_INVALID) && !decrypt_error && -+ ieee80211_has_protected(fc)) { -+ rxs->flag |= RX_FLAG_DECRYPTED; -+ } else if (ieee80211_has_protected(fc) -+ && !decrypt_error && skb->len >= hdrlen + 4) { -+ keyix = skb->data[hdrlen + 3] >> 6; -+ -+ if (test_bit(keyix, common->keymap)) -+ rxs->flag |= RX_FLAG_DECRYPTED; -+ } -+ if (ah->sw_mgmt_crypto && -+ (rxs->flag & RX_FLAG_DECRYPTED) && -+ ieee80211_is_mgmt(fc)) -+ /* Use software decrypt for management frames. */ -+ rxs->flag &= ~RX_FLAG_DECRYPTED; -+} - - int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) - { -@@ -829,6 +1086,7 @@ int ath_rx_tasklet(struct ath_softc *sc, - struct ieee80211_rx_status *rxs; - struct ath_hw *ah = sc->sc_ah; - struct ath_common *common = ath9k_hw_common(ah); -+ u32 *rx_desc = NULL; - /* - * The hw can techncically differ from common->hw when using ath9k - * virtual wiphy so to account for that we iterate over the active -@@ -842,6 +1100,7 @@ int ath_rx_tasklet(struct ath_softc *sc, - enum ath9k_rx_qtype qtype; - bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); - int dma_type; -+ u8 rx_status_len = ah->caps.rx_status_len; - - if (edma) - dma_type = DMA_FROM_DEVICE; -@@ -869,7 +1128,7 @@ int ath_rx_tasklet(struct ath_softc *sc, - if (!skb) - continue; - -- hdr = (struct ieee80211_hdr *) skb->data; -+ hdr = (struct ieee80211_hdr *) (skb->data + rx_status_len); - rxs = IEEE80211_SKB_RXCB(skb); - - hw = ath_get_virt_hw(sc, hdr); -@@ -883,8 +1142,8 @@ int ath_rx_tasklet(struct ath_softc *sc, - if (flush) - goto requeue; - -- retval = ath9k_cmn_rx_skb_preprocess(common, hw, skb, &rs, -- rxs, &decrypt_error); -+ retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs, -+ rxs, &decrypt_error); - if (retval) - goto requeue; - -@@ -905,11 +1164,23 @@ int ath_rx_tasklet(struct ath_softc *sc, - dma_type); - - skb_put(skb, rs.rs_datalen + ah->caps.rx_status_len); -- if (ah->caps.rx_status_len) -+ if (ah->caps.rx_status_len) { -+ rx_desc = kzalloc(ah->caps.rx_status_len, GFP_ATOMIC); -+ if (rx_desc == NULL) -+ BUG_ON(1); -+ memcpy(rx_desc, skb->data, ah->caps.rx_status_len); - skb_pull(skb, ah->caps.rx_status_len); -+ } -+ -+ ath9k_rx_skb_postprocess(common, skb, &rs, -+ rxs, decrypt_error); - -- ath9k_cmn_rx_skb_postprocess(common, skb, &rs, -- rxs, decrypt_error); -+ if (rx_desc) { -+ ath_pktlog_rx(sc, (void *) rx_desc, skb); -+ kfree(rx_desc); -+ } else { -+ ath_pktlog_rx(sc, bf->bf_desc, skb); -+ } - - /* We will now give hardware our shiny new allocated skb */ - bf->bf_mpdu = requeue_skb; ---- a/drivers/net/wireless/ath/ath9k/reg.h -+++ b/drivers/net/wireless/ath/ath9k/reg.h -@@ -222,6 +222,7 @@ - - #define AR_ISR_S2 0x008c - #define AR_ISR_S2_QCU_TXURN 0x000003FF -+#define AR_ISR_S2_BB_WATCHDOG 0x00010000 - #define AR_ISR_S2_CST 0x00400000 - #define AR_ISR_S2_GTT 0x00800000 - #define AR_ISR_S2_TIM 0x01000000 ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -418,6 +418,8 @@ static void ath_tx_complete_aggr(struct - list_move_tail(&bf->list, &bf_head); - } - -+ ath9k_pktlog_txcomplete(sc, &bf_head, bf, bf_last); -+ - if (!txpending) { - /* - * complete the acked-ones/xretried ones; update -@@ -1728,6 +1730,8 @@ static int ath_tx_setup_buffer(struct ie - } else - bf->bf_isnullfunc = false; - -+ bf->bf_tx_aborted = false; -+ - return 0; - } - -@@ -1989,7 +1993,7 @@ static int ath_tx_num_badfrms(struct ath - int nbad = 0; - int isaggr = 0; - -- if (bf->bf_tx_aborted) -+ if (bf->bf_lastbf->bf_tx_aborted) - return 0; - - isaggr = bf_isaggr(bf); -@@ -2115,7 +2119,7 @@ static void ath_tx_processq(struct ath_s - ds = lastbf->bf_desc; - - memset(&ts, 0, sizeof(ts)); -- status = ath9k_hw_txprocdesc(ah, ds, &ts); -+ status = ath9k_hw_txprocdesc(ah, ds, &ts, NULL); - if (status == -EINPROGRESS) { - spin_unlock_bh(&txq->axq_lock); - break; -@@ -2165,10 +2169,14 @@ static void ath_tx_processq(struct ath_s - ath_tx_rc_status(bf, &ts, 0, txok, true); - } - -- if (bf_isampdu(bf)) -+ if (bf_isampdu(bf)) { - ath_tx_complete_aggr(sc, txq, bf, &bf_head, &ts, txok); -- else -+ } else { -+ ath9k_pktlog_txctrl(sc, &bf_head, lastbf); - ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, txok, 0); -+ } -+ -+ ath_pktlog_txstatus(sc, lastbf->bf_desc); - - ath_wake_mac80211_queue(sc, txq); - -@@ -2240,9 +2248,11 @@ void ath_tx_edma_tasklet(struct ath_soft - struct list_head bf_head; - int status; - int txok; -+ u32 txs_desc[9]; - - for (;;) { -- status = ath9k_hw_txprocdesc(ah, NULL, (void *)&txs); -+ status = ath9k_hw_txprocdesc(ah, NULL, (void *)&txs, -+ (void *) txs_desc); - if (status == -EINPROGRESS) - break; - if (status == -EIO) { -@@ -2277,6 +2287,17 @@ void ath_tx_edma_tasklet(struct ath_soft - - txok = !(txs.ts_status & ATH9K_TXERR_MASK); - -+ /* -+ * Make sure null func frame is acked before configuring -+ * hw into ps mode. -+ */ -+ if (bf->bf_isnullfunc && txok) { -+ if ((sc->ps_flags & PS_ENABLED)) -+ ath9k_enable_ps(sc); -+ else -+ sc->ps_flags |= PS_NULLFUNC_COMPLETED; -+ } -+ - if (!bf_isampdu(bf)) { - bf->bf_retries = txs.ts_longretry; - if (txs.ts_status & ATH9K_TXERR_XRETRY) -@@ -2284,14 +2305,18 @@ void ath_tx_edma_tasklet(struct ath_soft - ath_tx_rc_status(bf, &txs, 0, txok, true); - } - -- if (bf_isampdu(bf)) -+ if (bf_isampdu(bf)) { - ath_tx_complete_aggr(sc, txq, bf, &bf_head, &txs, txok); -- else -+ } else { -+ ath9k_pktlog_txctrl(sc, &bf_head, lastbf); - ath_tx_complete_buf(sc, bf, txq, &bf_head, - &txs, txok, 0); -+ } - - ath_wake_mac80211_queue(sc, txq); - -+ ath_pktlog_txstatus(sc, txs_desc); -+ - spin_lock_bh(&txq->axq_lock); - if (!list_empty(&txq->txq_fifo_pending)) { - INIT_LIST_HEAD(&bf_head); ---- a/net/mac80211/Kconfig -+++ b/net/mac80211/Kconfig -@@ -33,6 +33,13 @@ config MAC80211_RC_MINSTREL - ---help--- - This option enables the 'minstrel' TX rate control algorithm - -+config MAC80211_RC_MINSTREL_HT -+ bool "Minstrel 802.11n support" if EMBEDDED -+ depends on MAC80211_RC_MINSTREL -+ default y -+ ---help--- -+ This option enables the 'minstrel_ht' TX rate control algorithm -+ - choice - prompt "Default rate control algorithm" - depends on MAC80211_HAS_RC ---- a/net/mac80211/Makefile -+++ b/net/mac80211/Makefile -@@ -51,7 +51,11 @@ rc80211_pid-$(CONFIG_MAC80211_DEBUGFS) + - rc80211_minstrel-y := rc80211_minstrel.o - rc80211_minstrel-$(CONFIG_MAC80211_DEBUGFS) += rc80211_minstrel_debugfs.o - -+rc80211_minstrel_ht-y := rc80211_minstrel_ht.o -+rc80211_minstrel_ht-$(CONFIG_MAC80211_DEBUGFS) += rc80211_minstrel_ht_debugfs.o -+ - mac80211-$(CONFIG_MAC80211_RC_PID) += $(rc80211_pid-y) - mac80211-$(CONFIG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y) -+mac80211-$(CONFIG_MAC80211_RC_MINSTREL_HT) += $(rc80211_minstrel_ht-y) - - ccflags-y += -D__CHECK_ENDIAN__ ---- a/net/mac80211/main.c -+++ b/net/mac80211/main.c -@@ -710,6 +710,10 @@ static int __init ieee80211_init(void) - if (ret) - return ret; - -+ ret = rc80211_minstrel_ht_init(); -+ if (ret) -+ goto err_minstrel; -+ - ret = rc80211_pid_init(); - if (ret) - goto err_pid; -@@ -722,6 +726,8 @@ static int __init ieee80211_init(void) - err_netdev: - rc80211_pid_exit(); - err_pid: -+ rc80211_minstrel_ht_exit(); -+ err_minstrel: - rc80211_minstrel_exit(); - - return ret; -@@ -730,6 +736,7 @@ static int __init ieee80211_init(void) - static void __exit ieee80211_exit(void) - { - rc80211_pid_exit(); -+ rc80211_minstrel_ht_exit(); - rc80211_minstrel_exit(); - - /* ---- a/net/mac80211/rate.h -+++ b/net/mac80211/rate.h -@@ -147,5 +147,18 @@ static inline void rc80211_minstrel_exit - } - #endif - -+#ifdef CONFIG_MAC80211_RC_MINSTREL_HT -+extern int rc80211_minstrel_ht_init(void); -+extern void rc80211_minstrel_ht_exit(void); -+#else -+static inline int rc80211_minstrel_ht_init(void) -+{ -+ return 0; -+} -+static inline void rc80211_minstrel_ht_exit(void) -+{ -+} -+#endif -+ - - #endif /* IEEE80211_RATE_H */ ---- /dev/null -+++ b/net/mac80211/rc80211_minstrel_ht.c -@@ -0,0 +1,824 @@ -+/* -+ * Copyright (C) 2010 Felix Fietkau -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "rate.h" -+#include "rc80211_minstrel.h" -+#include "rc80211_minstrel_ht.h" -+ -+#define AVG_PKT_SIZE 1200 -+#define SAMPLE_COLUMNS 10 -+#define EWMA_LEVEL 75 -+ -+/* Number of bits for an average sized packet */ -+#define MCS_NBITS (AVG_PKT_SIZE << 3) -+ -+/* Number of symbols for a packet with (bps) bits per symbol */ -+#define MCS_NSYMS(bps) ((MCS_NBITS + (bps) - 1) / (bps)) -+ -+/* Transmission time for a packet containing (syms) symbols */ -+#define MCS_SYMBOL_TIME(sgi, syms) \ -+ (sgi ? \ -+ ((syms) * 18 + 4) / 5 : /* syms * 3.6 us */ \ -+ (syms) << 2 /* syms * 4 us */ \ -+ ) -+ -+/* Transmit duration for the raw data part of an average sized packet */ -+#define MCS_DURATION(streams, sgi, bps) MCS_SYMBOL_TIME(sgi, MCS_NSYMS((streams) * (bps))) -+ -+/* MCS rate information for an MCS group */ -+#define MCS_GROUP(_streams, _sgi, _ht40) { \ -+ .streams = _streams, \ -+ .flags = \ -+ (_sgi ? IEEE80211_TX_RC_SHORT_GI : 0) | \ -+ (_ht40 ? IEEE80211_TX_RC_40_MHZ_WIDTH : 0), \ -+ .duration = { \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 54 : 26), \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 108 : 52), \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 162 : 78), \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 216 : 104), \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 324 : 156), \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 432 : 208), \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 486 : 234), \ -+ MCS_DURATION(_streams, _sgi, _ht40 ? 540 : 260) \ -+ } \ -+} -+ -+/* -+ * To enable sufficiently targeted rate sampling, MCS rates are divided into -+ * groups, based on the number of streams and flags (HT40, SGI) that they -+ * use. -+ */ -+const struct mcs_group minstrel_mcs_groups[] = { -+ MCS_GROUP(1, 0, 0), -+ MCS_GROUP(2, 0, 0), -+#if MINSTREL_MAX_STREAMS >= 3 -+ MCS_GROUP(3, 0, 0), -+#endif -+ -+ MCS_GROUP(1, 1, 0), -+ MCS_GROUP(2, 1, 0), -+#if MINSTREL_MAX_STREAMS >= 3 -+ MCS_GROUP(3, 1, 0), -+#endif -+ -+ MCS_GROUP(1, 0, 1), -+ MCS_GROUP(2, 0, 1), -+#if MINSTREL_MAX_STREAMS >= 3 -+ MCS_GROUP(3, 0, 1), -+#endif -+ -+ MCS_GROUP(1, 1, 1), -+ MCS_GROUP(2, 1, 1), -+#if MINSTREL_MAX_STREAMS >= 3 -+ MCS_GROUP(3, 1, 1), -+#endif -+}; -+ -+static u8 sample_table[SAMPLE_COLUMNS][MCS_GROUP_RATES]; -+ -+/* -+ * Perform EWMA (Exponentially Weighted Moving Average) calculation -+ */ -+static int -+minstrel_ewma(int old, int new, int weight) -+{ -+ return (new * (100 - weight) + old * weight) / 100; -+} -+ -+/* -+ * Look up an MCS group index based on mac80211 rate information -+ */ -+static int -+minstrel_ht_get_group_idx(struct ieee80211_tx_rate *rate) -+{ -+ int streams = (rate->idx / MCS_GROUP_RATES) + 1; -+ u32 flags = IEEE80211_TX_RC_SHORT_GI | IEEE80211_TX_RC_40_MHZ_WIDTH; -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(minstrel_mcs_groups); i++) { -+ if (minstrel_mcs_groups[i].streams != streams) -+ continue; -+ if (minstrel_mcs_groups[i].flags != (rate->flags & flags)) -+ continue; -+ -+ return i; -+ } -+ -+ WARN_ON(1); -+ return 0; -+} -+ -+static inline struct minstrel_rate_stats * -+minstrel_get_ratestats(struct minstrel_ht_sta *mi, int index) -+{ -+ return &mi->groups[index / MCS_GROUP_RATES].rates[index % MCS_GROUP_RATES]; -+} -+ -+ -+/* -+ * Recalculate success probabilities and counters for a rate using EWMA -+ */ -+static void -+minstrel_calc_rate_ewma(struct minstrel_priv *mp, struct minstrel_rate_stats *mr) -+{ -+ if (unlikely(mr->attempts > 0)) { -+ mr->sample_skipped = 0; -+ mr->cur_prob = MINSTREL_FRAC(mr->success, mr->attempts); -+ if (!mr->att_hist) -+ mr->probability = mr->cur_prob; -+ else -+ mr->probability = minstrel_ewma(mr->probability, -+ mr->cur_prob, EWMA_LEVEL); -+ mr->att_hist += mr->attempts; -+ mr->succ_hist += mr->success; -+ } else { -+ mr->sample_skipped++; -+ } -+ mr->last_success = mr->success; -+ mr->last_attempts = mr->attempts; -+ mr->success = 0; -+ mr->attempts = 0; -+} -+ -+/* -+ * Calculate throughput based on the average A-MPDU length, taking into account -+ * the expected number of retransmissions and their expected length -+ */ -+static void -+minstrel_ht_calc_tp(struct minstrel_priv *mp, struct minstrel_ht_sta *mi, -+ int group, int rate) -+{ -+ struct minstrel_rate_stats *mr; -+ unsigned int usecs; -+ -+ mr = &mi->groups[group].rates[rate]; -+ -+ if (mr->probability < MINSTREL_FRAC(1, 10)) { -+ mr->cur_tp = 0; -+ return; -+ } -+ -+ usecs = mi->overhead / MINSTREL_TRUNC(mi->avg_ampdu_len); -+ usecs += minstrel_mcs_groups[group].duration[rate]; -+ mr->cur_tp = MINSTREL_TRUNC((1000000 / usecs) * mr->probability); -+} -+ -+/* -+ * Update rate statistics and select new primary rates -+ * -+ * Rules for rate selection: -+ * - max_prob_rate must use only one stream, as a tradeoff between delivery -+ * probability and throughput during strong fluctuations -+ * - as long as the max prob rate has a probability of more than 3/4, pick -+ * higher throughput rates, even if the probablity is a bit lower -+ */ -+static void -+minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi) -+{ -+ struct minstrel_mcs_group_data *mg; -+ struct minstrel_rate_stats *mr; -+ int cur_prob, cur_prob_tp, cur_tp, cur_tp2; -+ int group, i, index; -+ -+ if (mi->ampdu_packets > 0) { -+ mi->avg_ampdu_len = minstrel_ewma(mi->avg_ampdu_len, -+ MINSTREL_FRAC(mi->ampdu_len, mi->ampdu_packets), EWMA_LEVEL); -+ mi->ampdu_len = 0; -+ mi->ampdu_packets = 0; -+ } -+ -+ mi->sample_slow = 0; -+ mi->sample_count = 0; -+ mi->max_tp_rate = 0; -+ mi->max_tp_rate2 = 0; -+ mi->max_prob_rate = 0; -+ -+ for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) { -+ cur_prob = 0; -+ cur_prob_tp = 0; -+ cur_tp = 0; -+ cur_tp2 = 0; -+ -+ mg = &mi->groups[group]; -+ if (!mg->supported) -+ continue; -+ -+ mg->max_tp_rate = 0; -+ mg->max_tp_rate2 = 0; -+ mg->max_prob_rate = 0; -+ mi->sample_count++; -+ -+ for (i = 0; i < MCS_GROUP_RATES; i++) { -+ if (!(mg->supported & BIT(i))) -+ continue; -+ -+ mr = &mg->rates[i]; -+ mr->retry_updated = false; -+ index = MCS_GROUP_RATES * group + i; -+ minstrel_calc_rate_ewma(mp, mr); -+ minstrel_ht_calc_tp(mp, mi, group, i); -+ -+ if (!mr->cur_tp) -+ continue; -+ -+ /* ignore the lowest rate of each single-stream group */ -+ if (!i && minstrel_mcs_groups[group].streams == 1) -+ continue; -+ -+ if ((mr->cur_tp > cur_prob_tp && mr->probability > -+ MINSTREL_FRAC(3, 4)) || mr->probability > cur_prob) { -+ mg->max_prob_rate = index; -+ cur_prob = mr->probability; -+ } -+ -+ if (mr->cur_tp > cur_tp) { -+ swap(index, mg->max_tp_rate); -+ cur_tp = mr->cur_tp; -+ mr = minstrel_get_ratestats(mi, index); -+ } -+ -+ if (index >= mg->max_tp_rate) -+ continue; -+ -+ if (mr->cur_tp > cur_tp2) { -+ mg->max_tp_rate2 = index; -+ cur_tp2 = mr->cur_tp; -+ } -+ } -+ } -+ -+ /* try to sample up to half of the availble rates during each interval */ -+ mi->sample_count *= 4; -+ -+ cur_prob = 0; -+ cur_prob_tp = 0; -+ cur_tp = 0; -+ cur_tp2 = 0; -+ for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) { -+ mg = &mi->groups[group]; -+ if (!mg->supported) -+ continue; -+ -+ mr = minstrel_get_ratestats(mi, mg->max_prob_rate); -+ if (cur_prob_tp < mr->cur_tp && -+ minstrel_mcs_groups[group].streams == 1) { -+ mi->max_prob_rate = mg->max_prob_rate; -+ cur_prob = mr->cur_prob; -+ } -+ -+ mr = minstrel_get_ratestats(mi, mg->max_tp_rate); -+ if (cur_tp < mr->cur_tp) { -+ mi->max_tp_rate = mg->max_tp_rate; -+ cur_tp = mr->cur_tp; -+ } -+ -+ mr = minstrel_get_ratestats(mi, mg->max_tp_rate2); -+ if (cur_tp2 < mr->cur_tp) { -+ mi->max_tp_rate2 = mg->max_tp_rate2; -+ cur_tp2 = mr->cur_tp; -+ } -+ } -+ -+ mi->stats_update = jiffies; -+} -+ -+static bool -+minstrel_ht_txstat_valid(struct ieee80211_tx_rate *rate) -+{ -+ if (!rate->count) -+ return false; -+ -+ if (rate->idx < 0) -+ return false; -+ -+ return !!(rate->flags & IEEE80211_TX_RC_MCS); -+} -+ -+static void -+minstrel_next_sample_idx(struct minstrel_ht_sta *mi) -+{ -+ struct minstrel_mcs_group_data *mg; -+ -+ for (;;) { -+ mi->sample_group++; -+ mi->sample_group %= ARRAY_SIZE(minstrel_mcs_groups); -+ mg = &mi->groups[mi->sample_group]; -+ -+ if (!mg->supported) -+ continue; -+ -+ if (++mg->index >= MCS_GROUP_RATES) { -+ mg->index = 0; -+ if (++mg->column >= ARRAY_SIZE(sample_table)) -+ mg->column = 0; -+ } -+ break; -+ } -+} -+ -+static void -+minstrel_downgrade_rate(struct minstrel_ht_sta *mi, int *idx, bool primary) -+{ -+ int group, orig_group; -+ -+ orig_group = group = *idx / MCS_GROUP_RATES; -+ while (group > 0) { -+ group--; -+ -+ if (!mi->groups[group].supported) -+ continue; -+ -+ if (minstrel_mcs_groups[group].streams > -+ minstrel_mcs_groups[orig_group].streams) -+ continue; -+ -+ if (primary) -+ *idx = mi->groups[group].max_tp_rate; -+ else -+ *idx = mi->groups[group].max_tp_rate2; -+ break; -+ } -+} -+ -+static void -+minstrel_aggr_check(struct minstrel_priv *mp, struct ieee80211_sta *pubsta, struct sk_buff *skb) -+{ -+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; -+ struct sta_info *sta = container_of(pubsta, struct sta_info, sta); -+ u16 tid; -+ -+ if (unlikely(!ieee80211_is_data_qos(hdr->frame_control))) -+ return; -+ -+ if (unlikely(skb->protocol == cpu_to_be16(ETH_P_PAE))) -+ return; -+ -+ tid = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_TID_MASK; -+ if (likely(sta->ampdu_mlme.tid_state_tx[tid] != HT_AGG_STATE_IDLE)) -+ return; -+ -+ ieee80211_start_tx_ba_session(pubsta, tid); -+} -+ -+static void -+minstrel_ht_tx_status(void *priv, struct ieee80211_supported_band *sband, -+ struct ieee80211_sta *sta, void *priv_sta, -+ struct sk_buff *skb) -+{ -+ struct minstrel_ht_sta_priv *msp = priv_sta; -+ struct minstrel_ht_sta *mi = &msp->ht; -+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -+ struct ieee80211_tx_rate *ar = info->status.rates; -+ struct minstrel_rate_stats *rate, *rate2; -+ struct minstrel_priv *mp = priv; -+ bool last = false; -+ int group; -+ int i = 0; -+ -+ if (!msp->is_ht) -+ return mac80211_minstrel.tx_status(priv, sband, sta, &msp->legacy, skb); -+ -+ /* This packet was aggregated but doesn't carry status info */ -+ if ((info->flags & IEEE80211_TX_CTL_AMPDU) && -+ !(info->flags & IEEE80211_TX_STAT_AMPDU)) -+ return; -+ -+ if (!info->status.ampdu_len) { -+ info->status.ampdu_ack_len = 1; -+ info->status.ampdu_len = 1; -+ } -+ -+ mi->ampdu_packets++; -+ mi->ampdu_len += info->status.ampdu_len; -+ -+ if (!mi->sample_wait && !mi->sample_tries && mi->sample_count > 0) { -+ mi->sample_wait = 4 + 2 * MINSTREL_TRUNC(mi->avg_ampdu_len); -+ mi->sample_tries = 3; -+ mi->sample_count--; -+ } -+ -+ if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) { -+ mi->sample_packets += info->status.ampdu_len; -+ minstrel_next_sample_idx(mi); -+ } -+ -+ for (i = 0; !last; i++) { -+ last = (i == IEEE80211_TX_MAX_RATES - 1) || -+ !minstrel_ht_txstat_valid(&ar[i + 1]); -+ -+ if (!minstrel_ht_txstat_valid(&ar[i])) -+ break; -+ -+ group = minstrel_ht_get_group_idx(&ar[i]); -+ rate = &mi->groups[group].rates[ar[i].idx % 8]; -+ -+ if (last && (info->flags & IEEE80211_TX_STAT_ACK)) -+ rate->success += info->status.ampdu_ack_len; -+ -+ rate->attempts += ar[i].count * info->status.ampdu_len; -+ } -+ -+ /* -+ * check for sudden death of spatial multiplexing, -+ * downgrade to a lower number of streams if necessary. -+ */ -+ rate = minstrel_get_ratestats(mi, mi->max_tp_rate); -+ if (rate->attempts > 30 && -+ MINSTREL_FRAC(rate->success, rate->attempts) < -+ MINSTREL_FRAC(20, 100)) -+ minstrel_downgrade_rate(mi, &mi->max_tp_rate, true); -+ -+ rate2 = minstrel_get_ratestats(mi, mi->max_tp_rate2); -+ if (rate->attempts > 30 && -+ MINSTREL_FRAC(rate->success, rate->attempts) < -+ MINSTREL_FRAC(20, 100)) -+ minstrel_downgrade_rate(mi, &mi->max_tp_rate2, false); -+ -+ if (time_after(jiffies, mi->stats_update + (mp->update_interval / 2 * HZ) / 1000)) { -+ minstrel_ht_update_stats(mp, mi); -+ minstrel_aggr_check(mp, sta, skb); -+ } -+} -+ -+static void -+minstrel_calc_retransmit(struct minstrel_priv *mp, struct minstrel_ht_sta *mi, -+ int index) -+{ -+ struct minstrel_rate_stats *mr; -+ const struct mcs_group *group; -+ unsigned int tx_time, tx_time_rtscts, tx_time_data; -+ unsigned int cw = mp->cw_min; -+ unsigned int t_slot = 9; /* FIXME */ -+ unsigned int ampdu_len = MINSTREL_TRUNC(mi->avg_ampdu_len); -+ -+ mr = minstrel_get_ratestats(mi, index); -+ if (mr->probability < MINSTREL_FRAC(1, 10)) { -+ mr->retry_count = 1; -+ mr->retry_count_rtscts = 1; -+ return; -+ } -+ -+ mr->retry_count = 2; -+ mr->retry_count_rtscts = 2; -+ mr->retry_updated = true; -+ -+ group = &minstrel_mcs_groups[index / MCS_GROUP_RATES]; -+ tx_time_data = group->duration[index % MCS_GROUP_RATES] * ampdu_len; -+ tx_time = 2 * (t_slot + mi->overhead + tx_time_data); -+ tx_time_rtscts = 2 * (t_slot + mi->overhead_rtscts + tx_time_data); -+ do { -+ cw = (cw << 1) | 1; -+ cw = min(cw, mp->cw_max); -+ tx_time += cw + t_slot + mi->overhead; -+ tx_time_rtscts += cw + t_slot + mi->overhead_rtscts; -+ if (tx_time_rtscts < mp->segment_size) -+ mr->retry_count_rtscts++; -+ } while ((tx_time < mp->segment_size) && -+ (++mr->retry_count < mp->max_retry)); -+} -+ -+ -+static void -+minstrel_ht_set_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi, -+ struct ieee80211_tx_rate *rate, int index, -+ struct ieee80211_tx_rate_control *txrc, -+ bool sample, bool rtscts) -+{ -+ const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES]; -+ struct minstrel_rate_stats *mr; -+ -+ mr = minstrel_get_ratestats(mi, index); -+ if (!mr->retry_updated) -+ minstrel_calc_retransmit(mp, mi, index); -+ -+ if (mr->probability < MINSTREL_FRAC(20, 100)) -+ rate->count = 2; -+ else if (rtscts) -+ rate->count = mr->retry_count_rtscts; -+ else -+ rate->count = mr->retry_count; -+ -+ rate->flags = IEEE80211_TX_RC_MCS | group->flags; -+ if (txrc->short_preamble) -+ rate->flags |= IEEE80211_TX_RC_USE_SHORT_PREAMBLE; -+ if (txrc->rts || rtscts) -+ rate->flags |= IEEE80211_TX_RC_USE_RTS_CTS; -+ rate->idx = index % MCS_GROUP_RATES + (group->streams - 1) * MCS_GROUP_RATES; -+} -+ -+static inline int -+minstrel_get_duration(int index) -+{ -+ const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES]; -+ return group->duration[index % MCS_GROUP_RATES]; -+} -+ -+static int -+minstrel_get_sample_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi) -+{ -+ struct minstrel_rate_stats *mr; -+ struct minstrel_mcs_group_data *mg; -+ int sample_idx = 0; -+ -+ if (mi->sample_wait > 0) { -+ mi->sample_wait--; -+ return -1; -+ } -+ -+ if (!mi->sample_tries) -+ return -1; -+ -+ mi->sample_tries--; -+ mg = &mi->groups[mi->sample_group]; -+ sample_idx = sample_table[mg->column][mg->index]; -+ mr = &mg->rates[sample_idx]; -+ sample_idx += mi->sample_group * MCS_GROUP_RATES; -+ -+ /* -+ * When not using MRR, do not sample if the probability is already -+ * higher than 95% to avoid wasting airtime -+ */ -+ if (!mp->has_mrr && (mr->probability > MINSTREL_FRAC(95, 100))) -+ goto next; -+ -+ /* -+ * Make sure that lower rates get sampled only occasionally, -+ * if the link is working perfectly. -+ */ -+ if (minstrel_get_duration(sample_idx) > -+ minstrel_get_duration(mi->max_tp_rate)) { -+ if (mr->sample_skipped < 10) -+ goto next; -+ -+ if (mi->sample_slow++ > 2) -+ goto next; -+ } -+ -+ return sample_idx; -+ -+next: -+ minstrel_next_sample_idx(mi); -+ return -1; -+} -+ -+static void -+minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta, -+ struct ieee80211_tx_rate_control *txrc) -+{ -+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(txrc->skb); -+ struct ieee80211_tx_rate *ar = info->status.rates; -+ struct minstrel_ht_sta_priv *msp = priv_sta; -+ struct minstrel_ht_sta *mi = &msp->ht; -+ struct minstrel_priv *mp = priv; -+ int sample_idx; -+ -+ if (rate_control_send_low(sta, priv_sta, txrc)) -+ return; -+ -+ if (!msp->is_ht) -+ return mac80211_minstrel.get_rate(priv, sta, &msp->legacy, txrc); -+ -+ info->flags |= mi->tx_flags; -+ sample_idx = minstrel_get_sample_rate(mp, mi); -+ if (sample_idx >= 0) { -+ minstrel_ht_set_rate(mp, mi, &ar[0], sample_idx, -+ txrc, true, false); -+ minstrel_ht_set_rate(mp, mi, &ar[1], mi->max_tp_rate, -+ txrc, false, true); -+ info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; -+ } else { -+ minstrel_ht_set_rate(mp, mi, &ar[0], mi->max_tp_rate, -+ txrc, false, false); -+ minstrel_ht_set_rate(mp, mi, &ar[1], mi->max_tp_rate2, -+ txrc, false, true); -+ } -+ minstrel_ht_set_rate(mp, mi, &ar[2], mi->max_prob_rate, txrc, false, true); -+ -+ ar[3].count = 0; -+ ar[3].idx = -1; -+ -+ mi->total_packets++; -+ -+ /* wraparound */ -+ if (mi->total_packets == ~0) { -+ mi->total_packets = 0; -+ mi->sample_packets = 0; -+ } -+} -+ -+static void -+minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband, -+ struct ieee80211_sta *sta, void *priv_sta, -+ enum nl80211_channel_type oper_chan_type) -+{ -+ struct minstrel_priv *mp = priv; -+ struct minstrel_ht_sta_priv *msp = priv_sta; -+ struct minstrel_ht_sta *mi = &msp->ht; -+ struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs; -+ struct ieee80211_local *local = hw_to_local(mp->hw); -+ u16 sta_cap = sta->ht_cap.cap; -+ int ack_dur; -+ int stbc; -+ int i; -+ -+ /* fall back to the old minstrel for legacy stations */ -+ if (sta && !sta->ht_cap.ht_supported) { -+ msp->is_ht = false; -+ memset(&msp->legacy, 0, sizeof(msp->legacy)); -+ msp->legacy.r = msp->ratelist; -+ msp->legacy.sample_table = msp->sample_table; -+ return mac80211_minstrel.rate_init(priv, sband, sta, &msp->legacy); -+ } -+ -+ BUILD_BUG_ON(ARRAY_SIZE(minstrel_mcs_groups) != -+ MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS); -+ -+ msp->is_ht = true; -+ memset(mi, 0, sizeof(*mi)); -+ mi->stats_update = jiffies; -+ -+ ack_dur = ieee80211_frame_duration(local, 10, 60, 1, 1); -+ mi->overhead = ieee80211_frame_duration(local, 0, 60, 1, 1) + ack_dur; -+ mi->overhead_rtscts = mi->overhead + 2 * ack_dur; -+ -+ mi->avg_ampdu_len = MINSTREL_FRAC(1, 1); -+ -+ /* When using MRR, sample more on the first attempt, without delay */ -+ if (mp->has_mrr) { -+ mi->sample_count = 16; -+ mi->sample_wait = 0; -+ } else { -+ mi->sample_count = 8; -+ mi->sample_wait = 8; -+ } -+ mi->sample_tries = 4; -+ -+ stbc = (sta_cap & IEEE80211_HT_CAP_RX_STBC) >> -+ IEEE80211_HT_CAP_RX_STBC_SHIFT; -+ mi->tx_flags |= stbc << IEEE80211_TX_CTL_STBC_SHIFT; -+ -+ if (sta_cap & IEEE80211_HT_CAP_LDPC_CODING) -+ mi->tx_flags |= IEEE80211_TX_CTL_LDPC; -+ -+ if (oper_chan_type != NL80211_CHAN_HT40MINUS && -+ oper_chan_type != NL80211_CHAN_HT40PLUS) -+ sta_cap &= ~IEEE80211_HT_CAP_SUP_WIDTH_20_40; -+ -+ for (i = 0; i < ARRAY_SIZE(mi->groups); i++) { -+ u16 req = 0; -+ -+ mi->groups[i].supported = 0; -+ if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_SHORT_GI) { -+ if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH) -+ req |= IEEE80211_HT_CAP_SGI_40; -+ else -+ req |= IEEE80211_HT_CAP_SGI_20; -+ } -+ -+ if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH) -+ req |= IEEE80211_HT_CAP_SUP_WIDTH_20_40; -+ -+ if ((sta_cap & req) != req) -+ continue; -+ -+ mi->groups[i].supported = -+ mcs->rx_mask[minstrel_mcs_groups[i].streams - 1]; -+ } -+} -+ -+static void -+minstrel_ht_rate_init(void *priv, struct ieee80211_supported_band *sband, -+ struct ieee80211_sta *sta, void *priv_sta) -+{ -+ struct minstrel_priv *mp = priv; -+ -+ minstrel_ht_update_caps(priv, sband, sta, priv_sta, mp->hw->conf.channel_type); -+} -+ -+static void -+minstrel_ht_rate_update(void *priv, struct ieee80211_supported_band *sband, -+ struct ieee80211_sta *sta, void *priv_sta, -+ u32 changed, enum nl80211_channel_type oper_chan_type) -+{ -+ minstrel_ht_update_caps(priv, sband, sta, priv_sta, oper_chan_type); -+} -+ -+static void * -+minstrel_ht_alloc_sta(void *priv, struct ieee80211_sta *sta, gfp_t gfp) -+{ -+ struct ieee80211_supported_band *sband; -+ struct minstrel_ht_sta_priv *msp; -+ struct minstrel_priv *mp = priv; -+ struct ieee80211_hw *hw = mp->hw; -+ int max_rates = 0; -+ int i; -+ -+ for (i = 0; i < IEEE80211_NUM_BANDS; i++) { -+ sband = hw->wiphy->bands[i]; -+ if (sband && sband->n_bitrates > max_rates) -+ max_rates = sband->n_bitrates; -+ } -+ -+ msp = kzalloc(sizeof(struct minstrel_ht_sta), gfp); -+ if (!msp) -+ return NULL; -+ -+ msp->ratelist = kzalloc(sizeof(struct minstrel_rate) * max_rates, gfp); -+ if (!msp->ratelist) -+ goto error; -+ -+ msp->sample_table = kmalloc(SAMPLE_COLUMNS * max_rates, gfp); -+ if (!msp->sample_table) -+ goto error1; -+ -+ return msp; -+ -+error1: -+ kfree(msp->sample_table); -+error: -+ kfree(msp); -+ return NULL; -+} -+ -+static void -+minstrel_ht_free_sta(void *priv, struct ieee80211_sta *sta, void *priv_sta) -+{ -+ struct minstrel_ht_sta_priv *msp = priv_sta; -+ -+ kfree(msp->sample_table); -+ kfree(msp->ratelist); -+ kfree(msp); -+} -+ -+static void * -+minstrel_ht_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir) -+{ -+ return mac80211_minstrel.alloc(hw, debugfsdir); -+} -+ -+static void -+minstrel_ht_free(void *priv) -+{ -+ mac80211_minstrel.free(priv); -+} -+ -+static struct rate_control_ops mac80211_minstrel_ht = { -+ .name = "minstrel_ht", -+ .tx_status = minstrel_ht_tx_status, -+ .get_rate = minstrel_ht_get_rate, -+ .rate_init = minstrel_ht_rate_init, -+ .rate_update = minstrel_ht_rate_update, -+ .alloc_sta = minstrel_ht_alloc_sta, -+ .free_sta = minstrel_ht_free_sta, -+ .alloc = minstrel_ht_alloc, -+ .free = minstrel_ht_free, -+#ifdef CONFIG_MAC80211_DEBUGFS -+ .add_sta_debugfs = minstrel_ht_add_sta_debugfs, -+ .remove_sta_debugfs = minstrel_ht_remove_sta_debugfs, -+#endif -+}; -+ -+ -+static void -+init_sample_table(void) -+{ -+ int col, i, new_idx; -+ u8 rnd[MCS_GROUP_RATES]; -+ -+ memset(sample_table, 0xff, sizeof(sample_table)); -+ for (col = 0; col < SAMPLE_COLUMNS; col++) { -+ for (i = 0; i < MCS_GROUP_RATES; i++) { -+ get_random_bytes(rnd, sizeof(rnd)); -+ new_idx = (i + rnd[i]) % MCS_GROUP_RATES; -+ -+ while (sample_table[col][new_idx] != 0xff) -+ new_idx = (new_idx + 1) % MCS_GROUP_RATES; -+ -+ sample_table[col][new_idx] = i; -+ } -+ } -+} -+ -+int __init -+rc80211_minstrel_ht_init(void) -+{ -+ init_sample_table(); -+ return ieee80211_rate_control_register(&mac80211_minstrel_ht); -+} -+ -+void -+rc80211_minstrel_ht_exit(void) -+{ -+ ieee80211_rate_control_unregister(&mac80211_minstrel_ht); -+} ---- /dev/null -+++ b/net/mac80211/rc80211_minstrel_ht.h -@@ -0,0 +1,128 @@ -+/* -+ * Copyright (C) 2010 Felix Fietkau -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+ -+#ifndef __RC_MINSTREL_HT_H -+#define __RC_MINSTREL_HT_H -+ -+/* -+ * The number of streams can be changed to 2 to reduce code -+ * size and memory footprint. -+ */ -+#define MINSTREL_MAX_STREAMS 3 -+#define MINSTREL_STREAM_GROUPS 4 -+ -+/* scaled fraction values */ -+#define MINSTREL_SCALE 16 -+#define MINSTREL_FRAC(val, div) (((val) << MINSTREL_SCALE) / div) -+#define MINSTREL_TRUNC(val) ((val) >> MINSTREL_SCALE) -+ -+#define MCS_GROUP_RATES 8 -+ -+struct mcs_group { -+ u32 flags; -+ unsigned int streams; -+ unsigned int duration[MCS_GROUP_RATES]; -+}; -+ -+struct minstrel_rate_stats { -+ /* current / last sampling period attempts/success counters */ -+ unsigned int attempts, last_attempts; -+ unsigned int success, last_success; -+ -+ /* total attempts/success counters */ -+ u64 att_hist, succ_hist; -+ -+ /* current throughput */ -+ unsigned int cur_tp; -+ -+ /* packet delivery probabilities */ -+ unsigned int cur_prob, probability; -+ -+ /* maximum retry counts */ -+ unsigned int retry_count; -+ unsigned int retry_count_rtscts; -+ -+ bool retry_updated; -+ u8 sample_skipped; -+}; -+ -+struct minstrel_mcs_group_data { -+ u8 index; -+ u8 column; -+ -+ /* bitfield of supported MCS rates of this group */ -+ u8 supported; -+ -+ /* selected primary rates */ -+ unsigned int max_tp_rate; -+ unsigned int max_tp_rate2; -+ unsigned int max_prob_rate; -+ -+ /* MCS rate statistics */ -+ struct minstrel_rate_stats rates[MCS_GROUP_RATES]; -+}; -+ -+struct minstrel_ht_sta { -+ /* ampdu length (average, per sampling interval) */ -+ unsigned int ampdu_len; -+ unsigned int ampdu_packets; -+ -+ /* ampdu length (EWMA) */ -+ unsigned int avg_ampdu_len; -+ -+ /* best throughput rate */ -+ unsigned int max_tp_rate; -+ -+ /* second best throughput rate */ -+ unsigned int max_tp_rate2; -+ -+ /* best probability rate */ -+ unsigned int max_prob_rate; -+ -+ /* time of last status update */ -+ unsigned long stats_update; -+ -+ /* overhead time in usec for each frame */ -+ unsigned int overhead; -+ unsigned int overhead_rtscts; -+ -+ unsigned int total_packets; -+ unsigned int sample_packets; -+ -+ /* tx flags to add for frames for this sta */ -+ u32 tx_flags; -+ -+ u8 sample_wait; -+ u8 sample_tries; -+ u8 sample_count; -+ u8 sample_slow; -+ -+ /* current MCS group to be sampled */ -+ u8 sample_group; -+ -+ /* MCS rate group info and statistics */ -+ struct minstrel_mcs_group_data groups[MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS]; -+}; -+ -+struct minstrel_ht_sta_priv { -+ union { -+ struct minstrel_ht_sta ht; -+ struct minstrel_sta_info legacy; -+ }; -+#ifdef CONFIG_MAC80211_DEBUGFS -+ struct dentry *dbg_stats; -+#endif -+ void *ratelist; -+ void *sample_table; -+ bool is_ht; -+}; -+ -+void minstrel_ht_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir); -+void minstrel_ht_remove_sta_debugfs(void *priv, void *priv_sta); -+ -+#endif ---- /dev/null -+++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c -@@ -0,0 +1,120 @@ -+/* -+ * Copyright (C) 2010 Felix Fietkau -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include "rc80211_minstrel.h" -+#include "rc80211_minstrel_ht.h" -+ -+extern const struct mcs_group minstrel_mcs_groups[]; -+ -+static int -+minstrel_ht_stats_open(struct inode *inode, struct file *file) -+{ -+ struct minstrel_ht_sta_priv *msp = inode->i_private; -+ struct minstrel_ht_sta *mi = &msp->ht; -+ struct minstrel_debugfs_info *ms; -+ unsigned int i, j, tp, prob, eprob; -+ char *p; -+ int ret; -+ -+ if (!msp->is_ht) { -+ inode->i_private = &msp->legacy; -+ ret = minstrel_stats_open(inode, file); -+ inode->i_private = msp; -+ return ret; -+ } -+ -+ ms = kmalloc(sizeof(*ms) + 8192, GFP_KERNEL); -+ if (!ms) -+ return -ENOMEM; -+ -+ file->private_data = ms; -+ p = ms->buf; -+ p += sprintf(p, "type rate throughput ewma prob this prob " -+ "this succ/attempt success attempts\n"); -+ for (i = 0; i < MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS; i++) { -+ char htmode = '2'; -+ char gimode = 'L'; -+ -+ if (!mi->groups[i].supported) -+ continue; -+ -+ if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH) -+ htmode = '4'; -+ if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_SHORT_GI) -+ gimode = 'S'; -+ -+ for (j = 0; j < MCS_GROUP_RATES; j++) { -+ struct minstrel_rate_stats *mr = &mi->groups[i].rates[j]; -+ int idx = i * MCS_GROUP_RATES + j; -+ -+ if (!(mi->groups[i].supported & BIT(j))) -+ continue; -+ -+ p += sprintf(p, "HT%c0/%cGI ", htmode, gimode); -+ -+ *(p++) = (idx == mi->max_tp_rate) ? 'T' : ' '; -+ *(p++) = (idx == mi->max_tp_rate2) ? 't' : ' '; -+ *(p++) = (idx == mi->max_prob_rate) ? 'P' : ' '; -+ p += sprintf(p, "MCS%-2u", (minstrel_mcs_groups[i].streams - 1) * -+ MCS_GROUP_RATES + j); -+ -+ tp = mr->cur_tp / 10; -+ prob = MINSTREL_TRUNC(mr->cur_prob * 1000); -+ eprob = MINSTREL_TRUNC(mr->probability * 1000); -+ -+ p += sprintf(p, " %6u.%1u %6u.%1u %6u.%1u " -+ "%3u(%3u) %8llu %8llu\n", -+ tp / 10, tp % 10, -+ eprob / 10, eprob % 10, -+ prob / 10, prob % 10, -+ mr->last_success, -+ mr->last_attempts, -+ (unsigned long long)mr->succ_hist, -+ (unsigned long long)mr->att_hist); -+ } -+ } -+ p += sprintf(p, "\nTotal packet count:: ideal %d " -+ "lookaround %d\n", -+ max(0, (int) mi->total_packets - (int) mi->sample_packets), -+ mi->sample_packets); -+ p += sprintf(p, "Average A-MPDU length: %d.%d\n", -+ MINSTREL_TRUNC(mi->avg_ampdu_len), -+ MINSTREL_TRUNC(mi->avg_ampdu_len * 10) % 10); -+ ms->len = p - ms->buf; -+ -+ return 0; -+} -+ -+static const struct file_operations minstrel_ht_stat_fops = { -+ .owner = THIS_MODULE, -+ .open = minstrel_ht_stats_open, -+ .read = minstrel_stats_read, -+ .release = minstrel_stats_release, -+}; -+ -+void -+minstrel_ht_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir) -+{ -+ struct minstrel_ht_sta_priv *msp = priv_sta; -+ -+ msp->dbg_stats = debugfs_create_file("rc_stats", S_IRUGO, dir, msp, -+ &minstrel_ht_stat_fops); -+} -+ -+void -+minstrel_ht_remove_sta_debugfs(void *priv, void *priv_sta) -+{ -+ struct minstrel_ht_sta_priv *msp = priv_sta; -+ -+ debugfs_remove(msp->dbg_stats); -+} diff --git a/package/mac80211/patches/510-pending_work.patch b/package/mac80211/patches/510-pending_work.patch new file mode 100644 index 000000000..d52eaa444 --- /dev/null +++ b/package/mac80211/patches/510-pending_work.patch @@ -0,0 +1,1893 @@ +--- a/drivers/net/wireless/ath/ath9k/Makefile ++++ b/drivers/net/wireless/ath/ath9k/Makefile +@@ -32,7 +32,8 @@ ath9k_hw-y:= \ + mac.o \ + ar9002_mac.o \ + ar9003_mac.o \ +- ar9003_eeprom.o ++ ar9003_eeprom.o \ ++ ar9003_paprd.o + + obj-$(CONFIG_ATH9K_HW) += ath9k_hw.o + +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +@@ -67,6 +67,7 @@ static const struct ar9300_eeprom ar9300 + * bit2 - enable fastClock - enabled + * bit3 - enable doubling - enabled + * bit4 - enable internal regulator - disabled ++ * bit5 - enable pa predistortion - disabled + */ + .miscConfiguration = 0, /* bit0 - turn down drivestrength */ + .eepromWriteEnableGpio = 3, +@@ -129,9 +130,11 @@ static const struct ar9300_eeprom ar9300 + .txEndToRxOn = 0x2, + .txFrameToXpaOn = 0xe, + .thresh62 = 28, +- .futureModal = { /* [32] */ ++ .papdRateMaskHt20 = LE32(0x80c080), ++ .papdRateMaskHt40 = LE32(0x80c080), ++ .futureModal = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ++ 0, 0, 0, 0, 0, 0, 0, 0 + }, + }, + .calFreqPier2G = { +@@ -326,9 +329,11 @@ static const struct ar9300_eeprom ar9300 + .txEndToRxOn = 0x2, + .txFrameToXpaOn = 0xe, + .thresh62 = 28, ++ .papdRateMaskHt20 = LE32(0xf0e0e0), ++ .papdRateMaskHt40 = LE32(0xf0e0e0), + .futureModal = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ++ 0, 0, 0, 0, 0, 0, 0, 0 + }, + }, + .calFreqPier5G = { +@@ -644,6 +649,8 @@ static u32 ath9k_hw_ar9300_get_eeprom(st + return (pBase->featureEnable & 0x10) >> 4; + case EEP_SWREG: + return le32_to_cpu(pBase->swreg); ++ case EEP_PAPRD: ++ return !!(pBase->featureEnable & BIT(5)); + default: + return 0; + } +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h +@@ -234,7 +234,9 @@ struct ar9300_modal_eep_header { + u8 txEndToRxOn; + u8 txFrameToXpaOn; + u8 thresh62; +- u8 futureModal[32]; ++ __le32 papdRateMaskHt20; ++ __le32 papdRateMaskHt40; ++ u8 futureModal[24]; + } __packed; + + struct ar9300_cal_data_per_freq_op_loop { +--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c +@@ -470,6 +470,14 @@ static void ar9003_hw_set11n_virtualmore + ads->ctl11 &= ~AR_VirtMoreFrag; + } + ++void ar9003_hw_set_paprd_txdesc(struct ath_hw *ah, void *ds, u8 chains) ++{ ++ struct ar9003_txc *ads = ds; ++ ++ ads->ctl12 |= SM(chains, AR_PAPRDChainMask); ++} ++EXPORT_SYMBOL(ar9003_hw_set_paprd_txdesc); ++ + void ar9003_hw_attach_mac_ops(struct ath_hw *hw) + { + struct ath_hw_ops *ops = ath9k_hw_ops(hw); +--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.h ++++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.h +@@ -40,6 +40,10 @@ + + #define AR_Not_Sounding 0x20000000 + ++/* ctl 12 */ ++#define AR_PAPRDChainMask 0x00000e00 ++#define AR_PAPRDChainMask_S 9 ++ + #define MAP_ISR_S2_CST 6 + #define MAP_ISR_S2_GTT 6 + #define MAP_ISR_S2_TIM 3 +--- /dev/null ++++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c +@@ -0,0 +1,713 @@ ++/* ++ * Copyright (c) 2010 Atheros Communications Inc. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include "hw.h" ++#include "ar9003_phy.h" ++ ++void ar9003_paprd_enable(struct ath_hw *ah, bool val) ++{ ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B0, ++ AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE, !!val); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B1, ++ AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE, !!val); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B2, ++ AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE, !!val); ++} ++EXPORT_SYMBOL(ar9003_paprd_enable); ++ ++static void ar9003_paprd_setup_single_table(struct ath_hw *ah) ++{ ++ struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep; ++ struct ar9300_modal_eep_header *hdr; ++ const u32 ctrl0[3] = { ++ AR_PHY_PAPRD_CTRL0_B0, ++ AR_PHY_PAPRD_CTRL0_B1, ++ AR_PHY_PAPRD_CTRL0_B2 ++ }; ++ const u32 ctrl1[3] = { ++ AR_PHY_PAPRD_CTRL1_B0, ++ AR_PHY_PAPRD_CTRL1_B1, ++ AR_PHY_PAPRD_CTRL1_B2 ++ }; ++ u32 am_mask, ht40_mask; ++ int i; ++ ++ if (ah->curchan && IS_CHAN_5GHZ(ah->curchan)) ++ hdr = &eep->modalHeader5G; ++ else ++ hdr = &eep->modalHeader2G; ++ ++ am_mask = le32_to_cpu(hdr->papdRateMaskHt20); ++ ht40_mask = le32_to_cpu(hdr->papdRateMaskHt40); ++ ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2AM, AR_PHY_PAPRD_AM2AM_MASK, am_mask); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2PM, AR_PHY_PAPRD_AM2PM_MASK, am_mask); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_HT40, AR_PHY_PAPRD_HT40_MASK, ht40_mask); ++ ++ for (i = 0; i < 3; i++) { ++ REG_RMW_FIELD(ah, ctrl0[i], ++ AR_PHY_PAPRD_CTRL0_USE_SINGLE_TABLE_MASK, 1); ++ REG_RMW_FIELD(ah, ctrl1[i], ++ AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2PM_ENABLE, 1); ++ REG_RMW_FIELD(ah, ctrl1[i], ++ AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2AM_ENABLE, 1); ++ REG_RMW_FIELD(ah, ctrl1[i], ++ AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA, 0); ++ REG_RMW_FIELD(ah, ctrl1[i], ++ AR_PHY_PAPRD_CTRL1_PA_GAIN_SCALE_FACT_MASK, 181); ++ REG_RMW_FIELD(ah, ctrl1[i], ++ AR_PHY_PAPRD_CTRL1_PAPRD_MAG_SCALE_FACT, 361); ++ REG_RMW_FIELD(ah, ctrl1[i], ++ AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA, 0); ++ REG_RMW_FIELD(ah, ctrl0[i], ++ AR_PHY_PAPRD_CTRL0_PAPRD_MAG_THRSH, 3); ++ } ++ ++ ar9003_paprd_enable(ah, false); ++ ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, ++ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_SKIP, 0x30); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, ++ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_ENABLE, 1); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, ++ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_TX_GAIN_FORCE, 1); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, ++ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_RX_BB_GAIN_FORCE, 0); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, ++ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_IQCORR_ENABLE, 0); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, ++ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_AGC2_SETTLING, 28); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, ++ AR_PHY_PAPRD_TRAINER_CNTL1_CF_CF_PAPRD_TRAIN_ENABLE, 1); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL2, ++ AR_PHY_PAPRD_TRAINER_CNTL2_CF_PAPRD_INIT_RX_BB_GAIN, 147); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, ++ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_FINE_CORR_LEN, 4); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, ++ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_COARSE_CORR_LEN, 4); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, ++ 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); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, ++ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_QUICK_DROP, -6); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, ++ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_ADC_DESIRED_SIZE, ++ -15); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, ++ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_BBTXMIX_DISABLE, 1); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL4, ++ AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_SAFETY_DELTA, 0); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL4, ++ AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_MIN_CORR, 400); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL4, ++ AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_NUM_TRAIN_SAMPLES, ++ 100); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_0_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 261376); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_1_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 248079); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_2_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 233759); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_3_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 220464); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_4_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 208194); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_5_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 196949); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_6_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 185706); ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_7_B0, ++ AR_PHY_PAPRD_PRE_POST_SCALING, 175487); ++} ++ ++static void ar9003_paprd_get_gain_table(struct ath_hw *ah) ++{ ++ u32 *entry = ah->paprd_gain_table_entries; ++ u8 *index = ah->paprd_gain_table_index; ++ u32 reg = AR_PHY_TXGAIN_TABLE; ++ int i; ++ ++ memset(entry, 0, sizeof(ah->paprd_gain_table_entries)); ++ memset(index, 0, sizeof(ah->paprd_gain_table_index)); ++ ++ for (i = 0; i < 32; i++) { ++ entry[i] = REG_READ(ah, reg); ++ index[i] = (entry[i] >> 24) & 0xff; ++ reg += 4; ++ } ++} ++ ++static unsigned int ar9003_get_desired_gain(struct ath_hw *ah, int chain, ++ int target_power) ++{ ++ int olpc_gain_delta = 0; ++ int alpha_therm, alpha_volt; ++ int therm_cal_value, volt_cal_value; ++ int therm_value, volt_value; ++ int thermal_gain_corr, voltage_gain_corr; ++ int desired_scale, desired_gain = 0; ++ u32 reg; ++ ++ REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, ++ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); ++ desired_scale = REG_READ_FIELD(ah, AR_PHY_TPC_12, ++ AR_PHY_TPC_12_DESIRED_SCALE_HT40_5); ++ alpha_therm = REG_READ_FIELD(ah, AR_PHY_TPC_19, ++ AR_PHY_TPC_19_ALPHA_THERM); ++ alpha_volt = REG_READ_FIELD(ah, AR_PHY_TPC_19, ++ AR_PHY_TPC_19_ALPHA_VOLT); ++ therm_cal_value = REG_READ_FIELD(ah, AR_PHY_TPC_18, ++ AR_PHY_TPC_18_THERM_CAL_VALUE); ++ volt_cal_value = REG_READ_FIELD(ah, AR_PHY_TPC_18, ++ AR_PHY_TPC_18_VOLT_CAL_VALUE); ++ therm_value = REG_READ_FIELD(ah, AR_PHY_BB_THERM_ADC_4, ++ AR_PHY_BB_THERM_ADC_4_LATEST_THERM_VALUE); ++ volt_value = REG_READ_FIELD(ah, AR_PHY_BB_THERM_ADC_4, ++ AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE); ++ ++ if (chain == 0) ++ reg = AR_PHY_TPC_11_B0; ++ else if (chain == 1) ++ reg = AR_PHY_TPC_11_B1; ++ else ++ reg = AR_PHY_TPC_11_B2; ++ ++ olpc_gain_delta = REG_READ_FIELD(ah, reg, ++ AR_PHY_TPC_11_OLPC_GAIN_DELTA); ++ ++ if (olpc_gain_delta >= 128) ++ olpc_gain_delta = olpc_gain_delta - 256; ++ ++ thermal_gain_corr = (alpha_therm * (therm_value - therm_cal_value) + ++ (256 / 2)) / 256; ++ voltage_gain_corr = (alpha_volt * (volt_value - volt_cal_value) + ++ (128 / 2)) / 128; ++ desired_gain = target_power - olpc_gain_delta - thermal_gain_corr - ++ voltage_gain_corr + desired_scale; ++ ++ return desired_gain; ++} ++ ++static void ar9003_tx_force_gain(struct ath_hw *ah, unsigned int gain_index) ++{ ++ int selected_gain_entry, txbb1dbgain, txbb6dbgain, txmxrgain; ++ int padrvgnA, padrvgnB, padrvgnC, padrvgnD; ++ u32 *gain_table_entries = ah->paprd_gain_table_entries; ++ ++ selected_gain_entry = gain_table_entries[gain_index]; ++ txbb1dbgain = selected_gain_entry & 0x7; ++ txbb6dbgain = (selected_gain_entry >> 3) & 0x3; ++ txmxrgain = (selected_gain_entry >> 5) & 0xf; ++ padrvgnA = (selected_gain_entry >> 9) & 0xf; ++ padrvgnB = (selected_gain_entry >> 13) & 0xf; ++ padrvgnC = (selected_gain_entry >> 17) & 0xf; ++ padrvgnD = (selected_gain_entry >> 21) & 0x3; ++ ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_TXBB1DBGAIN, txbb1dbgain); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_TXBB6DBGAIN, txbb6dbgain); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_TXMXRGAIN, txmxrgain); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNA, padrvgnA); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNB, padrvgnB); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNC, padrvgnC); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGND, padrvgnD); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCED_ENABLE_PAL, 0); ++ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, ++ AR_PHY_TX_FORCED_GAIN_FORCE_TX_GAIN, 0); ++ REG_RMW_FIELD(ah, AR_PHY_TPC_1, AR_PHY_TPC_1_FORCED_DAC_GAIN, 0); ++ REG_RMW_FIELD(ah, AR_PHY_TPC_1, AR_PHY_TPC_1_FORCE_DAC_GAIN, 0); ++} ++ ++static inline int find_expn(int num) ++{ ++ return fls(num) - 1; ++} ++ ++static inline int find_proper_scale(int expn, int N) ++{ ++ return (expn > N) ? expn - 10 : 0; ++} ++ ++#define NUM_BIN 23 ++ ++static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain) ++{ ++ unsigned int thresh_accum_cnt; ++ int x_est[NUM_BIN + 1], Y[NUM_BIN + 1], theta[NUM_BIN + 1]; ++ int PA_in[NUM_BIN + 1]; ++ int B1_tmp[NUM_BIN + 1], B2_tmp[NUM_BIN + 1]; ++ unsigned int B1_abs_max, B2_abs_max; ++ int max_index, scale_factor; ++ int y_est[NUM_BIN + 1]; ++ int x_est_fxp1_nonlin, x_tilde[NUM_BIN + 1]; ++ unsigned int x_tilde_abs; ++ int G_fxp, Y_intercept, order_x_by_y, M, I, L, sum_y_sqr, sum_y_quad; ++ int Q_x, Q_B1, Q_B2, beta_raw, alpha_raw, scale_B; ++ int Q_scale_B, Q_beta, Q_alpha, alpha, beta, order_1, order_2; ++ int order1_5x, order2_3x, order1_5x_rem, order2_3x_rem; ++ int y5, y3, tmp; ++ int theta_low_bin = 0; ++ int i; ++ ++ /* disregard any bin that contains <= 16 samples */ ++ thresh_accum_cnt = 16; ++ scale_factor = 5; ++ max_index = 0; ++ memset(theta, 0, sizeof(theta)); ++ memset(x_est, 0, sizeof(x_est)); ++ memset(Y, 0, sizeof(Y)); ++ memset(y_est, 0, sizeof(y_est)); ++ memset(x_tilde, 0, sizeof(x_tilde)); ++ ++ for (i = 0; i < NUM_BIN; i++) { ++ s32 accum_cnt, accum_tx, accum_rx, accum_ang; ++ ++ /* number of samples */ ++ accum_cnt = data_L[i] & 0xffff; ++ ++ if (accum_cnt <= thresh_accum_cnt) ++ continue; ++ ++ /* sum(tx amplitude) */ ++ accum_tx = ((data_L[i] >> 16) & 0xffff) | ++ ((data_U[i] & 0x7ff) << 16); ++ ++ /* sum(rx amplitude distance to lower bin edge) */ ++ accum_rx = ((data_U[i] >> 11) & 0x1f) | ++ ((data_L[i + 23] & 0xffff) << 5); ++ ++ /* sum(angles) */ ++ accum_ang = ((data_L[i + 23] >> 16) & 0xffff) | ++ ((data_U[i + 23] & 0x7ff) << 16); ++ ++ accum_tx <<= scale_factor; ++ accum_rx <<= scale_factor; ++ x_est[i + 1] = (((accum_tx + accum_cnt) / accum_cnt) + 32) >> ++ scale_factor; ++ ++ Y[i + 1] = ((((accum_rx + accum_cnt) / accum_cnt) + 32) >> ++ scale_factor) + (1 << scale_factor) * max_index + 16; ++ ++ if (accum_ang >= (1 << 26)) ++ accum_ang -= 1 << 27; ++ ++ theta[i + 1] = ((accum_ang * (1 << scale_factor)) + accum_cnt) / ++ accum_cnt; ++ ++ max_index++; ++ } ++ ++ /* ++ * Find average theta of first 5 bin and all of those to same value. ++ * Curve is linear at that range. ++ */ ++ for (i = 1; i < 6; i++) ++ theta_low_bin += theta[i]; ++ ++ theta_low_bin = theta_low_bin / 5; ++ for (i = 1; i < 6; i++) ++ theta[i] = theta_low_bin; ++ ++ /* Set values at origin */ ++ theta[0] = theta_low_bin; ++ for (i = 0; i <= max_index; i++) ++ theta[i] -= theta_low_bin; ++ ++ x_est[0] = 0; ++ Y[0] = 0; ++ scale_factor = 8; ++ ++ /* low signal gain */ ++ if (x_est[6] == x_est[3]) ++ return false; ++ ++ G_fxp = ++ (((Y[6] - Y[3]) * 1 << scale_factor) + ++ (x_est[6] - x_est[3])) / (x_est[6] - x_est[3]); ++ ++ Y_intercept = ++ (G_fxp * (x_est[0] - x_est[3]) + ++ (1 << scale_factor)) / (1 << scale_factor) + Y[3]; ++ ++ for (i = 0; i <= max_index; i++) ++ y_est[i] = Y[i] - Y_intercept; ++ ++ for (i = 0; i <= 3; i++) { ++ y_est[i] = i * 32; ++ ++ /* prevent division by zero */ ++ if (G_fxp == 0) ++ return false; ++ ++ x_est[i] = ((y_est[i] * 1 << scale_factor) + G_fxp) / G_fxp; ++ } ++ ++ x_est_fxp1_nonlin = ++ x_est[max_index] - ((1 << scale_factor) * y_est[max_index] + ++ G_fxp) / G_fxp; ++ ++ order_x_by_y = ++ (x_est_fxp1_nonlin + y_est[max_index]) / y_est[max_index]; ++ ++ if (order_x_by_y == 0) ++ M = 10; ++ else if (order_x_by_y == 1) ++ M = 9; ++ else ++ M = 8; ++ ++ I = (max_index > 15) ? 7 : max_index >> 1; ++ L = max_index - I; ++ scale_factor = 8; ++ sum_y_sqr = 0; ++ sum_y_quad = 0; ++ x_tilde_abs = 0; ++ ++ for (i = 0; i <= L; i++) { ++ unsigned int y_sqr; ++ unsigned int y_quad; ++ unsigned int tmp_abs; ++ ++ /* prevent division by zero */ ++ if (y_est[i + I] == 0) ++ return false; ++ ++ x_est_fxp1_nonlin = ++ x_est[i + I] - ((1 << scale_factor) * y_est[i + I] + ++ G_fxp) / G_fxp; ++ ++ x_tilde[i] = ++ (x_est_fxp1_nonlin * (1 << M) + y_est[i + I]) / y_est[i + ++ I]; ++ x_tilde[i] = ++ (x_tilde[i] * (1 << M) + y_est[i + I]) / y_est[i + I]; ++ x_tilde[i] = ++ (x_tilde[i] * (1 << M) + y_est[i + I]) / y_est[i + I]; ++ y_sqr = ++ (y_est[i + I] * y_est[i + I] + ++ (scale_factor * scale_factor)) / (scale_factor * ++ scale_factor); ++ tmp_abs = abs(x_tilde[i]); ++ if (tmp_abs > x_tilde_abs) ++ x_tilde_abs = tmp_abs; ++ ++ y_quad = y_sqr * y_sqr; ++ sum_y_sqr = sum_y_sqr + y_sqr; ++ sum_y_quad = sum_y_quad + y_quad; ++ B1_tmp[i] = y_sqr * (L + 1); ++ B2_tmp[i] = y_sqr; ++ } ++ ++ B1_abs_max = 0; ++ B2_abs_max = 0; ++ for (i = 0; i <= L; i++) { ++ int abs_val; ++ ++ B1_tmp[i] -= sum_y_sqr; ++ B2_tmp[i] = sum_y_quad - sum_y_sqr * B2_tmp[i]; ++ ++ abs_val = abs(B1_tmp[i]); ++ if (abs_val > B1_abs_max) ++ B1_abs_max = abs_val; ++ ++ abs_val = abs(B2_tmp[i]); ++ if (abs_val > B2_abs_max) ++ B2_abs_max = abs_val; ++ } ++ ++ Q_x = find_proper_scale(find_expn(x_tilde_abs), 10); ++ Q_B1 = find_proper_scale(find_expn(B1_abs_max), 10); ++ Q_B2 = find_proper_scale(find_expn(B2_abs_max), 10); ++ ++ beta_raw = 0; ++ alpha_raw = 0; ++ for (i = 0; i <= L; i++) { ++ x_tilde[i] = x_tilde[i] / (1 << Q_x); ++ B1_tmp[i] = B1_tmp[i] / (1 << Q_B1); ++ B2_tmp[i] = B2_tmp[i] / (1 << Q_B2); ++ beta_raw = beta_raw + B1_tmp[i] * x_tilde[i]; ++ alpha_raw = alpha_raw + B2_tmp[i] * x_tilde[i]; ++ } ++ ++ scale_B = ++ ((sum_y_quad / scale_factor) * (L + 1) - ++ (sum_y_sqr / scale_factor) * sum_y_sqr) * scale_factor; ++ ++ Q_scale_B = find_proper_scale(find_expn(abs(scale_B)), 10); ++ scale_B = scale_B / (1 << Q_scale_B); ++ Q_beta = find_proper_scale(find_expn(abs(beta_raw)), 10); ++ Q_alpha = find_proper_scale(find_expn(abs(alpha_raw)), 10); ++ beta_raw = beta_raw / (1 << Q_beta); ++ alpha_raw = alpha_raw / (1 << Q_alpha); ++ alpha = (alpha_raw << 10) / scale_B; ++ beta = (beta_raw << 10) / scale_B; ++ order_1 = 3 * M - Q_x - Q_B1 - Q_beta + 10 + Q_scale_B; ++ order_2 = 3 * M - Q_x - Q_B2 - Q_alpha + 10 + Q_scale_B; ++ order1_5x = order_1 / 5; ++ order2_3x = order_2 / 3; ++ order1_5x_rem = order_1 - 5 * order1_5x; ++ order2_3x_rem = order_2 - 3 * order2_3x; ++ ++ for (i = 0; i < PAPRD_TABLE_SZ; i++) { ++ tmp = i * 32; ++ y5 = ((beta * tmp) >> 6) >> order1_5x; ++ y5 = (y5 * tmp) >> order1_5x; ++ y5 = (y5 * tmp) >> order1_5x; ++ y5 = (y5 * tmp) >> order1_5x; ++ y5 = (y5 * tmp) >> order1_5x; ++ y5 = y5 >> order1_5x_rem; ++ y3 = (alpha * tmp) >> order2_3x; ++ y3 = (y3 * tmp) >> order2_3x; ++ y3 = (y3 * tmp) >> order2_3x; ++ y3 = y3 >> order2_3x_rem; ++ PA_in[i] = y5 + y3 + (256 * tmp) / G_fxp; ++ ++ if (i >= 2) { ++ tmp = PA_in[i] - PA_in[i - 1]; ++ if (tmp < 0) ++ PA_in[i] = ++ PA_in[i - 1] + (PA_in[i - 1] - ++ PA_in[i - 2]); ++ } ++ ++ PA_in[i] = (PA_in[i] < 1400) ? PA_in[i] : 1400; ++ } ++ ++ beta_raw = 0; ++ alpha_raw = 0; ++ ++ for (i = 0; i <= L; i++) { ++ int theta_tilde = ++ ((theta[i + I] << M) + y_est[i + I]) / y_est[i + I]; ++ theta_tilde = ++ ((theta_tilde << M) + y_est[i + I]) / y_est[i + I]; ++ theta_tilde = ++ ((theta_tilde << M) + y_est[i + I]) / y_est[i + I]; ++ beta_raw = beta_raw + B1_tmp[i] * theta_tilde; ++ alpha_raw = alpha_raw + B2_tmp[i] * theta_tilde; ++ } ++ ++ Q_beta = find_proper_scale(find_expn(abs(beta_raw)), 10); ++ Q_alpha = find_proper_scale(find_expn(abs(alpha_raw)), 10); ++ beta_raw = beta_raw / (1 << Q_beta); ++ alpha_raw = alpha_raw / (1 << Q_alpha); ++ ++ alpha = (alpha_raw << 10) / scale_B; ++ beta = (beta_raw << 10) / scale_B; ++ order_1 = 3 * M - Q_x - Q_B1 - Q_beta + 10 + Q_scale_B + 5; ++ order_2 = 3 * M - Q_x - Q_B2 - Q_alpha + 10 + Q_scale_B + 5; ++ order1_5x = order_1 / 5; ++ order2_3x = order_2 / 3; ++ order1_5x_rem = order_1 - 5 * order1_5x; ++ order2_3x_rem = order_2 - 3 * order2_3x; ++ ++ for (i = 0; i < PAPRD_TABLE_SZ; i++) { ++ int PA_angle; ++ ++ /* pa_table[4] is calculated from PA_angle for i=5 */ ++ if (i == 4) ++ continue; ++ ++ tmp = i * 32; ++ if (beta > 0) ++ y5 = (((beta * tmp - 64) >> 6) - ++ (1 << order1_5x)) / (1 << order1_5x); ++ else ++ y5 = ((((beta * tmp - 64) >> 6) + ++ (1 << order1_5x)) / (1 << order1_5x)); ++ ++ y5 = (y5 * tmp) / (1 << order1_5x); ++ y5 = (y5 * tmp) / (1 << order1_5x); ++ y5 = (y5 * tmp) / (1 << order1_5x); ++ y5 = (y5 * tmp) / (1 << order1_5x); ++ y5 = y5 / (1 << order1_5x_rem); ++ ++ if (beta > 0) ++ y3 = (alpha * tmp - ++ (1 << order2_3x)) / (1 << order2_3x); ++ else ++ y3 = (alpha * tmp + ++ (1 << order2_3x)) / (1 << order2_3x); ++ y3 = (y3 * tmp) / (1 << order2_3x); ++ y3 = (y3 * tmp) / (1 << order2_3x); ++ y3 = y3 / (1 << order2_3x_rem); ++ ++ if (i < 4) { ++ PA_angle = 0; ++ } else { ++ PA_angle = y5 + y3; ++ if (PA_angle < -150) ++ PA_angle = -150; ++ else if (PA_angle > 150) ++ PA_angle = 150; ++ } ++ ++ pa_table[i] = ((PA_in[i] & 0x7ff) << 11) + (PA_angle & 0x7ff); ++ if (i == 5) { ++ PA_angle = (PA_angle + 2) >> 1; ++ pa_table[i - 1] = ((PA_in[i - 1] & 0x7ff) << 11) + ++ (PA_angle & 0x7ff); ++ } ++ } ++ ++ *gain = G_fxp; ++ return true; ++} ++ ++void ar9003_paprd_populate_single_table(struct ath_hw *ah, ++ struct ath9k_channel *chan, int chain) ++{ ++ u32 *paprd_table_val = chan->pa_table[chain]; ++ u32 small_signal_gain = chan->small_signal_gain[chain]; ++ u32 training_power; ++ u32 reg = 0; ++ int i; ++ ++ training_power = ++ REG_READ_FIELD(ah, AR_PHY_POWERTX_RATE5, ++ AR_PHY_POWERTX_RATE5_POWERTXHT20_0); ++ training_power -= 4; ++ ++ if (chain == 0) ++ reg = AR_PHY_PAPRD_MEM_TAB_B0; ++ else if (chain == 1) ++ reg = AR_PHY_PAPRD_MEM_TAB_B1; ++ else if (chain == 2) ++ reg = AR_PHY_PAPRD_MEM_TAB_B2; ++ ++ for (i = 0; i < PAPRD_TABLE_SZ; i++) { ++ REG_WRITE(ah, reg, paprd_table_val[i]); ++ reg = reg + 4; ++ } ++ ++ if (chain == 0) ++ reg = AR_PHY_PA_GAIN123_B0; ++ else if (chain == 1) ++ reg = AR_PHY_PA_GAIN123_B1; ++ else ++ reg = AR_PHY_PA_GAIN123_B2; ++ ++ REG_RMW_FIELD(ah, reg, AR_PHY_PA_GAIN123_PA_GAIN1, small_signal_gain); ++ ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL1_B0, ++ AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL, ++ training_power); ++ ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL1_B1, ++ AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL, ++ training_power); ++ ++ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL1_B2, ++ AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL, ++ training_power); ++} ++EXPORT_SYMBOL(ar9003_paprd_populate_single_table); ++ ++int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain) ++{ ++ ++ unsigned int i, desired_gain, gain_index; ++ unsigned int train_power; ++ ++ train_power = REG_READ_FIELD(ah, AR_PHY_POWERTX_RATE5, ++ AR_PHY_POWERTX_RATE5_POWERTXHT20_0); ++ ++ train_power = train_power - 4; ++ ++ desired_gain = ar9003_get_desired_gain(ah, chain, train_power); ++ ++ gain_index = 0; ++ for (i = 0; i < 32; i++) { ++ if (ah->paprd_gain_table_index[i] >= desired_gain) ++ break; ++ gain_index++; ++ } ++ ++ ar9003_tx_force_gain(ah, gain_index); ++ ++ REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, ++ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); ++ ++ return 0; ++} ++EXPORT_SYMBOL(ar9003_paprd_setup_gain_table); ++ ++int ar9003_paprd_create_curve(struct ath_hw *ah, struct ath9k_channel *chan, ++ int chain) ++{ ++ u16 *small_signal_gain = &chan->small_signal_gain[chain]; ++ u32 *pa_table = chan->pa_table[chain]; ++ u32 *data_L, *data_U; ++ int i, status = 0; ++ u32 *buf; ++ u32 reg; ++ ++ memset(chan->pa_table[chain], 0, sizeof(chan->pa_table[chain])); ++ ++ buf = kmalloc(2 * 48 * sizeof(u32), GFP_ATOMIC); ++ if (!buf) ++ return -ENOMEM; ++ ++ data_L = &buf[0]; ++ data_U = &buf[48]; ++ ++ REG_CLR_BIT(ah, AR_PHY_CHAN_INFO_MEMORY, ++ AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ); ++ ++ reg = AR_PHY_CHAN_INFO_TAB_0; ++ for (i = 0; i < 48; i++) ++ data_L[i] = REG_READ(ah, reg + (i << 2)); ++ ++ REG_SET_BIT(ah, AR_PHY_CHAN_INFO_MEMORY, ++ AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ); ++ ++ for (i = 0; i < 48; i++) ++ data_U[i] = REG_READ(ah, reg + (i << 2)); ++ ++ if (!create_pa_curve(data_L, data_U, pa_table, small_signal_gain)) ++ status = -2; ++ ++ REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, ++ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); ++ ++ kfree(buf); ++ ++ return status; ++} ++EXPORT_SYMBOL(ar9003_paprd_create_curve); ++ ++int ar9003_paprd_init_table(struct ath_hw *ah) ++{ ++ ar9003_paprd_setup_single_table(ah); ++ ar9003_paprd_get_gain_table(ah); ++ return 0; ++} ++EXPORT_SYMBOL(ar9003_paprd_init_table); ++ ++bool ar9003_paprd_is_done(struct ath_hw *ah) ++{ ++ return !!REG_READ_FIELD(ah, AR_PHY_PAPRD_TRAINER_STAT1, ++ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); ++} ++EXPORT_SYMBOL(ar9003_paprd_is_done); +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h +@@ -451,7 +451,11 @@ + #define AR_PHY_TSTDAC (AR_SM_BASE + 0x168) + + #define AR_PHY_CHAN_STATUS (AR_SM_BASE + 0x16c) +-#define AR_PHY_CHAN_INFO_MEMORY (AR_SM_BASE + 0x170) ++ ++#define AR_PHY_CHAN_INFO_MEMORY (AR_SM_BASE + 0x170) ++#define AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ 0x00000008 ++#define AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ_S 3 ++ + #define AR_PHY_CHNINFO_NOISEPWR (AR_SM_BASE + 0x174) + #define AR_PHY_CHNINFO_GAINDIFF (AR_SM_BASE + 0x178) + #define AR_PHY_CHNINFO_FINETIM (AR_SM_BASE + 0x17c) +@@ -467,17 +471,63 @@ + #define AR_PHY_PWRTX_MAX (AR_SM_BASE + 0x1f0) + #define AR_PHY_POWER_TX_SUB (AR_SM_BASE + 0x1f4) + +-#define AR_PHY_TPC_4_B0 (AR_SM_BASE + 0x204) +-#define AR_PHY_TPC_5_B0 (AR_SM_BASE + 0x208) +-#define AR_PHY_TPC_6_B0 (AR_SM_BASE + 0x20c) +-#define AR_PHY_TPC_11_B0 (AR_SM_BASE + 0x220) +-#define AR_PHY_TPC_18 (AR_SM_BASE + 0x23c) +-#define AR_PHY_TPC_19 (AR_SM_BASE + 0x240) ++#define AR_PHY_TPC_1 (AR_SM_BASE + 0x1f8) ++#define AR_PHY_TPC_1_FORCED_DAC_GAIN 0x0000003e ++#define AR_PHY_TPC_1_FORCED_DAC_GAIN_S 1 ++#define AR_PHY_TPC_1_FORCE_DAC_GAIN 0x00000001 ++#define AR_PHY_TPC_1_FORCE_DAC_GAIN_S 0 ++ ++#define AR_PHY_TPC_4_B0 (AR_SM_BASE + 0x204) ++#define AR_PHY_TPC_5_B0 (AR_SM_BASE + 0x208) ++#define AR_PHY_TPC_6_B0 (AR_SM_BASE + 0x20c) ++ ++#define AR_PHY_TPC_11_B0 (AR_SM_BASE + 0x220) ++#define AR_PHY_TPC_11_B1 (AR_SM1_BASE + 0x220) ++#define AR_PHY_TPC_11_B2 (AR_SM2_BASE + 0x220) ++#define AR_PHY_TPC_11_OLPC_GAIN_DELTA 0x00ff0000 ++#define AR_PHY_TPC_11_OLPC_GAIN_DELTA_S 16 ++ ++#define AR_PHY_TPC_12 (AR_SM_BASE + 0x224) ++#define AR_PHY_TPC_12_DESIRED_SCALE_HT40_5 0x3e000000 ++#define AR_PHY_TPC_12_DESIRED_SCALE_HT40_5_S 25 ++ ++#define AR_PHY_TPC_18 (AR_SM_BASE + 0x23c) ++#define AR_PHY_TPC_18_THERM_CAL_VALUE 0x000000ff ++#define AR_PHY_TPC_18_THERM_CAL_VALUE_S 0 ++#define AR_PHY_TPC_18_VOLT_CAL_VALUE 0x0000ff00 ++#define AR_PHY_TPC_18_VOLT_CAL_VALUE_S 8 ++ ++#define AR_PHY_TPC_19 (AR_SM_BASE + 0x240) ++#define AR_PHY_TPC_19_ALPHA_VOLT 0x001f0000 ++#define AR_PHY_TPC_19_ALPHA_VOLT_S 16 ++#define AR_PHY_TPC_19_ALPHA_THERM 0xff ++#define AR_PHY_TPC_19_ALPHA_THERM_S 0 ++ ++#define AR_PHY_TX_FORCED_GAIN (AR_SM_BASE + 0x258) ++#define AR_PHY_TX_FORCED_GAIN_FORCE_TX_GAIN 0x00000001 ++#define AR_PHY_TX_FORCED_GAIN_FORCE_TX_GAIN_S 0 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB1DBGAIN 0x0000000e ++#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB1DBGAIN_S 1 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB6DBGAIN 0x00000030 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB6DBGAIN_S 4 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_TXMXRGAIN 0x000003c0 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_TXMXRGAIN_S 6 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNA 0x00003c00 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNA_S 10 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNB 0x0003c000 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNB_S 14 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNC 0x003c0000 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNC_S 18 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGND 0x00c00000 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGND_S 22 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_ENABLE_PAL 0x01000000 ++#define AR_PHY_TX_FORCED_GAIN_FORCED_ENABLE_PAL_S 24 + +-#define AR_PHY_TX_FORCED_GAIN (AR_SM_BASE + 0x258) + + #define AR_PHY_PDADC_TAB_0 (AR_SM_BASE + 0x280) + ++#define AR_PHY_TXGAIN_TABLE (AR_SM_BASE + 0x300) ++ + #define AR_PHY_TX_IQCAL_CONTROL_1 (AR_SM_BASE + 0x448) + #define AR_PHY_TX_IQCAL_START (AR_SM_BASE + 0x440) + #define AR_PHY_TX_IQCAL_STATUS_B0 (AR_SM_BASE + 0x48c) +@@ -490,7 +540,17 @@ + #define AR_PHY_ONLY_WARMRESET (AR_SM_BASE + 0x5d0) + #define AR_PHY_ONLY_CTL (AR_SM_BASE + 0x5d4) + #define AR_PHY_ECO_CTRL (AR_SM_BASE + 0x5dc) +-#define AR_PHY_BB_THERM_ADC_1 (AR_SM_BASE + 0x248) ++ ++#define AR_PHY_BB_THERM_ADC_1 (AR_SM_BASE + 0x248) ++#define AR_PHY_BB_THERM_ADC_1_INIT_THERM 0x000000ff ++#define AR_PHY_BB_THERM_ADC_1_INIT_THERM_S 0 ++ ++#define AR_PHY_BB_THERM_ADC_4 (AR_SM_BASE + 0x254) ++#define AR_PHY_BB_THERM_ADC_4_LATEST_THERM_VALUE 0x000000ff ++#define AR_PHY_BB_THERM_ADC_4_LATEST_THERM_VALUE_S 0 ++#define AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE 0x0000ff00 ++#define AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE_S 8 ++ + + #define AR_PHY_65NM_CH0_SYNTH4 0x1608c + #define AR_PHY_SYNTH4_LONG_SHIFT_SELECT 0x00000002 +@@ -660,17 +720,9 @@ + #define AR_PHY_TX_IQCAL_CORR_COEFF_01_COEFF_TABLE 0x00003fff + #define AR_PHY_TX_IQCAL_CORR_COEFF_01_COEFF_TABLE_S 0 + +-#define AR_PHY_TPC_18_THERM_CAL_VALUE 0xff +-#define AR_PHY_TPC_18_THERM_CAL_VALUE_S 0 +-#define AR_PHY_TPC_19_ALPHA_THERM 0xff +-#define AR_PHY_TPC_19_ALPHA_THERM_S 0 +- + #define AR_PHY_65NM_CH0_RXTX4_THERM_ON 0x10000000 + #define AR_PHY_65NM_CH0_RXTX4_THERM_ON_S 28 + +-#define AR_PHY_BB_THERM_ADC_1_INIT_THERM 0x000000ff +-#define AR_PHY_BB_THERM_ADC_1_INIT_THERM_S 0 +- + /* + * Channel 1 Register Map + */ +@@ -842,6 +894,144 @@ + + #define AR_PHY_WATCHDOG_STATUS_CLR 0x00000008 + ++/* ++ * PAPRD registers ++ */ ++#define AR_PHY_XPA_TIMING_CTL (AR_SM_BASE + 0x64) ++ ++#define AR_PHY_PAPRD_AM2AM (AR_CHAN_BASE + 0xe4) ++#define AR_PHY_PAPRD_AM2AM_MASK 0x01ffffff ++#define AR_PHY_PAPRD_AM2AM_MASK_S 0 ++ ++#define AR_PHY_PAPRD_AM2PM (AR_CHAN_BASE + 0xe8) ++#define AR_PHY_PAPRD_AM2PM_MASK 0x01ffffff ++#define AR_PHY_PAPRD_AM2PM_MASK_S 0 ++ ++#define AR_PHY_PAPRD_HT40 (AR_CHAN_BASE + 0xec) ++#define AR_PHY_PAPRD_HT40_MASK 0x01ffffff ++#define AR_PHY_PAPRD_HT40_MASK_S 0 ++ ++#define AR_PHY_PAPRD_CTRL0_B0 (AR_CHAN_BASE + 0xf0) ++#define AR_PHY_PAPRD_CTRL0_B1 (AR_CHAN1_BASE + 0xf0) ++#define AR_PHY_PAPRD_CTRL0_B2 (AR_CHAN2_BASE + 0xf0) ++#define AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE 0x00000001 ++#define AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE_S 0 ++#define AR_PHY_PAPRD_CTRL0_USE_SINGLE_TABLE_MASK 0x00000002 ++#define AR_PHY_PAPRD_CTRL0_USE_SINGLE_TABLE_MASK_S 1 ++#define AR_PHY_PAPRD_CTRL0_PAPRD_MAG_THRSH 0xf8000000 ++#define AR_PHY_PAPRD_CTRL0_PAPRD_MAG_THRSH_S 27 ++ ++#define AR_PHY_PAPRD_CTRL1_B0 (AR_CHAN_BASE + 0xf4) ++#define AR_PHY_PAPRD_CTRL1_B1 (AR_CHAN1_BASE + 0xf4) ++#define AR_PHY_PAPRD_CTRL1_B2 (AR_CHAN2_BASE + 0xf4) ++#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA 0x00000001 ++#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA_S 0 ++#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2AM_ENABLE 0x00000002 ++#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2AM_ENABLE_S 1 ++#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2PM_ENABLE 0x00000004 ++#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2PM_ENABLE_S 2 ++#define AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL 0x000001f8 ++#define AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL_S 3 ++#define AR_PHY_PAPRD_CTRL1_PA_GAIN_SCALE_FACT_MASK 0x0001fe00 ++#define AR_PHY_PAPRD_CTRL1_PA_GAIN_SCALE_FACT_MASK_S 9 ++#define AR_PHY_PAPRD_CTRL1_PAPRD_MAG_SCALE_FACT 0x0ffe0000 ++#define AR_PHY_PAPRD_CTRL1_PAPRD_MAG_SCALE_FACT_S 17 ++ ++#define AR_PHY_PAPRD_TRAINER_CNTL1 (AR_SM_BASE + 0x490) ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_CF_PAPRD_TRAIN_ENABLE 0x00000001 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_CF_PAPRD_TRAIN_ENABLE_S 0 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_AGC2_SETTLING 0x0000007e ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_AGC2_SETTLING_S 1 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_IQCORR_ENABLE 0x00000100 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_IQCORR_ENABLE_S 8 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_RX_BB_GAIN_FORCE 0x00000200 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_RX_BB_GAIN_FORCE_S 9 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_TX_GAIN_FORCE 0x00000400 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_TX_GAIN_FORCE_S 10 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_ENABLE 0x00000800 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_ENABLE_S 11 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_SKIP 0x0003f000 ++#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_SKIP_S 12 ++ ++#define AR_PHY_PAPRD_TRAINER_CNTL2 (AR_SM_BASE + 0x494) ++#define AR_PHY_PAPRD_TRAINER_CNTL2_CF_PAPRD_INIT_RX_BB_GAIN 0xFFFFFFFF ++#define AR_PHY_PAPRD_TRAINER_CNTL2_CF_PAPRD_INIT_RX_BB_GAIN_S 0 ++ ++#define AR_PHY_PAPRD_TRAINER_CNTL3 (AR_SM_BASE + 0x498) ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_ADC_DESIRED_SIZE 0x0000003f ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_ADC_DESIRED_SIZE_S 0 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_QUICK_DROP 0x00000fc0 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_QUICK_DROP_S 6 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_MIN_LOOPBACK_DEL 0x0001f000 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_MIN_LOOPBACK_DEL_S 12 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_NUM_CORR_STAGES 0x000e0000 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_NUM_CORR_STAGES_S 17 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_COARSE_CORR_LEN 0x00f00000 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_COARSE_CORR_LEN_S 20 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_FINE_CORR_LEN 0x0f000000 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_FINE_CORR_LEN_S 24 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_BBTXMIX_DISABLE 0x20000000 ++#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_BBTXMIX_DISABLE_S 29 ++ ++#define AR_PHY_PAPRD_TRAINER_CNTL4 (AR_SM_BASE + 0x49c) ++#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_NUM_TRAIN_SAMPLES 0x03ff0000 ++#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_NUM_TRAIN_SAMPLES_S 16 ++#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_SAFETY_DELTA 0x0000f000 ++#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_SAFETY_DELTA_S 12 ++#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_MIN_CORR 0x00000fff ++#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_MIN_CORR_S 0 ++ ++#define AR_PHY_PAPRD_PRE_POST_SCALE_0_B0 (AR_CHAN_BASE + 0x100) ++#define AR_PHY_PAPRD_PRE_POST_SCALE_1_B0 (AR_CHAN_BASE + 0x104) ++#define AR_PHY_PAPRD_PRE_POST_SCALE_2_B0 (AR_CHAN_BASE + 0x108) ++#define AR_PHY_PAPRD_PRE_POST_SCALE_3_B0 (AR_CHAN_BASE + 0x10c) ++#define AR_PHY_PAPRD_PRE_POST_SCALE_4_B0 (AR_CHAN_BASE + 0x110) ++#define AR_PHY_PAPRD_PRE_POST_SCALE_5_B0 (AR_CHAN_BASE + 0x114) ++#define AR_PHY_PAPRD_PRE_POST_SCALE_6_B0 (AR_CHAN_BASE + 0x118) ++#define AR_PHY_PAPRD_PRE_POST_SCALE_7_B0 (AR_CHAN_BASE + 0x11c) ++#define AR_PHY_PAPRD_PRE_POST_SCALING 0x3FFFF ++#define AR_PHY_PAPRD_PRE_POST_SCALING_S 0 ++ ++#define AR_PHY_PAPRD_TRAINER_STAT1 (AR_SM_BASE + 0x4a0) ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE 0x00000001 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE_S 0 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_INCOMPLETE 0x00000002 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_INCOMPLETE_S 1 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_CORR_ERR 0x00000004 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_CORR_ERR_S 2 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_ACTIVE 0x00000008 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_ACTIVE_S 3 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_RX_GAIN_IDX 0x000001f0 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_RX_GAIN_IDX_S 4 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_AGC2_PWR 0x0001fe00 ++#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_AGC2_PWR_S 9 ++ ++#define AR_PHY_PAPRD_TRAINER_STAT2 (AR_SM_BASE + 0x4a4) ++#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_VAL 0x0000ffff ++#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_VAL_S 0 ++#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_COARSE_IDX 0x001f0000 ++#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_COARSE_IDX_S 16 ++#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_IDX 0x00600000 ++#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_IDX_S 21 ++ ++#define AR_PHY_PAPRD_TRAINER_STAT3 (AR_SM_BASE + 0x4a8) ++#define AR_PHY_PAPRD_TRAINER_STAT3_PAPRD_TRAIN_SAMPLES_CNT 0x000fffff ++#define AR_PHY_PAPRD_TRAINER_STAT3_PAPRD_TRAIN_SAMPLES_CNT_S 0 ++ ++#define AR_PHY_PAPRD_MEM_TAB_B0 (AR_CHAN_BASE + 0x120) ++#define AR_PHY_PAPRD_MEM_TAB_B1 (AR_CHAN1_BASE + 0x120) ++#define AR_PHY_PAPRD_MEM_TAB_B2 (AR_CHAN2_BASE + 0x120) ++ ++#define AR_PHY_PA_GAIN123_B0 (AR_CHAN_BASE + 0xf8) ++#define AR_PHY_PA_GAIN123_B1 (AR_CHAN1_BASE + 0xf8) ++#define AR_PHY_PA_GAIN123_B2 (AR_CHAN2_BASE + 0xf8) ++#define AR_PHY_PA_GAIN123_PA_GAIN1 0x3FF ++#define AR_PHY_PA_GAIN123_PA_GAIN1_S 0 ++ ++#define AR_PHY_POWERTX_RATE5 (AR_SM_BASE + 0x1d0) ++#define AR_PHY_POWERTX_RATE5_POWERTXHT20_0 0x3F ++#define AR_PHY_POWERTX_RATE5_POWERTXHT20_0_S 0 ++ + void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); + + #endif /* AR9003_PHY_H */ +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + #include "debug.h" + #include "common.h" +@@ -194,6 +195,7 @@ enum ATH_AGGR_STATUS { + + #define ATH_TXFIFO_DEPTH 8 + struct ath_txq { ++ int axq_class; + u32 axq_qnum; + u32 *axq_link; + struct list_head axq_q; +@@ -206,7 +208,6 @@ struct ath_txq { + struct list_head txq_fifo_pending; + u8 txq_headidx; + u8 txq_tailidx; +- int pending_frames; + }; + + struct ath_atx_ac { +@@ -224,6 +225,7 @@ struct ath_buf_state { + int bfs_tidno; + int bfs_retries; + u8 bf_type; ++ u8 bfs_paprd; + u32 bfs_keyix; + enum ath9k_key_type bfs_keytype; + }; +@@ -244,7 +246,6 @@ struct ath_buf { + struct ath_buf_state bf_state; + dma_addr_t bf_dmacontext; + struct ath_wiphy *aphy; +- struct ath_txq *txq; + }; + + struct ath_atx_tid { +@@ -281,6 +282,7 @@ struct ath_tx_control { + struct ath_txq *txq; + int if_id; + enum ath9k_internal_frame_type frame_type; ++ u8 paprd; + }; + + #define ATH_TX_ERROR 0x01 +@@ -290,11 +292,12 @@ struct ath_tx_control { + struct ath_tx { + u16 seq_no; + u32 txqsetup; +- int hwq_map[ATH9K_WME_AC_VO+1]; ++ int hwq_map[WME_NUM_AC]; + spinlock_t txbuflock; + struct list_head txbuf; + struct ath_txq txq[ATH9K_NUM_TX_QUEUES]; + struct ath_descdma txdma; ++ int pending_frames[WME_NUM_AC]; + }; + + struct ath_rx_edma { +@@ -421,6 +424,7 @@ int ath_beaconq_config(struct ath_softc + #define ATH_LONG_CALINTERVAL 30000 /* 30 seconds */ + #define ATH_RESTART_CALINTERVAL 1200000 /* 20 minutes */ + ++void ath_paprd_calibrate(struct work_struct *work); + void ath_ani_calibrate(unsigned long data); + + /**********/ +@@ -553,6 +557,9 @@ struct ath_softc { + spinlock_t sc_serial_rw; + spinlock_t sc_pm_lock; + struct mutex mutex; ++ struct work_struct paprd_work; ++ struct completion paprd_complete; ++ int paprd_txok; + + u32 intrstatus; + u32 sc_flags; /* SC_OP_* */ +@@ -613,7 +620,6 @@ struct ath_wiphy { + + void ath9k_tasklet(unsigned long data); + int ath_reset(struct ath_softc *sc, bool retry_tx); +-int ath_get_hal_qnum(u16 queue, struct ath_softc *sc); + int ath_get_mac80211_qnum(u32 queue, struct ath_softc *sc); + int ath_cabq_update(struct ath_softc *); + +@@ -629,8 +635,6 @@ irqreturn_t ath_isr(int irq, void *dev); + int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid, + const struct ath_bus_ops *bus_ops); + void ath9k_deinit_device(struct ath_softc *sc); +-const char *ath_mac_bb_name(u32 mac_bb_version); +-const char *ath_rf_name(u16 rf_version); + void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw); + void ath9k_update_ichannel(struct ath_softc *sc, struct ieee80211_hw *hw, + struct ath9k_channel *ichan); +@@ -681,8 +685,6 @@ void ath9k_set_wiphy_idle(struct ath_wip + void ath_mac80211_stop_queue(struct ath_softc *sc, u16 skb_queue); + void ath_mac80211_start_queue(struct ath_softc *sc, u16 skb_queue); + +-int ath_tx_get_qnum(struct ath_softc *sc, int qtype, int haltype); +- + void ath_start_rfkill_poll(struct ath_softc *sc); + extern void ath9k_rfkill_poll_state(struct ieee80211_hw *hw); + +--- a/drivers/net/wireless/ath/ath9k/eeprom.h ++++ b/drivers/net/wireless/ath/ath9k/eeprom.h +@@ -263,7 +263,8 @@ enum eeprom_param { + EEP_PWR_TABLE_OFFSET, + EEP_DRIVE_STRENGTH, + EEP_INTERNAL_REGULATOR, +- EEP_SWREG ++ EEP_SWREG, ++ EEP_PAPRD, + }; + + enum ar5416_rates { +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -2246,6 +2246,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw + pCap->rx_status_len = sizeof(struct ar9003_rxs); + pCap->tx_desc_len = sizeof(struct ar9003_txc); + pCap->txs_len = sizeof(struct ar9003_txs); ++ if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD)) ++ pCap->hw_caps |= ATH9K_HW_CAP_PAPRD; + } else { + pCap->tx_desc_len = sizeof(struct ath_desc); + if (AR_SREV_9280_20(ah) && +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -158,6 +158,9 @@ + #define ATH9K_HW_RX_HP_QDEPTH 16 + #define ATH9K_HW_RX_LP_QDEPTH 128 + ++#define PAPRD_GAIN_TABLE_ENTRIES 32 ++#define PAPRD_TABLE_SZ 24 ++ + enum ath_ini_subsys { + ATH_INI_PRE = 0, + ATH_INI_CORE, +@@ -200,6 +203,7 @@ enum ath9k_hw_caps { + ATH9K_HW_CAP_LDPC = BIT(19), + ATH9K_HW_CAP_FASTCLOCK = BIT(20), + ATH9K_HW_CAP_SGI_20 = BIT(21), ++ ATH9K_HW_CAP_PAPRD = BIT(22), + }; + + enum ath9k_capability_type { +@@ -359,6 +363,9 @@ struct ath9k_channel { + int8_t iCoff; + int8_t qCoff; + int16_t rawNoiseFloor; ++ bool paprd_done; ++ u16 small_signal_gain[AR9300_MAX_CHAINS]; ++ u32 pa_table[AR9300_MAX_CHAINS][PAPRD_TABLE_SZ]; + }; + + #define IS_CHAN_G(_c) ((((_c)->channelFlags & (CHANNEL_G)) == CHANNEL_G) || \ +@@ -793,6 +800,9 @@ struct ath_hw { + + u32 bb_watchdog_last_status; + u32 bb_watchdog_timeout_ms; /* in ms, 0 to disable */ ++ ++ u32 paprd_gain_table_entries[PAPRD_GAIN_TABLE_ENTRIES]; ++ u8 paprd_gain_table_index[PAPRD_GAIN_TABLE_ENTRIES]; + }; + + static inline struct ath_common *ath9k_hw_common(struct ath_hw *ah) +@@ -922,6 +932,15 @@ void ar9003_hw_set_nf_limits(struct ath_ + void ar9003_hw_bb_watchdog_config(struct ath_hw *ah); + void ar9003_hw_bb_watchdog_read(struct ath_hw *ah); + void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah); ++void ar9003_paprd_enable(struct ath_hw *ah, bool val); ++void ar9003_paprd_populate_single_table(struct ath_hw *ah, ++ struct ath9k_channel *chan, int chain); ++int ar9003_paprd_create_curve(struct ath_hw *ah, struct ath9k_channel *chan, ++ int chain); ++int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain); ++int ar9003_paprd_init_table(struct ath_hw *ah); ++bool ar9003_paprd_is_done(struct ath_hw *ah); ++void ar9003_hw_set_paprd_txdesc(struct ath_hw *ah, void *ds, u8 chains); + + /* Hardware family op attach helpers */ + void ar5008_hw_attach_phy_ops(struct ath_hw *ah); +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -427,7 +427,7 @@ static int ath9k_init_btcoex(struct ath_ + r = ath_init_btcoex_timer(sc); + if (r) + return -1; +- qnum = ath_tx_get_qnum(sc, ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_BE); ++ qnum = sc->tx.hwq_map[WME_AC_BE]; + ath9k_hw_init_btcoex_hw(sc->sc_ah, qnum); + sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW; + break; +@@ -464,23 +464,23 @@ static int ath9k_init_queues(struct ath_ + sc->config.cabqReadytime = ATH_CABQ_READY_TIME; + ath_cabq_update(sc); + +- if (!ath_tx_setup(sc, ATH9K_WME_AC_BK)) { ++ if (!ath_tx_setup(sc, WME_AC_BK)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for BK traffic\n"); + goto err; + } + +- if (!ath_tx_setup(sc, ATH9K_WME_AC_BE)) { ++ if (!ath_tx_setup(sc, WME_AC_BE)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for BE traffic\n"); + goto err; + } +- if (!ath_tx_setup(sc, ATH9K_WME_AC_VI)) { ++ if (!ath_tx_setup(sc, WME_AC_VI)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for VI traffic\n"); + goto err; + } +- if (!ath_tx_setup(sc, ATH9K_WME_AC_VO)) { ++ if (!ath_tx_setup(sc, WME_AC_VO)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for VO traffic\n"); + goto err; +@@ -769,6 +769,7 @@ int ath9k_init_device(u16 devid, struct + goto error_world; + } + ++ INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); + INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work); + INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work); + sc->wiphy_scheduler_int = msecs_to_jiffies(500); +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -233,6 +233,104 @@ int ath_set_channel(struct ath_softc *sc + return r; + } + ++static void ath_paprd_activate(struct ath_softc *sc) ++{ ++ struct ath_hw *ah = sc->sc_ah; ++ int chain; ++ ++ if (!ah->curchan->paprd_done) ++ return; ++ ++ ath9k_ps_wakeup(sc); ++ for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) { ++ if (!(ah->caps.tx_chainmask & BIT(chain))) ++ continue; ++ ++ ar9003_paprd_populate_single_table(ah, ah->curchan, chain); ++ } ++ ++ ar9003_paprd_enable(ah, true); ++ ath9k_ps_restore(sc); ++} ++ ++void ath_paprd_calibrate(struct work_struct *work) ++{ ++ struct ath_softc *sc = container_of(work, struct ath_softc, paprd_work); ++ struct ieee80211_hw *hw = sc->hw; ++ struct ath_hw *ah = sc->sc_ah; ++ struct ieee80211_hdr *hdr; ++ struct sk_buff *skb = NULL; ++ struct ieee80211_tx_info *tx_info; ++ int band = hw->conf.channel->band; ++ struct ieee80211_supported_band *sband = &sc->sbands[band]; ++ struct ath_tx_control txctl; ++ int qnum, ftype; ++ int chain_ok = 0; ++ int chain; ++ int len = 1800; ++ int i; ++ ++ ath9k_ps_wakeup(sc); ++ skb = alloc_skb(len, GFP_KERNEL); ++ if (!skb) ++ return; ++ ++ tx_info = IEEE80211_SKB_CB(skb); ++ ++ skb_put(skb, len); ++ memset(skb->data, 0, len); ++ hdr = (struct ieee80211_hdr *)skb->data; ++ ftype = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC; ++ hdr->frame_control = cpu_to_le16(ftype); ++ hdr->duration_id = 10; ++ memcpy(hdr->addr1, hw->wiphy->perm_addr, ETH_ALEN); ++ memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN); ++ memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN); ++ ++ memset(&txctl, 0, sizeof(txctl)); ++ qnum = sc->tx.hwq_map[WME_AC_BE]; ++ txctl.txq = &sc->tx.txq[qnum]; ++ ++ ar9003_paprd_init_table(ah); ++ for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) { ++ if (!(ah->caps.tx_chainmask & BIT(chain))) ++ continue; ++ ++ chain_ok = 0; ++ memset(tx_info, 0, sizeof(*tx_info)); ++ tx_info->band = band; ++ ++ for (i = 0; i < 4; i++) { ++ tx_info->control.rates[i].idx = sband->n_bitrates - 1; ++ tx_info->control.rates[i].count = 6; ++ } ++ ++ init_completion(&sc->paprd_complete); ++ ar9003_paprd_setup_gain_table(ah, chain); ++ txctl.paprd = BIT(chain); ++ if (ath_tx_start(hw, skb, &txctl) != 0) ++ break; ++ ++ wait_for_completion(&sc->paprd_complete); ++ ++ if (!ar9003_paprd_is_done(ah)) ++ break; ++ ++ if (ar9003_paprd_create_curve(ah, ah->curchan, chain) != 0) ++ break; ++ ++ chain_ok = 1; ++ } ++ kfree_skb(skb); ++ ++ if (chain_ok) { ++ ah->curchan->paprd_done = true; ++ ath_paprd_activate(sc); ++ } ++ ++ ath9k_ps_restore(sc); ++} ++ + /* + * This routine performs the periodic noise floor calibration function + * that is used to adjust and optimize the chip performance. This +@@ -332,6 +430,13 @@ set_timer: + cal_interval = min(cal_interval, (u32)short_cal_interval); + + mod_timer(&common->ani.timer, jiffies + msecs_to_jiffies(cal_interval)); ++ if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_PAPRD) && ++ !(sc->sc_flags & SC_OP_SCANNING)) { ++ if (!sc->sc_ah->curchan->paprd_done) ++ ieee80211_queue_work(sc->hw, &sc->paprd_work); ++ else ++ ath_paprd_activate(sc); ++ } + } + + static void ath_start_ani(struct ath_common *common) +@@ -805,25 +910,25 @@ int ath_reset(struct ath_softc *sc, bool + return r; + } + +-int ath_get_hal_qnum(u16 queue, struct ath_softc *sc) ++static int ath_get_hal_qnum(u16 queue, struct ath_softc *sc) + { + int qnum; + + switch (queue) { + case 0: +- qnum = sc->tx.hwq_map[ATH9K_WME_AC_VO]; ++ qnum = sc->tx.hwq_map[WME_AC_VO]; + break; + case 1: +- qnum = sc->tx.hwq_map[ATH9K_WME_AC_VI]; ++ qnum = sc->tx.hwq_map[WME_AC_VI]; + break; + case 2: +- qnum = sc->tx.hwq_map[ATH9K_WME_AC_BE]; ++ qnum = sc->tx.hwq_map[WME_AC_BE]; + break; + case 3: +- qnum = sc->tx.hwq_map[ATH9K_WME_AC_BK]; ++ qnum = sc->tx.hwq_map[WME_AC_BK]; + break; + default: +- qnum = sc->tx.hwq_map[ATH9K_WME_AC_BE]; ++ qnum = sc->tx.hwq_map[WME_AC_BE]; + break; + } + +@@ -835,16 +940,16 @@ int ath_get_mac80211_qnum(u32 queue, str + int qnum; + + switch (queue) { +- case ATH9K_WME_AC_VO: ++ case WME_AC_VO: + qnum = 0; + break; +- case ATH9K_WME_AC_VI: ++ case WME_AC_VI: + qnum = 1; + break; +- case ATH9K_WME_AC_BE: ++ case WME_AC_BE: + qnum = 2; + break; +- case ATH9K_WME_AC_BK: ++ case WME_AC_BK: + qnum = 3; + break; + default: +@@ -1128,6 +1233,7 @@ static void ath9k_stop(struct ieee80211_ + + cancel_delayed_work_sync(&sc->ath_led_blink_work); + cancel_delayed_work_sync(&sc->tx_complete_work); ++ cancel_work_sync(&sc->paprd_work); + + if (!sc->num_sec_wiphy) { + cancel_delayed_work_sync(&sc->wiphy_work); +@@ -1556,7 +1662,7 @@ static int ath9k_conf_tx(struct ieee8021 + ath_print(common, ATH_DBG_FATAL, "TXQ Update failed\n"); + + if (sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) +- if ((qnum == sc->tx.hwq_map[ATH9K_WME_AC_BE]) && !ret) ++ if ((qnum == sc->tx.hwq_map[WME_AC_BE]) && !ret) + ath_beaconq_config(sc); + + mutex_unlock(&sc->mutex); +@@ -1843,6 +1949,7 @@ static void ath9k_sw_scan_start(struct i + ath9k_wiphy_pause_all_forced(sc, aphy); + sc->sc_flags |= SC_OP_SCANNING; + del_timer_sync(&common->ani.timer); ++ cancel_work_sync(&sc->paprd_work); + cancel_delayed_work_sync(&sc->tx_complete_work); + mutex_unlock(&sc->mutex); + } +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -941,6 +941,7 @@ struct ath_txq *ath_txq_setup(struct ath + if (!ATH_TXQ_SETUP(sc, qnum)) { + struct ath_txq *txq = &sc->tx.txq[qnum]; + ++ txq->axq_class = subtype; + txq->axq_qnum = qnum; + txq->axq_link = NULL; + INIT_LIST_HEAD(&txq->axq_q); +@@ -958,32 +959,6 @@ struct ath_txq *ath_txq_setup(struct ath + return &sc->tx.txq[qnum]; + } + +-int ath_tx_get_qnum(struct ath_softc *sc, int qtype, int haltype) +-{ +- int qnum; +- +- switch (qtype) { +- case ATH9K_TX_QUEUE_DATA: +- if (haltype >= ARRAY_SIZE(sc->tx.hwq_map)) { +- ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_FATAL, +- "HAL AC %u out of range, max %zu!\n", +- haltype, ARRAY_SIZE(sc->tx.hwq_map)); +- return -1; +- } +- qnum = sc->tx.hwq_map[haltype]; +- break; +- case ATH9K_TX_QUEUE_BEACON: +- qnum = sc->beacon.beaconq; +- break; +- case ATH9K_TX_QUEUE_CAB: +- qnum = sc->beacon.cabq->axq_qnum; +- break; +- default: +- qnum = -1; +- } +- return qnum; +-} +- + int ath_txq_update(struct ath_softc *sc, int qnum, + struct ath9k_tx_queue_info *qinfo) + { +@@ -1662,12 +1637,13 @@ static int ath_tx_setup_buffer(struct ie + bf->bf_frmlen -= padsize; + } + +- if (conf_is_ht(&hw->conf)) { ++ if (!txctl->paprd && conf_is_ht(&hw->conf)) { + bf->bf_state.bf_type |= BUF_HT; + if (tx_info->flags & IEEE80211_TX_CTL_LDPC) + use_ldpc = true; + } + ++ bf->bf_state.bfs_paprd = txctl->paprd; + bf->bf_flags = setup_tx_flags(skb, use_ldpc); + + bf->bf_keytype = get_hw_crypto_keytype(skb); +@@ -1742,6 +1718,9 @@ static void ath_tx_start_dma(struct ath_ + bf->bf_buf_addr, + txctl->txq->axq_qnum); + ++ if (bf->bf_state.bfs_paprd) ++ ar9003_hw_set_paprd_txdesc(ah, ds, bf->bf_state.bfs_paprd); ++ + spin_lock_bh(&txctl->txq->axq_lock); + + if (bf_isht(bf) && (sc->sc_flags & SC_OP_TXAGGR) && +@@ -1785,7 +1764,7 @@ int ath_tx_start(struct ieee80211_hw *hw + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_txq *txq = txctl->txq; + struct ath_buf *bf; +- int r; ++ int q, r; + + bf = ath_tx_get_buffer(sc); + if (!bf) { +@@ -1793,14 +1772,6 @@ int ath_tx_start(struct ieee80211_hw *hw + return -1; + } + +- bf->txq = txctl->txq; +- spin_lock_bh(&bf->txq->axq_lock); +- if (++bf->txq->pending_frames > ATH_MAX_QDEPTH && !txq->stopped) { +- ath_mac80211_stop_queue(sc, skb_get_queue_mapping(skb)); +- txq->stopped = 1; +- } +- spin_unlock_bh(&bf->txq->axq_lock); +- + r = ath_tx_setup_buffer(hw, bf, skb, txctl); + if (unlikely(r)) { + ath_print(common, ATH_DBG_FATAL, "TX mem alloc failure\n"); +@@ -1821,6 +1792,17 @@ int ath_tx_start(struct ieee80211_hw *hw + return r; + } + ++ q = skb_get_queue_mapping(skb); ++ if (q >= 4) ++ q = 0; ++ ++ spin_lock_bh(&txq->axq_lock); ++ if (++sc->tx.pending_frames[q] > ATH_MAX_QDEPTH && !txq->stopped) { ++ ath_mac80211_stop_queue(sc, skb_get_queue_mapping(skb)); ++ txq->stopped = 1; ++ } ++ spin_unlock_bh(&txq->axq_lock); ++ + ath_tx_start_dma(sc, bf, txctl); + + return 0; +@@ -1890,7 +1872,7 @@ static void ath_tx_complete(struct ath_s + struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data; +- int padpos, padsize; ++ int q, padpos, padsize; + + ath_print(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb); + +@@ -1929,8 +1911,16 @@ static void ath_tx_complete(struct ath_s + + if (unlikely(tx_info->pad[0] & ATH_TX_INFO_FRAME_TYPE_INTERNAL)) + ath9k_tx_status(hw, skb); +- else ++ else { ++ q = skb_get_queue_mapping(skb); ++ if (q >= 4) ++ q = 0; ++ ++ if (--sc->tx.pending_frames[q] < 0) ++ sc->tx.pending_frames[q] = 0; ++ + ieee80211_tx_status(hw, skb); ++ } + } + + static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf, +@@ -1951,16 +1941,15 @@ static void ath_tx_complete_buf(struct a + tx_flags |= ATH_TX_XRETRY; + } + +- if (bf->txq) { +- spin_lock_bh(&bf->txq->axq_lock); +- bf->txq->pending_frames--; +- spin_unlock_bh(&bf->txq->axq_lock); +- bf->txq = NULL; +- } +- + dma_unmap_single(sc->dev, bf->bf_dmacontext, skb->len, DMA_TO_DEVICE); +- ath_tx_complete(sc, skb, bf->aphy, tx_flags); +- ath_debug_stat_tx(sc, txq, bf, ts); ++ ++ if (bf->bf_state.bfs_paprd) { ++ sc->paprd_txok = txok; ++ complete(&sc->paprd_complete); ++ } else { ++ ath_tx_complete(sc, skb, bf->aphy, tx_flags); ++ ath_debug_stat_tx(sc, txq, bf, ts); ++ } + + /* + * Return the list of ath_buf of this mpdu to free queue +@@ -2045,13 +2034,14 @@ static void ath_wake_mac80211_queue(stru + { + int qnum; + ++ qnum = ath_get_mac80211_qnum(txq->axq_class, sc); ++ if (qnum == -1) ++ return; ++ + spin_lock_bh(&txq->axq_lock); +- if (txq->stopped && txq->pending_frames < ATH_MAX_QDEPTH) { +- qnum = ath_get_mac80211_qnum(txq->axq_qnum, sc); +- if (qnum != -1) { +- ath_mac80211_start_queue(sc, qnum); +- txq->stopped = 0; +- } ++ if (txq->stopped && sc->tx.pending_frames[qnum] < ATH_MAX_QDEPTH) { ++ ath_mac80211_start_queue(sc, qnum); ++ txq->stopped = 0; + } + spin_unlock_bh(&txq->axq_lock); + } +@@ -2422,26 +2412,8 @@ void ath_tx_node_init(struct ath_softc * + for (acno = 0, ac = &an->ac[acno]; + acno < WME_NUM_AC; acno++, ac++) { + ac->sched = false; ++ ac->qnum = sc->tx.hwq_map[acno]; + INIT_LIST_HEAD(&ac->tid_q); +- +- switch (acno) { +- case WME_AC_BE: +- ac->qnum = ath_tx_get_qnum(sc, +- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_BE); +- break; +- case WME_AC_BK: +- ac->qnum = ath_tx_get_qnum(sc, +- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_BK); +- break; +- case WME_AC_VI: +- ac->qnum = ath_tx_get_qnum(sc, +- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_VI); +- break; +- case WME_AC_VO: +- ac->qnum = ath_tx_get_qnum(sc, +- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_VO); +- break; +- } + } + } + +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -38,8 +38,7 @@ int ath_beaconq_config(struct ath_softc + qi.tqi_cwmax = 0; + } else { + /* Adhoc mode; important thing is to use 2x cwmin. */ +- qnum = ath_tx_get_qnum(sc, ATH9K_TX_QUEUE_DATA, +- ATH9K_WME_AC_BE); ++ qnum = sc->tx.hwq_map[WME_AC_BE]; + ath9k_hw_get_txq_props(ah, qnum, &qi_be); + qi.tqi_aifs = qi_be.tqi_aifs; + qi.tqi_cwmin = 4*qi_be.tqi_cwmin; +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -630,10 +630,10 @@ static const struct file_operations fops + do { \ + len += snprintf(buf + len, size - len, \ + "%s%13u%11u%10u%10u\n", str, \ +- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_BE]].elem, \ +- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_BK]].elem, \ +- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_VI]].elem, \ +- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_VO]].elem); \ ++ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_BE]].elem, \ ++ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_BK]].elem, \ ++ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_VI]].elem, \ ++ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_VO]].elem); \ + } while(0) + + static ssize_t read_file_xmit(struct file *file, char __user *user_buf, +@@ -956,6 +956,10 @@ int ath9k_init_debug(struct ath_hw *ah) + sc->debug.debugfs_phy, sc, &fops_regval)) + goto err; + ++ if (!debugfs_create_bool("ignore_extcca", S_IRUSR | S_IWUSR, ++ sc->debug.debugfs_phy, &ah->config.cwm_ignore_extcca)) ++ goto err; ++ + sc->debug.regidx = 0; + return 0; + err: +--- a/drivers/net/wireless/ath/ath9k/htc.h ++++ b/drivers/net/wireless/ath/ath9k/htc.h +@@ -398,7 +398,7 @@ struct ath9k_htc_priv { + + int beaconq; + int cabq; +- int hwq_map[ATH9K_WME_AC_VO+1]; ++ int hwq_map[WME_NUM_AC]; + + #ifdef CONFIG_ATH9K_HTC_DEBUGFS + struct ath9k_debug debug; +--- a/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c +@@ -227,7 +227,7 @@ void ath9k_htc_beaconq_config(struct ath + { + struct ath_hw *ah = priv->ah; + struct ath9k_tx_queue_info qi, qi_be; +- int qnum = priv->hwq_map[ATH9K_WME_AC_BE]; ++ int qnum = priv->hwq_map[WME_AC_BE]; + + memset(&qi, 0, sizeof(struct ath9k_tx_queue_info)); + memset(&qi_be, 0, sizeof(struct ath9k_tx_queue_info)); +--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c +@@ -521,23 +521,23 @@ static int ath9k_init_queues(struct ath9 + goto err; + } + +- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_BE)) { ++ if (!ath9k_htc_txq_setup(priv, WME_AC_BE)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for BE traffic\n"); + goto err; + } + +- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_BK)) { ++ if (!ath9k_htc_txq_setup(priv, WME_AC_BK)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for BK traffic\n"); + goto err; + } +- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_VI)) { ++ if (!ath9k_htc_txq_setup(priv, WME_AC_VI)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for VI traffic\n"); + goto err; + } +- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_VO)) { ++ if (!ath9k_htc_txq_setup(priv, WME_AC_VO)) { + ath_print(common, ATH_DBG_FATAL, + "Unable to setup xmit queue for VO traffic\n"); + goto err; +--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c +@@ -1590,7 +1590,7 @@ static int ath9k_htc_conf_tx(struct ieee + } + + if ((priv->ah->opmode == NL80211_IFTYPE_ADHOC) && +- (qnum == priv->hwq_map[ATH9K_WME_AC_BE])) ++ (qnum == priv->hwq_map[WME_AC_BE])) + ath9k_htc_beaconq_config(priv); + out: + ath9k_htc_ps_restore(priv); +--- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +@@ -34,15 +34,15 @@ int get_hw_qnum(u16 queue, int *hwq_map) + { + switch (queue) { + case 0: +- return hwq_map[ATH9K_WME_AC_VO]; ++ return hwq_map[WME_AC_VO]; + case 1: +- return hwq_map[ATH9K_WME_AC_VI]; ++ return hwq_map[WME_AC_VI]; + case 2: +- return hwq_map[ATH9K_WME_AC_BE]; ++ return hwq_map[WME_AC_BE]; + case 3: +- return hwq_map[ATH9K_WME_AC_BK]; ++ return hwq_map[WME_AC_BK]; + default: +- return hwq_map[ATH9K_WME_AC_BE]; ++ return hwq_map[WME_AC_BE]; + } + } + +--- a/drivers/net/wireless/ath/ath9k/mac.h ++++ b/drivers/net/wireless/ath/ath9k/mac.h +@@ -577,13 +577,8 @@ enum ath9k_tx_queue { + + #define ATH9K_NUM_TX_QUEUES 10 + +-enum ath9k_tx_queue_subtype { +- ATH9K_WME_AC_BK = 0, +- ATH9K_WME_AC_BE, +- ATH9K_WME_AC_VI, +- ATH9K_WME_AC_VO, +- ATH9K_WME_UPSD +-}; ++/* Used as a queue subtype instead of a WMM AC */ ++#define ATH9K_WME_UPSD 4 + + enum ath9k_tx_queue_flags { + TXQ_FLAG_TXOKINT_ENABLE = 0x0001, +@@ -617,7 +612,7 @@ enum ath9k_pkt_type { + struct ath9k_tx_queue_info { + u32 tqi_ver; + enum ath9k_tx_queue tqi_type; +- enum ath9k_tx_queue_subtype tqi_subtype; ++ int tqi_subtype; + enum ath9k_tx_queue_flags tqi_qflags; + u32 tqi_priority; + u32 tqi_aifs; +--- a/drivers/net/wireless/ath/ath9k/virtual.c ++++ b/drivers/net/wireless/ath/ath9k/virtual.c +@@ -219,7 +219,7 @@ static int ath9k_send_nullfunc(struct at + info->control.rates[1].idx = -1; + + memset(&txctl, 0, sizeof(struct ath_tx_control)); +- txctl.txq = &sc->tx.txq[sc->tx.hwq_map[ATH9K_WME_AC_VO]]; ++ txctl.txq = &sc->tx.txq[sc->tx.hwq_map[WME_AC_VO]]; + txctl.frame_type = ps ? ATH9K_IFT_PAUSE : ATH9K_IFT_UNPAUSE; + + if (ath_tx_start(aphy->hw, skb, &txctl) != 0) diff --git a/package/mac80211/patches/520-ath0k_hw_mcast_search.patch b/package/mac80211/patches/520-ath0k_hw_mcast_search.patch deleted file mode 100644 index eb09da5f4..000000000 --- a/package/mac80211/patches/520-ath0k_hw_mcast_search.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1497,6 +1497,7 @@ EXPORT_SYMBOL(ath9k_hw_keyreset); - bool ath9k_hw_keysetmac(struct ath_hw *ah, u16 entry, const u8 *mac) - { - u32 macHi, macLo; -+ u32 unicast_flag = AR_KEYTABLE_VALID; - - if (entry >= ah->caps.keycache_size) { - ath_print(ath9k_hw_common(ah), ATH_DBG_FATAL, -@@ -1505,6 +1506,16 @@ bool ath9k_hw_keysetmac(struct ath_hw *a - } - - if (mac != NULL) { -+ /* -+ * AR_KEYTABLE_VALID indicates that the address is a unicast -+ * address, which must match the transmitter address for -+ * decrypting frames. -+ * Not setting this bit allows the hardware to use the key -+ * for multicast frame decryption. -+ */ -+ if (mac[0] & 0x01) -+ unicast_flag = 0; -+ - macHi = (mac[5] << 8) | mac[4]; - macLo = (mac[3] << 24) | - (mac[2] << 16) | -@@ -1517,7 +1528,7 @@ bool ath9k_hw_keysetmac(struct ath_hw *a - macLo = macHi = 0; - } - REG_WRITE(ah, AR_KEYTABLE_MAC0(entry), macLo); -- REG_WRITE(ah, AR_KEYTABLE_MAC1(entry), macHi | AR_KEYTABLE_VALID); -+ REG_WRITE(ah, AR_KEYTABLE_MAC1(entry), macHi | unicast_flag); - - return true; - } diff --git a/package/mac80211/patches/520-ath9k_enable_ar9300.patch b/package/mac80211/patches/520-ath9k_enable_ar9300.patch new file mode 100644 index 000000000..f8fbe860f --- /dev/null +++ b/package/mac80211/patches/520-ath9k_enable_ar9300.patch @@ -0,0 +1,10 @@ +--- a/drivers/net/wireless/ath/ath9k/pci.c ++++ b/drivers/net/wireless/ath/ath9k/pci.c +@@ -29,6 +29,7 @@ static DEFINE_PCI_DEVICE_TABLE(ath_pci_i + { PCI_VDEVICE(ATHEROS, 0x002C) }, /* PCI-E 802.11n bonded out */ + { PCI_VDEVICE(ATHEROS, 0x002D) }, /* PCI */ + { PCI_VDEVICE(ATHEROS, 0x002E) }, /* PCI-E */ ++ { PCI_VDEVICE(ATHEROS, 0x0030) }, /* PCI-E AR9300 */ + { 0 } + }; + diff --git a/package/mac80211/patches/521-ath9k_common-use_mcast_search.patch b/package/mac80211/patches/521-ath9k_common-use_mcast_search.patch deleted file mode 100644 index b83e9583c..000000000 --- a/package/mac80211/patches/521-ath9k_common-use_mcast_search.patch +++ /dev/null @@ -1,72 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/common.c -+++ b/drivers/net/wireless/ath/ath9k/common.c -@@ -211,10 +211,14 @@ static int ath_reserve_key_cache_slot_tk - return -1; - } - --static int ath_reserve_key_cache_slot(struct ath_common *common) -+static int ath_reserve_key_cache_slot(struct ath_common *common, -+ enum ieee80211_key_alg alg) - { - int i; - -+ if (alg == ALG_TKIP) -+ return ath_reserve_key_cache_slot_tkip(common); -+ - /* First, try to find slots that would not be available for TKIP. */ - if (common->splitmic) { - for (i = IEEE80211_WEP_NKID; i < common->keymax / 4; i++) { -@@ -283,6 +287,7 @@ int ath9k_cmn_key_config(struct ath_comm - struct ath_hw *ah = common->ah; - struct ath9k_keyval hk; - const u8 *mac = NULL; -+ u8 gmac[ETH_ALEN]; - int ret = 0; - int idx; - -@@ -306,9 +311,23 @@ int ath9k_cmn_key_config(struct ath_comm - memcpy(hk.kv_val, key->key, key->keylen); - - if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) { -- /* For now, use the default keys for broadcast keys. This may -- * need to change with virtual interfaces. */ -- idx = key->keyidx; -+ switch (vif->type) { -+ case NL80211_IFTYPE_AP: -+ memcpy(gmac, vif->addr, ETH_ALEN); -+ gmac[0] |= 0x01; -+ mac = gmac; -+ idx = ath_reserve_key_cache_slot(common, key->alg); -+ break; -+ case NL80211_IFTYPE_ADHOC: -+ memcpy(gmac, sta->addr, ETH_ALEN); -+ gmac[0] |= 0x01; -+ mac = gmac; -+ idx = ath_reserve_key_cache_slot(common, key->alg); -+ break; -+ default: -+ idx = key->keyidx; -+ break; -+ } - } else if (key->keyidx) { - if (WARN_ON(!sta)) - return -EOPNOTSUPP; -@@ -325,14 +344,12 @@ int ath9k_cmn_key_config(struct ath_comm - return -EOPNOTSUPP; - mac = sta->addr; - -- if (key->alg == ALG_TKIP) -- idx = ath_reserve_key_cache_slot_tkip(common); -- else -- idx = ath_reserve_key_cache_slot(common); -- if (idx < 0) -- return -ENOSPC; /* no free key cache entries */ -+ idx = ath_reserve_key_cache_slot(common, key->alg); - } - -+ if (idx < 0) -+ return -ENOSPC; /* no free key cache entries */ -+ - if (key->alg == ALG_TKIP) - ret = ath_setkey_tkip(common, idx, key->key, &hk, mac, - vif->type == NL80211_IFTYPE_AP); diff --git a/package/mac80211/patches/522-ath9k_remove_duplicate_code.patch b/package/mac80211/patches/522-ath9k_remove_duplicate_code.patch deleted file mode 100644 index 53d86781f..000000000 --- a/package/mac80211/patches/522-ath9k_remove_duplicate_code.patch +++ /dev/null @@ -1,255 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -622,234 +622,6 @@ static u32 ath_get_extchanmode(struct at - return chanmode; - } - --static int ath_setkey_tkip(struct ath_common *common, u16 keyix, const u8 *key, -- struct ath9k_keyval *hk, const u8 *addr, -- bool authenticator) --{ -- struct ath_hw *ah = common->ah; -- const u8 *key_rxmic; -- const u8 *key_txmic; -- -- key_txmic = key + NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY; -- key_rxmic = key + NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY; -- -- if (addr == NULL) { -- /* -- * Group key installation - only two key cache entries are used -- * regardless of splitmic capability since group key is only -- * used either for TX or RX. -- */ -- if (authenticator) { -- memcpy(hk->kv_mic, key_txmic, sizeof(hk->kv_mic)); -- memcpy(hk->kv_txmic, key_txmic, sizeof(hk->kv_mic)); -- } else { -- memcpy(hk->kv_mic, key_rxmic, sizeof(hk->kv_mic)); -- memcpy(hk->kv_txmic, key_rxmic, sizeof(hk->kv_mic)); -- } -- return ath9k_hw_set_keycache_entry(ah, keyix, hk, addr); -- } -- if (!common->splitmic) { -- /* TX and RX keys share the same key cache entry. */ -- memcpy(hk->kv_mic, key_rxmic, sizeof(hk->kv_mic)); -- memcpy(hk->kv_txmic, key_txmic, sizeof(hk->kv_txmic)); -- return ath9k_hw_set_keycache_entry(ah, keyix, hk, addr); -- } -- -- /* Separate key cache entries for TX and RX */ -- -- /* TX key goes at first index, RX key at +32. */ -- memcpy(hk->kv_mic, key_txmic, sizeof(hk->kv_mic)); -- if (!ath9k_hw_set_keycache_entry(ah, keyix, hk, NULL)) { -- /* TX MIC entry failed. No need to proceed further */ -- ath_print(common, ATH_DBG_FATAL, -- "Setting TX MIC Key Failed\n"); -- return 0; -- } -- -- memcpy(hk->kv_mic, key_rxmic, sizeof(hk->kv_mic)); -- /* XXX delete tx key on failure? */ -- return ath9k_hw_set_keycache_entry(ah, keyix + 32, hk, addr); --} -- --static int ath_reserve_key_cache_slot_tkip(struct ath_common *common) --{ -- int i; -- -- for (i = IEEE80211_WEP_NKID; i < common->keymax / 2; i++) { -- if (test_bit(i, common->keymap) || -- test_bit(i + 64, common->keymap)) -- continue; /* At least one part of TKIP key allocated */ -- if (common->splitmic && -- (test_bit(i + 32, common->keymap) || -- test_bit(i + 64 + 32, common->keymap))) -- continue; /* At least one part of TKIP key allocated */ -- -- /* Found a free slot for a TKIP key */ -- return i; -- } -- return -1; --} -- --static int ath_reserve_key_cache_slot(struct ath_common *common) --{ -- int i; -- -- /* First, try to find slots that would not be available for TKIP. */ -- if (common->splitmic) { -- for (i = IEEE80211_WEP_NKID; i < common->keymax / 4; i++) { -- if (!test_bit(i, common->keymap) && -- (test_bit(i + 32, common->keymap) || -- test_bit(i + 64, common->keymap) || -- test_bit(i + 64 + 32, common->keymap))) -- return i; -- if (!test_bit(i + 32, common->keymap) && -- (test_bit(i, common->keymap) || -- test_bit(i + 64, common->keymap) || -- test_bit(i + 64 + 32, common->keymap))) -- return i + 32; -- if (!test_bit(i + 64, common->keymap) && -- (test_bit(i , common->keymap) || -- test_bit(i + 32, common->keymap) || -- test_bit(i + 64 + 32, common->keymap))) -- return i + 64; -- if (!test_bit(i + 64 + 32, common->keymap) && -- (test_bit(i, common->keymap) || -- test_bit(i + 32, common->keymap) || -- test_bit(i + 64, common->keymap))) -- return i + 64 + 32; -- } -- } else { -- for (i = IEEE80211_WEP_NKID; i < common->keymax / 2; i++) { -- if (!test_bit(i, common->keymap) && -- test_bit(i + 64, common->keymap)) -- return i; -- if (test_bit(i, common->keymap) && -- !test_bit(i + 64, common->keymap)) -- return i + 64; -- } -- } -- -- /* No partially used TKIP slots, pick any available slot */ -- for (i = IEEE80211_WEP_NKID; i < common->keymax; i++) { -- /* Do not allow slots that could be needed for TKIP group keys -- * to be used. This limitation could be removed if we know that -- * TKIP will not be used. */ -- if (i >= 64 && i < 64 + IEEE80211_WEP_NKID) -- continue; -- if (common->splitmic) { -- if (i >= 32 && i < 32 + IEEE80211_WEP_NKID) -- continue; -- if (i >= 64 + 32 && i < 64 + 32 + IEEE80211_WEP_NKID) -- continue; -- } -- -- if (!test_bit(i, common->keymap)) -- return i; /* Found a free slot for a key */ -- } -- -- /* No free slot found */ -- return -1; --} -- --static int ath_key_config(struct ath_common *common, -- struct ieee80211_vif *vif, -- struct ieee80211_sta *sta, -- struct ieee80211_key_conf *key) --{ -- struct ath_hw *ah = common->ah; -- struct ath9k_keyval hk; -- const u8 *mac = NULL; -- int ret = 0; -- int idx; -- -- memset(&hk, 0, sizeof(hk)); -- -- switch (key->alg) { -- case ALG_WEP: -- hk.kv_type = ATH9K_CIPHER_WEP; -- break; -- case ALG_TKIP: -- hk.kv_type = ATH9K_CIPHER_TKIP; -- break; -- case ALG_CCMP: -- hk.kv_type = ATH9K_CIPHER_AES_CCM; -- break; -- default: -- return -EOPNOTSUPP; -- } -- -- hk.kv_len = key->keylen; -- memcpy(hk.kv_val, key->key, key->keylen); -- -- if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) { -- /* For now, use the default keys for broadcast keys. This may -- * need to change with virtual interfaces. */ -- idx = key->keyidx; -- } else if (key->keyidx) { -- if (WARN_ON(!sta)) -- return -EOPNOTSUPP; -- mac = sta->addr; -- -- if (vif->type != NL80211_IFTYPE_AP) { -- /* Only keyidx 0 should be used with unicast key, but -- * allow this for client mode for now. */ -- idx = key->keyidx; -- } else -- return -EIO; -- } else { -- if (WARN_ON(!sta)) -- return -EOPNOTSUPP; -- mac = sta->addr; -- -- if (key->alg == ALG_TKIP) -- idx = ath_reserve_key_cache_slot_tkip(common); -- else -- idx = ath_reserve_key_cache_slot(common); -- if (idx < 0) -- return -ENOSPC; /* no free key cache entries */ -- } -- -- if (key->alg == ALG_TKIP) -- ret = ath_setkey_tkip(common, idx, key->key, &hk, mac, -- vif->type == NL80211_IFTYPE_AP); -- else -- ret = ath9k_hw_set_keycache_entry(ah, idx, &hk, mac); -- -- if (!ret) -- return -EIO; -- -- set_bit(idx, common->keymap); -- if (key->alg == ALG_TKIP) { -- set_bit(idx + 64, common->keymap); -- if (common->splitmic) { -- set_bit(idx + 32, common->keymap); -- set_bit(idx + 64 + 32, common->keymap); -- } -- } -- -- return idx; --} -- --static void ath_key_delete(struct ath_common *common, struct ieee80211_key_conf *key) --{ -- struct ath_hw *ah = common->ah; -- -- ath9k_hw_keyreset(ah, key->hw_key_idx); -- if (key->hw_key_idx < IEEE80211_WEP_NKID) -- return; -- -- clear_bit(key->hw_key_idx, common->keymap); -- if (key->alg != ALG_TKIP) -- return; -- -- clear_bit(key->hw_key_idx + 64, common->keymap); -- if (common->splitmic) { -- ath9k_hw_keyreset(ah, key->hw_key_idx + 32); -- clear_bit(key->hw_key_idx + 32, common->keymap); -- clear_bit(key->hw_key_idx + 64 + 32, common->keymap); -- } --} -- - static void ath9k_bss_assoc_info(struct ath_softc *sc, - struct ieee80211_vif *vif, - struct ieee80211_bss_conf *bss_conf) -@@ -1814,7 +1586,7 @@ static int ath9k_set_key(struct ieee8021 - - switch (cmd) { - case SET_KEY: -- ret = ath_key_config(common, vif, sta, key); -+ ret = ath9k_cmn_key_config(common, vif, sta, key); - if (ret >= 0) { - key->hw_key_idx = ret; - /* push IV and Michael MIC generation to stack */ -@@ -1827,7 +1599,7 @@ static int ath9k_set_key(struct ieee8021 - } - break; - case DISABLE_KEY: -- ath_key_delete(common, key); -+ ath9k_cmn_key_delete(common, key); - break; - default: - ret = -EINVAL; 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 cea88ae63..bae97ca17 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 @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c -@@ -216,6 +216,7 @@ void rt2x00pci_uninitialize(struct rt2x0 +@@ -262,6 +262,7 @@ void rt2x00pci_uninitialize(struct rt2x0 } EXPORT_SYMBOL_GPL(rt2x00pci_uninitialize); @@ -8,7 +8,7 @@ /* * PCI driver handlers. */ -@@ -390,6 +391,7 @@ int rt2x00pci_resume(struct pci_dev *pci +@@ -439,6 +440,7 @@ int rt2x00pci_resume(struct pci_dev *pci } EXPORT_SYMBOL_GPL(rt2x00pci_resume); #endif /* CONFIG_PM */ From b8297562d3205aaf1d0d4cf37a9bdd21e7595924 Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 16 Jun 2010 20:28:55 +0000 Subject: [PATCH 06/90] [backfire] merge r21820 and r21821 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21822 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/hostapd/Makefile | 4 ++-- package/hostapd/files/wpa_supplicant.sh | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package/hostapd/Makefile b/package/hostapd/Makefile index 72a7205dd..948e1339b 100644 --- a/package/hostapd/Makefile +++ b/package/hostapd/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2009 OpenWrt.org +# Copyright (C) 2006-2010 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=hostapd PKG_VERSION:=20100418 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_REV:=0b86f67a2970403d1b1b6d34ce49f5485ef5dbb3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 diff --git a/package/hostapd/files/wpa_supplicant.sh b/package/hostapd/files/wpa_supplicant.sh index 74d20c666..28d5d2056 100644 --- a/package/hostapd/files/wpa_supplicant.sh +++ b/package/hostapd/files/wpa_supplicant.sh @@ -70,6 +70,7 @@ wpa_supplicant_setup_vif() { key_mgmt='WPA-EAP' config_get ieee80211w "$vif" ieee80211w config_get ca_cert "$vif" ca_cert + config_get eap_type "$vif" eap_type ca_cert=${ca_cert:+"ca_cert=\"$ca_cert\""} case "$eap_type" in tls) From ba9021553016ae45691096675cd463542b5a1395 Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 16 Jun 2010 23:37:46 +0000 Subject: [PATCH 07/90] [backfire] merge r21823 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21824 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mtd/Makefile | 2 +- package/mtd/src/fis.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/mtd/Makefile b/package/mtd/Makefile index 9438b96fd..332ce3034 100644 --- a/package/mtd/Makefile +++ b/package/mtd/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mtd -PKG_RELEASE:=12 +PKG_RELEASE:=13 PKG_BUILD_DIR := $(KERNEL_BUILD_DIR)/$(PKG_NAME) STAMP_PREPARED := $(STAMP_PREPARED)_$(call confvar,CONFIG_MTD_REDBOOT_PARTS) diff --git a/package/mtd/src/fis.c b/package/mtd/src/fis.c index b285d24db..559ca9506 100644 --- a/package/mtd/src/fis.c +++ b/package/mtd/src/fis.c @@ -77,7 +77,7 @@ fis_open(void) goto error; fis_erasesize = erasesize; - desc = mmap(NULL, erasesize, PROT_READ|PROT_WRITE, MAP_SHARED, fis_fd, 0); + desc = mmap(NULL, erasesize, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_LOCKED, fis_fd, 0); if (desc == MAP_FAILED) goto error; From 413e54ee965f6f2cf4d6420004b914571445e217 Mon Sep 17 00:00:00 2001 From: jow Date: Fri, 18 Jun 2010 07:58:32 +0000 Subject: [PATCH 08/90] [backfire] merge r21833 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21834 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/orion/base-files/lib/upgrade/platform.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/target/linux/orion/base-files/lib/upgrade/platform.sh b/target/linux/orion/base-files/lib/upgrade/platform.sh index def241d4b..fdd26c517 100644 --- a/target/linux/orion/base-files/lib/upgrade/platform.sh +++ b/target/linux/orion/base-files/lib/upgrade/platform.sh @@ -9,13 +9,21 @@ platform_check_image() { case "${hardware}" in # hardware with padded uImage + padded rootfs - 'Netgear WNR854T' | 'Linksys WRT350N v2') + 'Linksys WRT350N v2') [ "${magic}" != '2705' ] && { echo "Invalid image type ${magic}." return 1 } return 0 ;; + # Netgear WNR854T has extra header before uImage + 'Netgear WNR854T') + [ "${magic}" != '8519' ] && { + echo "Invalid image type ${magic}." + return 1 + } + return 0 + ;; esac echo "Sysupgrade is not yet supported on ${hardware}." From 445022bc75f1570f02e5e239b194223a18ad22d3 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 20 Jun 2010 05:42:38 +0000 Subject: [PATCH 09/90] backfire: [kernel] swconfig: Check vlan/port indexes for validity. (backport of r20811) Swconfig needs to make sure that requested vlans/ports actually exist, else it might read or modify memory not belonging to itself. This patch adds a quick range check in swconfig's kernel part to prevent accidential or intentional memory modification. Signed-off-by: Jonas Gorski git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21846 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/files/drivers/net/phy/swconfig.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c index 4ca4ea32f..1eebe87e5 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c @@ -463,6 +463,8 @@ swconfig_lookup_attr(struct switch_dev *dev, struct genl_info *info, if (!info->attrs[SWITCH_ATTR_OP_VLAN]) goto done; val->port_vlan = nla_get_u32(info->attrs[SWITCH_ATTR_OP_VLAN]); + if (val->port_vlan >= dev->vlans) + goto done; break; case SWITCH_CMD_SET_PORT: case SWITCH_CMD_GET_PORT: @@ -473,6 +475,8 @@ swconfig_lookup_attr(struct switch_dev *dev, struct genl_info *info, if (!info->attrs[SWITCH_ATTR_OP_PORT]) goto done; val->port_vlan = nla_get_u32(info->attrs[SWITCH_ATTR_OP_PORT]); + if (val->port_vlan >= dev->ports) + goto done; break; default: WARN_ON(1); From 1abce0276c65d357ac591f7c50cf3bf7b46ff754 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 20 Jun 2010 05:42:44 +0000 Subject: [PATCH 10/90] backfire: swconfig: Fix a bug in use of SWITCH_PORT_FLAG_TAGGED (backport of r21708) SWITCH_PORT_FLAG_TAGGED is a bit index, not a bit mask. Signed-off-by: Martin Mares Signed-off-by: Patrick Horn git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21847 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/files/drivers/net/phy/swconfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c index 1eebe87e5..dea8e78b7 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/swconfig.c @@ -92,7 +92,7 @@ swconfig_set_vlan_ports(struct switch_dev *dev, const struct switch_attr *attr, if (ports[i].id >= dev->ports) return -EINVAL; - if (dev->set_port_pvid && !(ports[i].flags & SWITCH_PORT_FLAG_TAGGED)) + if (dev->set_port_pvid && !(ports[i].flags & (1 << SWITCH_PORT_FLAG_TAGGED))) dev->set_port_pvid(dev, ports[i].id, val->port_vlan); } From d8f15077f0daa236f0b97bf3662308cb95d3b916 Mon Sep 17 00:00:00 2001 From: jow Date: Sat, 26 Jun 2010 18:12:10 +0000 Subject: [PATCH 11/90] [backfire] merge r21903 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21904 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/ppp/Makefile | 2 +- package/ppp/files/ppp.sh | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/ppp/Makefile b/package/ppp/Makefile index d7dcc65f8..e0724fffa 100644 --- a/package/ppp/Makefile +++ b/package/ppp/Makefile @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ppp PKG_VERSION:=2.4.4 -PKG_RELEASE:=7 +PKG_RELEASE:=8 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/ppp/ diff --git a/package/ppp/files/ppp.sh b/package/ppp/files/ppp.sh index 53cfb1be1..46a66c969 100644 --- a/package/ppp/files/ppp.sh +++ b/package/ppp/files/ppp.sh @@ -92,11 +92,11 @@ start_pppd() { } local demand - config_get_bool demand "$cfg" demand 0 + config_get demand "$cfg" demand 0 local demandargs - [ "$demand" -eq 1 ] && { - demandargs="precompiled-active-filter /etc/ppp/filter demand idle" + [ "$demand" -gt 0 ] && { + demandargs="precompiled-active-filter /etc/ppp/filter demand idle $demand" [ "$has_dns" -eq 0 ] && add_dns "$cfg" 1.1.1.1 } || { demandargs="persist" From ab8c4274e4e4e909d9abbc626adc2b23a1af071c Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:52:03 +0000 Subject: [PATCH 12/90] backfire: ar71xx: don't use vlan 0 for devices with rtl8366s switch (backport of r21905) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21924 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ar71xx/base-files/etc/defconfig/wndr3700/network | 2 +- .../linux/ar71xx/base-files/etc/defconfig/wzr-hp-g300nh/network | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target/linux/ar71xx/base-files/etc/defconfig/wndr3700/network b/target/linux/ar71xx/base-files/etc/defconfig/wndr3700/network index 5aba76cf6..eaf3fec7b 100644 --- a/target/linux/ar71xx/base-files/etc/defconfig/wndr3700/network +++ b/target/linux/ar71xx/base-files/etc/defconfig/wndr3700/network @@ -24,7 +24,7 @@ config switch config switch_vlan option device rtl8366s - option vlan 0 + option vlan 1 option ports "0 1 2 3 5" config switch_port diff --git a/target/linux/ar71xx/base-files/etc/defconfig/wzr-hp-g300nh/network b/target/linux/ar71xx/base-files/etc/defconfig/wzr-hp-g300nh/network index 3ab4bc81d..48477fab1 100644 --- a/target/linux/ar71xx/base-files/etc/defconfig/wzr-hp-g300nh/network +++ b/target/linux/ar71xx/base-files/etc/defconfig/wzr-hp-g300nh/network @@ -22,5 +22,5 @@ config switch config switch_vlan option device rtl8366s - option vlan 0 + option vlan 1 option ports "0 1 2 3 5" From c814fdfe021d90e8a414ca97db07698b268743f2 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:52:14 +0000 Subject: [PATCH 13/90] backfire: generic: rtl8366: prevent modifications of VLAN 0 (backport of r29106) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21925 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c | 6 +++--- target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 2739031e2..dcc4d6c92 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -1150,7 +1150,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); char *buf = rtl->buf; - if (val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; memset(buf, '\0', sizeof(rtl->buf)); @@ -1288,7 +1288,7 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, struct switch_port *port; int i; - if (val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; rtl8366rb_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); @@ -1317,7 +1317,7 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, struct switch_port *port; int i; - if (val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; rtl8366rb_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index babeddc44..c8e7dd60b 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -1118,7 +1118,7 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, struct rtl8366s *rtl = sw_to_rtl8366s(dev); char *buf = rtl->buf; - if (val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; memset(buf, '\0', sizeof(rtl->buf)); @@ -1257,7 +1257,7 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, struct switch_port *port; int i; - if (val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; rtl8366s_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); @@ -1286,7 +1286,7 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, struct switch_port *port; int i; - if (val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; rtl8366s_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); From ac10fe233eda76c5a4fdb9bf4bfd300e7080237a Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:52:24 +0000 Subject: [PATCH 14/90] backfire: generic: rtl8366: fix register offset and size of MIB counters (backport of r29107) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21926 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 26 +++++++++---------- .../files/drivers/net/phy/rtl8366s.c | 26 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index dcc4d6c92..98c5a0ba8 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -210,19 +210,19 @@ static struct mib_counter rtl8366rb_mib_counters[RTL8366S_MIB_COUNT] = { { 38, 2, "Dot3StatsSymbolErrors " }, { 40, 2, "Dot3InPauseFrames " }, { 42, 2, "Dot3ControlInUnknownOpcodes " }, - { 44, 2, "IfOutOctets " }, - { 46, 2, "Dot3StatsSingleCollisionFrames " }, - { 48, 2, "Dot3StatMultipleCollisionFrames " }, - { 50, 2, "Dot3sDeferredTransmissions " }, - { 52, 2, "Dot3StatsLateCollisions " }, - { 54, 2, "EtherStatsCollisions " }, - { 56, 2, "Dot3StatsExcessiveCollisions " }, - { 58, 2, "Dot3OutPauseFrames " }, - { 60, 2, "Dot1dBasePortDelayExceededDiscards" }, - { 62, 2, "Dot1dTpPortInDiscards " }, - { 64, 2, "IfOutUcastPkts " }, - { 66, 2, "IfOutMulticastPkts " }, - { 68, 2, "IfOutBroadcastPkts " }, + { 44, 4, "IfOutOctets " }, + { 48, 2, "Dot3StatsSingleCollisionFrames " }, + { 50, 2, "Dot3StatMultipleCollisionFrames " }, + { 52, 2, "Dot3sDeferredTransmissions " }, + { 54, 2, "Dot3StatsLateCollisions " }, + { 56, 2, "EtherStatsCollisions " }, + { 58, 2, "Dot3StatsExcessiveCollisions " }, + { 60, 2, "Dot3OutPauseFrames " }, + { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, + { 64, 2, "Dot1dTpPortInDiscards " }, + { 66, 2, "IfOutUcastPkts " }, + { 68, 2, "IfOutMulticastPkts " }, + { 70, 2, "IfOutBroadcastPkts " }, }; static inline struct rtl8366rb *sw_to_rtl8366rb(struct switch_dev *sw) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index c8e7dd60b..26d5c7880 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -210,19 +210,19 @@ static struct mib_counter rtl8366s_mib_counters[RTL8366S_MIB_COUNT] = { { 38, 2, "Dot3StatsSymbolErrors " }, { 40, 2, "Dot3InPauseFrames " }, { 42, 2, "Dot3ControlInUnknownOpcodes " }, - { 44, 2, "IfOutOctets " }, - { 46, 2, "Dot3StatsSingleCollisionFrames " }, - { 48, 2, "Dot3StatMultipleCollisionFrames " }, - { 50, 2, "Dot3sDeferredTransmissions " }, - { 52, 2, "Dot3StatsLateCollisions " }, - { 54, 2, "EtherStatsCollisions " }, - { 56, 2, "Dot3StatsExcessiveCollisions " }, - { 58, 2, "Dot3OutPauseFrames " }, - { 60, 2, "Dot1dBasePortDelayExceededDiscards" }, - { 62, 2, "Dot1dTpPortInDiscards " }, - { 64, 2, "IfOutUcastPkts " }, - { 66, 2, "IfOutMulticastPkts " }, - { 68, 2, "IfOutBroadcastPkts " }, + { 44, 4, "IfOutOctets " }, + { 48, 2, "Dot3StatsSingleCollisionFrames " }, + { 50, 2, "Dot3StatMultipleCollisionFrames " }, + { 52, 2, "Dot3sDeferredTransmissions " }, + { 54, 2, "Dot3StatsLateCollisions " }, + { 56, 2, "EtherStatsCollisions " }, + { 58, 2, "Dot3StatsExcessiveCollisions " }, + { 60, 2, "Dot3OutPauseFrames " }, + { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, + { 64, 2, "Dot1dTpPortInDiscards " }, + { 66, 2, "IfOutUcastPkts " }, + { 68, 2, "IfOutMulticastPkts " }, + { 70, 2, "IfOutBroadcastPkts " }, }; static inline struct rtl8366s *sw_to_rtl8366s(struct switch_dev *sw) From 5d524e9d5c65266748abae095b9f0d3875006bf1 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:52:36 +0000 Subject: [PATCH 15/90] backfire: generic: rtl8366: don't show link parameters if the link is down (backport of r21908) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21927 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 29 +++++++++++-------- .../files/drivers/net/phy/rtl8366s.c | 29 +++++++++++-------- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 98c5a0ba8..1069225d2 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -1119,19 +1119,24 @@ static int rtl8366rb_sw_get_port_link(struct switch_dev *dev, if (val->port_vlan % 2) data = data >> 8; - len = snprintf(rtl->buf, sizeof(rtl->buf), - "port:%d link:%s speed:%s %s-duplex %s%s%s", - val->port_vlan, - (data & RTL8366S_PORT_STATUS_LINK_MASK) ? "up" : "down", - rtl8366rb_speed_str(data & + if (data & RTL8366S_PORT_STATUS_LINK_MASK) { + len = snprintf(rtl->buf, sizeof(rtl->buf), + "port:%d link:up speed:%s %s-duplex %s%s%s", + val->port_vlan, + rtl8366rb_speed_str(data & RTL8366S_PORT_STATUS_SPEED_MASK), - (data & RTL8366S_PORT_STATUS_DUPLEX_MASK) ? - "full" : "half", - (data & RTL8366S_PORT_STATUS_TXPAUSE_MASK) ? - "tx-pause ": "", - (data & RTL8366S_PORT_STATUS_RXPAUSE_MASK) ? - "rx-pause " : "", - (data & RTL8366S_PORT_STATUS_AN_MASK) ? "nway ": ""); + (data & RTL8366S_PORT_STATUS_DUPLEX_MASK) ? + "full" : "half", + (data & RTL8366S_PORT_STATUS_TXPAUSE_MASK) ? + "tx-pause ": "", + (data & RTL8366S_PORT_STATUS_RXPAUSE_MASK) ? + "rx-pause " : "", + (data & RTL8366S_PORT_STATUS_AN_MASK) ? + "nway ": ""); + } else { + len = snprintf(rtl->buf, sizeof(rtl->buf), "port:%d link: down", + val->port_vlan); + } val->value.s = rtl->buf; val->len = len; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 26d5c7880..f30a5a3c6 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -1087,19 +1087,24 @@ static int rtl8366s_sw_get_port_link(struct switch_dev *dev, if (val->port_vlan % 2) data = data >> 8; - len = snprintf(rtl->buf, sizeof(rtl->buf), - "port:%d link:%s speed:%s %s-duplex %s%s%s", - val->port_vlan, - (data & RTL8366S_PORT_STATUS_LINK_MASK) ? "up" : "down", - rtl8366s_speed_str(data & + if (data & RTL8366S_PORT_STATUS_LINK_MASK) { + len = snprintf(rtl->buf, sizeof(rtl->buf), + "port:%d link:up speed:%s %s-duplex %s%s%s", + val->port_vlan, + rtl8366s_speed_str(data & RTL8366S_PORT_STATUS_SPEED_MASK), - (data & RTL8366S_PORT_STATUS_DUPLEX_MASK) ? - "full" : "half", - (data & RTL8366S_PORT_STATUS_TXPAUSE_MASK) ? - "tx-pause ": "", - (data & RTL8366S_PORT_STATUS_RXPAUSE_MASK) ? - "rx-pause " : "", - (data & RTL8366S_PORT_STATUS_AN_MASK) ? "nway ": ""); + (data & RTL8366S_PORT_STATUS_DUPLEX_MASK) ? + "full" : "half", + (data & RTL8366S_PORT_STATUS_TXPAUSE_MASK) ? + "tx-pause ": "", + (data & RTL8366S_PORT_STATUS_RXPAUSE_MASK) ? + "rx-pause " : "", + (data & RTL8366S_PORT_STATUS_AN_MASK) ? + "nway ": ""); + } else { + len = snprintf(rtl->buf, sizeof(rtl->buf), "port:%d link: down", + val->port_vlan); + } val->value.s = rtl->buf; val->len = len; From ab13453cab3aa9678e2db32308929f187d4c69c6 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:52:45 +0000 Subject: [PATCH 16/90] backfire: generic: rtl8366: change format string for debugfs error messages (backport of r21909) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21928 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../generic-2.6/files/drivers/net/phy/rtl8366rb.c | 14 ++++++++------ .../generic-2.6/files/drivers/net/phy/rtl8366s.c | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 1069225d2..fd8b7e49d 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -954,30 +954,32 @@ static void rtl8366rb_debugfs_init(struct rtl8366rb *rtl) node = debugfs_create_x16("reg", S_IRUGO | S_IWUSR, root, &gl_dbg_reg); if (!node) { - dev_err(rtl->parent, "Creating debugfs file reg failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "reg"); return; } node = debugfs_create_file("val", S_IRUGO | S_IWUSR, root, rtl, &fops_rtl8366rb_regs); if (!node) { - dev_err(rtl->parent, "Creating debugfs file val failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "val"); return; } node = debugfs_create_file("vlan", S_IRUSR, root, rtl, &fops_rtl8366rb_vlan); if (!node) { - dev_err(rtl->parent, - "Creating debugfs file vlan failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "vlan"); return; } node = debugfs_create_file("mibs", S_IRUSR, root, rtl, &fops_rtl8366rb_mibs); if (!node) { - dev_err(rtl->parent, - "Creating debugfs file mibs failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "mibs"); return; } } diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index f30a5a3c6..c4ba2c11e 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -922,30 +922,32 @@ static void rtl8366s_debugfs_init(struct rtl8366s *rtl) node = debugfs_create_x16("reg", S_IRUGO | S_IWUSR, root, &g_dbg_reg); if (!node) { - dev_err(rtl->parent, "Creating debugfs file reg failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "reg"); return; } node = debugfs_create_file("val", S_IRUGO | S_IWUSR, root, rtl, &fops_rtl8366s_regs); if (!node) { - dev_err(rtl->parent, "Creating debugfs file val failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "val"); return; } node = debugfs_create_file("vlan", S_IRUSR, root, rtl, &fops_rtl8366s_vlan); if (!node) { - dev_err(rtl->parent, - "Creating debugfs file vlan failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "vlan"); return; } node = debugfs_create_file("mibs", S_IRUSR, root, rtl, &fops_rtl8366s_mibs); if (!node) { - dev_err(rtl->parent, - "Creating debugfs file mibs failed\n"); + dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + "mibs"); return; } } From 1329a26409e85d64c8768bc1798816e840acf7ec Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:52:55 +0000 Subject: [PATCH 17/90] backfire: generic: rtl8366: introduce rtl8366_smi_ops (backport of r21910) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21929 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.c | 11 +++ .../files/drivers/net/phy/rtl8366_smi.h | 8 +++ .../files/drivers/net/phy/rtl8366rb.c | 67 +++++++++++-------- .../files/drivers/net/phy/rtl8366s.c | 67 +++++++++++-------- 4 files changed, 97 insertions(+), 56 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c index 7091190b8..d40d9e7f7 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c @@ -272,6 +272,9 @@ int rtl8366_smi_init(struct rtl8366_smi *smi) if (!smi->parent) return -EINVAL; + if (!smi->ops) + return -EINVAL; + err = gpio_request(smi->gpio_sda, dev_name(smi->parent)); if (err) { dev_err(smi->parent, "gpio_request failed for %u, err=%d\n", @@ -291,8 +294,16 @@ int rtl8366_smi_init(struct rtl8366_smi *smi) dev_info(smi->parent, "using GPIO pins %u (SDA) and %u (SCK)\n", smi->gpio_sda, smi->gpio_sck); + err = smi->ops->detect(smi); + if (err) { + dev_err(smi->parent, "chip detection failed, err=%d\n", err); + goto err_free_sck; + } + return 0; + err_free_sck: + gpio_free(smi->gpio_sck); err_free_sda: gpio_free(smi->gpio_sda); err_out: diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index e68fa9a5b..ae51c425e 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -11,11 +11,19 @@ #ifndef _RTL8366_SMI_H #define _RTL8366_SMI_H +struct rtl8366_smi_ops; + struct rtl8366_smi { struct device *parent; unsigned int gpio_sda; unsigned int gpio_sck; spinlock_t lock; + + struct rtl8366_smi_ops *ops; +}; + +struct rtl8366_smi_ops { + int (*detect)(struct rtl8366_smi *smi); }; int rtl8366_smi_init(struct rtl8366_smi *smi); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index fd8b7e49d..eca2586a2 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -26,7 +26,7 @@ #endif #define RTL8366S_DRIVER_DESC "Realtek RTL8366RB ethernet switch driver" -#define RTL8366S_DRIVER_VER "0.2.0" +#define RTL8366S_DRIVER_VER "0.2.2" #define RTL8366S_PHY_NO_MAX 4 #define RTL8366S_PHY_PAGE_MAX 7 @@ -1573,35 +1573,8 @@ static int rtl8366rb_mii_bus_match(struct mii_bus *bus) static int rtl8366rb_setup(struct rtl8366rb *rtl) { - struct rtl8366_smi *smi = &rtl->smi; - u32 chip_id = 0; - u32 chip_ver = 0; int ret; - ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_ID_REG, &chip_id); - if (ret) { - dev_err(rtl->parent, "unable to read chip id\n"); - return ret; - } - - switch (chip_id) { - case RTL8366S_CHIP_ID_8366: - break; - default: - dev_err(rtl->parent, "unknown chip id (%04x)\n", chip_id); - return -ENODEV; - } - - ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_VERSION_CTRL_REG, - &chip_ver); - if (ret) { - dev_err(rtl->parent, "unable to read chip version\n"); - return ret; - } - - dev_info(rtl->parent, "RTL%04x ver. %u chip found\n", - chip_id, chip_ver & RTL8366S_CHIP_VERSION_MASK); - ret = rtl8366rb_reset_chip(rtl); if (ret) return ret; @@ -1610,6 +1583,43 @@ static int rtl8366rb_setup(struct rtl8366rb *rtl) return 0; } +static int rtl8366rb_detect(struct rtl8366_smi *smi) +{ + u32 chip_id = 0; + u32 chip_ver = 0; + int ret; + + ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_ID_REG, &chip_id); + if (ret) { + dev_err(smi->parent, "unable to read chip id\n"); + return ret; + } + + switch (chip_id) { + case RTL8366S_CHIP_ID_8366: + break; + default: + dev_err(smi->parent, "unknown chip id (%04x)\n", chip_id); + return -ENODEV; + } + + ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_VERSION_CTRL_REG, + &chip_ver); + if (ret) { + dev_err(smi->parent, "unable to read chip version\n"); + return ret; + } + + dev_info(smi->parent, "RTL%04x ver. %u chip found\n", + chip_id, chip_ver & RTL8366S_CHIP_VERSION_MASK); + + return 0; +} + +static struct rtl8366_smi_ops rtl8366rb_smi_ops = { + .detect = rtl8366rb_detect, +}; + static int __init rtl8366rb_probe(struct platform_device *pdev) { static int rtl8366_smi_version_printed; @@ -1642,6 +1652,7 @@ static int __init rtl8366rb_probe(struct platform_device *pdev) smi->parent = &pdev->dev; smi->gpio_sda = pdata->gpio_sda; smi->gpio_sck = pdata->gpio_sck; + smi->ops = &rtl8366rb_smi_ops; err = rtl8366_smi_init(smi); if (err) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index c4ba2c11e..c09b4b1a2 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -26,7 +26,7 @@ #endif #define RTL8366S_DRIVER_DESC "Realtek RTL8366S ethernet switch driver" -#define RTL8366S_DRIVER_VER "0.2.1" +#define RTL8366S_DRIVER_VER "0.2.2" #define RTL8366S_PHY_NO_MAX 4 #define RTL8366S_PHY_PAGE_MAX 7 @@ -1542,35 +1542,8 @@ static int rtl8366s_mii_bus_match(struct mii_bus *bus) static int rtl8366s_setup(struct rtl8366s *rtl) { - struct rtl8366_smi *smi = &rtl->smi; - u32 chip_id = 0; - u32 chip_ver = 0; int ret; - ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_ID_REG, &chip_id); - if (ret) { - dev_err(rtl->parent, "unable to read chip id\n"); - return ret; - } - - switch (chip_id) { - case RTL8366S_CHIP_ID_8366: - break; - default: - dev_err(rtl->parent, "unknown chip id (%04x)\n", chip_id); - return -ENODEV; - } - - ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_VERSION_CTRL_REG, - &chip_ver); - if (ret) { - dev_err(rtl->parent, "unable to read chip version\n"); - return ret; - } - - dev_info(rtl->parent, "RTL%04x ver. %u chip found\n", - chip_id, chip_ver & RTL8366S_CHIP_VERSION_MASK); - ret = rtl8366s_reset_chip(rtl); if (ret) return ret; @@ -1579,6 +1552,43 @@ static int rtl8366s_setup(struct rtl8366s *rtl) return 0; } +static int rtl8366s_detect(struct rtl8366_smi *smi) +{ + u32 chip_id = 0; + u32 chip_ver = 0; + int ret; + + ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_ID_REG, &chip_id); + if (ret) { + dev_err(smi->parent, "unable to read chip id\n"); + return ret; + } + + switch (chip_id) { + case RTL8366S_CHIP_ID_8366: + break; + default: + dev_err(smi->parent, "unknown chip id (%04x)\n", chip_id); + return -ENODEV; + } + + ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_VERSION_CTRL_REG, + &chip_ver); + if (ret) { + dev_err(smi->parent, "unable to read chip version\n"); + return ret; + } + + dev_info(smi->parent, "RTL%04x ver. %u chip found\n", + chip_id, chip_ver & RTL8366S_CHIP_VERSION_MASK); + + return 0; +} + +static struct rtl8366_smi_ops rtl8366s_smi_ops = { + .detect = rtl8366s_detect, +}; + static int __init rtl8366s_probe(struct platform_device *pdev) { static int rtl8366_smi_version_printed; @@ -1611,6 +1621,7 @@ static int __init rtl8366s_probe(struct platform_device *pdev) smi->parent = &pdev->dev; smi->gpio_sda = pdata->gpio_sda; smi->gpio_sck = pdata->gpio_sck; + smi->ops = &rtl8366s_smi_ops; err = rtl8366_smi_init(smi); if (err) From a219ae9c95ea4f4f69fc1184a5645c13c0eac23c Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:05 +0000 Subject: [PATCH 18/90] backfire: generic: rtl8366: move mii bus handling to the rtl8366_smi code (backport of r21911) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21930 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.c | 47 ++++++++++++++ .../files/drivers/net/phy/rtl8366_smi.h | 8 +++ .../files/drivers/net/phy/rtl8366rb.c | 64 +++---------------- .../files/drivers/net/phy/rtl8366s.c | 64 +++---------------- 4 files changed, 75 insertions(+), 108 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c index d40d9e7f7..625a01749 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "rtl8366_smi.h" @@ -265,6 +266,47 @@ int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data) } EXPORT_SYMBOL_GPL(rtl8366_smi_write_reg); +static int rtl8366_smi_mii_init(struct rtl8366_smi *smi) +{ + int ret; + int i; + + smi->mii_bus = mdiobus_alloc(); + if (smi->mii_bus == NULL) { + ret = -ENOMEM; + goto err; + } + + smi->mii_bus->priv = (void *) smi; + smi->mii_bus->name = dev_name(smi->parent); + smi->mii_bus->read = smi->ops->mii_read; + smi->mii_bus->write = smi->ops->mii_write; + snprintf(smi->mii_bus->id, MII_BUS_ID_SIZE, "%s", + dev_name(smi->parent)); + smi->mii_bus->parent = smi->parent; + smi->mii_bus->phy_mask = ~(0x1f); + smi->mii_bus->irq = smi->mii_irq; + for (i = 0; i < PHY_MAX_ADDR; i++) + smi->mii_irq[i] = PHY_POLL; + + ret = mdiobus_register(smi->mii_bus); + if (ret) + goto err_free; + + return 0; + + err_free: + mdiobus_free(smi->mii_bus); + err: + return ret; +} + +static void rtl8366_smi_mii_cleanup(struct rtl8366_smi *smi) +{ + mdiobus_unregister(smi->mii_bus); + mdiobus_free(smi->mii_bus); +} + int rtl8366_smi_init(struct rtl8366_smi *smi) { int err; @@ -300,6 +342,10 @@ int rtl8366_smi_init(struct rtl8366_smi *smi) goto err_free_sck; } + err = rtl8366_smi_mii_init(smi); + if (err) + goto err_free_sck; + return 0; err_free_sck: @@ -313,6 +359,7 @@ EXPORT_SYMBOL_GPL(rtl8366_smi_init); void rtl8366_smi_cleanup(struct rtl8366_smi *smi) { + rtl8366_smi_mii_cleanup(smi); gpio_free(smi->gpio_sck); gpio_free(smi->gpio_sda); } diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index ae51c425e..23d9b3d23 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -11,19 +11,27 @@ #ifndef _RTL8366_SMI_H #define _RTL8366_SMI_H +#include + struct rtl8366_smi_ops; +struct mii_bus; struct rtl8366_smi { struct device *parent; unsigned int gpio_sda; unsigned int gpio_sck; spinlock_t lock; + struct mii_bus *mii_bus; + int mii_irq[PHY_MAX_ADDR]; struct rtl8366_smi_ops *ops; }; struct rtl8366_smi_ops { int (*detect)(struct rtl8366_smi *smi); + + int (*mii_read)(struct mii_bus *bus, int addr, int reg); + int (*mii_write)(struct mii_bus *bus, int addr, int reg, u16 val); }; int rtl8366_smi_init(struct rtl8366_smi *smi); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index eca2586a2..d453fa497 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include "rtl8366_smi.h" @@ -148,8 +147,6 @@ struct rtl8366rb { struct device *parent; struct rtl8366_smi smi; - struct mii_bus *mii_bus; - int mii_irq[PHY_MAX_ADDR]; struct switch_dev dev; char buf[4096]; #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS @@ -225,6 +222,11 @@ static struct mib_counter rtl8366rb_mib_counters[RTL8366S_MIB_COUNT] = { { 70, 2, "IfOutBroadcastPkts " }, }; +static inline struct rtl8366rb *smi_to_rtl8366rb(struct rtl8366_smi *smi) +{ + return container_of(smi, struct rtl8366rb, smi); +} + static inline struct rtl8366rb *sw_to_rtl8366rb(struct switch_dev *sw) { return container_of(sw, struct rtl8366rb, dev); @@ -1500,7 +1502,7 @@ static void rtl8366rb_switch_cleanup(struct rtl8366rb *rtl) static int rtl8366rb_mii_read(struct mii_bus *bus, int addr, int reg) { - struct rtl8366rb *rtl = bus->priv; + struct rtl8366rb *rtl = smi_to_rtl8366rb(bus->priv); u32 val = 0; int err; @@ -1513,7 +1515,7 @@ static int rtl8366rb_mii_read(struct mii_bus *bus, int addr, int reg) static int rtl8366rb_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) { - struct rtl8366rb *rtl = bus->priv; + struct rtl8366rb *rtl = smi_to_rtl8366rb(bus->priv); u32 t; int err; @@ -1524,47 +1526,6 @@ static int rtl8366rb_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) return err; } -static int rtl8366rb_mii_init(struct rtl8366rb *rtl) -{ - int ret; - int i; - - rtl->mii_bus = mdiobus_alloc(); - if (rtl->mii_bus == NULL) { - ret = -ENOMEM; - goto err; - } - - rtl->mii_bus->priv = (void *) rtl; - rtl->mii_bus->name = "rtl8366-rtl"; - rtl->mii_bus->read = rtl8366rb_mii_read; - rtl->mii_bus->write = rtl8366rb_mii_write; - snprintf(rtl->mii_bus->id, MII_BUS_ID_SIZE, "%s", - dev_name(rtl->parent)); - rtl->mii_bus->parent = rtl->parent; - rtl->mii_bus->phy_mask = ~(0x1f); - rtl->mii_bus->irq = rtl->mii_irq; - for (i = 0; i < PHY_MAX_ADDR; i++) - rtl->mii_irq[i] = PHY_POLL; - - ret = mdiobus_register(rtl->mii_bus); - if (ret) - goto err_free; - - return 0; - - err_free: - mdiobus_free(rtl->mii_bus); - err: - return ret; -} - -static void rtl8366rb_mii_cleanup(struct rtl8366rb *rtl) -{ - mdiobus_unregister(rtl->mii_bus); - mdiobus_free(rtl->mii_bus); -} - static int rtl8366rb_mii_bus_match(struct mii_bus *bus) { return (bus->read == rtl8366rb_mii_read && @@ -1618,6 +1579,8 @@ static int rtl8366rb_detect(struct rtl8366_smi *smi) static struct rtl8366_smi_ops rtl8366rb_smi_ops = { .detect = rtl8366rb_detect, + .mii_read = rtl8366rb_mii_read, + .mii_write = rtl8366rb_mii_write, }; static int __init rtl8366rb_probe(struct platform_device *pdev) @@ -1664,18 +1627,12 @@ static int __init rtl8366rb_probe(struct platform_device *pdev) if (err) goto err_clear_drvdata; - err = rtl8366rb_mii_init(rtl); + err = rtl8366rb_switch_init(rtl); if (err) goto err_clear_drvdata; - err = rtl8366rb_switch_init(rtl); - if (err) - goto err_mii_cleanup; - return 0; - err_mii_cleanup: - rtl8366rb_mii_cleanup(rtl); err_clear_drvdata: platform_set_drvdata(pdev, NULL); rtl8366_smi_cleanup(smi); @@ -1718,7 +1675,6 @@ static int __devexit rtl8366rb_remove(struct platform_device *pdev) if (rtl) { rtl8366rb_switch_cleanup(rtl); rtl8366rb_debugfs_remove(rtl); - rtl8366rb_mii_cleanup(rtl); platform_set_drvdata(pdev, NULL); rtl8366_smi_cleanup(&rtl->smi); kfree(rtl); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index c09b4b1a2..9f378657f 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include "rtl8366_smi.h" @@ -149,8 +148,6 @@ struct rtl8366s { struct device *parent; struct rtl8366_smi smi; - struct mii_bus *mii_bus; - int mii_irq[PHY_MAX_ADDR]; struct switch_dev dev; char buf[4096]; #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS @@ -225,6 +222,11 @@ static struct mib_counter rtl8366s_mib_counters[RTL8366S_MIB_COUNT] = { { 70, 2, "IfOutBroadcastPkts " }, }; +static inline struct rtl8366s *smi_to_rtl8366s(struct rtl8366_smi *smi) +{ + return container_of(smi, struct rtl8366s, smi); +} + static inline struct rtl8366s *sw_to_rtl8366s(struct switch_dev *sw) { return container_of(sw, struct rtl8366s, dev); @@ -1469,7 +1471,7 @@ static void rtl8366s_switch_cleanup(struct rtl8366s *rtl) static int rtl8366s_mii_read(struct mii_bus *bus, int addr, int reg) { - struct rtl8366s *rtl = bus->priv; + struct rtl8366s *rtl = smi_to_rtl8366s(bus->priv); u32 val = 0; int err; @@ -1482,7 +1484,7 @@ static int rtl8366s_mii_read(struct mii_bus *bus, int addr, int reg) static int rtl8366s_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) { - struct rtl8366s *rtl = bus->priv; + struct rtl8366s *rtl = smi_to_rtl8366s(bus->priv); u32 t; int err; @@ -1493,47 +1495,6 @@ static int rtl8366s_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) return err; } -static int rtl8366s_mii_init(struct rtl8366s *rtl) -{ - int ret; - int i; - - rtl->mii_bus = mdiobus_alloc(); - if (rtl->mii_bus == NULL) { - ret = -ENOMEM; - goto err; - } - - rtl->mii_bus->priv = (void *) rtl; - rtl->mii_bus->name = "rtl8366-rtl"; - rtl->mii_bus->read = rtl8366s_mii_read; - rtl->mii_bus->write = rtl8366s_mii_write; - snprintf(rtl->mii_bus->id, MII_BUS_ID_SIZE, "%s", - dev_name(rtl->parent)); - rtl->mii_bus->parent = rtl->parent; - rtl->mii_bus->phy_mask = ~(0x1f); - rtl->mii_bus->irq = rtl->mii_irq; - for (i = 0; i < PHY_MAX_ADDR; i++) - rtl->mii_irq[i] = PHY_POLL; - - ret = mdiobus_register(rtl->mii_bus); - if (ret) - goto err_free; - - return 0; - - err_free: - mdiobus_free(rtl->mii_bus); - err: - return ret; -} - -static void rtl8366s_mii_cleanup(struct rtl8366s *rtl) -{ - mdiobus_unregister(rtl->mii_bus); - mdiobus_free(rtl->mii_bus); -} - static int rtl8366s_mii_bus_match(struct mii_bus *bus) { return (bus->read == rtl8366s_mii_read && @@ -1587,6 +1548,8 @@ static int rtl8366s_detect(struct rtl8366_smi *smi) static struct rtl8366_smi_ops rtl8366s_smi_ops = { .detect = rtl8366s_detect, + .mii_read = rtl8366s_mii_read, + .mii_write = rtl8366s_mii_write, }; static int __init rtl8366s_probe(struct platform_device *pdev) @@ -1633,18 +1596,12 @@ static int __init rtl8366s_probe(struct platform_device *pdev) if (err) goto err_clear_drvdata; - err = rtl8366s_mii_init(rtl); + err = rtl8366s_switch_init(rtl); if (err) goto err_clear_drvdata; - err = rtl8366s_switch_init(rtl); - if (err) - goto err_mii_cleanup; - return 0; - err_mii_cleanup: - rtl8366s_mii_cleanup(rtl); err_clear_drvdata: platform_set_drvdata(pdev, NULL); rtl8366_smi_cleanup(smi); @@ -1687,7 +1644,6 @@ static int __devexit rtl8366s_remove(struct platform_device *pdev) if (rtl) { rtl8366s_switch_cleanup(rtl); rtl8366s_debugfs_remove(rtl); - rtl8366s_mii_cleanup(rtl); platform_set_drvdata(pdev, NULL); rtl8366_smi_cleanup(&rtl->smi); kfree(rtl); From 814c82f218f62bc0249afe2cfe0a2d989ca79649 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:14 +0000 Subject: [PATCH 19/90] backfire: generic: rtl8366: use struct rtl8366_smi for phy_reg_{read,write} calls (backport of r21912) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21931 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 16 +++++++--------- .../generic-2.6/files/drivers/net/phy/rtl8366s.c | 16 +++++++--------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index d453fa497..7125bb8aa 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -257,10 +257,9 @@ static int rtl8366rb_reset_chip(struct rtl8366rb *rtl) return 0; } -static int rtl8366rb_read_phy_reg(struct rtl8366rb *rtl, +static int rtl8366rb_read_phy_reg(struct rtl8366_smi *smi, u32 phy_no, u32 page, u32 addr, u32 *data) { - struct rtl8366_smi *smi = &rtl->smi; u32 reg; int ret; @@ -293,10 +292,9 @@ static int rtl8366rb_read_phy_reg(struct rtl8366rb *rtl, return 0; } -static int rtl8366rb_write_phy_reg(struct rtl8366rb *rtl, +static int rtl8366rb_write_phy_reg(struct rtl8366_smi *smi, u32 phy_no, u32 page, u32 addr, u32 data) { - struct rtl8366_smi *smi = &rtl->smi; u32 reg; int ret; @@ -1502,11 +1500,11 @@ static void rtl8366rb_switch_cleanup(struct rtl8366rb *rtl) static int rtl8366rb_mii_read(struct mii_bus *bus, int addr, int reg) { - struct rtl8366rb *rtl = smi_to_rtl8366rb(bus->priv); + struct rtl8366_smi *smi = bus->priv; u32 val = 0; int err; - err = rtl8366rb_read_phy_reg(rtl, addr, 0, reg, &val); + err = rtl8366rb_read_phy_reg(smi, addr, 0, reg, &val); if (err) return 0xffff; @@ -1515,13 +1513,13 @@ static int rtl8366rb_mii_read(struct mii_bus *bus, int addr, int reg) static int rtl8366rb_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) { - struct rtl8366rb *rtl = smi_to_rtl8366rb(bus->priv); + struct rtl8366_smi *smi = bus->priv; u32 t; int err; - err = rtl8366rb_write_phy_reg(rtl, addr, 0, reg, val); + err = rtl8366rb_write_phy_reg(smi, addr, 0, reg, val); /* flush write */ - (void) rtl8366rb_read_phy_reg(rtl, addr, 0, reg, &t); + (void) rtl8366rb_read_phy_reg(smi, addr, 0, reg, &t); return err; } diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 9f378657f..2af32eee4 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -257,10 +257,9 @@ static int rtl8366s_reset_chip(struct rtl8366s *rtl) return 0; } -static int rtl8366s_read_phy_reg(struct rtl8366s *rtl, +static int rtl8366s_read_phy_reg(struct rtl8366_smi *smi, u32 phy_no, u32 page, u32 addr, u32 *data) { - struct rtl8366_smi *smi = &rtl->smi; u32 reg; int ret; @@ -293,10 +292,9 @@ static int rtl8366s_read_phy_reg(struct rtl8366s *rtl, return 0; } -static int rtl8366s_write_phy_reg(struct rtl8366s *rtl, +static int rtl8366s_write_phy_reg(struct rtl8366_smi *smi, u32 phy_no, u32 page, u32 addr, u32 data) { - struct rtl8366_smi *smi = &rtl->smi; u32 reg; int ret; @@ -1471,11 +1469,11 @@ static void rtl8366s_switch_cleanup(struct rtl8366s *rtl) static int rtl8366s_mii_read(struct mii_bus *bus, int addr, int reg) { - struct rtl8366s *rtl = smi_to_rtl8366s(bus->priv); + struct rtl8366_smi *smi = bus->priv; u32 val = 0; int err; - err = rtl8366s_read_phy_reg(rtl, addr, 0, reg, &val); + err = rtl8366s_read_phy_reg(smi, addr, 0, reg, &val); if (err) return 0xffff; @@ -1484,13 +1482,13 @@ static int rtl8366s_mii_read(struct mii_bus *bus, int addr, int reg) static int rtl8366s_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) { - struct rtl8366s *rtl = smi_to_rtl8366s(bus->priv); + struct rtl8366_smi *smi = bus->priv; u32 t; int err; - err = rtl8366s_write_phy_reg(rtl, addr, 0, reg, val); + err = rtl8366s_write_phy_reg(smi, addr, 0, reg, val); /* flush write */ - (void) rtl8366s_read_phy_reg(rtl, addr, 0, reg, &t); + (void) rtl8366s_read_phy_reg(smi, addr, 0, reg, &t); return err; } From a87dd636e0019403f4a3b3cb8e467ab53110c917 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:22 +0000 Subject: [PATCH 20/90] backfire: generic: rtl8366: rename vlanmc and vlan4k related structures an functions (backport of r21913) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21932 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 82 +++++++++---------- .../files/drivers/net/phy/rtl8366s.c | 81 +++++++++--------- 2 files changed, 80 insertions(+), 83 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 7125bb8aa..9ed2048ec 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -154,7 +154,7 @@ struct rtl8366rb { #endif }; -struct rtl8366rb_vlanconfig { +struct rtl8366rb_vlan_mc { u16 reserved2:1; u16 priority:3; u16 vid:12; @@ -166,7 +166,7 @@ struct rtl8366rb_vlanconfig { u16 fid:3; }; -struct rtl8366rb_vlan4kentry { +struct rtl8366rb_vlan_4k { u16 reserved1:4; u16 vid:12; u16 untag:8; @@ -175,7 +175,6 @@ struct rtl8366rb_vlan4kentry { u16 fid:3; }; - #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS u16 gl_dbg_reg; #endif @@ -372,15 +371,15 @@ static int rtl8366_get_mib_counter(struct rtl8366rb *rtl, int counter, return 0; } -static int rtl8366rb_get_vlan_4k_entry(struct rtl8366rb *rtl, u32 vid, - struct rtl8366rb_vlan4kentry *vlan4k) +static int rtl8366rb_get_vlan_4k(struct rtl8366rb *rtl, u32 vid, + struct rtl8366rb_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; int err; u32 data; u16 *tableaddr; - memset(vlan4k, '\0', sizeof(struct rtl8366rb_vlan4kentry)); + memset(vlan4k, '\0', sizeof(struct rtl8366rb_vlan_4k)); vlan4k->vid = vid; if (vid >= RTL8366_NUM_VIDS) @@ -425,8 +424,8 @@ static int rtl8366rb_get_vlan_4k_entry(struct rtl8366rb *rtl, u32 vid, return 0; } -static int rtl8366rb_set_vlan_4k_entry(struct rtl8366rb *rtl, - const struct rtl8366rb_vlan4kentry *vlan4k) +static int rtl8366rb_set_vlan_4k(struct rtl8366rb *rtl, + const struct rtl8366rb_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; int err; @@ -472,8 +471,8 @@ static int rtl8366rb_set_vlan_4k_entry(struct rtl8366rb *rtl, return err; } -static int rtl8366rb_get_vlan_member_config(struct rtl8366rb *rtl, u32 index, - struct rtl8366rb_vlanconfig *vlanmc) +static int rtl8366rb_get_vlan_mc(struct rtl8366rb *rtl, u32 index, + struct rtl8366rb_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; int err; @@ -481,7 +480,7 @@ static int rtl8366rb_get_vlan_member_config(struct rtl8366rb *rtl, u32 index, u32 data; u16 *tableaddr; - memset(vlanmc, '\0', sizeof(struct rtl8366rb_vlanconfig)); + memset(vlanmc, '\0', sizeof(struct rtl8366rb_vlan_mc)); if (index >= RTL8366_NUM_VLANS) return -EINVAL; @@ -514,9 +513,8 @@ static int rtl8366rb_get_vlan_member_config(struct rtl8366rb *rtl, u32 index, return 0; } -static int rtl8366rb_set_vlan_member_config(struct rtl8366rb *rtl, u32 index, - const struct rtl8366rb_vlanconfig - *vlanmc) +static int rtl8366rb_set_vlan_mc(struct rtl8366rb *rtl, u32 index, + const struct rtl8366rb_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; int err; @@ -586,7 +584,7 @@ static int rtl8366rb_get_port_vlan_index(struct rtl8366rb *rtl, int port, static int rtl8366rb_get_vlan_port_pvid(struct rtl8366rb *rtl, int port, int *val) { - struct rtl8366rb_vlanconfig vlanmc; + struct rtl8366rb_vlan_mc vlanmc; int err; int index; @@ -594,7 +592,7 @@ static int rtl8366rb_get_vlan_port_pvid(struct rtl8366rb *rtl, int port, if (err) return err; - err = rtl8366rb_get_vlan_member_config(rtl, index, &vlanmc); + err = rtl8366rb_get_vlan_mc(rtl, index, &vlanmc); if (err) return err; @@ -630,29 +628,29 @@ static int rtl8366rb_set_port_vlan_index(struct rtl8366rb *rtl, int port, static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val) { int i; - struct rtl8366rb_vlanconfig vlanmc; - struct rtl8366rb_vlan4kentry vlan4k; + struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366rb_vlan_4k vlan4k; if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) return -EINVAL; /* Updating the 4K entry; lookup it and change the port member set */ - rtl8366rb_get_vlan_4k_entry(rtl, val, &vlan4k); + rtl8366rb_get_vlan_4k(rtl, val, &vlan4k); vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU); vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU; - rtl8366rb_set_vlan_4k_entry(rtl, &vlan4k); + rtl8366rb_set_vlan_4k(rtl, &vlan4k); /* * For the 16 entries more work needs to be done. First see if such * VID is already there and change it */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366rb_get_vlan_member_config(rtl, i, &vlanmc); + rtl8366rb_get_vlan_mc(rtl, i, &vlanmc); /* Try to find an existing vid and update port member set */ if (val == vlanmc.vid) { vlanmc.member |= ((1 << port) | RTL8366_PORT_CPU); - rtl8366rb_set_vlan_member_config(rtl, i, &vlanmc); + rtl8366rb_set_vlan_mc(rtl, i, &vlanmc); /* Now update PVID register settings */ rtl8366rb_set_port_vlan_index(rtl, port, i); @@ -666,7 +664,7 @@ static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val * has no member ports) with new one */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366rb_get_vlan_member_config(rtl, i, &vlanmc); + rtl8366rb_get_vlan_mc(rtl, i, &vlanmc); /* * See if this vlan member configuration is unused. It is @@ -679,7 +677,7 @@ static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val vlanmc.member = ((1 << port) | RTL8366_PORT_CPU); vlanmc.fid = 0; - rtl8366rb_set_vlan_member_config(rtl, i, &vlanmc); + rtl8366rb_set_vlan_mc(rtl, i, &vlanmc); /* Now update PVID register settings */ rtl8366rb_set_port_vlan_index(rtl, port, i); @@ -727,8 +725,8 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366rb *rtl, int enable) static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) { - struct rtl8366rb_vlan4kentry vlan4k; - struct rtl8366rb_vlanconfig vlanmc; + struct rtl8366rb_vlan_4k vlan4k; + struct rtl8366rb_vlan_mc vlanmc; int err; int i; @@ -739,7 +737,7 @@ static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) vlanmc.untag = 0; vlanmc.fid = 0; for (i = 0; i < RTL8366_NUM_VLANS; i++) { - err = rtl8366rb_set_vlan_member_config(rtl, i, &vlanmc); + err = rtl8366rb_set_vlan_mc(rtl, i, &vlanmc); if (err) return err; } @@ -749,7 +747,7 @@ static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) vlan4k.member = RTL8366_PORT_ALL; vlan4k.untag = RTL8366_PORT_ALL; vlan4k.fid = 0; - err = rtl8366rb_set_vlan_4k_entry(rtl, &vlan4k); + err = rtl8366rb_set_vlan_4k(rtl, &vlan4k); if (err) return err; @@ -833,9 +831,9 @@ static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, "\tports\n"); for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - struct rtl8366rb_vlanconfig vlanmc; + struct rtl8366rb_vlan_mc vlanmc; - rtl8366rb_get_vlan_member_config(rtl, i, &vlanmc); + rtl8366rb_get_vlan_mc(rtl, i, &vlanmc); len += snprintf(buf + len, sizeof(rtl->buf) - len, "\t[%d] \t %d \t %d \t 0x%04x \t 0x%04x \t %d " @@ -1152,8 +1150,8 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, { int i; u32 len = 0; - struct rtl8366rb_vlanconfig vlanmc; - struct rtl8366rb_vlan4kentry vlan4k; + struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366rb_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); char *buf = rtl->buf; @@ -1162,8 +1160,8 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, memset(buf, '\0', sizeof(rtl->buf)); - rtl8366rb_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); - rtl8366rb_get_vlan_4k_entry(rtl, vlanmc.vid, &vlan4k); + rtl8366rb_get_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366rb_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: ", val->port_vlan); @@ -1290,7 +1288,7 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366rb_vlanconfig vlanmc; + struct rtl8366rb_vlan_mc vlanmc; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); struct switch_port *port; int i; @@ -1298,7 +1296,7 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366rb_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); + rtl8366rb_get_vlan_mc(rtl, val->port_vlan, &vlanmc); port = &val->value.ports[0]; val->len = 0; @@ -1318,8 +1316,8 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366rb_vlanconfig vlanmc; - struct rtl8366rb_vlan4kentry vlan4k; + struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366rb_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); struct switch_port *port; int i; @@ -1327,8 +1325,8 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366rb_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); - rtl8366rb_get_vlan_4k_entry(rtl, vlanmc.vid, &vlan4k); + rtl8366rb_get_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366rb_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); vlanmc.untag = 0; vlanmc.member = 0; @@ -1344,8 +1342,8 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, vlan4k.member = vlanmc.member; vlan4k.untag = vlanmc.untag; - rtl8366rb_set_vlan_member_config(rtl, val->port_vlan, &vlanmc); - rtl8366rb_set_vlan_4k_entry(rtl, &vlan4k); + rtl8366rb_set_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366rb_set_vlan_4k(rtl, &vlan4k); return 0; } diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 2af32eee4..bbe06932b 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -155,7 +155,7 @@ struct rtl8366s { #endif }; -struct rtl8366s_vlanconfig { +struct rtl8366s_vlan_mc { u16 reserved2:1; u16 priority:3; u16 vid:12; @@ -166,7 +166,7 @@ struct rtl8366s_vlanconfig { u16 member:6; }; -struct rtl8366s_vlan4kentry { +struct rtl8366s_vlan_4k { u16 reserved1:4; u16 vid:12; @@ -372,15 +372,15 @@ static int rtl8366_get_mib_counter(struct rtl8366s *rtl, int counter, return 0; } -static int rtl8366s_get_vlan_4k_entry(struct rtl8366s *rtl, u32 vid, - struct rtl8366s_vlan4kentry *vlan4k) +static int rtl8366s_get_vlan_4k(struct rtl8366s *rtl, u32 vid, + struct rtl8366s_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; int err; u32 data; u16 *tableaddr; - memset(vlan4k, '\0', sizeof(struct rtl8366s_vlan4kentry)); + memset(vlan4k, '\0', sizeof(struct rtl8366s_vlan_4k)); vlan4k->vid = vid; if (vid >= RTL8366_NUM_VIDS) @@ -418,8 +418,8 @@ static int rtl8366s_get_vlan_4k_entry(struct rtl8366s *rtl, u32 vid, return 0; } -static int rtl8366s_set_vlan_4k_entry(struct rtl8366s *rtl, - const struct rtl8366s_vlan4kentry *vlan4k) +static int rtl8366s_set_vlan_4k(struct rtl8366s *rtl, + const struct rtl8366s_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; int err; @@ -456,8 +456,8 @@ static int rtl8366s_set_vlan_4k_entry(struct rtl8366s *rtl, return err; } -static int rtl8366s_get_vlan_member_config(struct rtl8366s *rtl, u32 index, - struct rtl8366s_vlanconfig *vlanmc) +static int rtl8366s_get_vlan_mc(struct rtl8366s *rtl, u32 index, + struct rtl8366s_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; int err; @@ -465,7 +465,7 @@ static int rtl8366s_get_vlan_member_config(struct rtl8366s *rtl, u32 index, u32 data; u16 *tableaddr; - memset(vlanmc, '\0', sizeof(struct rtl8366s_vlanconfig)); + memset(vlanmc, '\0', sizeof(struct rtl8366s_vlan_mc)); if (index >= RTL8366_NUM_VLANS) return -EINVAL; @@ -490,9 +490,8 @@ static int rtl8366s_get_vlan_member_config(struct rtl8366s *rtl, u32 index, return 0; } -static int rtl8366s_set_vlan_member_config(struct rtl8366s *rtl, u32 index, - const struct rtl8366s_vlanconfig - *vlanmc) +static int rtl8366s_set_vlan_mc(struct rtl8366s *rtl, u32 index, + const struct rtl8366s_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; int err; @@ -554,7 +553,7 @@ static int rtl8366s_get_port_vlan_index(struct rtl8366s *rtl, int port, static int rtl8366s_get_vlan_port_pvid(struct rtl8366s *rtl, int port, int *val) { - struct rtl8366s_vlanconfig vlanmc; + struct rtl8366s_vlan_mc vlanmc; int err; int index; @@ -562,7 +561,7 @@ static int rtl8366s_get_vlan_port_pvid(struct rtl8366s *rtl, int port, if (err) return err; - err = rtl8366s_get_vlan_member_config(rtl, index, &vlanmc); + err = rtl8366s_get_vlan_mc(rtl, index, &vlanmc); if (err) return err; @@ -598,29 +597,29 @@ static int rtl8366s_set_port_vlan_index(struct rtl8366s *rtl, int port, static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) { int i; - struct rtl8366s_vlanconfig vlanmc; - struct rtl8366s_vlan4kentry vlan4k; + struct rtl8366s_vlan_mc vlanmc; + struct rtl8366s_vlan_4k vlan4k; if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) return -EINVAL; /* Updating the 4K entry; lookup it and change the port member set */ - rtl8366s_get_vlan_4k_entry(rtl, val, &vlan4k); + rtl8366s_get_vlan_4k(rtl, val, &vlan4k); vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU); vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU; - rtl8366s_set_vlan_4k_entry(rtl, &vlan4k); + rtl8366s_set_vlan_4k(rtl, &vlan4k); /* * For the 16 entries more work needs to be done. First see if such * VID is already there and change it */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366s_get_vlan_member_config(rtl, i, &vlanmc); + rtl8366s_get_vlan_mc(rtl, i, &vlanmc); /* Try to find an existing vid and update port member set */ if (val == vlanmc.vid) { vlanmc.member |= ((1 << port) | RTL8366_PORT_CPU); - rtl8366s_set_vlan_member_config(rtl, i, &vlanmc); + rtl8366s_set_vlan_mc(rtl, i, &vlanmc); /* Now update PVID register settings */ rtl8366s_set_port_vlan_index(rtl, port, i); @@ -634,7 +633,7 @@ static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) * has no member ports) with new one */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366s_get_vlan_member_config(rtl, i, &vlanmc); + rtl8366s_get_vlan_mc(rtl, i, &vlanmc); /* * See if this vlan member configuration is unused. It is @@ -647,7 +646,7 @@ static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) vlanmc.member = ((1 << port) | RTL8366_PORT_CPU); vlanmc.fid = 0; - rtl8366s_set_vlan_member_config(rtl, i, &vlanmc); + rtl8366s_set_vlan_mc(rtl, i, &vlanmc); /* Now update PVID register settings */ rtl8366s_set_port_vlan_index(rtl, port, i); @@ -695,8 +694,8 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366s *rtl, int enable) static int rtl8366s_reset_vlan(struct rtl8366s *rtl) { - struct rtl8366s_vlan4kentry vlan4k; - struct rtl8366s_vlanconfig vlanmc; + struct rtl8366s_vlan_4k vlan4k; + struct rtl8366s_vlan_mc vlanmc; int err; int i; @@ -707,7 +706,7 @@ static int rtl8366s_reset_vlan(struct rtl8366s *rtl) vlanmc.untag = 0; vlanmc.fid = 0; for (i = 0; i < RTL8366_NUM_VLANS; i++) { - err = rtl8366s_set_vlan_member_config(rtl, i, &vlanmc); + err = rtl8366s_set_vlan_mc(rtl, i, &vlanmc); if (err) return err; } @@ -717,7 +716,7 @@ static int rtl8366s_reset_vlan(struct rtl8366s *rtl) vlan4k.member = RTL8366_PORT_ALL; vlan4k.untag = RTL8366_PORT_ALL; vlan4k.fid = 0; - err = rtl8366s_set_vlan_4k_entry(rtl, &vlan4k); + err = rtl8366s_set_vlan_4k(rtl, &vlan4k); if (err) return err; @@ -801,9 +800,9 @@ static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, "\tports\n"); for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - struct rtl8366s_vlanconfig vlanmc; + struct rtl8366s_vlan_mc vlanmc; - rtl8366s_get_vlan_member_config(rtl, i, &vlanmc); + rtl8366s_get_vlan_mc(rtl, i, &vlanmc); len += snprintf(buf + len, sizeof(rtl->buf) - len, "\t[%d] \t %d \t %d \t 0x%04x \t 0x%04x \t %d " @@ -1120,8 +1119,8 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, { int i; u32 len = 0; - struct rtl8366s_vlanconfig vlanmc; - struct rtl8366s_vlan4kentry vlan4k; + struct rtl8366s_vlan_mc vlanmc; + struct rtl8366s_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); char *buf = rtl->buf; @@ -1130,8 +1129,8 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, memset(buf, '\0', sizeof(rtl->buf)); - rtl8366s_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); - rtl8366s_get_vlan_4k_entry(rtl, vlanmc.vid, &vlan4k); + rtl8366s_get_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366s_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: ", val->port_vlan); @@ -1259,7 +1258,7 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366s_vlanconfig vlanmc; + struct rtl8366s_vlan_mc vlanmc; struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct switch_port *port; int i; @@ -1267,7 +1266,7 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366s_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); + rtl8366s_get_vlan_mc(rtl, val->port_vlan, &vlanmc); port = &val->value.ports[0]; val->len = 0; @@ -1287,8 +1286,8 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366s_vlanconfig vlanmc; - struct rtl8366s_vlan4kentry vlan4k; + struct rtl8366s_vlan_mc vlanmc; + struct rtl8366s_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct switch_port *port; int i; @@ -1296,8 +1295,8 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366s_get_vlan_member_config(rtl, val->port_vlan, &vlanmc); - rtl8366s_get_vlan_4k_entry(rtl, vlanmc.vid, &vlan4k); + rtl8366s_get_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366s_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); vlanmc.untag = 0; vlanmc.member = 0; @@ -1313,8 +1312,8 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, vlan4k.member = vlanmc.member; vlan4k.untag = vlanmc.untag; - rtl8366s_set_vlan_member_config(rtl, val->port_vlan, &vlanmc); - rtl8366s_set_vlan_4k_entry(rtl, &vlan4k); + rtl8366s_set_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366s_set_vlan_4k(rtl, &vlan4k); return 0; } From 25db8048e65bf953b0fa8bcbc07d818440f0e274 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:31 +0000 Subject: [PATCH 21/90] backfire: generic: rtl8366: add common vlan_mc structure (backport of r21914) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21933 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.h | 8 ++++ .../files/drivers/net/phy/rtl8366rb.c | 40 +++++++++++++------ .../files/drivers/net/phy/rtl8366s.c | 38 ++++++++++++------ 3 files changed, 62 insertions(+), 24 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index 23d9b3d23..1f45d5da4 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -34,6 +34,14 @@ struct rtl8366_smi_ops { int (*mii_write)(struct mii_bus *bus, int addr, int reg, u16 val); }; +struct rtl8366_vlan_mc { + u16 vid; + u8 priority; + u8 untag; + u8 member; + u8 fid; +}; + int rtl8366_smi_init(struct rtl8366_smi *smi); void rtl8366_smi_cleanup(struct rtl8366_smi *smi); int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 9ed2048ec..8bf0046fc 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -472,20 +472,21 @@ static int rtl8366rb_set_vlan_4k(struct rtl8366rb *rtl, } static int rtl8366rb_get_vlan_mc(struct rtl8366rb *rtl, u32 index, - struct rtl8366rb_vlan_mc *vlanmc) + struct rtl8366_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366rb_vlan_mc vlanmc_priv; int err; u32 addr; u32 data; u16 *tableaddr; - memset(vlanmc, '\0', sizeof(struct rtl8366rb_vlan_mc)); + memset(vlanmc, '\0', sizeof(struct rtl8366_vlan_mc)); if (index >= RTL8366_NUM_VLANS) return -EINVAL; - tableaddr = (u16 *)vlanmc; + tableaddr = (u16 *)&vlanmc_priv; addr = RTL8366S_VLAN_MEMCONF_BASE + (index * 3); err = rtl8366_smi_read_reg(smi, addr, &data); @@ -510,13 +511,20 @@ static int rtl8366rb_get_vlan_mc(struct rtl8366rb *rtl, u32 index, *tableaddr = data; + vlanmc->vid = vlanmc_priv.vid; + vlanmc->priority = vlanmc_priv.priority; + vlanmc->untag = vlanmc_priv.untag; + vlanmc->member = vlanmc_priv.member; + vlanmc->fid = vlanmc_priv.fid; + return 0; } static int rtl8366rb_set_vlan_mc(struct rtl8366rb *rtl, u32 index, - const struct rtl8366rb_vlan_mc *vlanmc) + const struct rtl8366_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366rb_vlan_mc vlanmc_priv; int err; u32 addr; u32 data; @@ -530,9 +538,17 @@ static int rtl8366rb_set_vlan_mc(struct rtl8366rb *rtl, u32 index, vlanmc->fid > RTL8366S_FIDMAX) return -EINVAL; + vlanmc_priv.vid = vlanmc->vid; + vlanmc_priv.priority = vlanmc->priority; + vlanmc_priv.untag = vlanmc->untag; + vlanmc_priv.member = vlanmc->member; + vlanmc_priv.stag_mbr = 0; + vlanmc_priv.stag_idx = 0; + vlanmc_priv.fid = vlanmc->fid; + addr = RTL8366S_VLAN_MEMCONF_BASE + (index * 3); - tableaddr = (u16 *)vlanmc; + tableaddr = (u16 *)&vlanmc_priv; data = *tableaddr; err = rtl8366_smi_write_reg(smi, addr, data); @@ -584,7 +600,7 @@ static int rtl8366rb_get_port_vlan_index(struct rtl8366rb *rtl, int port, static int rtl8366rb_get_vlan_port_pvid(struct rtl8366rb *rtl, int port, int *val) { - struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; int err; int index; @@ -628,7 +644,7 @@ static int rtl8366rb_set_port_vlan_index(struct rtl8366rb *rtl, int port, static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val) { int i; - struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366rb_vlan_4k vlan4k; if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) @@ -726,7 +742,7 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366rb *rtl, int enable) static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) { struct rtl8366rb_vlan_4k vlan4k; - struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; int err; int i; @@ -831,7 +847,7 @@ static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, "\tports\n"); for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; rtl8366rb_get_vlan_mc(rtl, i, &vlanmc); @@ -1150,7 +1166,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, { int i; u32 len = 0; - struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366rb_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); char *buf = rtl->buf; @@ -1288,7 +1304,7 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); struct switch_port *port; int i; @@ -1316,7 +1332,7 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366rb_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366rb_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); struct switch_port *port; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index bbe06932b..ec2c0d4d8 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -457,20 +457,21 @@ static int rtl8366s_set_vlan_4k(struct rtl8366s *rtl, } static int rtl8366s_get_vlan_mc(struct rtl8366s *rtl, u32 index, - struct rtl8366s_vlan_mc *vlanmc) + struct rtl8366_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366s_vlan_mc vlanmc_priv; int err; u32 addr; u32 data; u16 *tableaddr; - memset(vlanmc, '\0', sizeof(struct rtl8366s_vlan_mc)); + memset(vlanmc, '\0', sizeof(struct rtl8366_vlan_mc)); if (index >= RTL8366_NUM_VLANS) return -EINVAL; - tableaddr = (u16 *)vlanmc; + tableaddr = (u16 *)&vlanmc_priv; addr = RTL8366S_VLAN_MEMCONF_BASE + (index << 1); err = rtl8366_smi_read_reg(smi, addr, &data); @@ -487,13 +488,20 @@ static int rtl8366s_get_vlan_mc(struct rtl8366s *rtl, u32 index, *tableaddr = data; + vlanmc->vid = vlanmc_priv.vid; + vlanmc->priority = vlanmc_priv.priority; + vlanmc->untag = vlanmc_priv.untag; + vlanmc->member = vlanmc_priv.member; + vlanmc->fid = vlanmc_priv.fid; + return 0; } static int rtl8366s_set_vlan_mc(struct rtl8366s *rtl, u32 index, - const struct rtl8366s_vlan_mc *vlanmc) + const struct rtl8366_vlan_mc *vlanmc) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366s_vlan_mc vlanmc_priv; int err; u32 addr; u32 data; @@ -507,9 +515,15 @@ static int rtl8366s_set_vlan_mc(struct rtl8366s *rtl, u32 index, vlanmc->fid > RTL8366S_FIDMAX) return -EINVAL; + vlanmc_priv.vid = vlanmc->vid; + vlanmc_priv.priority = vlanmc->priority; + vlanmc_priv.untag = vlanmc->untag; + vlanmc_priv.member = vlanmc->member; + vlanmc_priv.fid = vlanmc->fid; + addr = RTL8366S_VLAN_MEMCONF_BASE + (index << 1); - tableaddr = (u16 *)vlanmc; + tableaddr = (u16 *)&vlanmc_priv; data = *tableaddr; err = rtl8366_smi_write_reg(smi, addr, data); @@ -553,7 +567,7 @@ static int rtl8366s_get_port_vlan_index(struct rtl8366s *rtl, int port, static int rtl8366s_get_vlan_port_pvid(struct rtl8366s *rtl, int port, int *val) { - struct rtl8366s_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; int err; int index; @@ -597,7 +611,7 @@ static int rtl8366s_set_port_vlan_index(struct rtl8366s *rtl, int port, static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) { int i; - struct rtl8366s_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366s_vlan_4k vlan4k; if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) @@ -695,7 +709,7 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366s *rtl, int enable) static int rtl8366s_reset_vlan(struct rtl8366s *rtl) { struct rtl8366s_vlan_4k vlan4k; - struct rtl8366s_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; int err; int i; @@ -800,7 +814,7 @@ static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, "\tports\n"); for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - struct rtl8366s_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; rtl8366s_get_vlan_mc(rtl, i, &vlanmc); @@ -1119,7 +1133,7 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, { int i; u32 len = 0; - struct rtl8366s_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366s_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); char *buf = rtl->buf; @@ -1258,7 +1272,7 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366s_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct switch_port *port; int i; @@ -1286,7 +1300,7 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366s_vlan_mc vlanmc; + struct rtl8366_vlan_mc vlanmc; struct rtl8366s_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct switch_port *port; From 091a81e55cf7d425ad7e341b7cac24e3c38698c0 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:38 +0000 Subject: [PATCH 22/90] backfire: generic: rtl8366: add common vlan_4k structure (backport of r21915) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21934 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.h | 7 +++++ .../files/drivers/net/phy/rtl8366rb.c | 31 +++++++++++++------ .../files/drivers/net/phy/rtl8366s.c | 31 +++++++++++++------ 3 files changed, 49 insertions(+), 20 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index 1f45d5da4..883a776d4 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -42,6 +42,13 @@ struct rtl8366_vlan_mc { u8 fid; }; +struct rtl8366_vlan_4k { + u16 vid; + u8 untag; + u8 member; + u8 fid; +}; + int rtl8366_smi_init(struct rtl8366_smi *smi); void rtl8366_smi_cleanup(struct rtl8366_smi *smi); int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 8bf0046fc..987947226 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -372,20 +372,21 @@ static int rtl8366_get_mib_counter(struct rtl8366rb *rtl, int counter, } static int rtl8366rb_get_vlan_4k(struct rtl8366rb *rtl, u32 vid, - struct rtl8366rb_vlan_4k *vlan4k) + struct rtl8366_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366rb_vlan_4k vlan4k_priv; int err; u32 data; u16 *tableaddr; - memset(vlan4k, '\0', sizeof(struct rtl8366rb_vlan_4k)); - vlan4k->vid = vid; + memset(vlan4k, '\0', sizeof(struct rtl8366_vlan_4k)); + vlan4k_priv.vid = vid; if (vid >= RTL8366_NUM_VIDS) return -EINVAL; - tableaddr = (u16 *)vlan4k; + tableaddr = (u16 *)&vlan4k_priv; /* write VID */ data = *tableaddr; @@ -419,15 +420,20 @@ static int rtl8366rb_get_vlan_4k(struct rtl8366rb *rtl, u32 vid, if (err) return err; *tableaddr = data; + vlan4k->vid = vid; + vlan4k->untag = vlan4k_priv.untag; + vlan4k->member = vlan4k_priv.member; + vlan4k->fid = vlan4k_priv.fid; return 0; } static int rtl8366rb_set_vlan_4k(struct rtl8366rb *rtl, - const struct rtl8366rb_vlan_4k *vlan4k) + const struct rtl8366_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366rb_vlan_4k vlan4k_priv; int err; u32 data; u16 *tableaddr; @@ -438,7 +444,12 @@ static int rtl8366rb_set_vlan_4k(struct rtl8366rb *rtl, vlan4k->fid > RTL8366S_FIDMAX) return -EINVAL; - tableaddr = (u16 *)vlan4k; + vlan4k_priv.vid = vlan4k->vid; + vlan4k_priv.untag = vlan4k->untag; + vlan4k_priv.member = vlan4k->member; + vlan4k_priv.fid = vlan4k->fid; + + tableaddr = (u16 *)&vlan4k_priv; data = *tableaddr; @@ -645,7 +656,7 @@ static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val { int i; struct rtl8366_vlan_mc vlanmc; - struct rtl8366rb_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) return -EINVAL; @@ -741,7 +752,7 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366rb *rtl, int enable) static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) { - struct rtl8366rb_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; struct rtl8366_vlan_mc vlanmc; int err; int i; @@ -1167,7 +1178,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, int i; u32 len = 0; struct rtl8366_vlan_mc vlanmc; - struct rtl8366rb_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); char *buf = rtl->buf; @@ -1333,7 +1344,7 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_vlan_mc vlanmc; - struct rtl8366rb_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); struct switch_port *port; int i; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index ec2c0d4d8..4bf5c1221 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -373,20 +373,21 @@ static int rtl8366_get_mib_counter(struct rtl8366s *rtl, int counter, } static int rtl8366s_get_vlan_4k(struct rtl8366s *rtl, u32 vid, - struct rtl8366s_vlan_4k *vlan4k) + struct rtl8366_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366s_vlan_4k vlan4k_priv; int err; u32 data; u16 *tableaddr; - memset(vlan4k, '\0', sizeof(struct rtl8366s_vlan_4k)); - vlan4k->vid = vid; + memset(vlan4k, '\0', sizeof(struct rtl8366_vlan_4k)); + vlan4k_priv.vid = vid; if (vid >= RTL8366_NUM_VIDS) return -EINVAL; - tableaddr = (u16 *)vlan4k; + tableaddr = (u16 *)&vlan4k_priv; /* write VID */ data = *tableaddr; @@ -413,15 +414,20 @@ static int rtl8366s_get_vlan_4k(struct rtl8366s *rtl, u32 vid, return err; *tableaddr = data; + vlan4k->vid = vid; + vlan4k->untag = vlan4k_priv.untag; + vlan4k->member = vlan4k_priv.member; + vlan4k->fid = vlan4k_priv.fid; return 0; } static int rtl8366s_set_vlan_4k(struct rtl8366s *rtl, - const struct rtl8366s_vlan_4k *vlan4k) + const struct rtl8366_vlan_4k *vlan4k) { struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366s_vlan_4k vlan4k_priv; int err; u32 data; u16 *tableaddr; @@ -432,7 +438,12 @@ static int rtl8366s_set_vlan_4k(struct rtl8366s *rtl, vlan4k->fid > RTL8366S_FIDMAX) return -EINVAL; - tableaddr = (u16 *)vlan4k; + vlan4k_priv.vid = vlan4k->vid; + vlan4k_priv.untag = vlan4k->untag; + vlan4k_priv.member = vlan4k->member; + vlan4k_priv.fid = vlan4k->fid; + + tableaddr = (u16 *)&vlan4k_priv; data = *tableaddr; @@ -612,7 +623,7 @@ static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) { int i; struct rtl8366_vlan_mc vlanmc; - struct rtl8366s_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) return -EINVAL; @@ -708,7 +719,7 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366s *rtl, int enable) static int rtl8366s_reset_vlan(struct rtl8366s *rtl) { - struct rtl8366s_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; struct rtl8366_vlan_mc vlanmc; int err; int i; @@ -1134,7 +1145,7 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, int i; u32 len = 0; struct rtl8366_vlan_mc vlanmc; - struct rtl8366s_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); char *buf = rtl->buf; @@ -1301,7 +1312,7 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_vlan_mc vlanmc; - struct rtl8366s_vlan_4k vlan4k; + struct rtl8366_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct switch_port *port; int i; From 4620b92a7e56c97552e8f179a845057245784926 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:46 +0000 Subject: [PATCH 23/90] backfire: generic: rtl8366: use struct rtl8366_smi instead of struct rtl8366{s,rb} (backport of r21916) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21935 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 147 +++++++++--------- .../files/drivers/net/phy/rtl8366s.c | 146 +++++++++-------- 2 files changed, 141 insertions(+), 152 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 987947226..78d606242 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -231,9 +231,14 @@ static inline struct rtl8366rb *sw_to_rtl8366rb(struct switch_dev *sw) return container_of(sw, struct rtl8366rb, dev); } -static int rtl8366rb_reset_chip(struct rtl8366rb *rtl) +static inline struct rtl8366_smi *sw_to_rtl8366_smi(struct switch_dev *sw) +{ + struct rtl8366rb *rtl = sw_to_rtl8366rb(sw); + return &rtl->smi; +} + +static int rtl8366rb_reset_chip(struct rtl8366_smi *smi) { - struct rtl8366_smi *smi = &rtl->smi; int timeout = 10; u32 data; @@ -322,10 +327,9 @@ static int rtl8366rb_write_phy_reg(struct rtl8366_smi *smi, return 0; } -static int rtl8366_get_mib_counter(struct rtl8366rb *rtl, int counter, +static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter, int port, unsigned long long *val) { - struct rtl8366_smi *smi = &rtl->smi; int i; int err; u32 addr, data; @@ -371,10 +375,9 @@ static int rtl8366_get_mib_counter(struct rtl8366rb *rtl, int counter, return 0; } -static int rtl8366rb_get_vlan_4k(struct rtl8366rb *rtl, u32 vid, +static int rtl8366rb_get_vlan_4k(struct rtl8366_smi *smi, u32 vid, struct rtl8366_vlan_4k *vlan4k) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366rb_vlan_4k vlan4k_priv; int err; u32 data; @@ -429,10 +432,9 @@ static int rtl8366rb_get_vlan_4k(struct rtl8366rb *rtl, u32 vid, return 0; } -static int rtl8366rb_set_vlan_4k(struct rtl8366rb *rtl, +static int rtl8366rb_set_vlan_4k(struct rtl8366_smi *smi, const struct rtl8366_vlan_4k *vlan4k) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366rb_vlan_4k vlan4k_priv; int err; u32 data; @@ -482,10 +484,9 @@ static int rtl8366rb_set_vlan_4k(struct rtl8366rb *rtl, return err; } -static int rtl8366rb_get_vlan_mc(struct rtl8366rb *rtl, u32 index, +static int rtl8366rb_get_vlan_mc(struct rtl8366_smi *smi, u32 index, struct rtl8366_vlan_mc *vlanmc) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366rb_vlan_mc vlanmc_priv; int err; u32 addr; @@ -531,10 +532,9 @@ static int rtl8366rb_get_vlan_mc(struct rtl8366rb *rtl, u32 index, return 0; } -static int rtl8366rb_set_vlan_mc(struct rtl8366rb *rtl, u32 index, +static int rtl8366rb_set_vlan_mc(struct rtl8366_smi *smi, u32 index, const struct rtl8366_vlan_mc *vlanmc) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366rb_vlan_mc vlanmc_priv; int err; u32 addr; @@ -586,10 +586,9 @@ static int rtl8366rb_set_vlan_mc(struct rtl8366rb *rtl, u32 index, return 0; } -static int rtl8366rb_get_port_vlan_index(struct rtl8366rb *rtl, int port, +static int rtl8366rb_get_port_vlan_index(struct rtl8366_smi *smi, int port, int *val) { - struct rtl8366_smi *smi = &rtl->smi; u32 data; int err; @@ -608,18 +607,18 @@ static int rtl8366rb_get_port_vlan_index(struct rtl8366rb *rtl, int port, } -static int rtl8366rb_get_vlan_port_pvid(struct rtl8366rb *rtl, int port, +static int rtl8366rb_get_vlan_port_pvid(struct rtl8366_smi *smi, int port, int *val) { struct rtl8366_vlan_mc vlanmc; int err; int index; - err = rtl8366rb_get_port_vlan_index(rtl, port, &index); + err = rtl8366rb_get_port_vlan_index(smi, port, &index); if (err) return err; - err = rtl8366rb_get_vlan_mc(rtl, index, &vlanmc); + err = rtl8366rb_get_vlan_mc(smi, index, &vlanmc); if (err) return err; @@ -627,10 +626,9 @@ static int rtl8366rb_get_vlan_port_pvid(struct rtl8366rb *rtl, int port, return 0; } -static int rtl8366rb_set_port_vlan_index(struct rtl8366rb *rtl, int port, +static int rtl8366rb_set_port_vlan_index(struct rtl8366_smi *smi, int port, int index) { - struct rtl8366_smi *smi = &rtl->smi; u32 data; int err; @@ -652,7 +650,8 @@ static int rtl8366rb_set_port_vlan_index(struct rtl8366rb *rtl, int port, return err; } -static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val) +static int rtl8366rb_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, + int val) { int i; struct rtl8366_vlan_mc vlanmc; @@ -662,25 +661,25 @@ static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val return -EINVAL; /* Updating the 4K entry; lookup it and change the port member set */ - rtl8366rb_get_vlan_4k(rtl, val, &vlan4k); + rtl8366rb_get_vlan_4k(smi, val, &vlan4k); vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU); vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU; - rtl8366rb_set_vlan_4k(rtl, &vlan4k); + rtl8366rb_set_vlan_4k(smi, &vlan4k); /* * For the 16 entries more work needs to be done. First see if such * VID is already there and change it */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366rb_get_vlan_mc(rtl, i, &vlanmc); + rtl8366rb_get_vlan_mc(smi, i, &vlanmc); /* Try to find an existing vid and update port member set */ if (val == vlanmc.vid) { vlanmc.member |= ((1 << port) | RTL8366_PORT_CPU); - rtl8366rb_set_vlan_mc(rtl, i, &vlanmc); + rtl8366rb_set_vlan_mc(smi, i, &vlanmc); /* Now update PVID register settings */ - rtl8366rb_set_port_vlan_index(rtl, port, i); + rtl8366rb_set_port_vlan_index(smi, port, i); return 0; } @@ -691,7 +690,7 @@ static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val * has no member ports) with new one */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366rb_get_vlan_mc(rtl, i, &vlanmc); + rtl8366rb_get_vlan_mc(smi, i, &vlanmc); /* * See if this vlan member configuration is unused. It is @@ -704,25 +703,24 @@ static int rtl8366rb_set_vlan_port_pvid(struct rtl8366rb *rtl, int port, int val vlanmc.member = ((1 << port) | RTL8366_PORT_CPU); vlanmc.fid = 0; - rtl8366rb_set_vlan_mc(rtl, i, &vlanmc); + rtl8366rb_set_vlan_mc(smi, i, &vlanmc); /* Now update PVID register settings */ - rtl8366rb_set_port_vlan_index(rtl, port, i); + rtl8366rb_set_port_vlan_index(smi, port, i); return 0; } } - dev_err(rtl->parent, + dev_err(smi->parent, "All 16 vlan member configurations are in use\n"); return -EINVAL; } -static int rtl8366rb_vlan_set_vlan(struct rtl8366rb *rtl, int enable) +static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - struct rtl8366_smi *smi = &rtl->smi; u32 data = 0; rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); @@ -735,9 +733,8 @@ static int rtl8366rb_vlan_set_vlan(struct rtl8366rb *rtl, int enable) return rtl8366_smi_write_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, data); } -static int rtl8366rb_vlan_set_4ktable(struct rtl8366rb *rtl, int enable) +static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) { - struct rtl8366_smi *smi = &rtl->smi; u32 data = 0; rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); @@ -750,7 +747,7 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366rb *rtl, int enable) return rtl8366_smi_write_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, data); } -static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) +static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) { struct rtl8366_vlan_4k vlan4k; struct rtl8366_vlan_mc vlanmc; @@ -764,7 +761,7 @@ static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) vlanmc.untag = 0; vlanmc.fid = 0; for (i = 0; i < RTL8366_NUM_VLANS; i++) { - err = rtl8366rb_set_vlan_mc(rtl, i, &vlanmc); + err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); if (err) return err; } @@ -774,13 +771,13 @@ static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl) vlan4k.member = RTL8366_PORT_ALL; vlan4k.untag = RTL8366_PORT_ALL; vlan4k.fid = 0; - err = rtl8366rb_set_vlan_4k(rtl, &vlan4k); + err = rtl8366rb_set_vlan_4k(smi, &vlan4k); if (err) return err; /* Set all ports PVID to default VLAN */ for (i = 0; i < RTL8366_NUM_PORTS; i++) { - err = rtl8366rb_set_vlan_port_pvid(rtl, i, 0); + err = rtl8366rb_set_vlan_port_pvid(smi, i, 0); if (err) return err; } @@ -800,6 +797,7 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, size_t count, loff_t *ppos) { struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; + struct rtl8366_smi *smi = &rtl->smi; int i, j, len = 0; char *buf = rtl->buf; @@ -815,7 +813,7 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, for (j = 0; j < RTL8366_NUM_PORTS; ++j) { unsigned long long counter = 0; - if (!rtl8366_get_mib_counter(rtl, i, j, &counter)) + if (!rtl8366_get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, "[%llu]", counter); @@ -848,6 +846,7 @@ static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, size_t count, loff_t *ppos) { struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; + struct rtl8366_smi *smi = &rtl->smi; int i, j, len = 0; char *buf = rtl->buf; @@ -860,7 +859,7 @@ static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, for (i = 0; i < RTL8366_NUM_VLANS; ++i) { struct rtl8366_vlan_mc vlanmc; - rtl8366rb_get_vlan_mc(rtl, i, &vlanmc); + rtl8366rb_get_vlan_mc(smi, i, &vlanmc); len += snprintf(buf + len, sizeof(rtl->buf) - len, "\t[%d] \t %d \t %d \t 0x%04x \t 0x%04x \t %d " @@ -869,7 +868,7 @@ static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, for (j = 0; j < RTL8366_NUM_PORTS; ++j) { int index = 0; - if (!rtl8366rb_get_port_vlan_index(rtl, j, &index)) { + if (!rtl8366rb_get_port_vlan_index(smi, j, &index)) { if (index == i) len += snprintf(buf + len, sizeof(rtl->buf) - len, @@ -1026,8 +1025,7 @@ static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->value.i == 1) { @@ -1043,8 +1041,7 @@ static int rtl8366rb_sw_get_vlan_enable(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; if (attr->ofs == 1) { @@ -1070,8 +1067,7 @@ static int rtl8366rb_sw_get_blinkrate(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); @@ -1085,8 +1081,7 @@ static int rtl8366rb_sw_set_blinkrate(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; if (val->value.i >= 6) @@ -1106,12 +1101,12 @@ static int rtl8366rb_sw_set_vlan_enable(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); if (attr->ofs == 1) - return rtl8366rb_vlan_set_vlan(rtl, val->value.i); + return rtl8366rb_vlan_set_vlan(smi, val->value.i); else - return rtl8366rb_vlan_set_4ktable(rtl, val->value.i); + return rtl8366rb_vlan_set_4ktable(smi, val->value.i); } static const char *rtl8366rb_speed_str(unsigned speed) @@ -1180,6 +1175,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); + struct rtl8366_smi *smi = &rtl->smi; char *buf = rtl->buf; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) @@ -1187,15 +1183,15 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, memset(buf, '\0', sizeof(rtl->buf)); - rtl8366rb_get_vlan_mc(rtl, val->port_vlan, &vlanmc); - rtl8366rb_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); + rtl8366rb_get_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366rb_get_vlan_4k(smi, vlanmc.vid, &vlan4k); len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: ", val->port_vlan); for (i = 0; i < RTL8366_NUM_PORTS; ++i) { int index = 0; - if (!rtl8366rb_get_port_vlan_index(rtl, i, &index) && + if (!rtl8366rb_get_port_vlan_index(smi, i, &index) && index == val->port_vlan) len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d", i); @@ -1224,8 +1220,7 @@ static int rtl8366rb_sw_set_port_led(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->port_vlan >= RTL8366_NUM_PORTS) @@ -1249,8 +1244,7 @@ static int rtl8366rb_sw_get_port_led(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->port_vlan >= RTL8366_NUM_LEDGROUPS) @@ -1266,8 +1260,7 @@ static int rtl8366rb_sw_reset_port_mibs(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->port_vlan >= RTL8366_NUM_PORTS) @@ -1285,6 +1278,7 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, struct switch_val *val) { struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); + struct rtl8366_smi *smi = &rtl->smi; int i, len = 0; unsigned long long counter = 0; char *buf = rtl->buf; @@ -1299,7 +1293,7 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, for (i = 0; i < RTL8366S_MIB_COUNT; ++i) { len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d:%s\t", i, rtl8366rb_mib_counters[i].name); - if (!rtl8366_get_mib_counter(rtl, i, val->port_vlan, &counter)) + if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, "[%llu]\n", counter); else @@ -1316,14 +1310,14 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_vlan_mc vlanmc; - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct switch_port *port; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366rb_get_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366rb_get_vlan_mc(smi, val->port_vlan, &vlanmc); port = &val->value.ports[0]; val->len = 0; @@ -1345,15 +1339,15 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, { struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct switch_port *port; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366rb_get_vlan_mc(rtl, val->port_vlan, &vlanmc); - rtl8366rb_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); + rtl8366rb_get_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366rb_get_vlan_4k(smi, vlanmc.vid, &vlan4k); vlanmc.untag = 0; vlanmc.member = 0; @@ -1369,33 +1363,33 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, vlan4k.member = vlanmc.member; vlan4k.untag = vlanmc.untag; - rtl8366rb_set_vlan_mc(rtl, val->port_vlan, &vlanmc); - rtl8366rb_set_vlan_4k(rtl, &vlan4k); + rtl8366rb_set_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366rb_set_vlan_4k(smi, &vlan4k); return 0; } static int rtl8366rb_sw_get_port_pvid(struct switch_dev *dev, int port, int *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - return rtl8366rb_get_vlan_port_pvid(rtl, port, val); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + return rtl8366rb_get_vlan_port_pvid(smi, port, val); } static int rtl8366rb_sw_set_port_pvid(struct switch_dev *dev, int port, int val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - return rtl8366rb_set_vlan_port_pvid(rtl, port, val); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + return rtl8366rb_set_vlan_port_pvid(smi, port, val); } static int rtl8366rb_sw_reset_switch(struct switch_dev *dev) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); int err; - err = rtl8366rb_reset_chip(rtl); + err = rtl8366rb_reset_chip(smi); if (err) return err; - return rtl8366rb_reset_vlan(rtl); + return rtl8366rb_reset_vlan(smi); } static struct switch_attr rtl8366rb_globals[] = { @@ -1557,9 +1551,10 @@ static int rtl8366rb_mii_bus_match(struct mii_bus *bus) static int rtl8366rb_setup(struct rtl8366rb *rtl) { + struct rtl8366_smi *smi = &rtl->smi; int ret; - ret = rtl8366rb_reset_chip(rtl); + ret = rtl8366rb_reset_chip(smi); if (ret) return ret; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 4bf5c1221..5120f8911 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -232,9 +232,14 @@ static inline struct rtl8366s *sw_to_rtl8366s(struct switch_dev *sw) return container_of(sw, struct rtl8366s, dev); } -static int rtl8366s_reset_chip(struct rtl8366s *rtl) +static inline struct rtl8366_smi *sw_to_rtl8366_smi(struct switch_dev *sw) +{ + struct rtl8366s *rtl = sw_to_rtl8366s(sw); + return &rtl->smi; +} + +static int rtl8366s_reset_chip(struct rtl8366_smi *smi) { - struct rtl8366_smi *smi = &rtl->smi; int timeout = 10; u32 data; @@ -323,10 +328,9 @@ static int rtl8366s_write_phy_reg(struct rtl8366_smi *smi, return 0; } -static int rtl8366_get_mib_counter(struct rtl8366s *rtl, int counter, +static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter, int port, unsigned long long *val) { - struct rtl8366_smi *smi = &rtl->smi; int i; int err; u32 addr, data; @@ -372,10 +376,9 @@ static int rtl8366_get_mib_counter(struct rtl8366s *rtl, int counter, return 0; } -static int rtl8366s_get_vlan_4k(struct rtl8366s *rtl, u32 vid, +static int rtl8366s_get_vlan_4k(struct rtl8366_smi *smi, u32 vid, struct rtl8366_vlan_4k *vlan4k) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366s_vlan_4k vlan4k_priv; int err; u32 data; @@ -423,10 +426,9 @@ static int rtl8366s_get_vlan_4k(struct rtl8366s *rtl, u32 vid, return 0; } -static int rtl8366s_set_vlan_4k(struct rtl8366s *rtl, +static int rtl8366s_set_vlan_4k(struct rtl8366_smi *smi, const struct rtl8366_vlan_4k *vlan4k) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366s_vlan_4k vlan4k_priv; int err; u32 data; @@ -467,10 +469,9 @@ static int rtl8366s_set_vlan_4k(struct rtl8366s *rtl, return err; } -static int rtl8366s_get_vlan_mc(struct rtl8366s *rtl, u32 index, +static int rtl8366s_get_vlan_mc(struct rtl8366_smi *smi, u32 index, struct rtl8366_vlan_mc *vlanmc) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366s_vlan_mc vlanmc_priv; int err; u32 addr; @@ -508,10 +509,9 @@ static int rtl8366s_get_vlan_mc(struct rtl8366s *rtl, u32 index, return 0; } -static int rtl8366s_set_vlan_mc(struct rtl8366s *rtl, u32 index, +static int rtl8366s_set_vlan_mc(struct rtl8366_smi *smi, u32 index, const struct rtl8366_vlan_mc *vlanmc) { - struct rtl8366_smi *smi = &rtl->smi; struct rtl8366s_vlan_mc vlanmc_priv; int err; u32 addr; @@ -553,10 +553,9 @@ static int rtl8366s_set_vlan_mc(struct rtl8366s *rtl, u32 index, return 0; } -static int rtl8366s_get_port_vlan_index(struct rtl8366s *rtl, int port, +static int rtl8366s_get_port_vlan_index(struct rtl8366_smi *smi, int port, int *val) { - struct rtl8366_smi *smi = &rtl->smi; u32 data; int err; @@ -575,18 +574,18 @@ static int rtl8366s_get_port_vlan_index(struct rtl8366s *rtl, int port, } -static int rtl8366s_get_vlan_port_pvid(struct rtl8366s *rtl, int port, +static int rtl8366s_get_vlan_port_pvid(struct rtl8366_smi *smi, int port, int *val) { struct rtl8366_vlan_mc vlanmc; int err; int index; - err = rtl8366s_get_port_vlan_index(rtl, port, &index); + err = rtl8366s_get_port_vlan_index(smi, port, &index); if (err) return err; - err = rtl8366s_get_vlan_mc(rtl, index, &vlanmc); + err = rtl8366s_get_vlan_mc(smi, index, &vlanmc); if (err) return err; @@ -594,10 +593,9 @@ static int rtl8366s_get_vlan_port_pvid(struct rtl8366s *rtl, int port, return 0; } -static int rtl8366s_set_port_vlan_index(struct rtl8366s *rtl, int port, +static int rtl8366s_set_port_vlan_index(struct rtl8366_smi *smi, int port, int index) { - struct rtl8366_smi *smi = &rtl->smi; u32 data; int err; @@ -619,7 +617,7 @@ static int rtl8366s_set_port_vlan_index(struct rtl8366s *rtl, int port, return err; } -static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) +static int rtl8366s_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, int val) { int i; struct rtl8366_vlan_mc vlanmc; @@ -629,25 +627,25 @@ static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) return -EINVAL; /* Updating the 4K entry; lookup it and change the port member set */ - rtl8366s_get_vlan_4k(rtl, val, &vlan4k); + rtl8366s_get_vlan_4k(smi, val, &vlan4k); vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU); vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU; - rtl8366s_set_vlan_4k(rtl, &vlan4k); + rtl8366s_set_vlan_4k(smi, &vlan4k); /* * For the 16 entries more work needs to be done. First see if such * VID is already there and change it */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366s_get_vlan_mc(rtl, i, &vlanmc); + rtl8366s_get_vlan_mc(smi, i, &vlanmc); /* Try to find an existing vid and update port member set */ if (val == vlanmc.vid) { vlanmc.member |= ((1 << port) | RTL8366_PORT_CPU); - rtl8366s_set_vlan_mc(rtl, i, &vlanmc); + rtl8366s_set_vlan_mc(smi, i, &vlanmc); /* Now update PVID register settings */ - rtl8366s_set_port_vlan_index(rtl, port, i); + rtl8366s_set_port_vlan_index(smi, port, i); return 0; } @@ -658,7 +656,7 @@ static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) * has no member ports) with new one */ for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366s_get_vlan_mc(rtl, i, &vlanmc); + rtl8366s_get_vlan_mc(smi, i, &vlanmc); /* * See if this vlan member configuration is unused. It is @@ -671,25 +669,24 @@ static int rtl8366s_set_vlan_port_pvid(struct rtl8366s *rtl, int port, int val) vlanmc.member = ((1 << port) | RTL8366_PORT_CPU); vlanmc.fid = 0; - rtl8366s_set_vlan_mc(rtl, i, &vlanmc); + rtl8366s_set_vlan_mc(smi, i, &vlanmc); /* Now update PVID register settings */ - rtl8366s_set_port_vlan_index(rtl, port, i); + rtl8366s_set_port_vlan_index(smi, port, i); return 0; } } - dev_err(rtl->parent, + dev_err(smi->parent, "All 16 vlan member configurations are in use\n"); return -EINVAL; } -static int rtl8366s_vlan_set_vlan(struct rtl8366s *rtl, int enable) +static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - struct rtl8366_smi *smi = &rtl->smi; u32 data = 0; rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); @@ -702,9 +699,8 @@ static int rtl8366s_vlan_set_vlan(struct rtl8366s *rtl, int enable) return rtl8366_smi_write_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, data); } -static int rtl8366s_vlan_set_4ktable(struct rtl8366s *rtl, int enable) +static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) { - struct rtl8366_smi *smi = &rtl->smi; u32 data = 0; rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TB_CTRL_REG, &data); @@ -717,7 +713,7 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366s *rtl, int enable) return rtl8366_smi_write_reg(smi, RTL8366S_VLAN_TB_CTRL_REG, data); } -static int rtl8366s_reset_vlan(struct rtl8366s *rtl) +static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) { struct rtl8366_vlan_4k vlan4k; struct rtl8366_vlan_mc vlanmc; @@ -731,7 +727,7 @@ static int rtl8366s_reset_vlan(struct rtl8366s *rtl) vlanmc.untag = 0; vlanmc.fid = 0; for (i = 0; i < RTL8366_NUM_VLANS; i++) { - err = rtl8366s_set_vlan_mc(rtl, i, &vlanmc); + err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); if (err) return err; } @@ -741,13 +737,13 @@ static int rtl8366s_reset_vlan(struct rtl8366s *rtl) vlan4k.member = RTL8366_PORT_ALL; vlan4k.untag = RTL8366_PORT_ALL; vlan4k.fid = 0; - err = rtl8366s_set_vlan_4k(rtl, &vlan4k); + err = rtl8366s_set_vlan_4k(smi, &vlan4k); if (err) return err; /* Set all ports PVID to default VLAN */ for (i = 0; i < RTL8366_NUM_PORTS; i++) { - err = rtl8366s_set_vlan_port_pvid(rtl, i, 0); + err = rtl8366s_set_vlan_port_pvid(smi, i, 0); if (err) return err; } @@ -767,6 +763,7 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, size_t count, loff_t *ppos) { struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; + struct rtl8366_smi *smi = &rtl->smi; int i, j, len = 0; char *buf = rtl->buf; @@ -782,7 +779,7 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, for (j = 0; j < RTL8366_NUM_PORTS; ++j) { unsigned long long counter = 0; - if (!rtl8366_get_mib_counter(rtl, i, j, &counter)) + if (!rtl8366_get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, "[%llu]", counter); @@ -815,6 +812,7 @@ static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, size_t count, loff_t *ppos) { struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; + struct rtl8366_smi *smi = &rtl->smi; int i, j, len = 0; char *buf = rtl->buf; @@ -827,7 +825,7 @@ static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, for (i = 0; i < RTL8366_NUM_VLANS; ++i) { struct rtl8366_vlan_mc vlanmc; - rtl8366s_get_vlan_mc(rtl, i, &vlanmc); + rtl8366s_get_vlan_mc(smi, i, &vlanmc); len += snprintf(buf + len, sizeof(rtl->buf) - len, "\t[%d] \t %d \t %d \t 0x%04x \t 0x%04x \t %d " @@ -836,7 +834,7 @@ static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, for (j = 0; j < RTL8366_NUM_PORTS; ++j) { int index = 0; - if (!rtl8366s_get_port_vlan_index(rtl, j, &index)) { + if (!rtl8366s_get_port_vlan_index(smi, j, &index)) { if (index == i) len += snprintf(buf + len, sizeof(rtl->buf) - len, @@ -993,8 +991,7 @@ static int rtl8366s_sw_reset_mibs(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->value.i == 1) { @@ -1010,8 +1007,7 @@ static int rtl8366s_sw_get_vlan_enable(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; if (attr->ofs == 1) { @@ -1037,8 +1033,7 @@ static int rtl8366s_sw_get_blinkrate(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); @@ -1052,8 +1047,7 @@ static int rtl8366s_sw_set_blinkrate(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; if (val->value.i >= 6) @@ -1073,12 +1067,12 @@ static int rtl8366s_sw_set_vlan_enable(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); if (attr->ofs == 1) - return rtl8366s_vlan_set_vlan(rtl, val->value.i); + return rtl8366s_vlan_set_vlan(smi, val->value.i); else - return rtl8366s_vlan_set_4ktable(rtl, val->value.i); + return rtl8366s_vlan_set_4ktable(smi, val->value.i); } static const char *rtl8366s_speed_str(unsigned speed) @@ -1147,6 +1141,7 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); + struct rtl8366_smi *smi = &rtl->smi; char *buf = rtl->buf; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) @@ -1154,15 +1149,15 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, memset(buf, '\0', sizeof(rtl->buf)); - rtl8366s_get_vlan_mc(rtl, val->port_vlan, &vlanmc); - rtl8366s_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); + rtl8366s_get_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366s_get_vlan_4k(smi, vlanmc.vid, &vlan4k); len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: ", val->port_vlan); for (i = 0; i < RTL8366_NUM_PORTS; ++i) { int index = 0; - if (!rtl8366s_get_port_vlan_index(rtl, i, &index) && + if (!rtl8366s_get_port_vlan_index(smi, i, &index) && index == val->port_vlan) len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d", i); @@ -1191,8 +1186,7 @@ static int rtl8366s_sw_set_port_led(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->port_vlan >= RTL8366_NUM_PORTS || @@ -1217,8 +1211,7 @@ static int rtl8366s_sw_get_port_led(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->port_vlan >= RTL8366_NUM_LEDGROUPS) @@ -1234,8 +1227,7 @@ static int rtl8366s_sw_reset_port_mibs(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; if (val->port_vlan >= RTL8366_NUM_PORTS) @@ -1253,6 +1245,7 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, struct switch_val *val) { struct rtl8366s *rtl = sw_to_rtl8366s(dev); + struct rtl8366_smi *smi = &rtl->smi; int i, len = 0; unsigned long long counter = 0; char *buf = rtl->buf; @@ -1267,7 +1260,7 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, for (i = 0; i < RTL8366S_MIB_COUNT; ++i) { len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d:%s\t", i, rtl8366s_mib_counters[i].name); - if (!rtl8366_get_mib_counter(rtl, i, val->port_vlan, &counter)) + if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, "[%llu]\n", counter); else @@ -1283,15 +1276,15 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct rtl8366_vlan_mc vlanmc; - struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct switch_port *port; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366s_get_vlan_mc(rtl, val->port_vlan, &vlanmc); + rtl8366s_get_vlan_mc(smi, val->port_vlan, &vlanmc); port = &val->value.ports[0]; val->len = 0; @@ -1311,17 +1304,17 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; - struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct switch_port *port; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366s_get_vlan_mc(rtl, val->port_vlan, &vlanmc); - rtl8366s_get_vlan_4k(rtl, vlanmc.vid, &vlan4k); + rtl8366s_get_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366s_get_vlan_4k(smi, vlanmc.vid, &vlan4k); vlanmc.untag = 0; vlanmc.member = 0; @@ -1337,33 +1330,33 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, vlan4k.member = vlanmc.member; vlan4k.untag = vlanmc.untag; - rtl8366s_set_vlan_mc(rtl, val->port_vlan, &vlanmc); - rtl8366s_set_vlan_4k(rtl, &vlan4k); + rtl8366s_set_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366s_set_vlan_4k(smi, &vlan4k); return 0; } static int rtl8366s_sw_get_port_pvid(struct switch_dev *dev, int port, int *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - return rtl8366s_get_vlan_port_pvid(rtl, port, val); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + return rtl8366s_get_vlan_port_pvid(smi, port, val); } static int rtl8366s_sw_set_port_pvid(struct switch_dev *dev, int port, int val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - return rtl8366s_set_vlan_port_pvid(rtl, port, val); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + return rtl8366s_set_vlan_port_pvid(smi, port, val); } static int rtl8366s_sw_reset_switch(struct switch_dev *dev) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); int err; - err = rtl8366s_reset_chip(rtl); + err = rtl8366s_reset_chip(smi); if (err) return err; - return rtl8366s_reset_vlan(rtl); + return rtl8366s_reset_vlan(smi); } static struct switch_attr rtl8366s_globals[] = { @@ -1525,9 +1518,10 @@ static int rtl8366s_mii_bus_match(struct mii_bus *bus) static int rtl8366s_setup(struct rtl8366s *rtl) { + struct rtl8366_smi *smi = &rtl->smi; int ret; - ret = rtl8366s_reset_chip(rtl); + ret = rtl8366s_reset_chip(smi); if (ret) return ret; From c173e8c86b2c8ef8217c679704e30121934924cf Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:53 +0000 Subject: [PATCH 24/90] backfire: generic: rtl8366: cleanup MIB counter printing (backport of r21917) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21936 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 107 ++++++++---------- .../files/drivers/net/phy/rtl8366s.c | 107 ++++++++---------- 2 files changed, 94 insertions(+), 120 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 78d606242..eaff759b3 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -186,39 +186,39 @@ struct mib_counter { }; static struct mib_counter rtl8366rb_mib_counters[RTL8366S_MIB_COUNT] = { - { 0, 4, "IfInOctets " }, - { 4, 4, "EtherStatsOctets " }, - { 8, 2, "EtherStatsUnderSizePkts " }, - { 10, 2, "EtherFregament " }, - { 12, 2, "EtherStatsPkts64Octets " }, - { 14, 2, "EtherStatsPkts65to127Octets " }, - { 16, 2, "EtherStatsPkts128to255Octets " }, - { 18, 2, "EtherStatsPkts256to511Octets " }, - { 20, 2, "EtherStatsPkts512to1023Octets " }, - { 22, 2, "EtherStatsPkts1024to1518Octets " }, - { 24, 2, "EtherOversizeStats " }, - { 26, 2, "EtherStatsJabbers " }, - { 28, 2, "IfInUcastPkts " }, - { 30, 2, "EtherStatsMulticastPkts " }, - { 32, 2, "EtherStatsBroadcastPkts " }, - { 34, 2, "EtherStatsDropEvents " }, - { 36, 2, "Dot3StatsFCSErrors " }, - { 38, 2, "Dot3StatsSymbolErrors " }, - { 40, 2, "Dot3InPauseFrames " }, - { 42, 2, "Dot3ControlInUnknownOpcodes " }, - { 44, 4, "IfOutOctets " }, - { 48, 2, "Dot3StatsSingleCollisionFrames " }, - { 50, 2, "Dot3StatMultipleCollisionFrames " }, - { 52, 2, "Dot3sDeferredTransmissions " }, - { 54, 2, "Dot3StatsLateCollisions " }, - { 56, 2, "EtherStatsCollisions " }, - { 58, 2, "Dot3StatsExcessiveCollisions " }, - { 60, 2, "Dot3OutPauseFrames " }, - { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, - { 64, 2, "Dot1dTpPortInDiscards " }, - { 66, 2, "IfOutUcastPkts " }, - { 68, 2, "IfOutMulticastPkts " }, - { 70, 2, "IfOutBroadcastPkts " }, + { 0, 4, "IfInOctets" }, + { 4, 4, "EtherStatsOctets" }, + { 8, 2, "EtherStatsUnderSizePkts" }, + { 10, 2, "EtherFragments" }, + { 12, 2, "EtherStatsPkts64Octets" }, + { 14, 2, "EtherStatsPkts65to127Octets" }, + { 16, 2, "EtherStatsPkts128to255Octets" }, + { 18, 2, "EtherStatsPkts256to511Octets" }, + { 20, 2, "EtherStatsPkts512to1023Octets" }, + { 22, 2, "EtherStatsPkts1024to1518Octets" }, + { 24, 2, "EtherOversizeStats" }, + { 26, 2, "EtherStatsJabbers" }, + { 28, 2, "IfInUcastPkts" }, + { 30, 2, "EtherStatsMulticastPkts" }, + { 32, 2, "EtherStatsBroadcastPkts" }, + { 34, 2, "EtherStatsDropEvents" }, + { 36, 2, "Dot3StatsFCSErrors" }, + { 38, 2, "Dot3StatsSymbolErrors" }, + { 40, 2, "Dot3InPauseFrames" }, + { 42, 2, "Dot3ControlInUnknownOpcodes" }, + { 44, 4, "IfOutOctets" }, + { 48, 2, "Dot3StatsSingleCollisionFrames" }, + { 50, 2, "Dot3StatMultipleCollisionFrames" }, + { 52, 2, "Dot3sDeferredTransmissions" }, + { 54, 2, "Dot3StatsLateCollisions" }, + { 56, 2, "EtherStatsCollisions" }, + { 58, 2, "Dot3StatsExcessiveCollisions" }, + { 60, 2, "Dot3OutPauseFrames" }, + { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, + { 64, 2, "Dot1dTpPortInDiscards" }, + { 66, 2, "IfOutUcastPkts" }, + { 68, 2, "IfOutMulticastPkts" }, + { 70, 2, "IfOutBroadcastPkts" }, }; static inline struct rtl8366rb *smi_to_rtl8366rb(struct rtl8366_smi *smi) @@ -801,43 +801,30 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, int i, j, len = 0; char *buf = rtl->buf; - len += snprintf(buf + len, sizeof(rtl->buf) - len, "MIB Counters:\n"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, "Counter" - " " - "Port 0 \t\t Port 1 \t\t Port 2 \t\t Port 3 \t\t " - "Port 4\n"); + len += snprintf(buf + len, sizeof(rtl->buf) - len, + "%-36s %12s %12s %12s %12s %12s %12s\n", + "Counter", + "Port 0", "Port 1", "Port 2", + "Port 3", "Port 4", "Port 5"); - for (i = 0; i < 33; ++i) { - len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d:%s ", - i, rtl8366rb_mib_counters[i].name); + for (i = 0; i < ARRAY_SIZE(rtl8366rb_mib_counters); ++i) { + len += snprintf(buf + len, sizeof(rtl->buf) - len, "%-36s ", + rtl8366rb_mib_counters[i].name); for (j = 0; j < RTL8366_NUM_PORTS; ++j) { unsigned long long counter = 0; if (!rtl8366_get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[%llu]", counter); + "%12llu ", counter); else len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[error]"); - - if (j != RTL8366_NUM_PORTS - 1) { - if (counter < 100000) - len += snprintf(buf + len, - sizeof(rtl->buf) - len, - "\t"); - - len += snprintf(buf + len, - sizeof(rtl->buf) - len, - "\t"); - } + "%12s ", "error"); } len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); - return simple_read_from_buffer(user_buf, count, ppos, buf, len); } @@ -1290,15 +1277,15 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, "Port %d MIB counters\n", val->port_vlan); - for (i = 0; i < RTL8366S_MIB_COUNT; ++i) { + for (i = 0; i < ARRAY_SIZE(rtl8366rb_mib_counters); ++i) { len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d:%s\t", i, rtl8366rb_mib_counters[i].name); + "%-36s: ", rtl8366rb_mib_counters[i].name); if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[%llu]\n", counter); + "%llu\n", counter); else len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[error]\n"); + "%s\n", "error"); } val->value.s = buf; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 5120f8911..5636a62c1 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -187,39 +187,39 @@ struct mib_counter { }; static struct mib_counter rtl8366s_mib_counters[RTL8366S_MIB_COUNT] = { - { 0, 4, "IfInOctets " }, - { 4, 4, "EtherStatsOctets " }, - { 8, 2, "EtherStatsUnderSizePkts " }, - { 10, 2, "EtherFregament " }, - { 12, 2, "EtherStatsPkts64Octets " }, - { 14, 2, "EtherStatsPkts65to127Octets " }, - { 16, 2, "EtherStatsPkts128to255Octets " }, - { 18, 2, "EtherStatsPkts256to511Octets " }, - { 20, 2, "EtherStatsPkts512to1023Octets " }, - { 22, 2, "EtherStatsPkts1024to1518Octets " }, - { 24, 2, "EtherOversizeStats " }, - { 26, 2, "EtherStatsJabbers " }, - { 28, 2, "IfInUcastPkts " }, - { 30, 2, "EtherStatsMulticastPkts " }, - { 32, 2, "EtherStatsBroadcastPkts " }, - { 34, 2, "EtherStatsDropEvents " }, - { 36, 2, "Dot3StatsFCSErrors " }, - { 38, 2, "Dot3StatsSymbolErrors " }, - { 40, 2, "Dot3InPauseFrames " }, - { 42, 2, "Dot3ControlInUnknownOpcodes " }, - { 44, 4, "IfOutOctets " }, - { 48, 2, "Dot3StatsSingleCollisionFrames " }, - { 50, 2, "Dot3StatMultipleCollisionFrames " }, - { 52, 2, "Dot3sDeferredTransmissions " }, - { 54, 2, "Dot3StatsLateCollisions " }, - { 56, 2, "EtherStatsCollisions " }, - { 58, 2, "Dot3StatsExcessiveCollisions " }, - { 60, 2, "Dot3OutPauseFrames " }, - { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, - { 64, 2, "Dot1dTpPortInDiscards " }, - { 66, 2, "IfOutUcastPkts " }, - { 68, 2, "IfOutMulticastPkts " }, - { 70, 2, "IfOutBroadcastPkts " }, + { 0, 4, "IfInOctets" }, + { 4, 4, "EtherStatsOctets" }, + { 8, 2, "EtherStatsUnderSizePkts" }, + { 10, 2, "EtherFragments" }, + { 12, 2, "EtherStatsPkts64Octets" }, + { 14, 2, "EtherStatsPkts65to127Octets" }, + { 16, 2, "EtherStatsPkts128to255Octets" }, + { 18, 2, "EtherStatsPkts256to511Octets" }, + { 20, 2, "EtherStatsPkts512to1023Octets" }, + { 22, 2, "EtherStatsPkts1024to1518Octets" }, + { 24, 2, "EtherOversizeStats" }, + { 26, 2, "EtherStatsJabbers" }, + { 28, 2, "IfInUcastPkts" }, + { 30, 2, "EtherStatsMulticastPkts" }, + { 32, 2, "EtherStatsBroadcastPkts" }, + { 34, 2, "EtherStatsDropEvents" }, + { 36, 2, "Dot3StatsFCSErrors" }, + { 38, 2, "Dot3StatsSymbolErrors" }, + { 40, 2, "Dot3InPauseFrames" }, + { 42, 2, "Dot3ControlInUnknownOpcodes" }, + { 44, 4, "IfOutOctets" }, + { 48, 2, "Dot3StatsSingleCollisionFrames" }, + { 50, 2, "Dot3StatMultipleCollisionFrames" }, + { 52, 2, "Dot3sDeferredTransmissions" }, + { 54, 2, "Dot3StatsLateCollisions" }, + { 56, 2, "EtherStatsCollisions" }, + { 58, 2, "Dot3StatsExcessiveCollisions" }, + { 60, 2, "Dot3OutPauseFrames" }, + { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, + { 64, 2, "Dot1dTpPortInDiscards" }, + { 66, 2, "IfOutUcastPkts" }, + { 68, 2, "IfOutMulticastPkts" }, + { 70, 2, "IfOutBroadcastPkts" }, }; static inline struct rtl8366s *smi_to_rtl8366s(struct rtl8366_smi *smi) @@ -767,43 +767,30 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, int i, j, len = 0; char *buf = rtl->buf; - len += snprintf(buf + len, sizeof(rtl->buf) - len, "MIB Counters:\n"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, "Counter" - " " - "Port 0 \t\t Port 1 \t\t Port 2 \t\t Port 3 \t\t " - "Port 4\n"); + len += snprintf(buf + len, sizeof(rtl->buf) - len, + "%-36s %12s %12s %12s %12s %12s %12s\n", + "Counter", + "Port 0", "Port 1", "Port 2", + "Port 3", "Port 4", "Port 5"); - for (i = 0; i < 33; ++i) { - len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d:%s ", - i, rtl8366s_mib_counters[i].name); + for (i = 0; i < ARRAY_SIZE(rtl8366s_mib_counters); ++i) { + len += snprintf(buf + len, sizeof(rtl->buf) - len, "%-36s ", + rtl8366s_mib_counters[i].name); for (j = 0; j < RTL8366_NUM_PORTS; ++j) { unsigned long long counter = 0; if (!rtl8366_get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[%llu]", counter); + "%12llu ", counter); else len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[error]"); - - if (j != RTL8366_NUM_PORTS - 1) { - if (counter < 100000) - len += snprintf(buf + len, - sizeof(rtl->buf) - len, - "\t"); - - len += snprintf(buf + len, - sizeof(rtl->buf) - len, - "\t"); - } + "%12s ", "error"); } len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); - return simple_read_from_buffer(user_buf, count, ppos, buf, len); } @@ -1257,15 +1244,15 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, "Port %d MIB counters\n", val->port_vlan); - for (i = 0; i < RTL8366S_MIB_COUNT; ++i) { + for (i = 0; i < ARRAY_SIZE(rtl8366s_mib_counters); ++i) { len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d:%s\t", i, rtl8366s_mib_counters[i].name); + "%-36s: ", rtl8366s_mib_counters[i].name); if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[%llu]\n", counter); + "%llu\n", counter); else len += snprintf(buf + len, sizeof(rtl->buf) - len, - "[error]\n"); + "%s\n", "error"); } val->value.s = buf; From 7375c5edf1e0ab53534aa86489c919087a2101e8 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:53:59 +0000 Subject: [PATCH 25/90] backfire: generic: rtl8366s: get some MIB counters from another offset (backport of r21918) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21937 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366s.c | 93 ++++++++++++------- 1 file changed, 57 insertions(+), 36 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 5636a62c1..86c637f10 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -69,6 +69,8 @@ #define RTL8366S_GLOBAL_MIB_COUNT 1 #define RTL8366S_MIB_COUNTER_PORT_OFFSET 0x0040 #define RTL8366S_MIB_COUNTER_BASE 0x1000 +#define RTL8366S_MIB_COUNTER_PORT_OFFSET2 0x0008 +#define RTL8366S_MIB_COUNTER_BASE2 0x1180 #define RTL8366S_MIB_CTRL_REG 0x11F0 #define RTL8366S_MIB_CTRL_USER_MASK 0x01FF #define RTL8366S_MIB_CTRL_BUSY_MASK 0x0001 @@ -181,45 +183,51 @@ u16 g_dbg_reg; #endif struct mib_counter { + unsigned base; unsigned offset; unsigned length; const char *name; }; static struct mib_counter rtl8366s_mib_counters[RTL8366S_MIB_COUNT] = { - { 0, 4, "IfInOctets" }, - { 4, 4, "EtherStatsOctets" }, - { 8, 2, "EtherStatsUnderSizePkts" }, - { 10, 2, "EtherFragments" }, - { 12, 2, "EtherStatsPkts64Octets" }, - { 14, 2, "EtherStatsPkts65to127Octets" }, - { 16, 2, "EtherStatsPkts128to255Octets" }, - { 18, 2, "EtherStatsPkts256to511Octets" }, - { 20, 2, "EtherStatsPkts512to1023Octets" }, - { 22, 2, "EtherStatsPkts1024to1518Octets" }, - { 24, 2, "EtherOversizeStats" }, - { 26, 2, "EtherStatsJabbers" }, - { 28, 2, "IfInUcastPkts" }, - { 30, 2, "EtherStatsMulticastPkts" }, - { 32, 2, "EtherStatsBroadcastPkts" }, - { 34, 2, "EtherStatsDropEvents" }, - { 36, 2, "Dot3StatsFCSErrors" }, - { 38, 2, "Dot3StatsSymbolErrors" }, - { 40, 2, "Dot3InPauseFrames" }, - { 42, 2, "Dot3ControlInUnknownOpcodes" }, - { 44, 4, "IfOutOctets" }, - { 48, 2, "Dot3StatsSingleCollisionFrames" }, - { 50, 2, "Dot3StatMultipleCollisionFrames" }, - { 52, 2, "Dot3sDeferredTransmissions" }, - { 54, 2, "Dot3StatsLateCollisions" }, - { 56, 2, "EtherStatsCollisions" }, - { 58, 2, "Dot3StatsExcessiveCollisions" }, - { 60, 2, "Dot3OutPauseFrames" }, - { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, - { 64, 2, "Dot1dTpPortInDiscards" }, - { 66, 2, "IfOutUcastPkts" }, - { 68, 2, "IfOutMulticastPkts" }, - { 70, 2, "IfOutBroadcastPkts" }, + { 0, 0, 4, "IfInOctets" }, + { 0, 4, 4, "EtherStatsOctets" }, + { 0, 8, 2, "EtherStatsUnderSizePkts" }, + { 0, 10, 2, "EtherFragments" }, + { 0, 12, 2, "EtherStatsPkts64Octets" }, + { 0, 14, 2, "EtherStatsPkts65to127Octets" }, + { 0, 16, 2, "EtherStatsPkts128to255Octets" }, + { 0, 18, 2, "EtherStatsPkts256to511Octets" }, + { 0, 20, 2, "EtherStatsPkts512to1023Octets" }, + { 0, 22, 2, "EtherStatsPkts1024to1518Octets" }, + { 0, 24, 2, "EtherOversizeStats" }, + { 0, 26, 2, "EtherStatsJabbers" }, + { 0, 28, 2, "IfInUcastPkts" }, + { 0, 30, 2, "EtherStatsMulticastPkts" }, + { 0, 32, 2, "EtherStatsBroadcastPkts" }, + { 0, 34, 2, "EtherStatsDropEvents" }, + { 0, 36, 2, "Dot3StatsFCSErrors" }, + { 0, 38, 2, "Dot3StatsSymbolErrors" }, + { 0, 40, 2, "Dot3InPauseFrames" }, + { 0, 42, 2, "Dot3ControlInUnknownOpcodes" }, + { 0, 44, 4, "IfOutOctets" }, + { 0, 48, 2, "Dot3StatsSingleCollisionFrames" }, + { 0, 50, 2, "Dot3StatMultipleCollisionFrames" }, + { 0, 52, 2, "Dot3sDeferredTransmissions" }, + { 0, 54, 2, "Dot3StatsLateCollisions" }, + { 0, 56, 2, "EtherStatsCollisions" }, + { 0, 58, 2, "Dot3StatsExcessiveCollisions" }, + { 0, 60, 2, "Dot3OutPauseFrames" }, + { 0, 62, 2, "Dot1dBasePortDelayExceededDiscards" }, + + /* + * The following counters are accessible at a different + * base address. + */ + { 1, 0, 2, "Dot1dTpPortInDiscards" }, + { 1, 2, 2, "IfOutUcastPkts" }, + { 1, 4, 2, "IfOutMulticastPkts" }, + { 1, 6, 2, "IfOutBroadcastPkts" }, }; static inline struct rtl8366s *smi_to_rtl8366s(struct rtl8366_smi *smi) @@ -339,9 +347,22 @@ static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter, if (port > RTL8366_NUM_PORTS || counter >= RTL8366S_MIB_COUNT) return -EINVAL; - addr = RTL8366S_MIB_COUNTER_BASE + - RTL8366S_MIB_COUNTER_PORT_OFFSET * (port) + - rtl8366s_mib_counters[counter].offset; + switch (rtl8366s_mib_counters[counter].base) { + case 0: + addr = RTL8366S_MIB_COUNTER_BASE + + RTL8366S_MIB_COUNTER_PORT_OFFSET * port; + break; + + case 1: + addr = RTL8366S_MIB_COUNTER_BASE2 + + RTL8366S_MIB_COUNTER_PORT_OFFSET2 * port; + break; + + default: + return -EINVAL; + } + + addr += rtl8366s_mib_counters[counter].offset; /* * Writing access counter address first From bee4b83a3b4551e05a4dab5d042060ed73d06edd Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:54:05 +0000 Subject: [PATCH 26/90] backfire: generic: rtl8366: introduce rtl8366_smi_rmwr function (backport of r21919) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21938 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.c | 15 +++ .../files/drivers/net/phy/rtl8366_smi.h | 1 + .../files/drivers/net/phy/rtl8366rb.c | 97 ++++++------------- .../files/drivers/net/phy/rtl8366s.c | 95 ++++++------------ 4 files changed, 75 insertions(+), 133 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c index 625a01749..bb2e3ba68 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c @@ -266,6 +266,21 @@ int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data) } EXPORT_SYMBOL_GPL(rtl8366_smi_write_reg); +int rtl8366_smi_rmwr(struct rtl8366_smi *smi, u32 addr, u32 mask, u32 data) +{ + u32 t; + int err; + + err = rtl8366_smi_read_reg(smi, addr, &t); + if (err) + return err; + + err = rtl8366_smi_write_reg(smi, addr, (t & ~mask) | data); + return err; + +} +EXPORT_SYMBOL_GPL(rtl8366_smi_rmwr); + static int rtl8366_smi_mii_init(struct rtl8366_smi *smi) { int ret; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index 883a776d4..1afee9b73 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -53,5 +53,6 @@ int rtl8366_smi_init(struct rtl8366_smi *smi); void rtl8366_smi_cleanup(struct rtl8366_smi *smi); int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data); int rtl8366_smi_read_reg(struct rtl8366_smi *smi, u32 addr, u32 *data); +int rtl8366_smi_rmwr(struct rtl8366_smi *smi, u32 addr, u32 mask, u32 data); #endif /* _RTL8366_SMI_H */ diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index eaff759b3..83edf8f94 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -629,25 +629,14 @@ static int rtl8366rb_get_vlan_port_pvid(struct rtl8366_smi *smi, int port, static int rtl8366rb_set_port_vlan_index(struct rtl8366_smi *smi, int port, int index) { - u32 data; - int err; - if (port >= RTL8366_NUM_PORTS || index >= RTL8366_NUM_VLANS) return -EINVAL; - err = rtl8366_smi_read_reg(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), - &data); - if (err) - return err; - - data &= ~(RTL8366S_PORT_VLAN_CTRL_MASK << - RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); - data |= (index & RTL8366S_PORT_VLAN_CTRL_MASK) << - RTL8366S_PORT_VLAN_CTRL_SHIFT(port); - - err = rtl8366_smi_write_reg(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), - data); - return err; + return rtl8366_smi_rmwr(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), + RTL8366S_PORT_VLAN_CTRL_MASK << + RTL8366S_PORT_VLAN_CTRL_SHIFT(port), + (index & RTL8366S_PORT_VLAN_CTRL_MASK) << + RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); } static int rtl8366rb_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, @@ -721,30 +710,16 @@ static int rtl8366rb_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - u32 data = 0; - - rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); - - if (enable) - data |= RTL8366_CHIP_CTRL_VLAN; - else - data &= ~RTL8366_CHIP_CTRL_VLAN; - - return rtl8366_smi_write_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, data); + return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, + RTL8366_CHIP_CTRL_VLAN, + (enable) ? RTL8366_CHIP_CTRL_VLAN : 0); } static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) { - u32 data = 0; - - rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); - - if (enable) - data |= RTL8366_CHIP_CTRL_VLAN_4KTB; - else - data &= ~RTL8366_CHIP_CTRL_VLAN_4KTB; - - return rtl8366_smi_write_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, data); + return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, + RTL8366_CHIP_CTRL_VLAN_4KTB, + (enable) ? RTL8366_CHIP_CTRL_VLAN_4KTB : 0); } static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) @@ -1013,15 +988,12 @@ static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data = 0; + int err = 0; - if (val->value.i == 1) { - rtl8366_smi_read_reg(smi, RTL8366S_MIB_CTRL_REG, &data); - data |= (1 << 2); - rtl8366_smi_write_reg(smi, RTL8366S_MIB_CTRL_REG, data); - } + if (val->value.i == 1) + err = rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, 0, (1 << 2)); - return 0; + return err; } static int rtl8366rb_sw_get_vlan_enable(struct switch_dev *dev, @@ -1069,19 +1041,13 @@ static int rtl8366rb_sw_set_blinkrate(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data; if (val->value.i >= 6) return -EINVAL; - rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); - - data &= ~RTL8366_LED_BLINKRATE_MASK; - data |= val->value.i; - - rtl8366_smi_write_reg(smi, RTL8366_LED_BLINKRATE_REG, data); - - return 0; + return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, + RTL8366_LED_BLINKRATE_MASK, + val->value.i); } static int rtl8366rb_sw_set_vlan_enable(struct switch_dev *dev, @@ -1208,23 +1174,24 @@ static int rtl8366rb_sw_set_port_led(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data = 0; + u32 data; + u32 mask; + u32 reg; if (val->port_vlan >= RTL8366_NUM_PORTS) return -EINVAL; if (val->port_vlan == RTL8366_PORT_NUM_CPU) { - rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); - data = (data & (~(0xF << 4))) | (val->value.i << 4); - rtl8366_smi_write_reg(smi, RTL8366_LED_BLINKRATE_REG, data); + reg = RTL8366_LED_BLINKRATE_REG; + mask = 0xF << 4; + data = val->value.i << 4; } else { - rtl8366_smi_read_reg(smi, RTL8366_LED_CTRL_REG, &data); - data = (data & (~(0xF << (val->port_vlan * 4)))) | - (val->value.i << (val->port_vlan * 4)); - rtl8366_smi_write_reg(smi, RTL8366_LED_CTRL_REG, data); + reg = RTL8366_LED_CTRL_REG; + mask = 0xF << (val->port_vlan * 4), + data = val->value.i << (val->port_vlan * 4); } - return 0; + return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, mask, data); } static int rtl8366rb_sw_get_port_led(struct switch_dev *dev, @@ -1248,16 +1215,12 @@ static int rtl8366rb_sw_reset_port_mibs(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data = 0; if (val->port_vlan >= RTL8366_NUM_PORTS) return -EINVAL; - rtl8366_smi_read_reg(smi, RTL8366S_MIB_CTRL_REG, &data); - data |= (1 << (val->port_vlan + 3)); - rtl8366_smi_write_reg(smi, RTL8366S_MIB_CTRL_REG, data); - - return 0; + return rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, + 0, (1 << (val->port_vlan + 3))); } static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 86c637f10..8147a2936 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -617,25 +617,14 @@ static int rtl8366s_get_vlan_port_pvid(struct rtl8366_smi *smi, int port, static int rtl8366s_set_port_vlan_index(struct rtl8366_smi *smi, int port, int index) { - u32 data; - int err; - if (port >= RTL8366_NUM_PORTS || index >= RTL8366_NUM_VLANS) return -EINVAL; - err = rtl8366_smi_read_reg(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), - &data); - if (err) - return err; - - data &= ~(RTL8366S_PORT_VLAN_CTRL_MASK << - RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); - data |= (index & RTL8366S_PORT_VLAN_CTRL_MASK) << - RTL8366S_PORT_VLAN_CTRL_SHIFT(port); - - err = rtl8366_smi_write_reg(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), - data); - return err; + return rtl8366_smi_rmwr(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), + RTL8366S_PORT_VLAN_CTRL_MASK << + RTL8366S_PORT_VLAN_CTRL_SHIFT(port), + (index & RTL8366S_PORT_VLAN_CTRL_MASK) << + RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); } static int rtl8366s_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, int val) @@ -708,30 +697,15 @@ static int rtl8366s_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, int va static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - u32 data = 0; - - rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); - - if (enable) - data |= RTL8366_CHIP_CTRL_VLAN; - else - data &= ~RTL8366_CHIP_CTRL_VLAN; - - return rtl8366_smi_write_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, data); + return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, + RTL8366_CHIP_CTRL_VLAN, + (enable) ? RTL8366_CHIP_CTRL_VLAN : 0); } static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) { - u32 data = 0; - - rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TB_CTRL_REG, &data); - - if (enable) - data |= 1; - else - data &= ~1; - - return rtl8366_smi_write_reg(smi, RTL8366S_VLAN_TB_CTRL_REG, data); + return rtl8366_smi_rmwr(smi, RTL8366S_VLAN_TB_CTRL_REG, + 1, (enable) ? 1 : 0); } static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) @@ -1000,15 +974,12 @@ static int rtl8366s_sw_reset_mibs(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data = 0; + int err = 0; - if (val->value.i == 1) { - rtl8366_smi_read_reg(smi, RTL8366S_MIB_CTRL_REG, &data); - data |= (1 << 2); - rtl8366_smi_write_reg(smi, RTL8366S_MIB_CTRL_REG, data); - } + if (val->value.i == 1) + err = rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, 0, (1 << 2)); - return 0; + return err; } static int rtl8366s_sw_get_vlan_enable(struct switch_dev *dev, @@ -1056,19 +1027,13 @@ static int rtl8366s_sw_set_blinkrate(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data; if (val->value.i >= 6) return -EINVAL; - rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); - - data &= ~RTL8366_LED_BLINKRATE_MASK; - data |= val->value.i; - - rtl8366_smi_write_reg(smi, RTL8366_LED_BLINKRATE_REG, data); - - return 0; + return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, + RTL8366_LED_BLINKRATE_MASK, + val->value.i); } static int rtl8366s_sw_set_vlan_enable(struct switch_dev *dev, @@ -1195,24 +1160,25 @@ static int rtl8366s_sw_set_port_led(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data = 0; + u32 data; + u32 mask; + u32 reg; if (val->port_vlan >= RTL8366_NUM_PORTS || (1 << val->port_vlan) == RTL8366_PORT_UNKNOWN) return -EINVAL; if (val->port_vlan == RTL8366_PORT_NUM_CPU) { - rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); - data = (data & (~(0xF << 4))) | (val->value.i << 4); - rtl8366_smi_write_reg(smi, RTL8366_LED_BLINKRATE_REG, data); + reg = RTL8366_LED_BLINKRATE_REG; + mask = 0xF << 4; + data = val->value.i << 4; } else { - rtl8366_smi_read_reg(smi, RTL8366_LED_CTRL_REG, &data); - data = (data & (~(0xF << (val->port_vlan * 4)))) | - (val->value.i << (val->port_vlan * 4)); - rtl8366_smi_write_reg(smi, RTL8366_LED_CTRL_REG, data); + reg = RTL8366_LED_CTRL_REG; + mask = 0xF << (val->port_vlan * 4), + data = val->value.i << (val->port_vlan * 4); } - return 0; + return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, mask, data); } static int rtl8366s_sw_get_port_led(struct switch_dev *dev, @@ -1236,16 +1202,13 @@ static int rtl8366s_sw_reset_port_mibs(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - u32 data = 0; if (val->port_vlan >= RTL8366_NUM_PORTS) return -EINVAL; - rtl8366_smi_read_reg(smi, RTL8366S_MIB_CTRL_REG, &data); - data |= (1 << (val->port_vlan + 3)); - rtl8366_smi_write_reg(smi, RTL8366S_MIB_CTRL_REG, data); - return 0; + return rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, + 0, (1 << (val->port_vlan + 3))); } static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, From 600459faa6e53068b21368a2c1d2493902e035dd Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:54:11 +0000 Subject: [PATCH 27/90] backfire: generic: rtl8366: add hw_init to initialize registers after reset (backport of r21920) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21939 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 66 ++++++++++++++++++- .../files/drivers/net/phy/rtl8366s.c | 66 ++++++++++++++++++- 2 files changed, 128 insertions(+), 4 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 83edf8f94..e5bc824f2 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -35,6 +35,25 @@ #define RTL8366_CHIP_CTRL_VLAN (1 << 13) #define RTL8366_CHIP_CTRL_VLAN_4KTB (1 << 14) +/* Switch Global Configuration register */ +#define RTL8366_SGCR 0x0000 +#define RTL8366_SGCR_EN_BC_STORM_CTRL BIT(0) +#define RTL8366_SGCR_MAX_LENGTH(_x) (_x << 4) +#define RTL8366_SGCR_MAX_LENGTH_MASK RTL8366_SGCR_MAX_LENGTH(0x3) +#define RTL8366_SGCR_MAX_LENGTH_1522 RTL8366_SGCR_MAX_LENGTH(0x0) +#define RTL8366_SGCR_MAX_LENGTH_1536 RTL8366_SGCR_MAX_LENGTH(0x1) +#define RTL8366_SGCR_MAX_LENGTH_1552 RTL8366_SGCR_MAX_LENGTH(0x2) +#define RTL8366_SGCR_MAX_LENGTH_9216 RTL8366_SGCR_MAX_LENGTH(0x3) + +/* Port Enable Control register */ +#define RTL8366_PECR 0x0001 + +/* Switch Security Control registers */ +#define RTL8366_SSCR0 0x0002 +#define RTL8366_SSCR1 0x0003 +#define RTL8366_SSCR2 0x0004 +#define RTL8366_SSCR2_DROP_UNKNOWN_DA BIT(0) + #define RTL8366_RESET_CTRL_REG 0x0100 #define RTL8366_CHIP_CTRL_RESET_HW 1 #define RTL8366_CHIP_CTRL_RESET_SW (1 << 1) @@ -221,6 +240,20 @@ static struct mib_counter rtl8366rb_mib_counters[RTL8366S_MIB_COUNT] = { { 70, 2, "IfOutBroadcastPkts" }, }; +#define REG_WR(_smi, _reg, _val) \ + do { \ + err = rtl8366_smi_write_reg(_smi, _reg, _val); \ + if (err) \ + return err; \ + } while (0) + +#define REG_RMW(_smi, _reg, _mask, _val) \ + do { \ + err = rtl8366_smi_rmwr(_smi, _reg, _mask, _val); \ + if (err) \ + return err; \ + } while (0) + static inline struct rtl8366rb *smi_to_rtl8366rb(struct rtl8366_smi *smi) { return container_of(smi, struct rtl8366rb, smi); @@ -261,6 +294,29 @@ static int rtl8366rb_reset_chip(struct rtl8366_smi *smi) return 0; } +static int rtl8366rb_hw_init(struct rtl8366_smi *smi) +{ + int err; + + /* set maximum packet length to 1536 bytes */ + REG_RMW(smi, RTL8366_SGCR, RTL8366_SGCR_MAX_LENGTH_MASK, + RTL8366_SGCR_MAX_LENGTH_1536); + + /* enable all ports */ + REG_WR(smi, RTL8366_PECR, 0); + + /* disable learning for all ports */ + REG_WR(smi, RTL8366_SSCR0, RTL8366_PORT_ALL); + + /* disable auto ageing for all ports */ + REG_WR(smi, RTL8366_SSCR1, RTL8366_PORT_ALL); + + /* don't drop packets whose DA has not been learned */ + REG_RMW(smi, RTL8366_SSCR2, RTL8366_SSCR2_DROP_UNKNOWN_DA, 0); + + return 0; +} + static int rtl8366rb_read_phy_reg(struct rtl8366_smi *smi, u32 phy_no, u32 page, u32 addr, u32 *data) { @@ -1339,6 +1395,10 @@ static int rtl8366rb_sw_reset_switch(struct switch_dev *dev) if (err) return err; + err = rtl8366rb_hw_init(smi); + if (err) + return err; + return rtl8366rb_reset_vlan(smi); } @@ -1504,12 +1564,14 @@ static int rtl8366rb_setup(struct rtl8366rb *rtl) struct rtl8366_smi *smi = &rtl->smi; int ret; + rtl8366rb_debugfs_init(rtl); + ret = rtl8366rb_reset_chip(smi); if (ret) return ret; - rtl8366rb_debugfs_init(rtl); - return 0; + ret = rtl8366rb_hw_init(smi); + return ret; } static int rtl8366rb_detect(struct rtl8366_smi *smi) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 8147a2936..3bb0b549d 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -34,6 +34,25 @@ #define RTL8366_CHIP_GLOBAL_CTRL_REG 0x0000 #define RTL8366_CHIP_CTRL_VLAN (1 << 13) +/* Switch Global Configuration register */ +#define RTL8366_SGCR 0x0000 +#define RTL8366_SGCR_EN_BC_STORM_CTRL BIT(0) +#define RTL8366_SGCR_MAX_LENGTH(_x) (_x << 4) +#define RTL8366_SGCR_MAX_LENGTH_MASK RTL8366_SGCR_MAX_LENGTH(0x3) +#define RTL8366_SGCR_MAX_LENGTH_1522 RTL8366_SGCR_MAX_LENGTH(0x0) +#define RTL8366_SGCR_MAX_LENGTH_1536 RTL8366_SGCR_MAX_LENGTH(0x1) +#define RTL8366_SGCR_MAX_LENGTH_1552 RTL8366_SGCR_MAX_LENGTH(0x2) +#define RTL8366_SGCR_MAX_LENGTH_16000 RTL8366_SGCR_MAX_LENGTH(0x3) + +/* Port Enable Control register */ +#define RTL8366_PECR 0x0001 + +/* Switch Security Control registers */ +#define RTL8366_SSCR0 0x0002 +#define RTL8366_SSCR1 0x0003 +#define RTL8366_SSCR2 0x0004 +#define RTL8366_SSCR2_DROP_UNKNOWN_DA BIT(0) + #define RTL8366_RESET_CTRL_REG 0x0100 #define RTL8366_CHIP_CTRL_RESET_HW 1 #define RTL8366_CHIP_CTRL_RESET_SW (1 << 1) @@ -230,6 +249,20 @@ static struct mib_counter rtl8366s_mib_counters[RTL8366S_MIB_COUNT] = { { 1, 6, 2, "IfOutBroadcastPkts" }, }; +#define REG_WR(_smi, _reg, _val) \ + do { \ + err = rtl8366_smi_write_reg(_smi, _reg, _val); \ + if (err) \ + return err; \ + } while (0) + +#define REG_RMW(_smi, _reg, _mask, _val) \ + do { \ + err = rtl8366_smi_rmwr(_smi, _reg, _mask, _val); \ + if (err) \ + return err; \ + } while (0) + static inline struct rtl8366s *smi_to_rtl8366s(struct rtl8366_smi *smi) { return container_of(smi, struct rtl8366s, smi); @@ -270,6 +303,29 @@ static int rtl8366s_reset_chip(struct rtl8366_smi *smi) return 0; } +static int rtl8366s_hw_init(struct rtl8366_smi *smi) +{ + int err; + + /* set maximum packet length to 1536 bytes */ + REG_RMW(smi, RTL8366_SGCR, RTL8366_SGCR_MAX_LENGTH_MASK, + RTL8366_SGCR_MAX_LENGTH_1536); + + /* enable all ports */ + REG_WR(smi, RTL8366_PECR, 0); + + /* disable learning for all ports */ + REG_WR(smi, RTL8366_SSCR0, RTL8366_PORT_ALL); + + /* disable auto ageing for all ports */ + REG_WR(smi, RTL8366_SSCR1, RTL8366_PORT_ALL); + + /* don't drop packets whose DA has not been learned */ + REG_RMW(smi, RTL8366_SSCR2, RTL8366_SSCR2_DROP_UNKNOWN_DA, 0); + + return 0; +} + static int rtl8366s_read_phy_reg(struct rtl8366_smi *smi, u32 phy_no, u32 page, u32 addr, u32 *data) { @@ -1327,6 +1383,10 @@ static int rtl8366s_sw_reset_switch(struct switch_dev *dev) if (err) return err; + err = rtl8366s_hw_init(smi); + if (err) + return err; + return rtl8366s_reset_vlan(smi); } @@ -1492,12 +1552,14 @@ static int rtl8366s_setup(struct rtl8366s *rtl) struct rtl8366_smi *smi = &rtl->smi; int ret; + rtl8366s_debugfs_init(rtl); + ret = rtl8366s_reset_chip(smi); if (ret) return ret; - rtl8366s_debugfs_init(rtl); - return 0; + ret = rtl8366s_hw_init(smi); + return ret; } static int rtl8366s_detect(struct rtl8366_smi *smi) From 2933caf9137859036d6f21fdabf267f2cfac06c8 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:54:17 +0000 Subject: [PATCH 28/90] backfire: generic: rtl8366: update vlan handling code of rtl8366rb (backport of r21921) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21940 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 310 ++++++++++-------- 1 file changed, 182 insertions(+), 128 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index e5bc824f2..d1c2a69cb 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -642,8 +642,7 @@ static int rtl8366rb_set_vlan_mc(struct rtl8366_smi *smi, u32 index, return 0; } -static int rtl8366rb_get_port_vlan_index(struct rtl8366_smi *smi, int port, - int *val) +static int rtl8366rb_get_mc_index(struct rtl8366_smi *smi, int port, int *val) { u32 data; int err; @@ -663,27 +662,7 @@ static int rtl8366rb_get_port_vlan_index(struct rtl8366_smi *smi, int port, } -static int rtl8366rb_get_vlan_port_pvid(struct rtl8366_smi *smi, int port, - int *val) -{ - struct rtl8366_vlan_mc vlanmc; - int err; - int index; - - err = rtl8366rb_get_port_vlan_index(smi, port, &index); - if (err) - return err; - - err = rtl8366rb_get_vlan_mc(smi, index, &vlanmc); - if (err) - return err; - - *val = vlanmc.vid; - return 0; -} - -static int rtl8366rb_set_port_vlan_index(struct rtl8366_smi *smi, int port, - int index) +static int rtl8366rb_set_mc_index(struct rtl8366_smi *smi, int port, int index) { if (port >= RTL8366_NUM_PORTS || index >= RTL8366_NUM_VLANS) return -EINVAL; @@ -695,75 +674,170 @@ static int rtl8366rb_set_port_vlan_index(struct rtl8366_smi *smi, int port, RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); } -static int rtl8366rb_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, - int val) +static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, + u32 untag, u32 fid) { - int i; - struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; + int err; + int i; - if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) - return -EINVAL; + /* Update the 4K table */ + err = rtl8366rb_get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; - /* Updating the 4K entry; lookup it and change the port member set */ - rtl8366rb_get_vlan_4k(smi, val, &vlan4k); - vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU); - vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU; - rtl8366rb_set_vlan_4k(smi, &vlan4k); + vlan4k.member = member; + vlan4k.untag = untag; + vlan4k.fid = fid; + err = rtl8366rb_set_vlan_4k(smi, &vlan4k); + if (err) + return err; - /* - * For the 16 entries more work needs to be done. First see if such - * VID is already there and change it - */ - for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + /* Try to find an existing MC entry for this VID */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + struct rtl8366_vlan_mc vlanmc; - /* Try to find an existing vid and update port member set */ - if (val == vlanmc.vid) { - vlanmc.member |= ((1 << port) | RTL8366_PORT_CPU); - rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; - /* Now update PVID register settings */ - rtl8366rb_set_port_vlan_index(smi, port, i); + if (vid == vlanmc.vid) { + /* update the MC entry */ + vlanmc.member = member; + vlanmc.untag = untag; + vlanmc.fid = fid; - return 0; + err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + break; } } - /* - * PVID could not be found from vlan table. Replace unused (one that - * has no member ports) with new one - */ - for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + return err; +} - /* - * See if this vlan member configuration is unused. It is - * unused if member set contains no ports or CPU port only - */ - if (!vlanmc.member || vlanmc.member == RTL8366_PORT_CPU) { - vlanmc.vid = val; - vlanmc.priority = 0; - vlanmc.untag = RTL8366_PORT_ALL_BUT_CPU; - vlanmc.member = ((1 << port) | RTL8366_PORT_CPU); - vlanmc.fid = 0; +static int rtl8366rb_get_pvid(struct rtl8366_smi *smi, int port, int *val) +{ + struct rtl8366_vlan_mc vlanmc; + int err; + int index; - rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + err = rtl8366rb_get_mc_index(smi, port, &index); + if (err) + return err; - /* Now update PVID register settings */ - rtl8366rb_set_port_vlan_index(smi, port, i); + err = rtl8366rb_get_vlan_mc(smi, index, &vlanmc); + if (err) + return err; - return 0; + *val = vlanmc.vid; + return 0; +} + +static int rtl8366rb_mc_is_used(struct rtl8366_smi *smi, int mc_index, + int *used) +{ + int err; + int i; + + *used = 0; + for (i = 0; i < RTL8366_NUM_PORTS; i++) { + int index = 0; + + err = rtl8366rb_get_mc_index(smi, i, &index); + if (err) + return err; + + if (mc_index == index) { + *used = 1; + break; + } + } + + return 0; +} + +static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, + unsigned vid) +{ + struct rtl8366_vlan_mc vlanmc; + struct rtl8366_vlan_4k vlan4k; + int err; + int i; + + /* Try to find an existing MC entry for this VID */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + if (vid == vlanmc.vid) { + err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = rtl8366rb_set_mc_index(smi, port, i); + return err; + } + } + + /* We have no MC entry for this VID, try to find an empty one */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + if (vlanmc.vid == 0 && vlanmc.member == 0) { + /* Update the entry from the 4K table */ + err = rtl8366rb_get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; + + vlanmc.vid = vid; + vlanmc.member = vlan4k.member; + vlanmc.untag = vlan4k.untag; + vlanmc.fid = vlan4k.fid; + err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = rtl8366rb_set_mc_index(smi, port, i); + return err; + } + } + + /* MC table is full, try to find an unused entry and replace it */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + int used; + + err = rtl8366rb_mc_is_used(smi, i, &used); + if (err) + return err; + + if (!used) { + /* Update the entry from the 4K table */ + err = rtl8366rb_get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; + + vlanmc.vid = vid; + vlanmc.member = vlan4k.member; + vlanmc.untag = vlan4k.untag; + vlanmc.fid = vlan4k.fid; + err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = rtl8366rb_set_mc_index(smi, port, i); + return err; } } dev_err(smi->parent, - "All 16 vlan member configurations are in use\n"); + "all VLAN member configurations are in use\n"); - return -EINVAL; + return -ENOSPC; } - static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, @@ -780,12 +854,11 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) { - struct rtl8366_vlan_4k vlan4k; struct rtl8366_vlan_mc vlanmc; int err; int i; - /* clear 16 VLAN member configuration */ + /* clear VLAN member configurations */ vlanmc.vid = 0; vlanmc.priority = 0; vlanmc.member = 0; @@ -797,18 +870,18 @@ static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) return err; } - /* Set a default VLAN with vid 1 to 4K table for all ports */ - vlan4k.vid = 1; - vlan4k.member = RTL8366_PORT_ALL; - vlan4k.untag = RTL8366_PORT_ALL; - vlan4k.fid = 0; - err = rtl8366rb_set_vlan_4k(smi, &vlan4k); - if (err) - return err; - - /* Set all ports PVID to default VLAN */ for (i = 0; i < RTL8366_NUM_PORTS; i++) { - err = rtl8366rb_set_vlan_port_pvid(smi, i, 0); + if (i == RTL8366_PORT_CPU) + continue; + + err = rtl8366rb_set_vlan(smi, (i + 1), + (1 << i) | RTL8366_PORT_CPU, + (1 << i) | RTL8366_PORT_CPU, + 0); + if (err) + return err; + + err = rtl8366rb_set_pvid(smi, i, (i + 1)); if (err) return err; } @@ -886,7 +959,7 @@ static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, for (j = 0; j < RTL8366_NUM_PORTS; ++j) { int index = 0; - if (!rtl8366rb_get_port_vlan_index(smi, j, &index)) { + if (!rtl8366rb_get_mc_index(smi, j, &index)) { if (index == i) len += snprintf(buf + len, sizeof(rtl->buf) - len, @@ -1181,43 +1254,35 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, { int i; u32 len = 0; - struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); struct rtl8366_smi *smi = &rtl->smi; char *buf = rtl->buf; + int err; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; memset(buf, '\0', sizeof(rtl->buf)); - rtl8366rb_get_vlan_mc(smi, val->port_vlan, &vlanmc); - rtl8366rb_get_vlan_4k(smi, vlanmc.vid, &vlan4k); + err = rtl8366rb_get_vlan_4k(smi, val->port_vlan, &vlan4k); + if (err) + return err; - len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: ", - val->port_vlan); + len += snprintf(buf + len, sizeof(rtl->buf) - len, + "VLAN %d: Ports: '", vlan4k.vid); - for (i = 0; i < RTL8366_NUM_PORTS; ++i) { - int index = 0; - if (!rtl8366rb_get_port_vlan_index(smi, i, &index) && - index == val->port_vlan) - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d", i); + for (i = 0; i < RTL8366_NUM_PORTS; i++) { + if (!(vlan4k.member & (1 << i))) + continue; + + len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d%s", i, + (vlan4k.untag & (1 << i)) ? "" : "t"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); len += snprintf(buf + len, sizeof(rtl->buf) - len, - "\t\t vid \t prio \t member \t untag \t fid\n"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\tMC:\t"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d \t %d \t 0x%04x \t 0x%04x \t %d\n", - vlanmc.vid, vlanmc.priority, vlanmc.member, - vlanmc.untag, vlanmc.fid); - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\t4K:\t"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d \t \t 0x%04x \t 0x%04x \t %d", - vlan4k.vid, vlan4k.member, vlan4k.untag, vlan4k.fid); + "', members=%04x, untag=%04x, fid=%u", + vlan4k.member, vlan4k.untag, vlan4k.fid); val->value.s = buf; val->len = len; @@ -1315,24 +1380,24 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366_vlan_mc vlanmc; struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct switch_port *port; + struct rtl8366_vlan_4k vlan4k; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366rb_get_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366rb_get_vlan_4k(smi, val->port_vlan, &vlan4k); port = &val->value.ports[0]; val->len = 0; for (i = 0; i < RTL8366_NUM_PORTS; i++) { - if (!(vlanmc.member & BIT(i))) + if (!(vlan4k.member & BIT(i))) continue; port->id = i; - port->flags = (vlanmc.untag & BIT(i)) ? + port->flags = (vlan4k.untag & BIT(i)) ? 0 : BIT(SWITCH_PORT_FLAG_TAGGED); val->len++; port++; @@ -1343,47 +1408,36 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct rtl8366_vlan_mc vlanmc; - struct rtl8366_vlan_4k vlan4k; struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct switch_port *port; + u32 member = 0; + u32 untag = 0; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366rb_get_vlan_mc(smi, val->port_vlan, &vlanmc); - rtl8366rb_get_vlan_4k(smi, vlanmc.vid, &vlan4k); - - vlanmc.untag = 0; - vlanmc.member = 0; - port = &val->value.ports[0]; for (i = 0; i < val->len; i++, port++) { - vlanmc.member |= BIT(port->id); + member |= BIT(port->id); if (!(port->flags & BIT(SWITCH_PORT_FLAG_TAGGED))) - vlanmc.untag |= BIT(port->id); + untag |= BIT(port->id); } - vlan4k.member = vlanmc.member; - vlan4k.untag = vlanmc.untag; - - rtl8366rb_set_vlan_mc(smi, val->port_vlan, &vlanmc); - rtl8366rb_set_vlan_4k(smi, &vlan4k); - return 0; + return rtl8366rb_set_vlan(smi, val->port_vlan, member, untag, 0); } static int rtl8366rb_sw_get_port_pvid(struct switch_dev *dev, int port, int *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366rb_get_vlan_port_pvid(smi, port, val); + return rtl8366rb_get_pvid(smi, port, val); } static int rtl8366rb_sw_set_port_pvid(struct switch_dev *dev, int port, int val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366rb_set_vlan_port_pvid(smi, port, val); + return rtl8366rb_set_pvid(smi, port, val); } static int rtl8366rb_sw_reset_switch(struct switch_dev *dev) From 457682c8cadafc75be6062acab3a58025489e1f4 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:54:22 +0000 Subject: [PATCH 29/90] backfire: generic: rtl8366: update vlan handling code for rtl8366s (backport of r21922) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21941 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366s.c | 310 ++++++++++-------- 1 file changed, 182 insertions(+), 128 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 3bb0b549d..4e758e97c 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -630,8 +630,7 @@ static int rtl8366s_set_vlan_mc(struct rtl8366_smi *smi, u32 index, return 0; } -static int rtl8366s_get_port_vlan_index(struct rtl8366_smi *smi, int port, - int *val) +static int rtl8366s_get_mc_index(struct rtl8366_smi *smi, int port, int *val) { u32 data; int err; @@ -648,30 +647,9 @@ static int rtl8366s_get_port_vlan_index(struct rtl8366_smi *smi, int port, RTL8366S_PORT_VLAN_CTRL_MASK; return 0; - } -static int rtl8366s_get_vlan_port_pvid(struct rtl8366_smi *smi, int port, - int *val) -{ - struct rtl8366_vlan_mc vlanmc; - int err; - int index; - - err = rtl8366s_get_port_vlan_index(smi, port, &index); - if (err) - return err; - - err = rtl8366s_get_vlan_mc(smi, index, &vlanmc); - if (err) - return err; - - *val = vlanmc.vid; - return 0; -} - -static int rtl8366s_set_port_vlan_index(struct rtl8366_smi *smi, int port, - int index) +static int rtl8366s_set_mc_index(struct rtl8366_smi *smi, int port, int index) { if (port >= RTL8366_NUM_PORTS || index >= RTL8366_NUM_VLANS) return -EINVAL; @@ -683,74 +661,170 @@ static int rtl8366s_set_port_vlan_index(struct rtl8366_smi *smi, int port, RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); } -static int rtl8366s_set_vlan_port_pvid(struct rtl8366_smi *smi, int port, int val) +static int rtl8366s_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, + u32 untag, u32 fid) { - int i; - struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; + int err; + int i; - if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) - return -EINVAL; + /* Update the 4K table */ + err = rtl8366s_get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; - /* Updating the 4K entry; lookup it and change the port member set */ - rtl8366s_get_vlan_4k(smi, val, &vlan4k); - vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU); - vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU; - rtl8366s_set_vlan_4k(smi, &vlan4k); + vlan4k.member = member; + vlan4k.untag = untag; + vlan4k.fid = fid; + err = rtl8366s_set_vlan_4k(smi, &vlan4k); + if (err) + return err; - /* - * For the 16 entries more work needs to be done. First see if such - * VID is already there and change it - */ - for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366s_get_vlan_mc(smi, i, &vlanmc); + /* Try to find an existing MC entry for this VID */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + struct rtl8366_vlan_mc vlanmc; - /* Try to find an existing vid and update port member set */ - if (val == vlanmc.vid) { - vlanmc.member |= ((1 << port) | RTL8366_PORT_CPU); - rtl8366s_set_vlan_mc(smi, i, &vlanmc); + err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; - /* Now update PVID register settings */ - rtl8366s_set_port_vlan_index(smi, port, i); + if (vid == vlanmc.vid) { + /* update the MC entry */ + vlanmc.member = member; + vlanmc.untag = untag; + vlanmc.fid = fid; - return 0; + err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + break; } } - /* - * PVID could not be found from vlan table. Replace unused (one that - * has no member ports) with new one - */ - for (i = 0; i < RTL8366_NUM_VLANS; ++i) { - rtl8366s_get_vlan_mc(smi, i, &vlanmc); + return err; +} - /* - * See if this vlan member configuration is unused. It is - * unused if member set contains no ports or CPU port only - */ - if (!vlanmc.member || vlanmc.member == RTL8366_PORT_CPU) { - vlanmc.vid = val; - vlanmc.priority = 0; - vlanmc.untag = RTL8366_PORT_ALL_BUT_CPU; - vlanmc.member = ((1 << port) | RTL8366_PORT_CPU); - vlanmc.fid = 0; +static int rtl8366s_get_pvid(struct rtl8366_smi *smi, int port, int *val) +{ + struct rtl8366_vlan_mc vlanmc; + int err; + int index; - rtl8366s_set_vlan_mc(smi, i, &vlanmc); + err = rtl8366s_get_mc_index(smi, port, &index); + if (err) + return err; - /* Now update PVID register settings */ - rtl8366s_set_port_vlan_index(smi, port, i); + err = rtl8366s_get_vlan_mc(smi, index, &vlanmc); + if (err) + return err; - return 0; + *val = vlanmc.vid; + return 0; +} + +static int rtl8366s_mc_is_used(struct rtl8366_smi *smi, int mc_index, + int *used) +{ + int err; + int i; + + *used = 0; + for (i = 0; i < RTL8366_NUM_PORTS; i++) { + int index = 0; + + err = rtl8366s_get_mc_index(smi, i, &index); + if (err) + return err; + + if (mc_index == index) { + *used = 1; + break; + } + } + + return 0; +} + +static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, + unsigned vid) +{ + struct rtl8366_vlan_mc vlanmc; + struct rtl8366_vlan_4k vlan4k; + int err; + int i; + + /* Try to find an existing MC entry for this VID */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + if (vid == vlanmc.vid) { + err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = rtl8366s_set_mc_index(smi, port, i); + return err; + } + } + + /* We have no MC entry for this VID, try to find an empty one */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + if (vlanmc.vid == 0 && vlanmc.member == 0) { + /* Update the entry from the 4K table */ + err = rtl8366s_get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; + + vlanmc.vid = vid; + vlanmc.member = vlan4k.member; + vlanmc.untag = vlan4k.untag; + vlanmc.fid = vlan4k.fid; + err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = rtl8366s_set_mc_index(smi, port, i); + return err; + } + } + + /* MC table is full, try to find an unused entry and replace it */ + for (i = 0; i < RTL8366_NUM_VLANS; i++) { + int used; + + err = rtl8366s_mc_is_used(smi, i, &used); + if (err) + return err; + + if (!used) { + /* Update the entry from the 4K table */ + err = rtl8366s_get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; + + vlanmc.vid = vid; + vlanmc.member = vlan4k.member; + vlanmc.untag = vlan4k.untag; + vlanmc.fid = vlan4k.fid; + err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = rtl8366s_set_mc_index(smi, port, i); + return err; } } dev_err(smi->parent, - "All 16 vlan member configurations are in use\n"); + "all VLAN member configurations are in use\n"); - return -EINVAL; + return -ENOSPC; } - static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, @@ -766,12 +840,11 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) { - struct rtl8366_vlan_4k vlan4k; struct rtl8366_vlan_mc vlanmc; int err; int i; - /* clear 16 VLAN member configuration */ + /* clear VLAN member configurations */ vlanmc.vid = 0; vlanmc.priority = 0; vlanmc.member = 0; @@ -783,18 +856,18 @@ static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) return err; } - /* Set a default VLAN with vid 1 to 4K table for all ports */ - vlan4k.vid = 1; - vlan4k.member = RTL8366_PORT_ALL; - vlan4k.untag = RTL8366_PORT_ALL; - vlan4k.fid = 0; - err = rtl8366s_set_vlan_4k(smi, &vlan4k); - if (err) - return err; - - /* Set all ports PVID to default VLAN */ for (i = 0; i < RTL8366_NUM_PORTS; i++) { - err = rtl8366s_set_vlan_port_pvid(smi, i, 0); + if (i == RTL8366_PORT_CPU) + continue; + + err = rtl8366s_set_vlan(smi, (i + 1), + (1 << i) | RTL8366_PORT_CPU, + (1 << i) | RTL8366_PORT_CPU, + 0); + if (err) + return err; + + err = rtl8366s_set_pvid(smi, i, (i + 1)); if (err) return err; } @@ -872,7 +945,7 @@ static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, for (j = 0; j < RTL8366_NUM_PORTS; ++j) { int index = 0; - if (!rtl8366s_get_port_vlan_index(smi, j, &index)) { + if (!rtl8366s_get_mc_index(smi, j, &index)) { if (index == i) len += snprintf(buf + len, sizeof(rtl->buf) - len, @@ -1167,43 +1240,35 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, { int i; u32 len = 0; - struct rtl8366_vlan_mc vlanmc; struct rtl8366_vlan_4k vlan4k; struct rtl8366s *rtl = sw_to_rtl8366s(dev); struct rtl8366_smi *smi = &rtl->smi; char *buf = rtl->buf; + int err; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; memset(buf, '\0', sizeof(rtl->buf)); - rtl8366s_get_vlan_mc(smi, val->port_vlan, &vlanmc); - rtl8366s_get_vlan_4k(smi, vlanmc.vid, &vlan4k); + err = rtl8366s_get_vlan_4k(smi, val->port_vlan, &vlan4k); + if (err) + return err; - len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: ", - val->port_vlan); + len += snprintf(buf + len, sizeof(rtl->buf) - len, + "VLAN %d: Ports: '", vlan4k.vid); - for (i = 0; i < RTL8366_NUM_PORTS; ++i) { - int index = 0; - if (!rtl8366s_get_port_vlan_index(smi, i, &index) && - index == val->port_vlan) - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d", i); + for (i = 0; i < RTL8366_NUM_PORTS; i++) { + if (!(vlan4k.member & (1 << i))) + continue; + + len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d%s", i, + (vlan4k.untag & (1 << i)) ? "" : "t"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); len += snprintf(buf + len, sizeof(rtl->buf) - len, - "\t\t vid \t prio \t member \t untag \t fid\n"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\tMC:\t"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d \t %d \t 0x%04x \t 0x%04x \t %d\n", - vlanmc.vid, vlanmc.priority, vlanmc.member, - vlanmc.untag, vlanmc.fid); - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\t4K:\t"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "%d \t \t 0x%04x \t 0x%04x \t %d", - vlan4k.vid, vlan4k.member, vlan4k.untag, vlan4k.fid); + "', members=%04x, untag=%04x, fid=%u", + vlan4k.member, vlan4k.untag, vlan4k.fid); val->value.s = buf; val->len = len; @@ -1304,23 +1369,23 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - struct rtl8366_vlan_mc vlanmc; struct switch_port *port; + struct rtl8366_vlan_4k vlan4k; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366s_get_vlan_mc(smi, val->port_vlan, &vlanmc); + rtl8366s_get_vlan_4k(smi, val->port_vlan, &vlan4k); port = &val->value.ports[0]; val->len = 0; for (i = 0; i < RTL8366_NUM_PORTS; i++) { - if (!(vlanmc.member & BIT(i))) + if (!(vlan4k.member & BIT(i))) continue; port->id = i; - port->flags = (vlanmc.untag & BIT(i)) ? + port->flags = (vlan4k.untag & BIT(i)) ? 0 : BIT(SWITCH_PORT_FLAG_TAGGED); val->len++; port++; @@ -1332,46 +1397,35 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - struct rtl8366_vlan_mc vlanmc; - struct rtl8366_vlan_4k vlan4k; struct switch_port *port; + u32 member = 0; + u32 untag = 0; int i; if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) return -EINVAL; - rtl8366s_get_vlan_mc(smi, val->port_vlan, &vlanmc); - rtl8366s_get_vlan_4k(smi, vlanmc.vid, &vlan4k); - - vlanmc.untag = 0; - vlanmc.member = 0; - port = &val->value.ports[0]; for (i = 0; i < val->len; i++, port++) { - vlanmc.member |= BIT(port->id); + member |= BIT(port->id); if (!(port->flags & BIT(SWITCH_PORT_FLAG_TAGGED))) - vlanmc.untag |= BIT(port->id); + untag |= BIT(port->id); } - vlan4k.member = vlanmc.member; - vlan4k.untag = vlanmc.untag; - - rtl8366s_set_vlan_mc(smi, val->port_vlan, &vlanmc); - rtl8366s_set_vlan_4k(smi, &vlan4k); - return 0; + return rtl8366s_set_vlan(smi, val->port_vlan, member, untag, 0); } static int rtl8366s_sw_get_port_pvid(struct switch_dev *dev, int port, int *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366s_get_vlan_port_pvid(smi, port, val); + return rtl8366s_get_pvid(smi, port, val); } static int rtl8366s_sw_set_port_pvid(struct switch_dev *dev, int port, int val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366s_set_vlan_port_pvid(smi, port, val); + return rtl8366s_set_pvid(smi, port, val); } static int rtl8366s_sw_reset_switch(struct switch_dev *dev) From 61406f679aafe05b3f3d0e5f5e4bb4f6633c3c90 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 26 Jun 2010 19:54:27 +0000 Subject: [PATCH 30/90] backfire: generic: rtl8366: rename vlan debugfs file to vlan_mc, and clean up it's format (backport of r21923) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21942 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 39 +++++++------------ .../files/drivers/net/phy/rtl8366s.c | 39 +++++++------------ 2 files changed, 26 insertions(+), 52 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index d1c2a69cb..2105b2bd4 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -932,20 +932,18 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, return simple_read_from_buffer(user_buf, count, ppos, buf, len); } -static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rtl8366rb_read_debugfs_vlan_mc(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) { struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; struct rtl8366_smi *smi = &rtl->smi; - int i, j, len = 0; + int i, len = 0; char *buf = rtl->buf; len += snprintf(buf + len, sizeof(rtl->buf) - len, - "VLAN Member Config:\n"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "\t id \t vid \t prio \t member \t untag \t fid " - "\tports\n"); + "%2s %6s %4s %6s %6s %3s\n", + "id", "vid","prio", "member", "untag", "fid"); for (i = 0; i < RTL8366_NUM_VLANS; ++i) { struct rtl8366_vlan_mc vlanmc; @@ -953,20 +951,9 @@ static ssize_t rtl8366rb_read_debugfs_vlan(struct file *file, rtl8366rb_get_vlan_mc(smi, i, &vlanmc); len += snprintf(buf + len, sizeof(rtl->buf) - len, - "\t[%d] \t %d \t %d \t 0x%04x \t 0x%04x \t %d " - "\t", i, vlanmc.vid, vlanmc.priority, + "%2d %6d %4d 0x%04x 0x%04x %3d\n", + i, vlanmc.vid, vlanmc.priority, vlanmc.member, vlanmc.untag, vlanmc.fid); - - for (j = 0; j < RTL8366_NUM_PORTS; ++j) { - int index = 0; - if (!rtl8366rb_get_mc_index(smi, j, &index)) { - if (index == i) - len += snprintf(buf + len, - sizeof(rtl->buf) - len, - "%d", j); - } - } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); } return simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -1041,8 +1028,8 @@ static const struct file_operations fops_rtl8366rb_regs = { .owner = THIS_MODULE }; -static const struct file_operations fops_rtl8366rb_vlan = { - .read = rtl8366rb_read_debugfs_vlan, +static const struct file_operations fops_rtl8366rb_vlan_mc = { + .read = rtl8366rb_read_debugfs_vlan_mc, .open = rtl8366rb_debugfs_open, .owner = THIS_MODULE }; @@ -1082,11 +1069,11 @@ static void rtl8366rb_debugfs_init(struct rtl8366rb *rtl) return; } - node = debugfs_create_file("vlan", S_IRUSR, root, rtl, - &fops_rtl8366rb_vlan); + node = debugfs_create_file("vlan_mc", S_IRUSR, root, rtl, + &fops_rtl8366rb_vlan_mc); if (!node) { dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "vlan"); + "vlan_mc"); return; } diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 4e758e97c..da8fe556c 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -918,20 +918,18 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, return simple_read_from_buffer(user_buf, count, ppos, buf, len); } -static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rtl8366s_read_debugfs_vlan_mc(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) { struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; struct rtl8366_smi *smi = &rtl->smi; - int i, j, len = 0; + int i, len = 0; char *buf = rtl->buf; len += snprintf(buf + len, sizeof(rtl->buf) - len, - "VLAN Member Config:\n"); - len += snprintf(buf + len, sizeof(rtl->buf) - len, - "\t id \t vid \t prio \t member \t untag \t fid " - "\tports\n"); + "%2s %6s %4s %6s %6s %3s\n", + "id", "vid","prio", "member", "untag", "fid"); for (i = 0; i < RTL8366_NUM_VLANS; ++i) { struct rtl8366_vlan_mc vlanmc; @@ -939,20 +937,9 @@ static ssize_t rtl8366s_read_debugfs_vlan(struct file *file, rtl8366s_get_vlan_mc(smi, i, &vlanmc); len += snprintf(buf + len, sizeof(rtl->buf) - len, - "\t[%d] \t %d \t %d \t 0x%04x \t 0x%04x \t %d " - "\t", i, vlanmc.vid, vlanmc.priority, + "%2d %6d %4d 0x%04x 0x%04x %3d\n", + i, vlanmc.vid, vlanmc.priority, vlanmc.member, vlanmc.untag, vlanmc.fid); - - for (j = 0; j < RTL8366_NUM_PORTS; ++j) { - int index = 0; - if (!rtl8366s_get_mc_index(smi, j, &index)) { - if (index == i) - len += snprintf(buf + len, - sizeof(rtl->buf) - len, - "%d", j); - } - } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); } return simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -1027,8 +1014,8 @@ static const struct file_operations fops_rtl8366s_regs = { .owner = THIS_MODULE }; -static const struct file_operations fops_rtl8366s_vlan = { - .read = rtl8366s_read_debugfs_vlan, +static const struct file_operations fops_rtl8366s_vlan_mc = { + .read = rtl8366s_read_debugfs_vlan_mc, .open = rtl8366s_debugfs_open, .owner = THIS_MODULE }; @@ -1068,11 +1055,11 @@ static void rtl8366s_debugfs_init(struct rtl8366s *rtl) return; } - node = debugfs_create_file("vlan", S_IRUSR, root, rtl, - &fops_rtl8366s_vlan); + node = debugfs_create_file("vlan_mc", S_IRUSR, root, rtl, + &fops_rtl8366s_vlan_mc); if (!node) { dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "vlan"); + "vlan_mc"); return; } From d11ba9cedeb241b23adee163378e9d235d4ac42e Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 27 Jun 2010 16:50:34 +0000 Subject: [PATCH 31/90] backfire: generic: rtl8366rb: fix MIB counter reset (backport of r21969) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21970 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 2105b2bd4..61d6e3ab6 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -91,13 +91,10 @@ #define RTL8366S_MIB_COUNTER_BASE 0x1000 #define RTL8366S_MIB_CTRL_REG 0x13F0 #define RTL8366S_MIB_CTRL_USER_MASK 0x0FFC -#define RTL8366S_MIB_CTRL_BUSY_MASK 0x0001 -#define RTL8366S_MIB_CTRL_RESET_MASK 0x0001 - -#define RTL8366S_MIB_CTRL_GLOBAL_RESET_MASK 0x0004 -#define RTL8366S_MIB_CTRL_PORT_RESET_BIT 0x0003 -#define RTL8366S_MIB_CTRL_PORT_RESET_MASK 0x01FC - +#define RTL8366S_MIB_CTRL_BUSY_MASK BIT(0) +#define RTL8366S_MIB_CTRL_RESET_MASK BIT(1) +#define RTL8366S_MIB_CTRL_PORT_RESET(_p) BIT(2 + (_p)) +#define RTL8366S_MIB_CTRL_GLOBAL_RESET BIT(11) #define RTL8366S_PORT_VLAN_CTRL_BASE 0x0063 #define RTL8366S_PORT_VLAN_CTRL_REG(_p) \ @@ -1107,7 +1104,8 @@ static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev, int err = 0; if (val->value.i == 1) - err = rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, 0, (1 << 2)); + err = rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, 0, + RTL8366S_MIB_CTRL_GLOBAL_RESET); return err; } @@ -1327,8 +1325,8 @@ static int rtl8366rb_sw_reset_port_mibs(struct switch_dev *dev, if (val->port_vlan >= RTL8366_NUM_PORTS) return -EINVAL; - return rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, - 0, (1 << (val->port_vlan + 3))); + return rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, 0, + RTL8366S_MIB_CTRL_PORT_RESET(val->port_vlan)); } static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, From 5e2a0339ce9513ec43688df0009947121559c2c0 Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 30 Jun 2010 21:26:37 +0000 Subject: [PATCH 32/90] [backfire] merge r21998 and r22000 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22001 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/hostapd/files/hostapd.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/package/hostapd/files/hostapd.sh b/package/hostapd/files/hostapd.sh index a41c7678a..fdb047be6 100644 --- a/package/hostapd/files/hostapd.sh +++ b/package/hostapd/files/hostapd.sh @@ -7,6 +7,9 @@ hostapd_set_bss_options() { config_get wpa_group_rekey "$vif" wpa_group_rekey config_get_bool ap_isolate "$vif" isolate 0 + config_get device "$vif" device + config_get hwmode "$device" hwmode + if [ "$ap_isolate" -gt 0 ]; then append "$var" "ap_isolate=$ap_isolate" "$N" fi @@ -38,11 +41,16 @@ hostapd_set_bss_options() { # explicit override for crypto setting case "$enc" in - *tkip+aes|*tkip+ccmp) crypto="CCMP TKIP";; + *tkip+aes|*tkip+ccmp|*aes+tkip|*ccmp+tkip) crypto="CCMP TKIP";; *aes|*ccmp) crypto="CCMP";; *tkip) crypto="TKIP";; esac + # enforce CCMP for 11ng and 11na + case "$hwmode" in + *ng|*na) crypto="CCMP";; + esac + # use crypto/auth settings for building the hostapd config case "$enc" in *psk*) From d0472aaea3c4c284439a95cab9259e456fbdf21d Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 30 Jun 2010 23:47:42 +0000 Subject: [PATCH 33/90] [backfire] merge r22003 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22004 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/Makefile | 2 +- package/base-files/files/etc/hotplug.d/iface/10-routes | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package/base-files/Makefile b/package/base-files/Makefile index fba3b51a3..24169afec 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=base-files -PKG_RELEASE:=43.1 +PKG_RELEASE:=43.2 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ diff --git a/package/base-files/files/etc/hotplug.d/iface/10-routes b/package/base-files/files/etc/hotplug.d/iface/10-routes index 14fb75eec..3e0bebbbe 100644 --- a/package/base-files/files/etc/hotplug.d/iface/10-routes +++ b/package/base-files/files/etc/hotplug.d/iface/10-routes @@ -13,6 +13,7 @@ add_route() { config_get netmask "$config" netmask config_get gateway "$config" gateway config_get metric "$config" metric + config_get mtu "$config" mtu # make sure there is a gateway and a target [ -n "$target" ] || { @@ -33,7 +34,8 @@ add_route() { dest="${dest:--host "$target"}" /sbin/route add $dest ${gateway:+gw "$gateway"} \ - ${dev:+dev "$dev"} ${metric:+ metric "$metric"} + ${dev:+dev "$dev"} ${metric:+ metric "$metric"} \ + ${mtu:+mss "$mtu"} } add_route6() { @@ -50,6 +52,7 @@ add_route6() { config_get target "$config" target config_get gateway "$config" gateway config_get metric "$config" metric + config_get mtu "$config" mtu # make sure there is a gateway and a target [ -n "$target" ] || { @@ -61,7 +64,8 @@ add_route6() { } /sbin/route -A inet6 add $target ${gateway:+gw "$gateway"} \ - ${dev:+dev "$dev"} ${metric:+ metric "$metric"} + ${dev:+dev "$dev"} ${metric:+ metric "$metric"} \ + ${mtu:+mss "$mtu"} } case "$ACTION" in From abce4800c9650fbed2de596712745772e93d3d89 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:07:46 +0000 Subject: [PATCH 34/90] backfire: rt2x00: cleanup patches (backport of r21975) Remove 601-rt2x00-remove-mcu-requests-for-soc.patch as an equivalent patch is already included in upstream. Add 601-rt2x00-fix-hang-on-ifdown.patch which is not suitable for upstream inclusion but fixes a hang on ifdown under some circumstances and thus also fixes AP mode operation in OpenWRT. Signed-off-by: Helmut Schaa git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22021 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/Makefile | 2 +- .../601-rt2x00-fix-hang-on-ifdown.patch | 34 +++++++++++++++++++ ...1-rt2x00-remove-mcu-requests-for-soc.patch | 29 ---------------- 3 files changed, 35 insertions(+), 30 deletions(-) create mode 100644 package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch delete mode 100644 package/mac80211/patches/601-rt2x00-remove-mcu-requests-for-soc.patch diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 5ba92e4ec..02759e1dc 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 PKG_VERSION:=2010-06-10 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources # http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \ # http://wireless.kernel.org/download/compat-wireless-2.6 diff --git a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch new file mode 100644 index 000000000..a584d0009 --- /dev/null +++ b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch @@ -0,0 +1,34 @@ +From 27ed5ec6924c17b76d65b697a162bafee7bd8e4e Mon Sep 17 00:00:00 2001 +From: Helmut Schaa +Date: Mon, 21 Jun 2010 10:03:05 +0200 +Subject: [PATCH] rt2x00: fix rt2800pci hang on ifdown + +rt2800pci hangs the system on rt305x SoC devices on ifdown. Work around +this issue by disabling TX DMA prior to restting the TX queue indices. + +This patch is not suitable for upstream inclusion but is just meant as +a workaround until a proper solution is implemented. + +Signed-off-by: Helmut Schaa +--- + drivers/net/wireless/rt2x00/rt2800pci.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c +index 165da7b..bb35350 100644 +--- a/drivers/net/wireless/rt2x00/rt2800pci.c ++++ b/drivers/net/wireless/rt2x00/rt2800pci.c +@@ -737,6 +737,10 @@ static void rt2800pci_kill_tx_queue(struct rt2x00_dev *rt2x00dev, + rt2800_register_write(rt2x00dev, BCN_TIME_CFG, 0); + return; + } ++ ++ rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); ++ rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); ++ rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); + + rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, ®); + rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, (qid == QID_AC_BE)); +-- +1.6.4.2 + diff --git a/package/mac80211/patches/601-rt2x00-remove-mcu-requests-for-soc.patch b/package/mac80211/patches/601-rt2x00-remove-mcu-requests-for-soc.patch deleted file mode 100644 index e743af3d3..000000000 --- a/package/mac80211/patches/601-rt2x00-remove-mcu-requests-for-soc.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f18d4463d092162f34a8bd226505627ceeac3e8a Mon Sep 17 00:00:00 2001 -From: Luis Correia -Date: Sat, 3 Apr 2010 12:49:53 +0100 -Subject: [PATCH] rt2x00: remove MCU requests for SoC platforms - -The ralink SoC platforms do not have an MCU. - -Signed-off-by: Luis Correia -Acked-by: Ivo van Doorn -Signed-off-by: Gertjan van Wingerde ---- - drivers/net/wireless/rt2x00/rt2800pci.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/rt2x00/rt2800pci.c -+++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -66,6 +66,12 @@ static void rt2800pci_mcu_status(struct - if (rt2x00_is_soc(rt2x00dev)) - return; - -+ /* -+ * SOC devices don't support MCU requests. -+ */ -+ if (rt2x00_is_soc(rt2x00dev)) -+ return; -+ - for (i = 0; i < 200; i++) { - rt2800_register_read(rt2x00dev, H2M_MAILBOX_CID, ®); - From 7cde79a5ed77fa1ced767ac084b0280ceeb32436 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:07:55 +0000 Subject: [PATCH 35/90] backfire: generic: rtl8366: use RTL8366{S,RB} prefixes for all defines (backport of 21976) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22022 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 472 +++++++++--------- .../files/drivers/net/phy/rtl8366s.c | 324 ++++++------ 2 files changed, 398 insertions(+), 398 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 61d6e3ab6..3edfbc61c 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -24,141 +24,141 @@ #include #endif -#define RTL8366S_DRIVER_DESC "Realtek RTL8366RB ethernet switch driver" -#define RTL8366S_DRIVER_VER "0.2.2" +#define RTL8366RB_DRIVER_DESC "Realtek RTL8366RB ethernet switch driver" +#define RTL8366RB_DRIVER_VER "0.2.2" -#define RTL8366S_PHY_NO_MAX 4 -#define RTL8366S_PHY_PAGE_MAX 7 -#define RTL8366S_PHY_ADDR_MAX 31 +#define RTL8366RB_PHY_NO_MAX 4 +#define RTL8366RB_PHY_PAGE_MAX 7 +#define RTL8366RB_PHY_ADDR_MAX 31 -#define RTL8366_CHIP_GLOBAL_CTRL_REG 0x0000 -#define RTL8366_CHIP_CTRL_VLAN (1 << 13) -#define RTL8366_CHIP_CTRL_VLAN_4KTB (1 << 14) +#define RTL8366RB_CHIP_GLOBAL_CTRL_REG 0x0000 +#define RTL8366RB_CHIP_CTRL_VLAN (1 << 13) +#define RTL8366RB_CHIP_CTRL_VLAN_4KTB (1 << 14) /* Switch Global Configuration register */ -#define RTL8366_SGCR 0x0000 -#define RTL8366_SGCR_EN_BC_STORM_CTRL BIT(0) -#define RTL8366_SGCR_MAX_LENGTH(_x) (_x << 4) -#define RTL8366_SGCR_MAX_LENGTH_MASK RTL8366_SGCR_MAX_LENGTH(0x3) -#define RTL8366_SGCR_MAX_LENGTH_1522 RTL8366_SGCR_MAX_LENGTH(0x0) -#define RTL8366_SGCR_MAX_LENGTH_1536 RTL8366_SGCR_MAX_LENGTH(0x1) -#define RTL8366_SGCR_MAX_LENGTH_1552 RTL8366_SGCR_MAX_LENGTH(0x2) -#define RTL8366_SGCR_MAX_LENGTH_9216 RTL8366_SGCR_MAX_LENGTH(0x3) +#define RTL8366RB_SGCR 0x0000 +#define RTL8366RB_SGCR_EN_BC_STORM_CTRL BIT(0) +#define RTL8366RB_SGCR_MAX_LENGTH(_x) (_x << 4) +#define RTL8366RB_SGCR_MAX_LENGTH_MASK RTL8366RB_SGCR_MAX_LENGTH(0x3) +#define RTL8366RB_SGCR_MAX_LENGTH_1522 RTL8366RB_SGCR_MAX_LENGTH(0x0) +#define RTL8366RB_SGCR_MAX_LENGTH_1536 RTL8366RB_SGCR_MAX_LENGTH(0x1) +#define RTL8366RB_SGCR_MAX_LENGTH_1552 RTL8366RB_SGCR_MAX_LENGTH(0x2) +#define RTL8366RB_SGCR_MAX_LENGTH_9216 RTL8366RB_SGCR_MAX_LENGTH(0x3) /* Port Enable Control register */ -#define RTL8366_PECR 0x0001 +#define RTL8366RB_PECR 0x0001 /* Switch Security Control registers */ -#define RTL8366_SSCR0 0x0002 -#define RTL8366_SSCR1 0x0003 -#define RTL8366_SSCR2 0x0004 -#define RTL8366_SSCR2_DROP_UNKNOWN_DA BIT(0) +#define RTL8366RB_SSCR0 0x0002 +#define RTL8366RB_SSCR1 0x0003 +#define RTL8366RB_SSCR2 0x0004 +#define RTL8366RB_SSCR2_DROP_UNKNOWN_DA BIT(0) -#define RTL8366_RESET_CTRL_REG 0x0100 -#define RTL8366_CHIP_CTRL_RESET_HW 1 -#define RTL8366_CHIP_CTRL_RESET_SW (1 << 1) +#define RTL8366RB_RESET_CTRL_REG 0x0100 +#define RTL8366RB_CHIP_CTRL_RESET_HW 1 +#define RTL8366RB_CHIP_CTRL_RESET_SW (1 << 1) -#define RTL8366S_CHIP_VERSION_CTRL_REG 0x050A -#define RTL8366S_CHIP_VERSION_MASK 0xf -#define RTL8366S_CHIP_ID_REG 0x0509 -#define RTL8366S_CHIP_ID_8366 0x5937 +#define RTL8366RB_CHIP_VERSION_CTRL_REG 0x050A +#define RTL8366RB_CHIP_VERSION_MASK 0xf +#define RTL8366RB_CHIP_ID_REG 0x0509 +#define RTL8366RB_CHIP_ID_8366 0x5937 /* PHY registers control */ -#define RTL8366S_PHY_ACCESS_CTRL_REG 0x8000 -#define RTL8366S_PHY_ACCESS_DATA_REG 0x8002 +#define RTL8366RB_PHY_ACCESS_CTRL_REG 0x8000 +#define RTL8366RB_PHY_ACCESS_DATA_REG 0x8002 -#define RTL8366S_PHY_CTRL_READ 1 -#define RTL8366S_PHY_CTRL_WRITE 0 +#define RTL8366RB_PHY_CTRL_READ 1 +#define RTL8366RB_PHY_CTRL_WRITE 0 -#define RTL8366S_PHY_REG_MASK 0x1f -#define RTL8366S_PHY_PAGE_OFFSET 5 -#define RTL8366S_PHY_PAGE_MASK (0xf << 5) -#define RTL8366S_PHY_NO_OFFSET 9 -#define RTL8366S_PHY_NO_MASK (0x1f << 9) +#define RTL8366RB_PHY_REG_MASK 0x1f +#define RTL8366RB_PHY_PAGE_OFFSET 5 +#define RTL8366RB_PHY_PAGE_MASK (0xf << 5) +#define RTL8366RB_PHY_NO_OFFSET 9 +#define RTL8366RB_PHY_NO_MASK (0x1f << 9) /* LED control registers */ -#define RTL8366_LED_BLINKRATE_REG 0x0430 -#define RTL8366_LED_BLINKRATE_BIT 0 -#define RTL8366_LED_BLINKRATE_MASK 0x0007 +#define RTL8366RB_LED_BLINKRATE_REG 0x0430 +#define RTL8366RB_LED_BLINKRATE_BIT 0 +#define RTL8366RB_LED_BLINKRATE_MASK 0x0007 -#define RTL8366_LED_CTRL_REG 0x0431 -#define RTL8366_LED_0_1_CTRL_REG 0x0432 -#define RTL8366_LED_2_3_CTRL_REG 0x0433 +#define RTL8366RB_LED_CTRL_REG 0x0431 +#define RTL8366RB_LED_0_1_CTRL_REG 0x0432 +#define RTL8366RB_LED_2_3_CTRL_REG 0x0433 -#define RTL8366S_MIB_COUNT 33 -#define RTL8366S_GLOBAL_MIB_COUNT 1 -#define RTL8366S_MIB_COUNTER_PORT_OFFSET 0x0050 -#define RTL8366S_MIB_COUNTER_BASE 0x1000 -#define RTL8366S_MIB_CTRL_REG 0x13F0 -#define RTL8366S_MIB_CTRL_USER_MASK 0x0FFC -#define RTL8366S_MIB_CTRL_BUSY_MASK BIT(0) -#define RTL8366S_MIB_CTRL_RESET_MASK BIT(1) -#define RTL8366S_MIB_CTRL_PORT_RESET(_p) BIT(2 + (_p)) -#define RTL8366S_MIB_CTRL_GLOBAL_RESET BIT(11) +#define RTL8366RB_MIB_COUNT 33 +#define RTL8366RB_GLOBAL_MIB_COUNT 1 +#define RTL8366RB_MIB_COUNTER_PORT_OFFSET 0x0050 +#define RTL8366RB_MIB_COUNTER_BASE 0x1000 +#define RTL8366RB_MIB_CTRL_REG 0x13F0 +#define RTL8366RB_MIB_CTRL_USER_MASK 0x0FFC +#define RTL8366RB_MIB_CTRL_BUSY_MASK BIT(0) +#define RTL8366RB_MIB_CTRL_RESET_MASK BIT(1) +#define RTL8366RB_MIB_CTRL_PORT_RESET(_p) BIT(2 + (_p)) +#define RTL8366RB_MIB_CTRL_GLOBAL_RESET BIT(11) -#define RTL8366S_PORT_VLAN_CTRL_BASE 0x0063 -#define RTL8366S_PORT_VLAN_CTRL_REG(_p) \ - (RTL8366S_PORT_VLAN_CTRL_BASE + (_p) / 4) -#define RTL8366S_PORT_VLAN_CTRL_MASK 0xf -#define RTL8366S_PORT_VLAN_CTRL_SHIFT(_p) (4 * ((_p) % 4)) +#define RTL8366RB_PORT_VLAN_CTRL_BASE 0x0063 +#define RTL8366RB_PORT_VLAN_CTRL_REG(_p) \ + (RTL8366RB_PORT_VLAN_CTRL_BASE + (_p) / 4) +#define RTL8366RB_PORT_VLAN_CTRL_MASK 0xf +#define RTL8366RB_PORT_VLAN_CTRL_SHIFT(_p) (4 * ((_p) % 4)) -#define RTL8366S_VLAN_TABLE_READ_BASE 0x018C -#define RTL8366S_VLAN_TABLE_WRITE_BASE 0x0185 +#define RTL8366RB_VLAN_TABLE_READ_BASE 0x018C +#define RTL8366RB_VLAN_TABLE_WRITE_BASE 0x0185 -#define RTL8366S_TABLE_ACCESS_CTRL_REG 0x0180 -#define RTL8366S_TABLE_VLAN_READ_CTRL 0x0E01 -#define RTL8366S_TABLE_VLAN_WRITE_CTRL 0x0F01 +#define RTL8366RB_TABLE_ACCESS_CTRL_REG 0x0180 +#define RTL8366RB_TABLE_VLAN_READ_CTRL 0x0E01 +#define RTL8366RB_TABLE_VLAN_WRITE_CTRL 0x0F01 -#define RTL8366S_VLAN_MEMCONF_BASE 0x0020 +#define RTL8366RB_VLAN_MEMCONF_BASE 0x0020 -#define RTL8366S_PORT_LINK_STATUS_BASE 0x0014 -#define RTL8366S_PORT_STATUS_SPEED_MASK 0x0003 -#define RTL8366S_PORT_STATUS_DUPLEX_MASK 0x0004 -#define RTL8366S_PORT_STATUS_LINK_MASK 0x0010 -#define RTL8366S_PORT_STATUS_TXPAUSE_MASK 0x0020 -#define RTL8366S_PORT_STATUS_RXPAUSE_MASK 0x0040 -#define RTL8366S_PORT_STATUS_AN_MASK 0x0080 +#define RTL8366RB_PORT_LINK_STATUS_BASE 0x0014 +#define RTL8366RB_PORT_STATUS_SPEED_MASK 0x0003 +#define RTL8366RB_PORT_STATUS_DUPLEX_MASK 0x0004 +#define RTL8366RB_PORT_STATUS_LINK_MASK 0x0010 +#define RTL8366RB_PORT_STATUS_TXPAUSE_MASK 0x0020 +#define RTL8366RB_PORT_STATUS_RXPAUSE_MASK 0x0040 +#define RTL8366RB_PORT_STATUS_AN_MASK 0x0080 -#define RTL8366_PORT_NUM_CPU 5 -#define RTL8366_NUM_PORTS 6 -#define RTL8366_NUM_VLANS 16 -#define RTL8366_NUM_LEDGROUPS 4 -#define RTL8366_NUM_VIDS 4096 -#define RTL8366S_PRIORITYMAX 7 -#define RTL8366S_FIDMAX 7 +#define RTL8366RB_PORT_NUM_CPU 5 +#define RTL8366RB_NUM_PORTS 6 +#define RTL8366RB_NUM_VLANS 16 +#define RTL8366RB_NUM_LEDGROUPS 4 +#define RTL8366RB_NUM_VIDS 4096 +#define RTL8366RB_PRIORITYMAX 7 +#define RTL8366RB_FIDMAX 7 -#define RTL8366_PORT_1 (1 << 0) /* In userspace port 0 */ -#define RTL8366_PORT_2 (1 << 1) /* In userspace port 1 */ -#define RTL8366_PORT_3 (1 << 2) /* In userspace port 2 */ -#define RTL8366_PORT_4 (1 << 3) /* In userspace port 3 */ -#define RTL8366_PORT_5 (1 << 4) /* In userspace port 4 */ +#define RTL8366RB_PORT_1 (1 << 0) /* In userspace port 0 */ +#define RTL8366RB_PORT_2 (1 << 1) /* In userspace port 1 */ +#define RTL8366RB_PORT_3 (1 << 2) /* In userspace port 2 */ +#define RTL8366RB_PORT_4 (1 << 3) /* In userspace port 3 */ +#define RTL8366RB_PORT_5 (1 << 4) /* In userspace port 4 */ -#define RTL8366_PORT_CPU (1 << 5) /* CPU port */ +#define RTL8366RB_PORT_CPU (1 << 5) /* CPU port */ -#define RTL8366_PORT_ALL (RTL8366_PORT_1 | \ - RTL8366_PORT_2 | \ - RTL8366_PORT_3 | \ - RTL8366_PORT_4 | \ - RTL8366_PORT_5 | \ - RTL8366_PORT_CPU) +#define RTL8366RB_PORT_ALL (RTL8366RB_PORT_1 | \ + RTL8366RB_PORT_2 | \ + RTL8366RB_PORT_3 | \ + RTL8366RB_PORT_4 | \ + RTL8366RB_PORT_5 | \ + RTL8366RB_PORT_CPU) -#define RTL8366_PORT_ALL_BUT_CPU (RTL8366_PORT_1 | \ - RTL8366_PORT_2 | \ - RTL8366_PORT_3 | \ - RTL8366_PORT_4 | \ - RTL8366_PORT_5) +#define RTL8366RB_PORT_ALL_BUT_CPU (RTL8366RB_PORT_1 | \ + RTL8366RB_PORT_2 | \ + RTL8366RB_PORT_3 | \ + RTL8366RB_PORT_4 | \ + RTL8366RB_PORT_5) -#define RTL8366_PORT_ALL_EXTERNAL (RTL8366_PORT_1 | \ - RTL8366_PORT_2 | \ - RTL8366_PORT_3 | \ - RTL8366_PORT_4) +#define RTL8366RB_PORT_ALL_EXTERNAL (RTL8366RB_PORT_1 | \ + RTL8366RB_PORT_2 | \ + RTL8366RB_PORT_3 | \ + RTL8366RB_PORT_4) -#define RTL8366_PORT_ALL_INTERNAL RTL8366_PORT_CPU +#define RTL8366RB_PORT_ALL_INTERNAL RTL8366RB_PORT_CPU struct rtl8366rb { struct device *parent; @@ -201,7 +201,7 @@ struct mib_counter { const char *name; }; -static struct mib_counter rtl8366rb_mib_counters[RTL8366S_MIB_COUNT] = { +static struct mib_counter rtl8366rb_mib_counters[RTL8366RB_MIB_COUNT] = { { 0, 4, "IfInOctets" }, { 4, 4, "EtherStatsOctets" }, { 8, 2, "EtherStatsUnderSizePkts" }, @@ -272,14 +272,14 @@ static int rtl8366rb_reset_chip(struct rtl8366_smi *smi) int timeout = 10; u32 data; - rtl8366_smi_write_reg(smi, RTL8366_RESET_CTRL_REG, - RTL8366_CHIP_CTRL_RESET_HW); + rtl8366_smi_write_reg(smi, RTL8366RB_RESET_CTRL_REG, + RTL8366RB_CHIP_CTRL_RESET_HW); do { msleep(1); - if (rtl8366_smi_read_reg(smi, RTL8366_RESET_CTRL_REG, &data)) + if (rtl8366_smi_read_reg(smi, RTL8366RB_RESET_CTRL_REG, &data)) return -EIO; - if (!(data & RTL8366_CHIP_CTRL_RESET_HW)) + if (!(data & RTL8366RB_CHIP_CTRL_RESET_HW)) break; } while (--timeout); @@ -296,20 +296,20 @@ static int rtl8366rb_hw_init(struct rtl8366_smi *smi) int err; /* set maximum packet length to 1536 bytes */ - REG_RMW(smi, RTL8366_SGCR, RTL8366_SGCR_MAX_LENGTH_MASK, - RTL8366_SGCR_MAX_LENGTH_1536); + REG_RMW(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_MAX_LENGTH_MASK, + RTL8366RB_SGCR_MAX_LENGTH_1536); /* enable all ports */ - REG_WR(smi, RTL8366_PECR, 0); + REG_WR(smi, RTL8366RB_PECR, 0); /* disable learning for all ports */ - REG_WR(smi, RTL8366_SSCR0, RTL8366_PORT_ALL); + REG_WR(smi, RTL8366RB_SSCR0, RTL8366RB_PORT_ALL); /* disable auto ageing for all ports */ - REG_WR(smi, RTL8366_SSCR1, RTL8366_PORT_ALL); + REG_WR(smi, RTL8366RB_SSCR1, RTL8366RB_PORT_ALL); /* don't drop packets whose DA has not been learned */ - REG_RMW(smi, RTL8366_SSCR2, RTL8366_SSCR2_DROP_UNKNOWN_DA, 0); + REG_RMW(smi, RTL8366RB_SSCR2, RTL8366RB_SSCR2_DROP_UNKNOWN_DA, 0); return 0; } @@ -320,29 +320,29 @@ static int rtl8366rb_read_phy_reg(struct rtl8366_smi *smi, u32 reg; int ret; - if (phy_no > RTL8366S_PHY_NO_MAX) + if (phy_no > RTL8366RB_PHY_NO_MAX) return -EINVAL; - if (page > RTL8366S_PHY_PAGE_MAX) + if (page > RTL8366RB_PHY_PAGE_MAX) return -EINVAL; - if (addr > RTL8366S_PHY_ADDR_MAX) + if (addr > RTL8366RB_PHY_ADDR_MAX) return -EINVAL; - ret = rtl8366_smi_write_reg(smi, RTL8366S_PHY_ACCESS_CTRL_REG, - RTL8366S_PHY_CTRL_READ); + ret = rtl8366_smi_write_reg(smi, RTL8366RB_PHY_ACCESS_CTRL_REG, + RTL8366RB_PHY_CTRL_READ); if (ret) return ret; - reg = 0x8000 | (1 << (phy_no + RTL8366S_PHY_NO_OFFSET)) | - ((page << RTL8366S_PHY_PAGE_OFFSET) & RTL8366S_PHY_PAGE_MASK) | - (addr & RTL8366S_PHY_REG_MASK); + reg = 0x8000 | (1 << (phy_no + RTL8366RB_PHY_NO_OFFSET)) | + ((page << RTL8366RB_PHY_PAGE_OFFSET) & RTL8366RB_PHY_PAGE_MASK) | + (addr & RTL8366RB_PHY_REG_MASK); ret = rtl8366_smi_write_reg(smi, reg, 0); if (ret) return ret; - ret = rtl8366_smi_read_reg(smi, RTL8366S_PHY_ACCESS_DATA_REG, data); + ret = rtl8366_smi_read_reg(smi, RTL8366RB_PHY_ACCESS_DATA_REG, data); if (ret) return ret; @@ -355,23 +355,23 @@ static int rtl8366rb_write_phy_reg(struct rtl8366_smi *smi, u32 reg; int ret; - if (phy_no > RTL8366S_PHY_NO_MAX) + if (phy_no > RTL8366RB_PHY_NO_MAX) return -EINVAL; - if (page > RTL8366S_PHY_PAGE_MAX) + if (page > RTL8366RB_PHY_PAGE_MAX) return -EINVAL; - if (addr > RTL8366S_PHY_ADDR_MAX) + if (addr > RTL8366RB_PHY_ADDR_MAX) return -EINVAL; - ret = rtl8366_smi_write_reg(smi, RTL8366S_PHY_ACCESS_CTRL_REG, - RTL8366S_PHY_CTRL_WRITE); + ret = rtl8366_smi_write_reg(smi, RTL8366RB_PHY_ACCESS_CTRL_REG, + RTL8366RB_PHY_CTRL_WRITE); if (ret) return ret; - reg = 0x8000 | (1 << (phy_no + RTL8366S_PHY_NO_OFFSET)) | - ((page << RTL8366S_PHY_PAGE_OFFSET) & RTL8366S_PHY_PAGE_MASK) | - (addr & RTL8366S_PHY_REG_MASK); + reg = 0x8000 | (1 << (phy_no + RTL8366RB_PHY_NO_OFFSET)) | + ((page << RTL8366RB_PHY_PAGE_OFFSET) & RTL8366RB_PHY_PAGE_MASK) | + (addr & RTL8366RB_PHY_REG_MASK); ret = rtl8366_smi_write_reg(smi, reg, data); if (ret) @@ -388,11 +388,11 @@ static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter, u32 addr, data; u64 mibvalue; - if (port > RTL8366_NUM_PORTS || counter >= RTL8366S_MIB_COUNT) + if (port > RTL8366RB_NUM_PORTS || counter >= RTL8366RB_MIB_COUNT) return -EINVAL; - addr = RTL8366S_MIB_COUNTER_BASE + - RTL8366S_MIB_COUNTER_PORT_OFFSET * (port) + + addr = RTL8366RB_MIB_COUNTER_BASE + + RTL8366RB_MIB_COUNTER_PORT_OFFSET * (port) + rtl8366rb_mib_counters[counter].offset; /* @@ -405,14 +405,14 @@ static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter, return err; /* read MIB control register */ - err = rtl8366_smi_read_reg(smi, RTL8366S_MIB_CTRL_REG, &data); + err = rtl8366_smi_read_reg(smi, RTL8366RB_MIB_CTRL_REG, &data); if (err) return err; - if (data & RTL8366S_MIB_CTRL_BUSY_MASK) + if (data & RTL8366RB_MIB_CTRL_BUSY_MASK) return -EBUSY; - if (data & RTL8366S_MIB_CTRL_RESET_MASK) + if (data & RTL8366RB_MIB_CTRL_RESET_MASK) return -EIO; mibvalue = 0; @@ -439,31 +439,31 @@ static int rtl8366rb_get_vlan_4k(struct rtl8366_smi *smi, u32 vid, memset(vlan4k, '\0', sizeof(struct rtl8366_vlan_4k)); vlan4k_priv.vid = vid; - if (vid >= RTL8366_NUM_VIDS) + if (vid >= RTL8366RB_NUM_VIDS) return -EINVAL; tableaddr = (u16 *)&vlan4k_priv; /* write VID */ data = *tableaddr; - err = rtl8366_smi_write_reg(smi, RTL8366S_VLAN_TABLE_WRITE_BASE, data); + err = rtl8366_smi_write_reg(smi, RTL8366RB_VLAN_TABLE_WRITE_BASE, data); if (err) return err; /* write table access control word */ - err = rtl8366_smi_write_reg(smi, RTL8366S_TABLE_ACCESS_CTRL_REG, - RTL8366S_TABLE_VLAN_READ_CTRL); + err = rtl8366_smi_write_reg(smi, RTL8366RB_TABLE_ACCESS_CTRL_REG, + RTL8366RB_TABLE_VLAN_READ_CTRL); if (err) return err; - err = rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TABLE_READ_BASE, &data); + err = rtl8366_smi_read_reg(smi, RTL8366RB_VLAN_TABLE_READ_BASE, &data); if (err) return err; *tableaddr = data; tableaddr++; - err = rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TABLE_READ_BASE + 1, + err = rtl8366_smi_read_reg(smi, RTL8366RB_VLAN_TABLE_READ_BASE + 1, &data); if (err) return err; @@ -471,7 +471,7 @@ static int rtl8366rb_get_vlan_4k(struct rtl8366_smi *smi, u32 vid, *tableaddr = data; tableaddr++; - err = rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TABLE_READ_BASE + 2, + err = rtl8366_smi_read_reg(smi, RTL8366RB_VLAN_TABLE_READ_BASE + 2, &data); if (err) return err; @@ -493,10 +493,10 @@ static int rtl8366rb_set_vlan_4k(struct rtl8366_smi *smi, u32 data; u16 *tableaddr; - if (vlan4k->vid >= RTL8366_NUM_VIDS || - vlan4k->member > RTL8366_PORT_ALL || - vlan4k->untag > RTL8366_PORT_ALL || - vlan4k->fid > RTL8366S_FIDMAX) + if (vlan4k->vid >= RTL8366RB_NUM_VIDS || + vlan4k->member > RTL8366RB_PORT_ALL || + vlan4k->untag > RTL8366RB_PORT_ALL || + vlan4k->fid > RTL8366RB_FIDMAX) return -EINVAL; vlan4k_priv.vid = vlan4k->vid; @@ -508,7 +508,7 @@ static int rtl8366rb_set_vlan_4k(struct rtl8366_smi *smi, data = *tableaddr; - err = rtl8366_smi_write_reg(smi, RTL8366S_VLAN_TABLE_WRITE_BASE, data); + err = rtl8366_smi_write_reg(smi, RTL8366RB_VLAN_TABLE_WRITE_BASE, data); if (err) return err; @@ -516,7 +516,7 @@ static int rtl8366rb_set_vlan_4k(struct rtl8366_smi *smi, data = *tableaddr; - err = rtl8366_smi_write_reg(smi, RTL8366S_VLAN_TABLE_WRITE_BASE + 1, + err = rtl8366_smi_write_reg(smi, RTL8366RB_VLAN_TABLE_WRITE_BASE + 1, data); if (err) return err; @@ -525,14 +525,14 @@ static int rtl8366rb_set_vlan_4k(struct rtl8366_smi *smi, data = *tableaddr; - err = rtl8366_smi_write_reg(smi, RTL8366S_VLAN_TABLE_WRITE_BASE + 2, + err = rtl8366_smi_write_reg(smi, RTL8366RB_VLAN_TABLE_WRITE_BASE + 2, data); if (err) return err; /* write table access control word */ - err = rtl8366_smi_write_reg(smi, RTL8366S_TABLE_ACCESS_CTRL_REG, - RTL8366S_TABLE_VLAN_WRITE_CTRL); + err = rtl8366_smi_write_reg(smi, RTL8366RB_TABLE_ACCESS_CTRL_REG, + RTL8366RB_TABLE_VLAN_WRITE_CTRL); return err; } @@ -548,12 +548,12 @@ static int rtl8366rb_get_vlan_mc(struct rtl8366_smi *smi, u32 index, memset(vlanmc, '\0', sizeof(struct rtl8366_vlan_mc)); - if (index >= RTL8366_NUM_VLANS) + if (index >= RTL8366RB_NUM_VLANS) return -EINVAL; tableaddr = (u16 *)&vlanmc_priv; - addr = RTL8366S_VLAN_MEMCONF_BASE + (index * 3); + addr = RTL8366RB_VLAN_MEMCONF_BASE + (index * 3); err = rtl8366_smi_read_reg(smi, addr, &data); if (err) return err; @@ -561,7 +561,7 @@ static int rtl8366rb_get_vlan_mc(struct rtl8366_smi *smi, u32 index, *tableaddr = data; tableaddr++; - addr = RTL8366S_VLAN_MEMCONF_BASE + 1 + (index * 3); + addr = RTL8366RB_VLAN_MEMCONF_BASE + 1 + (index * 3); err = rtl8366_smi_read_reg(smi, addr, &data); if (err) return err; @@ -569,7 +569,7 @@ static int rtl8366rb_get_vlan_mc(struct rtl8366_smi *smi, u32 index, *tableaddr = data; tableaddr++; - addr = RTL8366S_VLAN_MEMCONF_BASE + 2 + (index * 3); + addr = RTL8366RB_VLAN_MEMCONF_BASE + 2 + (index * 3); err = rtl8366_smi_read_reg(smi, addr, &data); if (err) return err; @@ -594,12 +594,12 @@ static int rtl8366rb_set_vlan_mc(struct rtl8366_smi *smi, u32 index, u32 data; u16 *tableaddr; - if (index >= RTL8366_NUM_VLANS || - vlanmc->vid >= RTL8366_NUM_VIDS || - vlanmc->priority > RTL8366S_PRIORITYMAX || - vlanmc->member > RTL8366_PORT_ALL || - vlanmc->untag > RTL8366_PORT_ALL || - vlanmc->fid > RTL8366S_FIDMAX) + if (index >= RTL8366RB_NUM_VLANS || + vlanmc->vid >= RTL8366RB_NUM_VIDS || + vlanmc->priority > RTL8366RB_PRIORITYMAX || + vlanmc->member > RTL8366RB_PORT_ALL || + vlanmc->untag > RTL8366RB_PORT_ALL || + vlanmc->fid > RTL8366RB_FIDMAX) return -EINVAL; vlanmc_priv.vid = vlanmc->vid; @@ -610,7 +610,7 @@ static int rtl8366rb_set_vlan_mc(struct rtl8366_smi *smi, u32 index, vlanmc_priv.stag_idx = 0; vlanmc_priv.fid = vlanmc->fid; - addr = RTL8366S_VLAN_MEMCONF_BASE + (index * 3); + addr = RTL8366RB_VLAN_MEMCONF_BASE + (index * 3); tableaddr = (u16 *)&vlanmc_priv; data = *tableaddr; @@ -619,7 +619,7 @@ static int rtl8366rb_set_vlan_mc(struct rtl8366_smi *smi, u32 index, if (err) return err; - addr = RTL8366S_VLAN_MEMCONF_BASE + 1 + (index * 3); + addr = RTL8366RB_VLAN_MEMCONF_BASE + 1 + (index * 3); tableaddr++; data = *tableaddr; @@ -628,7 +628,7 @@ static int rtl8366rb_set_vlan_mc(struct rtl8366_smi *smi, u32 index, if (err) return err; - addr = RTL8366S_VLAN_MEMCONF_BASE + 2 + (index * 3); + addr = RTL8366RB_VLAN_MEMCONF_BASE + 2 + (index * 3); tableaddr++; data = *tableaddr; @@ -644,16 +644,16 @@ static int rtl8366rb_get_mc_index(struct rtl8366_smi *smi, int port, int *val) u32 data; int err; - if (port >= RTL8366_NUM_PORTS) + if (port >= RTL8366RB_NUM_PORTS) return -EINVAL; - err = rtl8366_smi_read_reg(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), + err = rtl8366_smi_read_reg(smi, RTL8366RB_PORT_VLAN_CTRL_REG(port), &data); if (err) return err; - *val = (data >> RTL8366S_PORT_VLAN_CTRL_SHIFT(port)) & - RTL8366S_PORT_VLAN_CTRL_MASK; + *val = (data >> RTL8366RB_PORT_VLAN_CTRL_SHIFT(port)) & + RTL8366RB_PORT_VLAN_CTRL_MASK; return 0; @@ -661,14 +661,14 @@ static int rtl8366rb_get_mc_index(struct rtl8366_smi *smi, int port, int *val) static int rtl8366rb_set_mc_index(struct rtl8366_smi *smi, int port, int index) { - if (port >= RTL8366_NUM_PORTS || index >= RTL8366_NUM_VLANS) + if (port >= RTL8366RB_NUM_PORTS || index >= RTL8366RB_NUM_VLANS) return -EINVAL; - return rtl8366_smi_rmwr(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), - RTL8366S_PORT_VLAN_CTRL_MASK << - RTL8366S_PORT_VLAN_CTRL_SHIFT(port), - (index & RTL8366S_PORT_VLAN_CTRL_MASK) << - RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); + return rtl8366_smi_rmwr(smi, RTL8366RB_PORT_VLAN_CTRL_REG(port), + RTL8366RB_PORT_VLAN_CTRL_MASK << + RTL8366RB_PORT_VLAN_CTRL_SHIFT(port), + (index & RTL8366RB_PORT_VLAN_CTRL_MASK) << + RTL8366RB_PORT_VLAN_CTRL_SHIFT(port)); } static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, @@ -691,7 +691,7 @@ static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, return err; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { struct rtl8366_vlan_mc vlanmc; err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); @@ -737,7 +737,7 @@ static int rtl8366rb_mc_is_used(struct rtl8366_smi *smi, int mc_index, int i; *used = 0; - for (i = 0; i < RTL8366_NUM_PORTS; i++) { + for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { int index = 0; err = rtl8366rb_get_mc_index(smi, i, &index); @@ -762,7 +762,7 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, int i; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -778,7 +778,7 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* We have no MC entry for this VID, try to find an empty one */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -803,7 +803,7 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* MC table is full, try to find an unused entry and replace it */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { int used; err = rtl8366rb_mc_is_used(smi, i, &used); @@ -837,16 +837,16 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, - RTL8366_CHIP_CTRL_VLAN, - (enable) ? RTL8366_CHIP_CTRL_VLAN : 0); + return rtl8366_smi_rmwr(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, + RTL8366RB_CHIP_CTRL_VLAN, + (enable) ? RTL8366RB_CHIP_CTRL_VLAN : 0); } static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) { - return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, - RTL8366_CHIP_CTRL_VLAN_4KTB, - (enable) ? RTL8366_CHIP_CTRL_VLAN_4KTB : 0); + return rtl8366_smi_rmwr(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, + RTL8366RB_CHIP_CTRL_VLAN_4KTB, + (enable) ? RTL8366RB_CHIP_CTRL_VLAN_4KTB : 0); } static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) @@ -861,19 +861,19 @@ static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) vlanmc.member = 0; vlanmc.untag = 0; vlanmc.fid = 0; - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); if (err) return err; } - for (i = 0; i < RTL8366_NUM_PORTS; i++) { - if (i == RTL8366_PORT_CPU) + for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { + if (i == RTL8366RB_PORT_CPU) continue; err = rtl8366rb_set_vlan(smi, (i + 1), - (1 << i) | RTL8366_PORT_CPU, - (1 << i) | RTL8366_PORT_CPU, + (1 << i) | RTL8366RB_PORT_CPU, + (1 << i) | RTL8366RB_PORT_CPU, 0); if (err) return err; @@ -911,7 +911,7 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, for (i = 0; i < ARRAY_SIZE(rtl8366rb_mib_counters); ++i) { len += snprintf(buf + len, sizeof(rtl->buf) - len, "%-36s ", rtl8366rb_mib_counters[i].name); - for (j = 0; j < RTL8366_NUM_PORTS; ++j) { + for (j = 0; j < RTL8366RB_NUM_PORTS; ++j) { unsigned long long counter = 0; if (!rtl8366_get_mib_counter(smi, i, j, &counter)) @@ -942,7 +942,7 @@ static ssize_t rtl8366rb_read_debugfs_vlan_mc(struct file *file, "%2s %6s %4s %6s %6s %3s\n", "id", "vid","prio", "member", "untag", "fid"); - for (i = 0; i < RTL8366_NUM_VLANS; ++i) { + for (i = 0; i < RTL8366RB_NUM_VLANS; ++i) { struct rtl8366_vlan_mc vlanmc; rtl8366rb_get_vlan_mc(smi, i, &vlanmc); @@ -1104,8 +1104,8 @@ static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev, int err = 0; if (val->value.i == 1) - err = rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, 0, - RTL8366S_MIB_CTRL_GLOBAL_RESET); + err = rtl8366_smi_rmwr(smi, RTL8366RB_MIB_CTRL_REG, 0, + RTL8366RB_MIB_CTRL_GLOBAL_RESET); return err; } @@ -1118,16 +1118,16 @@ static int rtl8366rb_sw_get_vlan_enable(struct switch_dev *dev, u32 data; if (attr->ofs == 1) { - rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, &data); - if (data & RTL8366_CHIP_CTRL_VLAN) + if (data & RTL8366RB_CHIP_CTRL_VLAN) val->value.i = 1; else val->value.i = 0; } else if (attr->ofs == 2) { - rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, &data); - if (data & RTL8366_CHIP_CTRL_VLAN_4KTB) + if (data & RTL8366RB_CHIP_CTRL_VLAN_4KTB) val->value.i = 1; else val->value.i = 0; @@ -1143,9 +1143,9 @@ static int rtl8366rb_sw_get_blinkrate(struct switch_dev *dev, struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; - rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366RB_LED_BLINKRATE_REG, &data); - val->value.i = (data & (RTL8366_LED_BLINKRATE_MASK)); + val->value.i = (data & (RTL8366RB_LED_BLINKRATE_MASK)); return 0; } @@ -1159,8 +1159,8 @@ static int rtl8366rb_sw_set_blinkrate(struct switch_dev *dev, if (val->value.i >= 6) return -EINVAL; - return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, - RTL8366_LED_BLINKRATE_MASK, + return rtl8366_smi_rmwr(smi, RTL8366RB_LED_BLINKRATE_REG, + RTL8366RB_LED_BLINKRATE_MASK, val->value.i); } @@ -1198,29 +1198,29 @@ static int rtl8366rb_sw_get_port_link(struct switch_dev *dev, struct rtl8366_smi *smi = &rtl->smi; u32 len = 0, data = 0; - if (val->port_vlan >= RTL8366_NUM_PORTS) + if (val->port_vlan >= RTL8366RB_NUM_PORTS) return -EINVAL; memset(rtl->buf, '\0', sizeof(rtl->buf)); - rtl8366_smi_read_reg(smi, RTL8366S_PORT_LINK_STATUS_BASE + + rtl8366_smi_read_reg(smi, RTL8366RB_PORT_LINK_STATUS_BASE + (val->port_vlan / 2), &data); if (val->port_vlan % 2) data = data >> 8; - if (data & RTL8366S_PORT_STATUS_LINK_MASK) { + if (data & RTL8366RB_PORT_STATUS_LINK_MASK) { len = snprintf(rtl->buf, sizeof(rtl->buf), "port:%d link:up speed:%s %s-duplex %s%s%s", val->port_vlan, rtl8366rb_speed_str(data & - RTL8366S_PORT_STATUS_SPEED_MASK), - (data & RTL8366S_PORT_STATUS_DUPLEX_MASK) ? + RTL8366RB_PORT_STATUS_SPEED_MASK), + (data & RTL8366RB_PORT_STATUS_DUPLEX_MASK) ? "full" : "half", - (data & RTL8366S_PORT_STATUS_TXPAUSE_MASK) ? + (data & RTL8366RB_PORT_STATUS_TXPAUSE_MASK) ? "tx-pause ": "", - (data & RTL8366S_PORT_STATUS_RXPAUSE_MASK) ? + (data & RTL8366RB_PORT_STATUS_RXPAUSE_MASK) ? "rx-pause " : "", - (data & RTL8366S_PORT_STATUS_AN_MASK) ? + (data & RTL8366RB_PORT_STATUS_AN_MASK) ? "nway ": ""); } else { len = snprintf(rtl->buf, sizeof(rtl->buf), "port:%d link: down", @@ -1245,7 +1245,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, char *buf = rtl->buf; int err; - if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366RB_NUM_VLANS) return -EINVAL; memset(buf, '\0', sizeof(rtl->buf)); @@ -1257,7 +1257,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: '", vlan4k.vid); - for (i = 0; i < RTL8366_NUM_PORTS; i++) { + for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { if (!(vlan4k.member & (1 << i))) continue; @@ -1284,20 +1284,20 @@ static int rtl8366rb_sw_set_port_led(struct switch_dev *dev, u32 mask; u32 reg; - if (val->port_vlan >= RTL8366_NUM_PORTS) + if (val->port_vlan >= RTL8366RB_NUM_PORTS) return -EINVAL; - if (val->port_vlan == RTL8366_PORT_NUM_CPU) { - reg = RTL8366_LED_BLINKRATE_REG; + if (val->port_vlan == RTL8366RB_PORT_NUM_CPU) { + reg = RTL8366RB_LED_BLINKRATE_REG; mask = 0xF << 4; data = val->value.i << 4; } else { - reg = RTL8366_LED_CTRL_REG; + reg = RTL8366RB_LED_CTRL_REG; mask = 0xF << (val->port_vlan * 4), data = val->value.i << (val->port_vlan * 4); } - return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, mask, data); + return rtl8366_smi_rmwr(smi, RTL8366RB_LED_BLINKRATE_REG, mask, data); } static int rtl8366rb_sw_get_port_led(struct switch_dev *dev, @@ -1307,10 +1307,10 @@ static int rtl8366rb_sw_get_port_led(struct switch_dev *dev, struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; - if (val->port_vlan >= RTL8366_NUM_LEDGROUPS) + if (val->port_vlan >= RTL8366RB_NUM_LEDGROUPS) return -EINVAL; - rtl8366_smi_read_reg(smi, RTL8366_LED_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366RB_LED_CTRL_REG, &data); val->value.i = (data >> (val->port_vlan * 4)) & 0x000F; return 0; @@ -1322,11 +1322,11 @@ static int rtl8366rb_sw_reset_port_mibs(struct switch_dev *dev, { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - if (val->port_vlan >= RTL8366_NUM_PORTS) + if (val->port_vlan >= RTL8366RB_NUM_PORTS) return -EINVAL; - return rtl8366_smi_rmwr(smi, RTL8366S_MIB_CTRL_REG, 0, - RTL8366S_MIB_CTRL_PORT_RESET(val->port_vlan)); + return rtl8366_smi_rmwr(smi, RTL8366RB_MIB_CTRL_REG, 0, + RTL8366RB_MIB_CTRL_PORT_RESET(val->port_vlan)); } static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, @@ -1339,7 +1339,7 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, unsigned long long counter = 0; char *buf = rtl->buf; - if (val->port_vlan >= RTL8366_NUM_PORTS) + if (val->port_vlan >= RTL8366RB_NUM_PORTS) return -EINVAL; len += snprintf(buf + len, sizeof(rtl->buf) - len, @@ -1370,14 +1370,14 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev, struct rtl8366_vlan_4k vlan4k; int i; - if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366RB_NUM_VLANS) return -EINVAL; rtl8366rb_get_vlan_4k(smi, val->port_vlan, &vlan4k); port = &val->value.ports[0]; val->len = 0; - for (i = 0; i < RTL8366_NUM_PORTS; i++) { + for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { if (!(vlan4k.member & BIT(i))) continue; @@ -1399,7 +1399,7 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, u32 untag = 0; int i; - if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366RB_NUM_VLANS) return -EINVAL; port = &val->value.ports[0]; @@ -1522,9 +1522,9 @@ static struct switch_attr rtl8366rb_vlan[] = { /* template */ static struct switch_dev rtl8366_switch_dev = { .name = "RTL8366S", - .cpu_port = RTL8366_PORT_NUM_CPU, - .ports = RTL8366_NUM_PORTS, - .vlans = RTL8366_NUM_VLANS, + .cpu_port = RTL8366RB_PORT_NUM_CPU, + .ports = RTL8366RB_NUM_PORTS, + .vlans = RTL8366RB_NUM_VLANS, .attr_global = { .attr = rtl8366rb_globals, .n_attr = ARRAY_SIZE(rtl8366rb_globals), @@ -1619,21 +1619,21 @@ static int rtl8366rb_detect(struct rtl8366_smi *smi) u32 chip_ver = 0; int ret; - ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_ID_REG, &chip_id); + ret = rtl8366_smi_read_reg(smi, RTL8366RB_CHIP_ID_REG, &chip_id); if (ret) { dev_err(smi->parent, "unable to read chip id\n"); return ret; } switch (chip_id) { - case RTL8366S_CHIP_ID_8366: + case RTL8366RB_CHIP_ID_8366: break; default: dev_err(smi->parent, "unknown chip id (%04x)\n", chip_id); return -ENODEV; } - ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_VERSION_CTRL_REG, + ret = rtl8366_smi_read_reg(smi, RTL8366RB_CHIP_VERSION_CTRL_REG, &chip_ver); if (ret) { dev_err(smi->parent, "unable to read chip version\n"); @@ -1641,7 +1641,7 @@ static int rtl8366rb_detect(struct rtl8366_smi *smi) } dev_info(smi->parent, "RTL%04x ver. %u chip found\n", - chip_id, chip_ver & RTL8366S_CHIP_VERSION_MASK); + chip_id, chip_ver & RTL8366RB_CHIP_VERSION_MASK); return 0; } @@ -1661,8 +1661,8 @@ static int __init rtl8366rb_probe(struct platform_device *pdev) int err; if (!rtl8366_smi_version_printed++) - printk(KERN_NOTICE RTL8366S_DRIVER_DESC - " version " RTL8366S_DRIVER_VER"\n"); + printk(KERN_NOTICE RTL8366RB_DRIVER_DESC + " version " RTL8366RB_DRIVER_VER"\n"); pdata = pdev->dev.platform_data; if (!pdata) { @@ -1787,8 +1787,8 @@ static void __exit rtl8366rb_module_exit(void) } module_exit(rtl8366rb_module_exit); -MODULE_DESCRIPTION(RTL8366S_DRIVER_DESC); -MODULE_VERSION(RTL8366S_DRIVER_VER); +MODULE_DESCRIPTION(RTL8366RB_DRIVER_DESC); +MODULE_VERSION(RTL8366RB_DRIVER_VER); MODULE_AUTHOR("Gabor Juhos "); MODULE_AUTHOR("Antti Seppälä "); MODULE_LICENSE("GPL v2"); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index da8fe556c..f37f47877 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -27,144 +27,144 @@ #define RTL8366S_DRIVER_DESC "Realtek RTL8366S ethernet switch driver" #define RTL8366S_DRIVER_VER "0.2.2" -#define RTL8366S_PHY_NO_MAX 4 -#define RTL8366S_PHY_PAGE_MAX 7 -#define RTL8366S_PHY_ADDR_MAX 31 +#define RTL8366S_PHY_NO_MAX 4 +#define RTL8366S_PHY_PAGE_MAX 7 +#define RTL8366S_PHY_ADDR_MAX 31 -#define RTL8366_CHIP_GLOBAL_CTRL_REG 0x0000 -#define RTL8366_CHIP_CTRL_VLAN (1 << 13) +#define RTL8366S_CHIP_GLOBAL_CTRL_REG 0x0000 +#define RTL8366S_CHIP_CTRL_VLAN (1 << 13) /* Switch Global Configuration register */ -#define RTL8366_SGCR 0x0000 -#define RTL8366_SGCR_EN_BC_STORM_CTRL BIT(0) -#define RTL8366_SGCR_MAX_LENGTH(_x) (_x << 4) -#define RTL8366_SGCR_MAX_LENGTH_MASK RTL8366_SGCR_MAX_LENGTH(0x3) -#define RTL8366_SGCR_MAX_LENGTH_1522 RTL8366_SGCR_MAX_LENGTH(0x0) -#define RTL8366_SGCR_MAX_LENGTH_1536 RTL8366_SGCR_MAX_LENGTH(0x1) -#define RTL8366_SGCR_MAX_LENGTH_1552 RTL8366_SGCR_MAX_LENGTH(0x2) -#define RTL8366_SGCR_MAX_LENGTH_16000 RTL8366_SGCR_MAX_LENGTH(0x3) +#define RTL8366S_SGCR 0x0000 +#define RTL8366S_SGCR_EN_BC_STORM_CTRL BIT(0) +#define RTL8366S_SGCR_MAX_LENGTH(_x) (_x << 4) +#define RTL8366S_SGCR_MAX_LENGTH_MASK RTL8366S_SGCR_MAX_LENGTH(0x3) +#define RTL8366S_SGCR_MAX_LENGTH_1522 RTL8366S_SGCR_MAX_LENGTH(0x0) +#define RTL8366S_SGCR_MAX_LENGTH_1536 RTL8366S_SGCR_MAX_LENGTH(0x1) +#define RTL8366S_SGCR_MAX_LENGTH_1552 RTL8366S_SGCR_MAX_LENGTH(0x2) +#define RTL8366S_SGCR_MAX_LENGTH_16000 RTL8366S_SGCR_MAX_LENGTH(0x3) /* Port Enable Control register */ -#define RTL8366_PECR 0x0001 +#define RTL8366S_PECR 0x0001 /* Switch Security Control registers */ -#define RTL8366_SSCR0 0x0002 -#define RTL8366_SSCR1 0x0003 -#define RTL8366_SSCR2 0x0004 -#define RTL8366_SSCR2_DROP_UNKNOWN_DA BIT(0) +#define RTL8366S_SSCR0 0x0002 +#define RTL8366S_SSCR1 0x0003 +#define RTL8366S_SSCR2 0x0004 +#define RTL8366S_SSCR2_DROP_UNKNOWN_DA BIT(0) -#define RTL8366_RESET_CTRL_REG 0x0100 -#define RTL8366_CHIP_CTRL_RESET_HW 1 -#define RTL8366_CHIP_CTRL_RESET_SW (1 << 1) +#define RTL8366S_RESET_CTRL_REG 0x0100 +#define RTL8366S_CHIP_CTRL_RESET_HW 1 +#define RTL8366S_CHIP_CTRL_RESET_SW (1 << 1) -#define RTL8366S_CHIP_VERSION_CTRL_REG 0x0104 -#define RTL8366S_CHIP_VERSION_MASK 0xf -#define RTL8366S_CHIP_ID_REG 0x0105 -#define RTL8366S_CHIP_ID_8366 0x8366 +#define RTL8366S_CHIP_VERSION_CTRL_REG 0x0104 +#define RTL8366S_CHIP_VERSION_MASK 0xf +#define RTL8366S_CHIP_ID_REG 0x0105 +#define RTL8366S_CHIP_ID_8366 0x8366 /* PHY registers control */ -#define RTL8366S_PHY_ACCESS_CTRL_REG 0x8028 -#define RTL8366S_PHY_ACCESS_DATA_REG 0x8029 +#define RTL8366S_PHY_ACCESS_CTRL_REG 0x8028 +#define RTL8366S_PHY_ACCESS_DATA_REG 0x8029 -#define RTL8366S_PHY_CTRL_READ 1 -#define RTL8366S_PHY_CTRL_WRITE 0 +#define RTL8366S_PHY_CTRL_READ 1 +#define RTL8366S_PHY_CTRL_WRITE 0 -#define RTL8366S_PHY_REG_MASK 0x1f -#define RTL8366S_PHY_PAGE_OFFSET 5 -#define RTL8366S_PHY_PAGE_MASK (0x7 << 5) -#define RTL8366S_PHY_NO_OFFSET 9 -#define RTL8366S_PHY_NO_MASK (0x1f << 9) +#define RTL8366S_PHY_REG_MASK 0x1f +#define RTL8366S_PHY_PAGE_OFFSET 5 +#define RTL8366S_PHY_PAGE_MASK (0x7 << 5) +#define RTL8366S_PHY_NO_OFFSET 9 +#define RTL8366S_PHY_NO_MASK (0x1f << 9) /* LED control registers */ -#define RTL8366_LED_BLINKRATE_REG 0x0420 -#define RTL8366_LED_BLINKRATE_BIT 0 -#define RTL8366_LED_BLINKRATE_MASK 0x0007 +#define RTL8366S_LED_BLINKRATE_REG 0x0420 +#define RTL8366S_LED_BLINKRATE_BIT 0 +#define RTL8366S_LED_BLINKRATE_MASK 0x0007 -#define RTL8366_LED_CTRL_REG 0x0421 -#define RTL8366_LED_0_1_CTRL_REG 0x0422 -#define RTL8366_LED_2_3_CTRL_REG 0x0423 +#define RTL8366S_LED_CTRL_REG 0x0421 +#define RTL8366S_LED_0_1_CTRL_REG 0x0422 +#define RTL8366S_LED_2_3_CTRL_REG 0x0423 -#define RTL8366S_MIB_COUNT 33 -#define RTL8366S_GLOBAL_MIB_COUNT 1 -#define RTL8366S_MIB_COUNTER_PORT_OFFSET 0x0040 -#define RTL8366S_MIB_COUNTER_BASE 0x1000 -#define RTL8366S_MIB_COUNTER_PORT_OFFSET2 0x0008 -#define RTL8366S_MIB_COUNTER_BASE2 0x1180 -#define RTL8366S_MIB_CTRL_REG 0x11F0 -#define RTL8366S_MIB_CTRL_USER_MASK 0x01FF -#define RTL8366S_MIB_CTRL_BUSY_MASK 0x0001 -#define RTL8366S_MIB_CTRL_RESET_MASK 0x0002 +#define RTL8366S_MIB_COUNT 33 +#define RTL8366S_GLOBAL_MIB_COUNT 1 +#define RTL8366S_MIB_COUNTER_PORT_OFFSET 0x0040 +#define RTL8366S_MIB_COUNTER_BASE 0x1000 +#define RTL8366S_MIB_COUNTER_PORT_OFFSET2 0x0008 +#define RTL8366S_MIB_COUNTER_BASE2 0x1180 +#define RTL8366S_MIB_CTRL_REG 0x11F0 +#define RTL8366S_MIB_CTRL_USER_MASK 0x01FF +#define RTL8366S_MIB_CTRL_BUSY_MASK 0x0001 +#define RTL8366S_MIB_CTRL_RESET_MASK 0x0002 -#define RTL8366S_MIB_CTRL_GLOBAL_RESET_MASK 0x0004 -#define RTL8366S_MIB_CTRL_PORT_RESET_BIT 0x0003 -#define RTL8366S_MIB_CTRL_PORT_RESET_MASK 0x01FC +#define RTL8366S_MIB_CTRL_GLOBAL_RESET_MASK 0x0004 +#define RTL8366S_MIB_CTRL_PORT_RESET_BIT 0x0003 +#define RTL8366S_MIB_CTRL_PORT_RESET_MASK 0x01FC -#define RTL8366S_PORT_VLAN_CTRL_BASE 0x0058 +#define RTL8366S_PORT_VLAN_CTRL_BASE 0x0058 #define RTL8366S_PORT_VLAN_CTRL_REG(_p) \ (RTL8366S_PORT_VLAN_CTRL_BASE + (_p) / 4) -#define RTL8366S_PORT_VLAN_CTRL_MASK 0xf -#define RTL8366S_PORT_VLAN_CTRL_SHIFT(_p) (4 * ((_p) % 4)) +#define RTL8366S_PORT_VLAN_CTRL_MASK 0xf +#define RTL8366S_PORT_VLAN_CTRL_SHIFT(_p) (4 * ((_p) % 4)) -#define RTL8366S_VLAN_TABLE_READ_BASE 0x018B -#define RTL8366S_VLAN_TABLE_WRITE_BASE 0x0185 +#define RTL8366S_VLAN_TABLE_READ_BASE 0x018B +#define RTL8366S_VLAN_TABLE_WRITE_BASE 0x0185 -#define RTL8366S_VLAN_TB_CTRL_REG 0x010F +#define RTL8366S_VLAN_TB_CTRL_REG 0x010F -#define RTL8366S_TABLE_ACCESS_CTRL_REG 0x0180 -#define RTL8366S_TABLE_VLAN_READ_CTRL 0x0E01 -#define RTL8366S_TABLE_VLAN_WRITE_CTRL 0x0F01 +#define RTL8366S_TABLE_ACCESS_CTRL_REG 0x0180 +#define RTL8366S_TABLE_VLAN_READ_CTRL 0x0E01 +#define RTL8366S_TABLE_VLAN_WRITE_CTRL 0x0F01 -#define RTL8366S_VLAN_MEMCONF_BASE 0x0016 +#define RTL8366S_VLAN_MEMCONF_BASE 0x0016 -#define RTL8366S_PORT_LINK_STATUS_BASE 0x0060 -#define RTL8366S_PORT_STATUS_SPEED_MASK 0x0003 -#define RTL8366S_PORT_STATUS_DUPLEX_MASK 0x0004 -#define RTL8366S_PORT_STATUS_LINK_MASK 0x0010 -#define RTL8366S_PORT_STATUS_TXPAUSE_MASK 0x0020 -#define RTL8366S_PORT_STATUS_RXPAUSE_MASK 0x0040 -#define RTL8366S_PORT_STATUS_AN_MASK 0x0080 +#define RTL8366S_PORT_LINK_STATUS_BASE 0x0060 +#define RTL8366S_PORT_STATUS_SPEED_MASK 0x0003 +#define RTL8366S_PORT_STATUS_DUPLEX_MASK 0x0004 +#define RTL8366S_PORT_STATUS_LINK_MASK 0x0010 +#define RTL8366S_PORT_STATUS_TXPAUSE_MASK 0x0020 +#define RTL8366S_PORT_STATUS_RXPAUSE_MASK 0x0040 +#define RTL8366S_PORT_STATUS_AN_MASK 0x0080 -#define RTL8366_PORT_NUM_CPU 5 -#define RTL8366_NUM_PORTS 6 -#define RTL8366_NUM_VLANS 16 -#define RTL8366_NUM_LEDGROUPS 4 -#define RTL8366_NUM_VIDS 4096 -#define RTL8366S_PRIORITYMAX 7 -#define RTL8366S_FIDMAX 7 +#define RTL8366S_PORT_NUM_CPU 5 +#define RTL8366S_NUM_PORTS 6 +#define RTL8366S_NUM_VLANS 16 +#define RTL8366S_NUM_LEDGROUPS 4 +#define RTL8366S_NUM_VIDS 4096 +#define RTL8366S_PRIORITYMAX 7 +#define RTL8366S_FIDMAX 7 -#define RTL8366_PORT_1 (1 << 0) /* In userspace port 0 */ -#define RTL8366_PORT_2 (1 << 1) /* In userspace port 1 */ -#define RTL8366_PORT_3 (1 << 2) /* In userspace port 2 */ -#define RTL8366_PORT_4 (1 << 3) /* In userspace port 3 */ +#define RTL8366S_PORT_1 (1 << 0) /* In userspace port 0 */ +#define RTL8366S_PORT_2 (1 << 1) /* In userspace port 1 */ +#define RTL8366S_PORT_3 (1 << 2) /* In userspace port 2 */ +#define RTL8366S_PORT_4 (1 << 3) /* In userspace port 3 */ -#define RTL8366_PORT_UNKNOWN (1 << 4) /* No known connection */ -#define RTL8366_PORT_CPU (1 << 5) /* CPU port */ +#define RTL8366S_PORT_UNKNOWN (1 << 4) /* No known connection */ +#define RTL8366S_PORT_CPU (1 << 5) /* CPU port */ -#define RTL8366_PORT_ALL (RTL8366_PORT_1 | \ - RTL8366_PORT_2 | \ - RTL8366_PORT_3 | \ - RTL8366_PORT_4 | \ - RTL8366_PORT_UNKNOWN | \ - RTL8366_PORT_CPU) +#define RTL8366S_PORT_ALL (RTL8366S_PORT_1 | \ + RTL8366S_PORT_2 | \ + RTL8366S_PORT_3 | \ + RTL8366S_PORT_4 | \ + RTL8366S_PORT_UNKNOWN | \ + RTL8366S_PORT_CPU) -#define RTL8366_PORT_ALL_BUT_CPU (RTL8366_PORT_1 | \ - RTL8366_PORT_2 | \ - RTL8366_PORT_3 | \ - RTL8366_PORT_4 | \ - RTL8366_PORT_UNKNOWN) +#define RTL8366S_PORT_ALL_BUT_CPU (RTL8366S_PORT_1 | \ + RTL8366S_PORT_2 | \ + RTL8366S_PORT_3 | \ + RTL8366S_PORT_4 | \ + RTL8366S_PORT_UNKNOWN) -#define RTL8366_PORT_ALL_EXTERNAL (RTL8366_PORT_1 | \ - RTL8366_PORT_2 | \ - RTL8366_PORT_3 | \ - RTL8366_PORT_4) +#define RTL8366S_PORT_ALL_EXTERNAL (RTL8366S_PORT_1 | \ + RTL8366S_PORT_2 | \ + RTL8366S_PORT_3 | \ + RTL8366S_PORT_4) -#define RTL8366_PORT_ALL_INTERNAL (RTL8366_PORT_UNKNOWN | \ - RTL8366_PORT_CPU) +#define RTL8366S_PORT_ALL_INTERNAL (RTL8366S_PORT_UNKNOWN | \ + RTL8366S_PORT_CPU) struct rtl8366s { struct device *parent; @@ -284,14 +284,14 @@ static int rtl8366s_reset_chip(struct rtl8366_smi *smi) int timeout = 10; u32 data; - rtl8366_smi_write_reg(smi, RTL8366_RESET_CTRL_REG, - RTL8366_CHIP_CTRL_RESET_HW); + rtl8366_smi_write_reg(smi, RTL8366S_RESET_CTRL_REG, + RTL8366S_CHIP_CTRL_RESET_HW); do { msleep(1); - if (rtl8366_smi_read_reg(smi, RTL8366_RESET_CTRL_REG, &data)) + if (rtl8366_smi_read_reg(smi, RTL8366S_RESET_CTRL_REG, &data)) return -EIO; - if (!(data & RTL8366_CHIP_CTRL_RESET_HW)) + if (!(data & RTL8366S_CHIP_CTRL_RESET_HW)) break; } while (--timeout); @@ -308,20 +308,20 @@ static int rtl8366s_hw_init(struct rtl8366_smi *smi) int err; /* set maximum packet length to 1536 bytes */ - REG_RMW(smi, RTL8366_SGCR, RTL8366_SGCR_MAX_LENGTH_MASK, - RTL8366_SGCR_MAX_LENGTH_1536); + REG_RMW(smi, RTL8366S_SGCR, RTL8366S_SGCR_MAX_LENGTH_MASK, + RTL8366S_SGCR_MAX_LENGTH_1536); /* enable all ports */ - REG_WR(smi, RTL8366_PECR, 0); + REG_WR(smi, RTL8366S_PECR, 0); /* disable learning for all ports */ - REG_WR(smi, RTL8366_SSCR0, RTL8366_PORT_ALL); + REG_WR(smi, RTL8366S_SSCR0, RTL8366S_PORT_ALL); /* disable auto ageing for all ports */ - REG_WR(smi, RTL8366_SSCR1, RTL8366_PORT_ALL); + REG_WR(smi, RTL8366S_SSCR1, RTL8366S_PORT_ALL); /* don't drop packets whose DA has not been learned */ - REG_RMW(smi, RTL8366_SSCR2, RTL8366_SSCR2_DROP_UNKNOWN_DA, 0); + REG_RMW(smi, RTL8366S_SSCR2, RTL8366S_SSCR2_DROP_UNKNOWN_DA, 0); return 0; } @@ -400,7 +400,7 @@ static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter, u32 addr, data; u64 mibvalue; - if (port > RTL8366_NUM_PORTS || counter >= RTL8366S_MIB_COUNT) + if (port > RTL8366S_NUM_PORTS || counter >= RTL8366S_MIB_COUNT) return -EINVAL; switch (rtl8366s_mib_counters[counter].base) { @@ -464,7 +464,7 @@ static int rtl8366s_get_vlan_4k(struct rtl8366_smi *smi, u32 vid, memset(vlan4k, '\0', sizeof(struct rtl8366_vlan_4k)); vlan4k_priv.vid = vid; - if (vid >= RTL8366_NUM_VIDS) + if (vid >= RTL8366S_NUM_VIDS) return -EINVAL; tableaddr = (u16 *)&vlan4k_priv; @@ -511,9 +511,9 @@ static int rtl8366s_set_vlan_4k(struct rtl8366_smi *smi, u32 data; u16 *tableaddr; - if (vlan4k->vid >= RTL8366_NUM_VIDS || - vlan4k->member > RTL8366_PORT_ALL || - vlan4k->untag > RTL8366_PORT_ALL || + if (vlan4k->vid >= RTL8366S_NUM_VIDS || + vlan4k->member > RTL8366S_PORT_ALL || + vlan4k->untag > RTL8366S_PORT_ALL || vlan4k->fid > RTL8366S_FIDMAX) return -EINVAL; @@ -557,7 +557,7 @@ static int rtl8366s_get_vlan_mc(struct rtl8366_smi *smi, u32 index, memset(vlanmc, '\0', sizeof(struct rtl8366_vlan_mc)); - if (index >= RTL8366_NUM_VLANS) + if (index >= RTL8366S_NUM_VLANS) return -EINVAL; tableaddr = (u16 *)&vlanmc_priv; @@ -595,11 +595,11 @@ static int rtl8366s_set_vlan_mc(struct rtl8366_smi *smi, u32 index, u32 data; u16 *tableaddr; - if (index >= RTL8366_NUM_VLANS || - vlanmc->vid >= RTL8366_NUM_VIDS || + if (index >= RTL8366S_NUM_VLANS || + vlanmc->vid >= RTL8366S_NUM_VIDS || vlanmc->priority > RTL8366S_PRIORITYMAX || - vlanmc->member > RTL8366_PORT_ALL || - vlanmc->untag > RTL8366_PORT_ALL || + vlanmc->member > RTL8366S_PORT_ALL || + vlanmc->untag > RTL8366S_PORT_ALL || vlanmc->fid > RTL8366S_FIDMAX) return -EINVAL; @@ -635,7 +635,7 @@ static int rtl8366s_get_mc_index(struct rtl8366_smi *smi, int port, int *val) u32 data; int err; - if (port >= RTL8366_NUM_PORTS) + if (port >= RTL8366S_NUM_PORTS) return -EINVAL; err = rtl8366_smi_read_reg(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), @@ -651,7 +651,7 @@ static int rtl8366s_get_mc_index(struct rtl8366_smi *smi, int port, int *val) static int rtl8366s_set_mc_index(struct rtl8366_smi *smi, int port, int index) { - if (port >= RTL8366_NUM_PORTS || index >= RTL8366_NUM_VLANS) + if (port >= RTL8366S_NUM_PORTS || index >= RTL8366S_NUM_VLANS) return -EINVAL; return rtl8366_smi_rmwr(smi, RTL8366S_PORT_VLAN_CTRL_REG(port), @@ -681,7 +681,7 @@ static int rtl8366s_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, return err; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366S_NUM_VLANS; i++) { struct rtl8366_vlan_mc vlanmc; err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); @@ -727,7 +727,7 @@ static int rtl8366s_mc_is_used(struct rtl8366_smi *smi, int mc_index, int i; *used = 0; - for (i = 0; i < RTL8366_NUM_PORTS; i++) { + for (i = 0; i < RTL8366S_NUM_PORTS; i++) { int index = 0; err = rtl8366s_get_mc_index(smi, i, &index); @@ -752,7 +752,7 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, int i; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366S_NUM_VLANS; i++) { err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -768,7 +768,7 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* We have no MC entry for this VID, try to find an empty one */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366S_NUM_VLANS; i++) { err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -793,7 +793,7 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* MC table is full, try to find an unused entry and replace it */ - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366S_NUM_VLANS; i++) { int used; err = rtl8366s_mc_is_used(smi, i, &used); @@ -827,9 +827,9 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - return rtl8366_smi_rmwr(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, - RTL8366_CHIP_CTRL_VLAN, - (enable) ? RTL8366_CHIP_CTRL_VLAN : 0); + return rtl8366_smi_rmwr(smi, RTL8366S_CHIP_GLOBAL_CTRL_REG, + RTL8366S_CHIP_CTRL_VLAN, + (enable) ? RTL8366S_CHIP_CTRL_VLAN : 0); } static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) @@ -850,19 +850,19 @@ static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) vlanmc.member = 0; vlanmc.untag = 0; vlanmc.fid = 0; - for (i = 0; i < RTL8366_NUM_VLANS; i++) { + for (i = 0; i < RTL8366S_NUM_VLANS; i++) { err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); if (err) return err; } - for (i = 0; i < RTL8366_NUM_PORTS; i++) { - if (i == RTL8366_PORT_CPU) + for (i = 0; i < RTL8366S_NUM_PORTS; i++) { + if (i == RTL8366S_PORT_CPU) continue; err = rtl8366s_set_vlan(smi, (i + 1), - (1 << i) | RTL8366_PORT_CPU, - (1 << i) | RTL8366_PORT_CPU, + (1 << i) | RTL8366S_PORT_CPU, + (1 << i) | RTL8366S_PORT_CPU, 0); if (err) return err; @@ -900,7 +900,7 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, for (i = 0; i < ARRAY_SIZE(rtl8366s_mib_counters); ++i) { len += snprintf(buf + len, sizeof(rtl->buf) - len, "%-36s ", rtl8366s_mib_counters[i].name); - for (j = 0; j < RTL8366_NUM_PORTS; ++j) { + for (j = 0; j < RTL8366S_NUM_PORTS; ++j) { unsigned long long counter = 0; if (!rtl8366_get_mib_counter(smi, i, j, &counter)) @@ -931,7 +931,7 @@ static ssize_t rtl8366s_read_debugfs_vlan_mc(struct file *file, "%2s %6s %4s %6s %6s %3s\n", "id", "vid","prio", "member", "untag", "fid"); - for (i = 0; i < RTL8366_NUM_VLANS; ++i) { + for (i = 0; i < RTL8366S_NUM_VLANS; ++i) { struct rtl8366_vlan_mc vlanmc; rtl8366s_get_vlan_mc(smi, i, &vlanmc); @@ -1106,9 +1106,9 @@ static int rtl8366s_sw_get_vlan_enable(struct switch_dev *dev, u32 data; if (attr->ofs == 1) { - rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366S_CHIP_GLOBAL_CTRL_REG, &data); - if (data & RTL8366_CHIP_CTRL_VLAN) + if (data & RTL8366S_CHIP_CTRL_VLAN) val->value.i = 1; else val->value.i = 0; @@ -1131,9 +1131,9 @@ static int rtl8366s_sw_get_blinkrate(struct switch_dev *dev, struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data; - rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366S_LED_BLINKRATE_REG, &data); - val->value.i = (data & (RTL8366_LED_BLINKRATE_MASK)); + val->value.i = (data & (RTL8366S_LED_BLINKRATE_MASK)); return 0; } @@ -1147,8 +1147,8 @@ static int rtl8366s_sw_set_blinkrate(struct switch_dev *dev, if (val->value.i >= 6) return -EINVAL; - return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, - RTL8366_LED_BLINKRATE_MASK, + return rtl8366_smi_rmwr(smi, RTL8366S_LED_BLINKRATE_REG, + RTL8366S_LED_BLINKRATE_MASK, val->value.i); } @@ -1186,7 +1186,7 @@ static int rtl8366s_sw_get_port_link(struct switch_dev *dev, struct rtl8366_smi *smi = &rtl->smi; u32 len = 0, data = 0; - if (val->port_vlan >= RTL8366_NUM_PORTS) + if (val->port_vlan >= RTL8366S_NUM_PORTS) return -EINVAL; memset(rtl->buf, '\0', sizeof(rtl->buf)); @@ -1233,7 +1233,7 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, char *buf = rtl->buf; int err; - if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366S_NUM_VLANS) return -EINVAL; memset(buf, '\0', sizeof(rtl->buf)); @@ -1245,7 +1245,7 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, len += snprintf(buf + len, sizeof(rtl->buf) - len, "VLAN %d: Ports: '", vlan4k.vid); - for (i = 0; i < RTL8366_NUM_PORTS; i++) { + for (i = 0; i < RTL8366S_NUM_PORTS; i++) { if (!(vlan4k.member & (1 << i))) continue; @@ -1272,21 +1272,21 @@ static int rtl8366s_sw_set_port_led(struct switch_dev *dev, u32 mask; u32 reg; - if (val->port_vlan >= RTL8366_NUM_PORTS || - (1 << val->port_vlan) == RTL8366_PORT_UNKNOWN) + if (val->port_vlan >= RTL8366S_NUM_PORTS || + (1 << val->port_vlan) == RTL8366S_PORT_UNKNOWN) return -EINVAL; - if (val->port_vlan == RTL8366_PORT_NUM_CPU) { - reg = RTL8366_LED_BLINKRATE_REG; + if (val->port_vlan == RTL8366S_PORT_NUM_CPU) { + reg = RTL8366S_LED_BLINKRATE_REG; mask = 0xF << 4; data = val->value.i << 4; } else { - reg = RTL8366_LED_CTRL_REG; + reg = RTL8366S_LED_CTRL_REG; mask = 0xF << (val->port_vlan * 4), data = val->value.i << (val->port_vlan * 4); } - return rtl8366_smi_rmwr(smi, RTL8366_LED_BLINKRATE_REG, mask, data); + return rtl8366_smi_rmwr(smi, RTL8366S_LED_BLINKRATE_REG, mask, data); } static int rtl8366s_sw_get_port_led(struct switch_dev *dev, @@ -1296,10 +1296,10 @@ static int rtl8366s_sw_get_port_led(struct switch_dev *dev, struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 data = 0; - if (val->port_vlan >= RTL8366_NUM_LEDGROUPS) + if (val->port_vlan >= RTL8366S_NUM_LEDGROUPS) return -EINVAL; - rtl8366_smi_read_reg(smi, RTL8366_LED_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366S_LED_CTRL_REG, &data); val->value.i = (data >> (val->port_vlan * 4)) & 0x000F; return 0; @@ -1311,7 +1311,7 @@ static int rtl8366s_sw_reset_port_mibs(struct switch_dev *dev, { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - if (val->port_vlan >= RTL8366_NUM_PORTS) + if (val->port_vlan >= RTL8366S_NUM_PORTS) return -EINVAL; @@ -1329,7 +1329,7 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, unsigned long long counter = 0; char *buf = rtl->buf; - if (val->port_vlan >= RTL8366_NUM_PORTS) + if (val->port_vlan >= RTL8366S_NUM_PORTS) return -EINVAL; len += snprintf(buf + len, sizeof(rtl->buf) - len, @@ -1360,14 +1360,14 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev, struct rtl8366_vlan_4k vlan4k; int i; - if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366S_NUM_VLANS) return -EINVAL; rtl8366s_get_vlan_4k(smi, val->port_vlan, &vlan4k); port = &val->value.ports[0]; val->len = 0; - for (i = 0; i < RTL8366_NUM_PORTS; i++) { + for (i = 0; i < RTL8366S_NUM_PORTS; i++) { if (!(vlan4k.member & BIT(i))) continue; @@ -1389,7 +1389,7 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, u32 untag = 0; int i; - if (val->port_vlan == 0 || val->port_vlan >= RTL8366_NUM_VLANS) + if (val->port_vlan == 0 || val->port_vlan >= RTL8366S_NUM_VLANS) return -EINVAL; port = &val->value.ports[0]; @@ -1512,9 +1512,9 @@ static struct switch_attr rtl8366s_vlan[] = { /* template */ static struct switch_dev rtl8366_switch_dev = { .name = "RTL8366S", - .cpu_port = RTL8366_PORT_NUM_CPU, - .ports = RTL8366_NUM_PORTS, - .vlans = RTL8366_NUM_VLANS, + .cpu_port = RTL8366S_PORT_NUM_CPU, + .ports = RTL8366S_NUM_PORTS, + .vlans = RTL8366S_NUM_VLANS, .attr_global = { .attr = rtl8366s_globals, .n_attr = ARRAY_SIZE(rtl8366s_globals), From 1a9ab8302a246498d983400c3ff2719492570f20 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:03 +0000 Subject: [PATCH 36/90] backfire: generic: rtl8366: add VLAN handling functions to rtl8366_smi_ops (backport of r21977) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22023 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.h | 26 ++++++++--- .../files/drivers/net/phy/rtl8366rb.c | 43 +++++++++++-------- .../files/drivers/net/phy/rtl8366s.c | 43 +++++++++++-------- 3 files changed, 69 insertions(+), 43 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index 1afee9b73..c0374bfdd 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -14,6 +14,7 @@ #include struct rtl8366_smi_ops; +struct rtl8366_vlan_ops; struct mii_bus; struct rtl8366_smi { @@ -27,13 +28,6 @@ struct rtl8366_smi { struct rtl8366_smi_ops *ops; }; -struct rtl8366_smi_ops { - int (*detect)(struct rtl8366_smi *smi); - - int (*mii_read)(struct mii_bus *bus, int addr, int reg); - int (*mii_write)(struct mii_bus *bus, int addr, int reg, u16 val); -}; - struct rtl8366_vlan_mc { u16 vid; u8 priority; @@ -49,6 +43,24 @@ struct rtl8366_vlan_4k { u8 fid; }; +struct rtl8366_smi_ops { + int (*detect)(struct rtl8366_smi *smi); + + int (*mii_read)(struct mii_bus *bus, int addr, int reg); + int (*mii_write)(struct mii_bus *bus, int addr, int reg, u16 val); + + int (*get_vlan_mc)(struct rtl8366_smi *smi, u32 index, + struct rtl8366_vlan_mc *vlanmc); + int (*set_vlan_mc)(struct rtl8366_smi *smi, u32 index, + const struct rtl8366_vlan_mc *vlanmc); + int (*get_vlan_4k)(struct rtl8366_smi *smi, u32 vid, + struct rtl8366_vlan_4k *vlan4k); + int (*set_vlan_4k)(struct rtl8366_smi *smi, + const struct rtl8366_vlan_4k *vlan4k); + int (*get_mc_index)(struct rtl8366_smi *smi, int port, int *val); + int (*set_mc_index)(struct rtl8366_smi *smi, int port, int index); +}; + int rtl8366_smi_init(struct rtl8366_smi *smi); void rtl8366_smi_cleanup(struct rtl8366_smi *smi); int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 3edfbc61c..799784373 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -679,14 +679,14 @@ static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, int i; /* Update the 4K table */ - err = rtl8366rb_get_vlan_4k(smi, vid, &vlan4k); + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); if (err) return err; vlan4k.member = member; vlan4k.untag = untag; vlan4k.fid = fid; - err = rtl8366rb_set_vlan_4k(smi, &vlan4k); + err = smi->ops->set_vlan_4k(smi, &vlan4k); if (err) return err; @@ -694,7 +694,7 @@ static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { struct rtl8366_vlan_mc vlanmc; - err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -704,7 +704,7 @@ static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, vlanmc.untag = untag; vlanmc.fid = fid; - err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); break; } } @@ -718,11 +718,11 @@ static int rtl8366rb_get_pvid(struct rtl8366_smi *smi, int port, int *val) int err; int index; - err = rtl8366rb_get_mc_index(smi, port, &index); + err = smi->ops->get_mc_index(smi, port, &index); if (err) return err; - err = rtl8366rb_get_vlan_mc(smi, index, &vlanmc); + err = smi->ops->get_vlan_mc(smi, index, &vlanmc); if (err) return err; @@ -740,7 +740,7 @@ static int rtl8366rb_mc_is_used(struct rtl8366_smi *smi, int mc_index, for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { int index = 0; - err = rtl8366rb_get_mc_index(smi, i, &index); + err = smi->ops->get_mc_index(smi, i, &index); if (err) return err; @@ -763,29 +763,29 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, /* Try to find an existing MC entry for this VID */ for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { - err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; if (vid == vlanmc.vid) { - err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; - err = rtl8366rb_set_mc_index(smi, port, i); + err = smi->ops->set_mc_index(smi, port, i); return err; } } /* We have no MC entry for this VID, try to find an empty one */ for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { - err = rtl8366rb_get_vlan_mc(smi, i, &vlanmc); + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; if (vlanmc.vid == 0 && vlanmc.member == 0) { /* Update the entry from the 4K table */ - err = rtl8366rb_get_vlan_4k(smi, vid, &vlan4k); + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); if (err) return err; @@ -793,11 +793,11 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, vlanmc.member = vlan4k.member; vlanmc.untag = vlan4k.untag; vlanmc.fid = vlan4k.fid; - err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; - err = rtl8366rb_set_mc_index(smi, port, i); + err = smi->ops->set_mc_index(smi, port, i); return err; } } @@ -812,7 +812,7 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, if (!used) { /* Update the entry from the 4K table */ - err = rtl8366rb_get_vlan_4k(smi, vid, &vlan4k); + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); if (err) return err; @@ -820,11 +820,11 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, vlanmc.member = vlan4k.member; vlanmc.untag = vlan4k.untag; vlanmc.fid = vlan4k.fid; - err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; - err = rtl8366rb_set_mc_index(smi, port, i); + err = smi->ops->set_mc_index(smi, port, i); return err; } } @@ -862,7 +862,7 @@ static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) vlanmc.untag = 0; vlanmc.fid = 0; for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { - err = rtl8366rb_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; } @@ -1650,6 +1650,13 @@ static struct rtl8366_smi_ops rtl8366rb_smi_ops = { .detect = rtl8366rb_detect, .mii_read = rtl8366rb_mii_read, .mii_write = rtl8366rb_mii_write, + + .get_vlan_mc = rtl8366rb_get_vlan_mc, + .set_vlan_mc = rtl8366rb_set_vlan_mc, + .get_vlan_4k = rtl8366rb_get_vlan_4k, + .set_vlan_4k = rtl8366rb_set_vlan_4k, + .get_mc_index = rtl8366rb_get_mc_index, + .set_mc_index = rtl8366rb_set_mc_index, }; static int __init rtl8366rb_probe(struct platform_device *pdev) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index f37f47877..a8c48a975 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -669,14 +669,14 @@ static int rtl8366s_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, int i; /* Update the 4K table */ - err = rtl8366s_get_vlan_4k(smi, vid, &vlan4k); + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); if (err) return err; vlan4k.member = member; vlan4k.untag = untag; vlan4k.fid = fid; - err = rtl8366s_set_vlan_4k(smi, &vlan4k); + err = smi->ops->set_vlan_4k(smi, &vlan4k); if (err) return err; @@ -684,7 +684,7 @@ static int rtl8366s_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, for (i = 0; i < RTL8366S_NUM_VLANS; i++) { struct rtl8366_vlan_mc vlanmc; - err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -694,7 +694,7 @@ static int rtl8366s_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, vlanmc.untag = untag; vlanmc.fid = fid; - err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); break; } } @@ -708,11 +708,11 @@ static int rtl8366s_get_pvid(struct rtl8366_smi *smi, int port, int *val) int err; int index; - err = rtl8366s_get_mc_index(smi, port, &index); + err = smi->ops->get_mc_index(smi, port, &index); if (err) return err; - err = rtl8366s_get_vlan_mc(smi, index, &vlanmc); + err = smi->ops->get_vlan_mc(smi, index, &vlanmc); if (err) return err; @@ -730,7 +730,7 @@ static int rtl8366s_mc_is_used(struct rtl8366_smi *smi, int mc_index, for (i = 0; i < RTL8366S_NUM_PORTS; i++) { int index = 0; - err = rtl8366s_get_mc_index(smi, i, &index); + err = smi->ops->get_mc_index(smi, i, &index); if (err) return err; @@ -753,29 +753,29 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, /* Try to find an existing MC entry for this VID */ for (i = 0; i < RTL8366S_NUM_VLANS; i++) { - err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; if (vid == vlanmc.vid) { - err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; - err = rtl8366s_set_mc_index(smi, port, i); + err = smi->ops->set_mc_index(smi, port, i); return err; } } /* We have no MC entry for this VID, try to find an empty one */ for (i = 0; i < RTL8366S_NUM_VLANS; i++) { - err = rtl8366s_get_vlan_mc(smi, i, &vlanmc); + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; if (vlanmc.vid == 0 && vlanmc.member == 0) { /* Update the entry from the 4K table */ - err = rtl8366s_get_vlan_4k(smi, vid, &vlan4k); + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); if (err) return err; @@ -783,11 +783,11 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, vlanmc.member = vlan4k.member; vlanmc.untag = vlan4k.untag; vlanmc.fid = vlan4k.fid; - err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; - err = rtl8366s_set_mc_index(smi, port, i); + err = smi->ops->set_mc_index(smi, port, i); return err; } } @@ -802,7 +802,7 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, if (!used) { /* Update the entry from the 4K table */ - err = rtl8366s_get_vlan_4k(smi, vid, &vlan4k); + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); if (err) return err; @@ -810,11 +810,11 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, vlanmc.member = vlan4k.member; vlanmc.untag = vlan4k.untag; vlanmc.fid = vlan4k.fid; - err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; - err = rtl8366s_set_mc_index(smi, port, i); + err = smi->ops->set_mc_index(smi, port, i); return err; } } @@ -851,7 +851,7 @@ static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) vlanmc.untag = 0; vlanmc.fid = 0; for (i = 0; i < RTL8366S_NUM_VLANS; i++) { - err = rtl8366s_set_vlan_mc(smi, i, &vlanmc); + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; } @@ -1640,6 +1640,13 @@ static struct rtl8366_smi_ops rtl8366s_smi_ops = { .detect = rtl8366s_detect, .mii_read = rtl8366s_mii_read, .mii_write = rtl8366s_mii_write, + + .get_vlan_mc = rtl8366s_get_vlan_mc, + .set_vlan_mc = rtl8366s_set_vlan_mc, + .get_vlan_4k = rtl8366s_get_vlan_4k, + .set_vlan_4k = rtl8366s_set_vlan_4k, + .get_mc_index = rtl8366s_get_mc_index, + .set_mc_index = rtl8366s_set_mc_index, }; static int __init rtl8366s_probe(struct platform_device *pdev) From e651d111d70f5710e5d89d2840067095d7fcf21c Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:11 +0000 Subject: [PATCH 37/90] backfire: generic: rtl8366: add cpu_port, num_ports and num_vlan_mc to struct rtl8366_smi (backport of r21978) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22024 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.h | 4 ++++ .../files/drivers/net/phy/rtl8366rb.c | 23 +++++++++++-------- .../files/drivers/net/phy/rtl8366s.c | 23 +++++++++++-------- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index c0374bfdd..9ed8c4573 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -25,6 +25,10 @@ struct rtl8366_smi { struct mii_bus *mii_bus; int mii_irq[PHY_MAX_ADDR]; + unsigned int cpu_port; + unsigned int num_ports; + unsigned int num_vlan_mc; + struct rtl8366_smi_ops *ops; }; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 799784373..f70744ec0 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -691,7 +691,7 @@ static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, return err; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { struct rtl8366_vlan_mc vlanmc; err = smi->ops->get_vlan_mc(smi, i, &vlanmc); @@ -737,7 +737,7 @@ static int rtl8366rb_mc_is_used(struct rtl8366_smi *smi, int mc_index, int i; *used = 0; - for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { + for (i = 0; i < smi->num_ports; i++) { int index = 0; err = smi->ops->get_mc_index(smi, i, &index); @@ -762,7 +762,7 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, int i; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -778,7 +778,7 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* We have no MC entry for this VID, try to find an empty one */ - for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -803,7 +803,7 @@ static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* MC table is full, try to find an unused entry and replace it */ - for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { int used; err = rtl8366rb_mc_is_used(smi, i, &used); @@ -861,19 +861,19 @@ static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) vlanmc.member = 0; vlanmc.untag = 0; vlanmc.fid = 0; - for (i = 0; i < RTL8366RB_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; } - for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { - if (i == RTL8366RB_PORT_CPU) + for (i = 0; i < smi->num_ports; i++) { + if (i == smi->cpu_port) continue; err = rtl8366rb_set_vlan(smi, (i + 1), - (1 << i) | RTL8366RB_PORT_CPU, - (1 << i) | RTL8366RB_PORT_CPU, + (1 << i) | (1 << smi->cpu_port), + (1 << i) | (1 << smi->cpu_port), 0); if (err) return err; @@ -1692,6 +1692,9 @@ static int __init rtl8366rb_probe(struct platform_device *pdev) smi->gpio_sda = pdata->gpio_sda; smi->gpio_sck = pdata->gpio_sck; smi->ops = &rtl8366rb_smi_ops; + smi->cpu_port = RTL8366RB_PORT_NUM_CPU; + smi->num_ports = RTL8366RB_NUM_PORTS; + smi->num_vlan_mc = RTL8366RB_NUM_VLANS; err = rtl8366_smi_init(smi); if (err) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index a8c48a975..fa3f3cd65 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -681,7 +681,7 @@ static int rtl8366s_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, return err; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366S_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { struct rtl8366_vlan_mc vlanmc; err = smi->ops->get_vlan_mc(smi, i, &vlanmc); @@ -727,7 +727,7 @@ static int rtl8366s_mc_is_used(struct rtl8366_smi *smi, int mc_index, int i; *used = 0; - for (i = 0; i < RTL8366S_NUM_PORTS; i++) { + for (i = 0; i < smi->num_ports; i++) { int index = 0; err = smi->ops->get_mc_index(smi, i, &index); @@ -752,7 +752,7 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, int i; /* Try to find an existing MC entry for this VID */ - for (i = 0; i < RTL8366S_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -768,7 +768,7 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* We have no MC entry for this VID, try to find an empty one */ - for (i = 0; i < RTL8366S_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { err = smi->ops->get_vlan_mc(smi, i, &vlanmc); if (err) return err; @@ -793,7 +793,7 @@ static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, } /* MC table is full, try to find an unused entry and replace it */ - for (i = 0; i < RTL8366S_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { int used; err = rtl8366s_mc_is_used(smi, i, &used); @@ -850,19 +850,19 @@ static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) vlanmc.member = 0; vlanmc.untag = 0; vlanmc.fid = 0; - for (i = 0; i < RTL8366S_NUM_VLANS; i++) { + for (i = 0; i < smi->num_vlan_mc; i++) { err = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (err) return err; } - for (i = 0; i < RTL8366S_NUM_PORTS; i++) { - if (i == RTL8366S_PORT_CPU) + for (i = 0; i < smi->num_ports; i++) { + if (i == smi->cpu_port) continue; err = rtl8366s_set_vlan(smi, (i + 1), - (1 << i) | RTL8366S_PORT_CPU, - (1 << i) | RTL8366S_PORT_CPU, + (1 << i) | (1 << smi->cpu_port), + (1 << i) | (1 << smi->cpu_port), 0); if (err) return err; @@ -1682,6 +1682,9 @@ static int __init rtl8366s_probe(struct platform_device *pdev) smi->gpio_sda = pdata->gpio_sda; smi->gpio_sck = pdata->gpio_sck; smi->ops = &rtl8366s_smi_ops; + smi->cpu_port = RTL8366S_PORT_NUM_CPU; + smi->num_ports = RTL8366S_NUM_PORTS; + smi->num_vlan_mc = RTL8366S_NUM_VLANS; err = rtl8366_smi_init(smi); if (err) From c667963cee194dbb7e39144772f024f7deff8f73 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:19 +0000 Subject: [PATCH 38/90] backfire: generic: rtl8366: move common VLAN handling functions to rtl8366_smi.c (backport of 21979) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22025 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.c | 203 +++++++++++++++++ .../files/drivers/net/phy/rtl8366_smi.h | 6 + .../files/drivers/net/phy/rtl8366rb.c | 209 +----------------- .../files/drivers/net/phy/rtl8366s.c | 209 +----------------- 4 files changed, 217 insertions(+), 410 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c index bb2e3ba68..dacb46594 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c @@ -281,6 +281,209 @@ int rtl8366_smi_rmwr(struct rtl8366_smi *smi, u32 addr, u32 mask, u32 data) } EXPORT_SYMBOL_GPL(rtl8366_smi_rmwr); +static int rtl8366_mc_is_used(struct rtl8366_smi *smi, int mc_index, int *used) +{ + int err; + int i; + + *used = 0; + for (i = 0; i < smi->num_ports; i++) { + int index = 0; + + err = smi->ops->get_mc_index(smi, i, &index); + if (err) + return err; + + if (mc_index == index) { + *used = 1; + break; + } + } + + return 0; +} + +int rtl8366_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, u32 untag, + u32 fid) +{ + struct rtl8366_vlan_4k vlan4k; + int err; + int i; + + /* Update the 4K table */ + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; + + vlan4k.member = member; + vlan4k.untag = untag; + vlan4k.fid = fid; + err = smi->ops->set_vlan_4k(smi, &vlan4k); + if (err) + return err; + + /* Try to find an existing MC entry for this VID */ + for (i = 0; i < smi->num_vlan_mc; i++) { + struct rtl8366_vlan_mc vlanmc; + + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + if (vid == vlanmc.vid) { + /* update the MC entry */ + vlanmc.member = member; + vlanmc.untag = untag; + vlanmc.fid = fid; + + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); + break; + } + } + + return err; +} +EXPORT_SYMBOL_GPL(rtl8366_set_vlan); + +int rtl8366_reset_vlan(struct rtl8366_smi *smi) +{ + struct rtl8366_vlan_mc vlanmc; + int err; + int i; + + /* clear VLAN member configurations */ + vlanmc.vid = 0; + vlanmc.priority = 0; + vlanmc.member = 0; + vlanmc.untag = 0; + vlanmc.fid = 0; + for (i = 0; i < smi->num_vlan_mc; i++) { + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + } + + for (i = 0; i < smi->num_ports; i++) { + if (i == smi->cpu_port) + continue; + + err = rtl8366_set_vlan(smi, (i + 1), + (1 << i) | (1 << smi->cpu_port), + (1 << i) | (1 << smi->cpu_port), + 0); + if (err) + return err; + + err = rtl8366_set_pvid(smi, i, (i + 1)); + if (err) + return err; + } + + return 0; +} +EXPORT_SYMBOL_GPL(rtl8366_reset_vlan); + +int rtl8366_get_pvid(struct rtl8366_smi *smi, int port, int *val) +{ + struct rtl8366_vlan_mc vlanmc; + int err; + int index; + + err = smi->ops->get_mc_index(smi, port, &index); + if (err) + return err; + + err = smi->ops->get_vlan_mc(smi, index, &vlanmc); + if (err) + return err; + + *val = vlanmc.vid; + return 0; +} +EXPORT_SYMBOL_GPL(rtl8366_get_pvid); + +int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, unsigned vid) +{ + struct rtl8366_vlan_mc vlanmc; + struct rtl8366_vlan_4k vlan4k; + int err; + int i; + + /* Try to find an existing MC entry for this VID */ + for (i = 0; i < smi->num_vlan_mc; i++) { + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + if (vid == vlanmc.vid) { + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = smi->ops->set_mc_index(smi, port, i); + return err; + } + } + + /* We have no MC entry for this VID, try to find an empty one */ + for (i = 0; i < smi->num_vlan_mc; i++) { + err = smi->ops->get_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + if (vlanmc.vid == 0 && vlanmc.member == 0) { + /* Update the entry from the 4K table */ + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; + + vlanmc.vid = vid; + vlanmc.member = vlan4k.member; + vlanmc.untag = vlan4k.untag; + vlanmc.fid = vlan4k.fid; + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = smi->ops->set_mc_index(smi, port, i); + return err; + } + } + + /* MC table is full, try to find an unused entry and replace it */ + for (i = 0; i < smi->num_vlan_mc; i++) { + int used; + + err = rtl8366_mc_is_used(smi, i, &used); + if (err) + return err; + + if (!used) { + /* Update the entry from the 4K table */ + err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); + if (err) + return err; + + vlanmc.vid = vid; + vlanmc.member = vlan4k.member; + vlanmc.untag = vlan4k.untag; + vlanmc.fid = vlan4k.fid; + err = smi->ops->set_vlan_mc(smi, i, &vlanmc); + if (err) + return err; + + err = smi->ops->set_mc_index(smi, port, i); + return err; + } + } + + dev_err(smi->parent, + "all VLAN member configurations are in use\n"); + + return -ENOSPC; +} +EXPORT_SYMBOL_GPL(rtl8366_set_pvid); + static int rtl8366_smi_mii_init(struct rtl8366_smi *smi) { int ret; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index 9ed8c4573..f111f2b52 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -71,4 +71,10 @@ int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data); int rtl8366_smi_read_reg(struct rtl8366_smi *smi, u32 addr, u32 *data); int rtl8366_smi_rmwr(struct rtl8366_smi *smi, u32 addr, u32 mask, u32 data); +int rtl8366_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, u32 untag, + u32 fid); +int rtl8366_reset_vlan(struct rtl8366_smi *smi); +int rtl8366_get_pvid(struct rtl8366_smi *smi, int port, int *val); +int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, unsigned vid); + #endif /* _RTL8366_SMI_H */ diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index f70744ec0..02de05575 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -671,170 +671,6 @@ static int rtl8366rb_set_mc_index(struct rtl8366_smi *smi, int port, int index) RTL8366RB_PORT_VLAN_CTRL_SHIFT(port)); } -static int rtl8366rb_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, - u32 untag, u32 fid) -{ - struct rtl8366_vlan_4k vlan4k; - int err; - int i; - - /* Update the 4K table */ - err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (err) - return err; - - vlan4k.member = member; - vlan4k.untag = untag; - vlan4k.fid = fid; - err = smi->ops->set_vlan_4k(smi, &vlan4k); - if (err) - return err; - - /* Try to find an existing MC entry for this VID */ - for (i = 0; i < smi->num_vlan_mc; i++) { - struct rtl8366_vlan_mc vlanmc; - - err = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - if (vid == vlanmc.vid) { - /* update the MC entry */ - vlanmc.member = member; - vlanmc.untag = untag; - vlanmc.fid = fid; - - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - break; - } - } - - return err; -} - -static int rtl8366rb_get_pvid(struct rtl8366_smi *smi, int port, int *val) -{ - struct rtl8366_vlan_mc vlanmc; - int err; - int index; - - err = smi->ops->get_mc_index(smi, port, &index); - if (err) - return err; - - err = smi->ops->get_vlan_mc(smi, index, &vlanmc); - if (err) - return err; - - *val = vlanmc.vid; - return 0; -} - -static int rtl8366rb_mc_is_used(struct rtl8366_smi *smi, int mc_index, - int *used) -{ - int err; - int i; - - *used = 0; - for (i = 0; i < smi->num_ports; i++) { - int index = 0; - - err = smi->ops->get_mc_index(smi, i, &index); - if (err) - return err; - - if (mc_index == index) { - *used = 1; - break; - } - } - - return 0; -} - -static int rtl8366rb_set_pvid(struct rtl8366_smi *smi, unsigned port, - unsigned vid) -{ - struct rtl8366_vlan_mc vlanmc; - struct rtl8366_vlan_4k vlan4k; - int err; - int i; - - /* Try to find an existing MC entry for this VID */ - for (i = 0; i < smi->num_vlan_mc; i++) { - err = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - if (vid == vlanmc.vid) { - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - err = smi->ops->set_mc_index(smi, port, i); - return err; - } - } - - /* We have no MC entry for this VID, try to find an empty one */ - for (i = 0; i < smi->num_vlan_mc; i++) { - err = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - if (vlanmc.vid == 0 && vlanmc.member == 0) { - /* Update the entry from the 4K table */ - err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (err) - return err; - - vlanmc.vid = vid; - vlanmc.member = vlan4k.member; - vlanmc.untag = vlan4k.untag; - vlanmc.fid = vlan4k.fid; - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - err = smi->ops->set_mc_index(smi, port, i); - return err; - } - } - - /* MC table is full, try to find an unused entry and replace it */ - for (i = 0; i < smi->num_vlan_mc; i++) { - int used; - - err = rtl8366rb_mc_is_used(smi, i, &used); - if (err) - return err; - - if (!used) { - /* Update the entry from the 4K table */ - err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (err) - return err; - - vlanmc.vid = vid; - vlanmc.member = vlan4k.member; - vlanmc.untag = vlan4k.untag; - vlanmc.fid = vlan4k.fid; - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - err = smi->ops->set_mc_index(smi, port, i); - return err; - } - } - - dev_err(smi->parent, - "all VLAN member configurations are in use\n"); - - return -ENOSPC; -} - static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { return rtl8366_smi_rmwr(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, @@ -849,43 +685,6 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) (enable) ? RTL8366RB_CHIP_CTRL_VLAN_4KTB : 0); } -static int rtl8366rb_reset_vlan(struct rtl8366_smi *smi) -{ - struct rtl8366_vlan_mc vlanmc; - int err; - int i; - - /* clear VLAN member configurations */ - vlanmc.vid = 0; - vlanmc.priority = 0; - vlanmc.member = 0; - vlanmc.untag = 0; - vlanmc.fid = 0; - for (i = 0; i < smi->num_vlan_mc; i++) { - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - } - - for (i = 0; i < smi->num_ports; i++) { - if (i == smi->cpu_port) - continue; - - err = rtl8366rb_set_vlan(smi, (i + 1), - (1 << i) | (1 << smi->cpu_port), - (1 << i) | (1 << smi->cpu_port), - 0); - if (err) - return err; - - err = rtl8366rb_set_pvid(smi, i, (i + 1)); - if (err) - return err; - } - - return 0; -} - #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS static int rtl8366rb_debugfs_open(struct inode *inode, struct file *file) { @@ -1410,19 +1209,19 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev, untag |= BIT(port->id); } - return rtl8366rb_set_vlan(smi, val->port_vlan, member, untag, 0); + return rtl8366_set_vlan(smi, val->port_vlan, member, untag, 0); } static int rtl8366rb_sw_get_port_pvid(struct switch_dev *dev, int port, int *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366rb_get_pvid(smi, port, val); + return rtl8366_get_pvid(smi, port, val); } static int rtl8366rb_sw_set_port_pvid(struct switch_dev *dev, int port, int val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366rb_set_pvid(smi, port, val); + return rtl8366_set_pvid(smi, port, val); } static int rtl8366rb_sw_reset_switch(struct switch_dev *dev) @@ -1438,7 +1237,7 @@ static int rtl8366rb_sw_reset_switch(struct switch_dev *dev) if (err) return err; - return rtl8366rb_reset_vlan(smi); + return rtl8366_reset_vlan(smi); } static struct switch_attr rtl8366rb_globals[] = { diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index fa3f3cd65..40c9c01f7 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -661,170 +661,6 @@ static int rtl8366s_set_mc_index(struct rtl8366_smi *smi, int port, int index) RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); } -static int rtl8366s_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, - u32 untag, u32 fid) -{ - struct rtl8366_vlan_4k vlan4k; - int err; - int i; - - /* Update the 4K table */ - err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (err) - return err; - - vlan4k.member = member; - vlan4k.untag = untag; - vlan4k.fid = fid; - err = smi->ops->set_vlan_4k(smi, &vlan4k); - if (err) - return err; - - /* Try to find an existing MC entry for this VID */ - for (i = 0; i < smi->num_vlan_mc; i++) { - struct rtl8366_vlan_mc vlanmc; - - err = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - if (vid == vlanmc.vid) { - /* update the MC entry */ - vlanmc.member = member; - vlanmc.untag = untag; - vlanmc.fid = fid; - - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - break; - } - } - - return err; -} - -static int rtl8366s_get_pvid(struct rtl8366_smi *smi, int port, int *val) -{ - struct rtl8366_vlan_mc vlanmc; - int err; - int index; - - err = smi->ops->get_mc_index(smi, port, &index); - if (err) - return err; - - err = smi->ops->get_vlan_mc(smi, index, &vlanmc); - if (err) - return err; - - *val = vlanmc.vid; - return 0; -} - -static int rtl8366s_mc_is_used(struct rtl8366_smi *smi, int mc_index, - int *used) -{ - int err; - int i; - - *used = 0; - for (i = 0; i < smi->num_ports; i++) { - int index = 0; - - err = smi->ops->get_mc_index(smi, i, &index); - if (err) - return err; - - if (mc_index == index) { - *used = 1; - break; - } - } - - return 0; -} - -static int rtl8366s_set_pvid(struct rtl8366_smi *smi, unsigned port, - unsigned vid) -{ - struct rtl8366_vlan_mc vlanmc; - struct rtl8366_vlan_4k vlan4k; - int err; - int i; - - /* Try to find an existing MC entry for this VID */ - for (i = 0; i < smi->num_vlan_mc; i++) { - err = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - if (vid == vlanmc.vid) { - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - err = smi->ops->set_mc_index(smi, port, i); - return err; - } - } - - /* We have no MC entry for this VID, try to find an empty one */ - for (i = 0; i < smi->num_vlan_mc; i++) { - err = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - if (vlanmc.vid == 0 && vlanmc.member == 0) { - /* Update the entry from the 4K table */ - err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (err) - return err; - - vlanmc.vid = vid; - vlanmc.member = vlan4k.member; - vlanmc.untag = vlan4k.untag; - vlanmc.fid = vlan4k.fid; - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - err = smi->ops->set_mc_index(smi, port, i); - return err; - } - } - - /* MC table is full, try to find an unused entry and replace it */ - for (i = 0; i < smi->num_vlan_mc; i++) { - int used; - - err = rtl8366s_mc_is_used(smi, i, &used); - if (err) - return err; - - if (!used) { - /* Update the entry from the 4K table */ - err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (err) - return err; - - vlanmc.vid = vid; - vlanmc.member = vlan4k.member; - vlanmc.untag = vlan4k.untag; - vlanmc.fid = vlan4k.fid; - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - - err = smi->ops->set_mc_index(smi, port, i); - return err; - } - } - - dev_err(smi->parent, - "all VLAN member configurations are in use\n"); - - return -ENOSPC; -} - static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { return rtl8366_smi_rmwr(smi, RTL8366S_CHIP_GLOBAL_CTRL_REG, @@ -838,43 +674,6 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) 1, (enable) ? 1 : 0); } -static int rtl8366s_reset_vlan(struct rtl8366_smi *smi) -{ - struct rtl8366_vlan_mc vlanmc; - int err; - int i; - - /* clear VLAN member configurations */ - vlanmc.vid = 0; - vlanmc.priority = 0; - vlanmc.member = 0; - vlanmc.untag = 0; - vlanmc.fid = 0; - for (i = 0; i < smi->num_vlan_mc; i++) { - err = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (err) - return err; - } - - for (i = 0; i < smi->num_ports; i++) { - if (i == smi->cpu_port) - continue; - - err = rtl8366s_set_vlan(smi, (i + 1), - (1 << i) | (1 << smi->cpu_port), - (1 << i) | (1 << smi->cpu_port), - 0); - if (err) - return err; - - err = rtl8366s_set_pvid(smi, i, (i + 1)); - if (err) - return err; - } - - return 0; -} - #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS static int rtl8366s_debugfs_open(struct inode *inode, struct file *file) { @@ -1400,19 +1199,19 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev, untag |= BIT(port->id); } - return rtl8366s_set_vlan(smi, val->port_vlan, member, untag, 0); + return rtl8366_set_vlan(smi, val->port_vlan, member, untag, 0); } static int rtl8366s_sw_get_port_pvid(struct switch_dev *dev, int port, int *val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366s_get_pvid(smi, port, val); + return rtl8366_get_pvid(smi, port, val); } static int rtl8366s_sw_set_port_pvid(struct switch_dev *dev, int port, int val) { struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); - return rtl8366s_set_pvid(smi, port, val); + return rtl8366_set_pvid(smi, port, val); } static int rtl8366s_sw_reset_switch(struct switch_dev *dev) @@ -1428,7 +1227,7 @@ static int rtl8366s_sw_reset_switch(struct switch_dev *dev) if (err) return err; - return rtl8366s_reset_vlan(smi); + return rtl8366_reset_vlan(smi); } static struct switch_attr rtl8366s_globals[] = { From e4c3757c173a8337cf2793e60c64c969f1b22503 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:26 +0000 Subject: [PATCH 39/90] backfire: generic: rtl8366: move buf to struct rtl8366_smi (backport of 21980) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22026 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.h | 2 + .../files/drivers/net/phy/rtl8366rb.c | 68 +++++++++---------- .../files/drivers/net/phy/rtl8366s.c | 68 +++++++++---------- 3 files changed, 66 insertions(+), 72 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index f111f2b52..863955301 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -30,6 +30,8 @@ struct rtl8366_smi { unsigned int num_vlan_mc; struct rtl8366_smi_ops *ops; + + char buf[4096]; }; struct rtl8366_vlan_mc { diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 02de05575..0bab80ad9 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -164,7 +164,6 @@ struct rtl8366rb { struct device *parent; struct rtl8366_smi smi; struct switch_dev dev; - char buf[4096]; #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS struct dentry *debugfs_root; #endif @@ -699,30 +698,30 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; struct rtl8366_smi *smi = &rtl->smi; int i, j, len = 0; - char *buf = rtl->buf; + char *buf = smi->buf; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s %12s %12s %12s %12s %12s %12s\n", "Counter", "Port 0", "Port 1", "Port 2", "Port 3", "Port 4", "Port 5"); for (i = 0; i < ARRAY_SIZE(rtl8366rb_mib_counters); ++i) { - len += snprintf(buf + len, sizeof(rtl->buf) - len, "%-36s ", + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s ", rtl8366rb_mib_counters[i].name); for (j = 0; j < RTL8366RB_NUM_PORTS; ++j) { unsigned long long counter = 0; if (!rtl8366_get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, - sizeof(rtl->buf) - len, + sizeof(smi->buf) - len, "%12llu ", counter); else len += snprintf(buf + len, - sizeof(rtl->buf) - len, + sizeof(smi->buf) - len, "%12s ", "error"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); + len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); } return simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -735,9 +734,9 @@ static ssize_t rtl8366rb_read_debugfs_vlan_mc(struct file *file, struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; struct rtl8366_smi *smi = &rtl->smi; int i, len = 0; - char *buf = rtl->buf; + char *buf = smi->buf; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%2s %6s %4s %6s %6s %3s\n", "id", "vid","prio", "member", "untag", "fid"); @@ -746,7 +745,7 @@ static ssize_t rtl8366rb_read_debugfs_vlan_mc(struct file *file, rtl8366rb_get_vlan_mc(smi, i, &vlanmc); - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%2d %6d %4d 0x%04x 0x%04x %3d\n", i, vlanmc.vid, vlanmc.priority, vlanmc.member, vlanmc.untag, vlanmc.fid); @@ -763,18 +762,18 @@ static ssize_t rtl8366rb_read_debugfs_reg(struct file *file, struct rtl8366_smi *smi = &rtl->smi; u32 t, reg = gl_dbg_reg; int err, len = 0; - char *buf = rtl->buf; + char *buf = smi->buf; - memset(buf, '\0', sizeof(rtl->buf)); + memset(buf, '\0', sizeof(smi->buf)); err = rtl8366_smi_read_reg(smi, reg, &t); if (err) { - len += snprintf(buf, sizeof(rtl->buf), + len += snprintf(buf, sizeof(smi->buf), "Read failed (reg: 0x%04x)\n", reg); return simple_read_from_buffer(user_buf, count, ppos, buf, len); } - len += snprintf(buf, sizeof(rtl->buf), "reg = 0x%04x, val = 0x%04x\n", + len += snprintf(buf, sizeof(smi->buf), "reg = 0x%04x, val = 0x%04x\n", reg, t); return simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -790,9 +789,9 @@ static ssize_t rtl8366rb_write_debugfs_reg(struct file *file, u32 reg = gl_dbg_reg; int err; size_t len; - char *buf = rtl->buf; + char *buf = smi->buf; - len = min(count, sizeof(rtl->buf) - 1); + len = min(count, sizeof(smi->buf) - 1); if (copy_from_user(buf, user_buf, len)) { dev_err(rtl->parent, "copy from user failed\n"); return -EFAULT; @@ -993,14 +992,13 @@ static int rtl8366rb_sw_get_port_link(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 len = 0, data = 0; if (val->port_vlan >= RTL8366RB_NUM_PORTS) return -EINVAL; - memset(rtl->buf, '\0', sizeof(rtl->buf)); + memset(smi->buf, '\0', sizeof(smi->buf)); rtl8366_smi_read_reg(smi, RTL8366RB_PORT_LINK_STATUS_BASE + (val->port_vlan / 2), &data); @@ -1008,7 +1006,7 @@ static int rtl8366rb_sw_get_port_link(struct switch_dev *dev, data = data >> 8; if (data & RTL8366RB_PORT_STATUS_LINK_MASK) { - len = snprintf(rtl->buf, sizeof(rtl->buf), + len = snprintf(smi->buf, sizeof(smi->buf), "port:%d link:up speed:%s %s-duplex %s%s%s", val->port_vlan, rtl8366rb_speed_str(data & @@ -1022,11 +1020,11 @@ static int rtl8366rb_sw_get_port_link(struct switch_dev *dev, (data & RTL8366RB_PORT_STATUS_AN_MASK) ? "nway ": ""); } else { - len = snprintf(rtl->buf, sizeof(rtl->buf), "port:%d link: down", + len = snprintf(smi->buf, sizeof(smi->buf), "port:%d link: down", val->port_vlan); } - val->value.s = rtl->buf; + val->value.s = smi->buf; val->len = len; return 0; @@ -1039,32 +1037,31 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev, int i; u32 len = 0; struct rtl8366_vlan_4k vlan4k; - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; - char *buf = rtl->buf; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + char *buf = smi->buf; int err; if (val->port_vlan == 0 || val->port_vlan >= RTL8366RB_NUM_VLANS) return -EINVAL; - memset(buf, '\0', sizeof(rtl->buf)); + memset(buf, '\0', sizeof(smi->buf)); err = rtl8366rb_get_vlan_4k(smi, val->port_vlan, &vlan4k); if (err) return err; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "VLAN %d: Ports: '", vlan4k.vid); for (i = 0; i < RTL8366RB_NUM_PORTS; i++) { if (!(vlan4k.member & (1 << i))) continue; - len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d%s", i, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%d%s", i, (vlan4k.untag & (1 << i)) ? "" : "t"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "', members=%04x, untag=%04x, fid=%u", vlan4k.member, vlan4k.untag, vlan4k.fid); @@ -1132,27 +1129,26 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366rb *rtl = sw_to_rtl8366rb(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); int i, len = 0; unsigned long long counter = 0; - char *buf = rtl->buf; + char *buf = smi->buf; if (val->port_vlan >= RTL8366RB_NUM_PORTS) return -EINVAL; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "Port %d MIB counters\n", val->port_vlan); for (i = 0; i < ARRAY_SIZE(rtl8366rb_mib_counters); ++i) { - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s: ", rtl8366rb_mib_counters[i].name); if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%llu\n", counter); else - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%s\n", "error"); } diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 40c9c01f7..6e55ccde6 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -170,7 +170,6 @@ struct rtl8366s { struct device *parent; struct rtl8366_smi smi; struct switch_dev dev; - char buf[4096]; #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS struct dentry *debugfs_root; #endif @@ -688,30 +687,30 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; struct rtl8366_smi *smi = &rtl->smi; int i, j, len = 0; - char *buf = rtl->buf; + char *buf = smi->buf; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s %12s %12s %12s %12s %12s %12s\n", "Counter", "Port 0", "Port 1", "Port 2", "Port 3", "Port 4", "Port 5"); for (i = 0; i < ARRAY_SIZE(rtl8366s_mib_counters); ++i) { - len += snprintf(buf + len, sizeof(rtl->buf) - len, "%-36s ", + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s ", rtl8366s_mib_counters[i].name); for (j = 0; j < RTL8366S_NUM_PORTS; ++j) { unsigned long long counter = 0; if (!rtl8366_get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, - sizeof(rtl->buf) - len, + sizeof(smi->buf) - len, "%12llu ", counter); else len += snprintf(buf + len, - sizeof(rtl->buf) - len, + sizeof(smi->buf) - len, "%12s ", "error"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, "\n"); + len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); } return simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -724,9 +723,9 @@ static ssize_t rtl8366s_read_debugfs_vlan_mc(struct file *file, struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; struct rtl8366_smi *smi = &rtl->smi; int i, len = 0; - char *buf = rtl->buf; + char *buf = smi->buf; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%2s %6s %4s %6s %6s %3s\n", "id", "vid","prio", "member", "untag", "fid"); @@ -735,7 +734,7 @@ static ssize_t rtl8366s_read_debugfs_vlan_mc(struct file *file, rtl8366s_get_vlan_mc(smi, i, &vlanmc); - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%2d %6d %4d 0x%04x 0x%04x %3d\n", i, vlanmc.vid, vlanmc.priority, vlanmc.member, vlanmc.untag, vlanmc.fid); @@ -752,18 +751,18 @@ static ssize_t rtl8366s_read_debugfs_reg(struct file *file, struct rtl8366_smi *smi = &rtl->smi; u32 t, reg = g_dbg_reg; int err, len = 0; - char *buf = rtl->buf; + char *buf = smi->buf; - memset(buf, '\0', sizeof(rtl->buf)); + memset(buf, '\0', sizeof(smi->buf)); err = rtl8366_smi_read_reg(smi, reg, &t); if (err) { - len += snprintf(buf, sizeof(rtl->buf), + len += snprintf(buf, sizeof(smi->buf), "Read failed (reg: 0x%04x)\n", reg); return simple_read_from_buffer(user_buf, count, ppos, buf, len); } - len += snprintf(buf, sizeof(rtl->buf), "reg = 0x%04x, val = 0x%04x\n", + len += snprintf(buf, sizeof(smi->buf), "reg = 0x%04x, val = 0x%04x\n", reg, t); return simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -779,9 +778,9 @@ static ssize_t rtl8366s_write_debugfs_reg(struct file *file, u32 reg = g_dbg_reg; int err; size_t len; - char *buf = rtl->buf; + char *buf = smi->buf; - len = min(count, sizeof(rtl->buf) - 1); + len = min(count, sizeof(smi->buf) - 1); if (copy_from_user(buf, user_buf, len)) { dev_err(rtl->parent, "copy from user failed\n"); return -EFAULT; @@ -981,14 +980,13 @@ static int rtl8366s_sw_get_port_link(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); u32 len = 0, data = 0; if (val->port_vlan >= RTL8366S_NUM_PORTS) return -EINVAL; - memset(rtl->buf, '\0', sizeof(rtl->buf)); + memset(smi->buf, '\0', sizeof(smi->buf)); rtl8366_smi_read_reg(smi, RTL8366S_PORT_LINK_STATUS_BASE + (val->port_vlan / 2), &data); @@ -996,7 +994,7 @@ static int rtl8366s_sw_get_port_link(struct switch_dev *dev, data = data >> 8; if (data & RTL8366S_PORT_STATUS_LINK_MASK) { - len = snprintf(rtl->buf, sizeof(rtl->buf), + len = snprintf(smi->buf, sizeof(smi->buf), "port:%d link:up speed:%s %s-duplex %s%s%s", val->port_vlan, rtl8366s_speed_str(data & @@ -1010,11 +1008,11 @@ static int rtl8366s_sw_get_port_link(struct switch_dev *dev, (data & RTL8366S_PORT_STATUS_AN_MASK) ? "nway ": ""); } else { - len = snprintf(rtl->buf, sizeof(rtl->buf), "port:%d link: down", + len = snprintf(smi->buf, sizeof(smi->buf), "port:%d link: down", val->port_vlan); } - val->value.s = rtl->buf; + val->value.s = smi->buf; val->len = len; return 0; @@ -1027,32 +1025,31 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev, int i; u32 len = 0; struct rtl8366_vlan_4k vlan4k; - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; - char *buf = rtl->buf; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + char *buf = smi->buf; int err; if (val->port_vlan == 0 || val->port_vlan >= RTL8366S_NUM_VLANS) return -EINVAL; - memset(buf, '\0', sizeof(rtl->buf)); + memset(buf, '\0', sizeof(smi->buf)); err = rtl8366s_get_vlan_4k(smi, val->port_vlan, &vlan4k); if (err) return err; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "VLAN %d: Ports: '", vlan4k.vid); for (i = 0; i < RTL8366S_NUM_PORTS; i++) { if (!(vlan4k.member & (1 << i))) continue; - len += snprintf(buf + len, sizeof(rtl->buf) - len, "%d%s", i, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%d%s", i, (vlan4k.untag & (1 << i)) ? "" : "t"); } - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "', members=%04x, untag=%04x, fid=%u", vlan4k.member, vlan4k.untag, vlan4k.fid); @@ -1122,27 +1119,26 @@ static int rtl8366s_sw_get_port_mib(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct rtl8366s *rtl = sw_to_rtl8366s(dev); - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); int i, len = 0; unsigned long long counter = 0; - char *buf = rtl->buf; + char *buf = smi->buf; if (val->port_vlan >= RTL8366S_NUM_PORTS) return -EINVAL; - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "Port %d MIB counters\n", val->port_vlan); for (i = 0; i < ARRAY_SIZE(rtl8366s_mib_counters); ++i) { - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s: ", rtl8366s_mib_counters[i].name); if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%llu\n", counter); else - len += snprintf(buf + len, sizeof(rtl->buf) - len, + len += snprintf(buf + len, sizeof(smi->buf) - len, "%s\n", "error"); } From 1a7ad13e99dce70cae38cabf93ba3187939028d7 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:32 +0000 Subject: [PATCH 40/90] backfire: generic: rtl8366: move common debugfs code to rtl8366_smi.c (backport of 21981) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22027 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.c | 164 ++++++++++++++++ .../files/drivers/net/phy/rtl8366_smi.h | 11 ++ .../files/drivers/net/phy/rtl8366rb.c | 176 +---------------- .../files/drivers/net/phy/rtl8366s.c | 177 +----------------- 4 files changed, 193 insertions(+), 335 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c index dacb46594..feb7d2ca9 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c @@ -16,6 +16,10 @@ #include #include +#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS +#include +#endif + #include "rtl8366_smi.h" #define RTL8366_SMI_ACK_RETRY_COUNT 5 @@ -484,6 +488,163 @@ int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, unsigned vid) } EXPORT_SYMBOL_GPL(rtl8366_set_pvid); +#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS +int rtl8366_debugfs_open(struct inode *inode, struct file *file) +{ + file->private_data = inode->i_private; + return 0; +} +EXPORT_SYMBOL_GPL(rtl8366_debugfs_open); + +static ssize_t rtl8366_read_debugfs_vlan_mc(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; + int i, len = 0; + char *buf = smi->buf; + + len += snprintf(buf + len, sizeof(smi->buf) - len, + "%2s %6s %4s %6s %6s %3s\n", + "id", "vid","prio", "member", "untag", "fid"); + + for (i = 0; i < smi->num_vlan_mc; ++i) { + struct rtl8366_vlan_mc vlanmc; + + smi->ops->get_vlan_mc(smi, i, &vlanmc); + + len += snprintf(buf + len, sizeof(smi->buf) - len, + "%2d %6d %4d 0x%04x 0x%04x %3d\n", + i, vlanmc.vid, vlanmc.priority, + vlanmc.member, vlanmc.untag, vlanmc.fid); + } + + return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + +static ssize_t rtl8366_read_debugfs_reg(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; + u32 t, reg = smi->dbg_reg; + int err, len = 0; + char *buf = smi->buf; + + memset(buf, '\0', sizeof(smi->buf)); + + err = rtl8366_smi_read_reg(smi, reg, &t); + if (err) { + len += snprintf(buf, sizeof(smi->buf), + "Read failed (reg: 0x%04x)\n", reg); + return simple_read_from_buffer(user_buf, count, ppos, buf, len); + } + + len += snprintf(buf, sizeof(smi->buf), "reg = 0x%04x, val = 0x%04x\n", + reg, t); + + return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + +static ssize_t rtl8366_write_debugfs_reg(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; + unsigned long data; + u32 reg = smi->dbg_reg; + int err; + size_t len; + char *buf = smi->buf; + + len = min(count, sizeof(smi->buf) - 1); + if (copy_from_user(buf, user_buf, len)) { + dev_err(smi->parent, "copy from user failed\n"); + return -EFAULT; + } + + buf[len] = '\0'; + if (len > 0 && buf[len - 1] == '\n') + buf[len - 1] = '\0'; + + + if (strict_strtoul(buf, 16, &data)) { + dev_err(smi->parent, "Invalid reg value %s\n", buf); + } else { + err = rtl8366_smi_write_reg(smi, reg, data); + if (err) { + dev_err(smi->parent, + "writing reg 0x%04x val 0x%04lx failed\n", + reg, data); + } + } + + return count; +} + +static const struct file_operations fops_rtl8366_regs = { + .read = rtl8366_read_debugfs_reg, + .write = rtl8366_write_debugfs_reg, + .open = rtl8366_debugfs_open, + .owner = THIS_MODULE +}; + +static const struct file_operations fops_rtl8366_vlan_mc = { + .read = rtl8366_read_debugfs_vlan_mc, + .open = rtl8366_debugfs_open, + .owner = THIS_MODULE +}; + +static void rtl8366_debugfs_init(struct rtl8366_smi *smi) +{ + struct dentry *node; + struct dentry *root; + + if (!smi->debugfs_root) + smi->debugfs_root = debugfs_create_dir(dev_name(smi->parent), + NULL); + + if (!smi->debugfs_root) { + dev_err(smi->parent, "Unable to create debugfs dir\n"); + return; + } + root = smi->debugfs_root; + + node = debugfs_create_x16("reg", S_IRUGO | S_IWUSR, root, + &smi->dbg_reg); + if (!node) { + dev_err(smi->parent, "Creating debugfs file '%s' failed\n", + "reg"); + return; + } + + node = debugfs_create_file("val", S_IRUGO | S_IWUSR, root, smi, + &fops_rtl8366_regs); + if (!node) { + dev_err(smi->parent, "Creating debugfs file '%s' failed\n", + "val"); + return; + } + + node = debugfs_create_file("vlan_mc", S_IRUSR, root, smi, + &fops_rtl8366_vlan_mc); + if (!node) + dev_err(smi->parent, "Creating debugfs file '%s' failed\n", + "vlan_mc"); +} + +static void rtl8366_debugfs_remove(struct rtl8366_smi *smi) +{ + if (smi->debugfs_root) { + debugfs_remove_recursive(smi->debugfs_root); + smi->debugfs_root = NULL; + } +} +#else +static inline void rtl8366_debugfs_init(struct rtl8366_smi *smi) {} +static inline void rtl8366_debugfs_remove(struct rtl8366_smi *smi) {} +#endif /* CONFIG_RTL8366S_PHY_DEBUG_FS */ + static int rtl8366_smi_mii_init(struct rtl8366_smi *smi) { int ret; @@ -564,6 +725,8 @@ int rtl8366_smi_init(struct rtl8366_smi *smi) if (err) goto err_free_sck; + rtl8366_debugfs_init(smi); + return 0; err_free_sck: @@ -577,6 +740,7 @@ EXPORT_SYMBOL_GPL(rtl8366_smi_init); void rtl8366_smi_cleanup(struct rtl8366_smi *smi) { + rtl8366_debugfs_remove(smi); rtl8366_smi_mii_cleanup(smi); gpio_free(smi->gpio_sck); gpio_free(smi->gpio_sda); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index 863955301..323887596 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -16,6 +16,9 @@ struct rtl8366_smi_ops; struct rtl8366_vlan_ops; struct mii_bus; +struct dentry; +struct inode; +struct file; struct rtl8366_smi { struct device *parent; @@ -32,6 +35,10 @@ struct rtl8366_smi { struct rtl8366_smi_ops *ops; char buf[4096]; +#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS + struct dentry *debugfs_root; + u16 dbg_reg; +#endif }; struct rtl8366_vlan_mc { @@ -79,4 +86,8 @@ int rtl8366_reset_vlan(struct rtl8366_smi *smi); int rtl8366_get_pvid(struct rtl8366_smi *smi, int port, int *val); int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, unsigned vid); +#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS +int rtl8366_debugfs_open(struct inode *inode, struct file *file); +#endif + #endif /* _RTL8366_SMI_H */ diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 0bab80ad9..70063d486 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -164,9 +164,6 @@ struct rtl8366rb { struct device *parent; struct rtl8366_smi smi; struct switch_dev dev; -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS - struct dentry *debugfs_root; -#endif }; struct rtl8366rb_vlan_mc { @@ -190,10 +187,6 @@ struct rtl8366rb_vlan_4k { u16 fid:3; }; -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -u16 gl_dbg_reg; -#endif - struct mib_counter { unsigned offset; unsigned length; @@ -685,18 +678,11 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) } #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -static int rtl8366rb_debugfs_open(struct inode *inode, struct file *file) -{ - file->private_data = inode->i_private; - return 0; -} - static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { - struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = file->private_data; int i, j, len = 0; char *buf = smi->buf; @@ -727,171 +713,28 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, return simple_read_from_buffer(user_buf, count, ppos, buf, len); } -static ssize_t rtl8366rb_read_debugfs_vlan_mc(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; - int i, len = 0; - char *buf = smi->buf; - - len += snprintf(buf + len, sizeof(smi->buf) - len, - "%2s %6s %4s %6s %6s %3s\n", - "id", "vid","prio", "member", "untag", "fid"); - - for (i = 0; i < RTL8366RB_NUM_VLANS; ++i) { - struct rtl8366_vlan_mc vlanmc; - - rtl8366rb_get_vlan_mc(smi, i, &vlanmc); - - len += snprintf(buf + len, sizeof(smi->buf) - len, - "%2d %6d %4d 0x%04x 0x%04x %3d\n", - i, vlanmc.vid, vlanmc.priority, - vlanmc.member, vlanmc.untag, vlanmc.fid); - } - - return simple_read_from_buffer(user_buf, count, ppos, buf, len); -} - -static ssize_t rtl8366rb_read_debugfs_reg(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; - u32 t, reg = gl_dbg_reg; - int err, len = 0; - char *buf = smi->buf; - - memset(buf, '\0', sizeof(smi->buf)); - - err = rtl8366_smi_read_reg(smi, reg, &t); - if (err) { - len += snprintf(buf, sizeof(smi->buf), - "Read failed (reg: 0x%04x)\n", reg); - return simple_read_from_buffer(user_buf, count, ppos, buf, len); - } - - len += snprintf(buf, sizeof(smi->buf), "reg = 0x%04x, val = 0x%04x\n", - reg, t); - - return simple_read_from_buffer(user_buf, count, ppos, buf, len); -} - -static ssize_t rtl8366rb_write_debugfs_reg(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366rb *rtl = (struct rtl8366rb *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; - unsigned long data; - u32 reg = gl_dbg_reg; - int err; - size_t len; - char *buf = smi->buf; - - len = min(count, sizeof(smi->buf) - 1); - if (copy_from_user(buf, user_buf, len)) { - dev_err(rtl->parent, "copy from user failed\n"); - return -EFAULT; - } - - buf[len] = '\0'; - if (len > 0 && buf[len - 1] == '\n') - buf[len - 1] = '\0'; - - - if (strict_strtoul(buf, 16, &data)) { - dev_err(rtl->parent, "Invalid reg value %s\n", buf); - } else { - err = rtl8366_smi_write_reg(smi, reg, data); - if (err) { - dev_err(rtl->parent, - "writing reg 0x%04x val 0x%04lx failed\n", - reg, data); - } - } - - return count; -} - -static const struct file_operations fops_rtl8366rb_regs = { - .read = rtl8366rb_read_debugfs_reg, - .write = rtl8366rb_write_debugfs_reg, - .open = rtl8366rb_debugfs_open, - .owner = THIS_MODULE -}; - -static const struct file_operations fops_rtl8366rb_vlan_mc = { - .read = rtl8366rb_read_debugfs_vlan_mc, - .open = rtl8366rb_debugfs_open, - .owner = THIS_MODULE -}; - static const struct file_operations fops_rtl8366rb_mibs = { .read = rtl8366rb_read_debugfs_mibs, - .open = rtl8366rb_debugfs_open, + .open = rtl8366_debugfs_open, .owner = THIS_MODULE }; -static void rtl8366rb_debugfs_init(struct rtl8366rb *rtl) +static void rtl8366rb_debugfs_init(struct rtl8366_smi *smi) { struct dentry *node; - struct dentry *root; - if (!rtl->debugfs_root) - rtl->debugfs_root = debugfs_create_dir("rtl8366rb", NULL); - - if (!rtl->debugfs_root) { - dev_err(rtl->parent, "Unable to create debugfs dir\n"); + if (!smi->debugfs_root) return; - } - root = rtl->debugfs_root; - node = debugfs_create_x16("reg", S_IRUGO | S_IWUSR, root, &gl_dbg_reg); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "reg"); - return; - } - - node = debugfs_create_file("val", S_IRUGO | S_IWUSR, root, rtl, - &fops_rtl8366rb_regs); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "val"); - return; - } - - node = debugfs_create_file("vlan_mc", S_IRUSR, root, rtl, - &fops_rtl8366rb_vlan_mc); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "vlan_mc"); - return; - } - - node = debugfs_create_file("mibs", S_IRUSR, root, rtl, + node = debugfs_create_file("mibs", S_IRUSR, smi->debugfs_root, smi, &fops_rtl8366rb_mibs); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + if (!node) + dev_err(smi->parent, "Creating debugfs file '%s' failed\n", "mibs"); - return; - } -} - -static void rtl8366rb_debugfs_remove(struct rtl8366rb *rtl) -{ - if (rtl->debugfs_root) { - debugfs_remove_recursive(rtl->debugfs_root); - rtl->debugfs_root = NULL; - } } #else -static inline void rtl8366rb_debugfs_init(struct rtl8366rb *rtl) {} -static inline void rtl8366rb_debugfs_remove(struct rtl8366rb *rtl) {} +static inline void rtl8366rb_debugfs_init(struct rtl8366_smi *smi) {} #endif /* CONFIG_RTL8366S_PHY_DEBUG_FS */ static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev, @@ -1398,7 +1241,7 @@ static int rtl8366rb_setup(struct rtl8366rb *rtl) struct rtl8366_smi *smi = &rtl->smi; int ret; - rtl8366rb_debugfs_init(rtl); + rtl8366rb_debugfs_init(smi); ret = rtl8366rb_reset_chip(smi); if (ret) @@ -1548,7 +1391,6 @@ static int __devexit rtl8366rb_remove(struct platform_device *pdev) if (rtl) { rtl8366rb_switch_cleanup(rtl); - rtl8366rb_debugfs_remove(rtl); platform_set_drvdata(pdev, NULL); rtl8366_smi_cleanup(&rtl->smi); kfree(rtl); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 6e55ccde6..df6fe2909 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -170,9 +170,6 @@ struct rtl8366s { struct device *parent; struct rtl8366_smi smi; struct switch_dev dev; -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS - struct dentry *debugfs_root; -#endif }; struct rtl8366s_vlan_mc { @@ -196,10 +193,6 @@ struct rtl8366s_vlan_4k { u16 member:6; }; -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -u16 g_dbg_reg; -#endif - struct mib_counter { unsigned base; unsigned offset; @@ -674,18 +667,11 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) } #ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -static int rtl8366s_debugfs_open(struct inode *inode, struct file *file) -{ - file->private_data = inode->i_private; - return 0; -} - static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { - struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; + struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; int i, j, len = 0; char *buf = smi->buf; @@ -716,171 +702,27 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, return simple_read_from_buffer(user_buf, count, ppos, buf, len); } -static ssize_t rtl8366s_read_debugfs_vlan_mc(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; - int i, len = 0; - char *buf = smi->buf; - - len += snprintf(buf + len, sizeof(smi->buf) - len, - "%2s %6s %4s %6s %6s %3s\n", - "id", "vid","prio", "member", "untag", "fid"); - - for (i = 0; i < RTL8366S_NUM_VLANS; ++i) { - struct rtl8366_vlan_mc vlanmc; - - rtl8366s_get_vlan_mc(smi, i, &vlanmc); - - len += snprintf(buf + len, sizeof(smi->buf) - len, - "%2d %6d %4d 0x%04x 0x%04x %3d\n", - i, vlanmc.vid, vlanmc.priority, - vlanmc.member, vlanmc.untag, vlanmc.fid); - } - - return simple_read_from_buffer(user_buf, count, ppos, buf, len); -} - -static ssize_t rtl8366s_read_debugfs_reg(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; - u32 t, reg = g_dbg_reg; - int err, len = 0; - char *buf = smi->buf; - - memset(buf, '\0', sizeof(smi->buf)); - - err = rtl8366_smi_read_reg(smi, reg, &t); - if (err) { - len += snprintf(buf, sizeof(smi->buf), - "Read failed (reg: 0x%04x)\n", reg); - return simple_read_from_buffer(user_buf, count, ppos, buf, len); - } - - len += snprintf(buf, sizeof(smi->buf), "reg = 0x%04x, val = 0x%04x\n", - reg, t); - - return simple_read_from_buffer(user_buf, count, ppos, buf, len); -} - -static ssize_t rtl8366s_write_debugfs_reg(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366s *rtl = (struct rtl8366s *)file->private_data; - struct rtl8366_smi *smi = &rtl->smi; - unsigned long data; - u32 reg = g_dbg_reg; - int err; - size_t len; - char *buf = smi->buf; - - len = min(count, sizeof(smi->buf) - 1); - if (copy_from_user(buf, user_buf, len)) { - dev_err(rtl->parent, "copy from user failed\n"); - return -EFAULT; - } - - buf[len] = '\0'; - if (len > 0 && buf[len - 1] == '\n') - buf[len - 1] = '\0'; - - - if (strict_strtoul(buf, 16, &data)) { - dev_err(rtl->parent, "Invalid reg value %s\n", buf); - } else { - err = rtl8366_smi_write_reg(smi, reg, data); - if (err) { - dev_err(rtl->parent, - "writing reg 0x%04x val 0x%04lx failed\n", - reg, data); - } - } - - return count; -} - -static const struct file_operations fops_rtl8366s_regs = { - .read = rtl8366s_read_debugfs_reg, - .write = rtl8366s_write_debugfs_reg, - .open = rtl8366s_debugfs_open, - .owner = THIS_MODULE -}; - -static const struct file_operations fops_rtl8366s_vlan_mc = { - .read = rtl8366s_read_debugfs_vlan_mc, - .open = rtl8366s_debugfs_open, - .owner = THIS_MODULE -}; - static const struct file_operations fops_rtl8366s_mibs = { .read = rtl8366s_read_debugfs_mibs, - .open = rtl8366s_debugfs_open, + .open = rtl8366_debugfs_open, .owner = THIS_MODULE }; -static void rtl8366s_debugfs_init(struct rtl8366s *rtl) +static void rtl8366s_debugfs_init(struct rtl8366_smi *smi) { struct dentry *node; - struct dentry *root; - if (!rtl->debugfs_root) - rtl->debugfs_root = debugfs_create_dir("rtl8366s", NULL); - - if (!rtl->debugfs_root) { - dev_err(rtl->parent, "Unable to create debugfs dir\n"); + if (!smi->debugfs_root) return; - } - root = rtl->debugfs_root; - node = debugfs_create_x16("reg", S_IRUGO | S_IWUSR, root, &g_dbg_reg); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "reg"); - return; - } - - node = debugfs_create_file("val", S_IRUGO | S_IWUSR, root, rtl, - &fops_rtl8366s_regs); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "val"); - return; - } - - node = debugfs_create_file("vlan_mc", S_IRUSR, root, rtl, - &fops_rtl8366s_vlan_mc); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", - "vlan_mc"); - return; - } - - node = debugfs_create_file("mibs", S_IRUSR, root, rtl, + node = debugfs_create_file("mibs", S_IRUSR, smi->debugfs_root, smi, &fops_rtl8366s_mibs); - if (!node) { - dev_err(rtl->parent, "Creating debugfs file '%s' failed\n", + if (!node) + dev_err(smi->parent, "Creating debugfs file '%s' failed\n", "mibs"); - return; - } } - -static void rtl8366s_debugfs_remove(struct rtl8366s *rtl) -{ - if (rtl->debugfs_root) { - debugfs_remove_recursive(rtl->debugfs_root); - rtl->debugfs_root = NULL; - } -} - #else -static inline void rtl8366s_debugfs_init(struct rtl8366s *rtl) {} -static inline void rtl8366s_debugfs_remove(struct rtl8366s *rtl) {} +static inline void rtl8366s_debugfs_init(struct rtl8366_smi *smi) {} #endif /* CONFIG_RTL8366S_PHY_DEBUG_FS */ static int rtl8366s_sw_reset_mibs(struct switch_dev *dev, @@ -1388,7 +1230,7 @@ static int rtl8366s_setup(struct rtl8366s *rtl) struct rtl8366_smi *smi = &rtl->smi; int ret; - rtl8366s_debugfs_init(rtl); + rtl8366s_debugfs_init(smi); ret = rtl8366s_reset_chip(smi); if (ret) @@ -1538,7 +1380,6 @@ static int __devexit rtl8366s_remove(struct platform_device *pdev) if (rtl) { rtl8366s_switch_cleanup(rtl); - rtl8366s_debugfs_remove(rtl); platform_set_drvdata(pdev, NULL); rtl8366_smi_cleanup(&rtl->smi); kfree(rtl); From 1f92e5b0fc92e57cc9c2a7c5cb3fb35a0735b19c Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:39 +0000 Subject: [PATCH 41/90] backfire: generic: rtl8366: use common rtl8366_mib_counter structure (backport of 21982) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22028 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.h | 7 ++ .../files/drivers/net/phy/rtl8366rb.c | 74 +++++++++---------- .../files/drivers/net/phy/rtl8366s.c | 9 +-- 3 files changed, 42 insertions(+), 48 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index 323887596..f1701a54a 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -20,6 +20,13 @@ struct dentry; struct inode; struct file; +struct rtl8366_mib_counter { + unsigned base; + unsigned offset; + unsigned length; + const char *name; +}; + struct rtl8366_smi { struct device *parent; unsigned int gpio_sda; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 70063d486..495be8e7d 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -187,46 +187,40 @@ struct rtl8366rb_vlan_4k { u16 fid:3; }; -struct mib_counter { - unsigned offset; - unsigned length; - const char *name; -}; - -static struct mib_counter rtl8366rb_mib_counters[RTL8366RB_MIB_COUNT] = { - { 0, 4, "IfInOctets" }, - { 4, 4, "EtherStatsOctets" }, - { 8, 2, "EtherStatsUnderSizePkts" }, - { 10, 2, "EtherFragments" }, - { 12, 2, "EtherStatsPkts64Octets" }, - { 14, 2, "EtherStatsPkts65to127Octets" }, - { 16, 2, "EtherStatsPkts128to255Octets" }, - { 18, 2, "EtherStatsPkts256to511Octets" }, - { 20, 2, "EtherStatsPkts512to1023Octets" }, - { 22, 2, "EtherStatsPkts1024to1518Octets" }, - { 24, 2, "EtherOversizeStats" }, - { 26, 2, "EtherStatsJabbers" }, - { 28, 2, "IfInUcastPkts" }, - { 30, 2, "EtherStatsMulticastPkts" }, - { 32, 2, "EtherStatsBroadcastPkts" }, - { 34, 2, "EtherStatsDropEvents" }, - { 36, 2, "Dot3StatsFCSErrors" }, - { 38, 2, "Dot3StatsSymbolErrors" }, - { 40, 2, "Dot3InPauseFrames" }, - { 42, 2, "Dot3ControlInUnknownOpcodes" }, - { 44, 4, "IfOutOctets" }, - { 48, 2, "Dot3StatsSingleCollisionFrames" }, - { 50, 2, "Dot3StatMultipleCollisionFrames" }, - { 52, 2, "Dot3sDeferredTransmissions" }, - { 54, 2, "Dot3StatsLateCollisions" }, - { 56, 2, "EtherStatsCollisions" }, - { 58, 2, "Dot3StatsExcessiveCollisions" }, - { 60, 2, "Dot3OutPauseFrames" }, - { 62, 2, "Dot1dBasePortDelayExceededDiscards" }, - { 64, 2, "Dot1dTpPortInDiscards" }, - { 66, 2, "IfOutUcastPkts" }, - { 68, 2, "IfOutMulticastPkts" }, - { 70, 2, "IfOutBroadcastPkts" }, +static struct rtl8366_mib_counter rtl8366rb_mib_counters[] = { + { 0, 0, 4, "IfInOctets" }, + { 0, 4, 4, "EtherStatsOctets" }, + { 0, 8, 2, "EtherStatsUnderSizePkts" }, + { 0, 10, 2, "EtherFragments" }, + { 0, 12, 2, "EtherStatsPkts64Octets" }, + { 0, 14, 2, "EtherStatsPkts65to127Octets" }, + { 0, 16, 2, "EtherStatsPkts128to255Octets" }, + { 0, 18, 2, "EtherStatsPkts256to511Octets" }, + { 0, 20, 2, "EtherStatsPkts512to1023Octets" }, + { 0, 22, 2, "EtherStatsPkts1024to1518Octets" }, + { 0, 24, 2, "EtherOversizeStats" }, + { 0, 26, 2, "EtherStatsJabbers" }, + { 0, 28, 2, "IfInUcastPkts" }, + { 0, 30, 2, "EtherStatsMulticastPkts" }, + { 0, 32, 2, "EtherStatsBroadcastPkts" }, + { 0, 34, 2, "EtherStatsDropEvents" }, + { 0, 36, 2, "Dot3StatsFCSErrors" }, + { 0, 38, 2, "Dot3StatsSymbolErrors" }, + { 0, 40, 2, "Dot3InPauseFrames" }, + { 0, 42, 2, "Dot3ControlInUnknownOpcodes" }, + { 0, 44, 4, "IfOutOctets" }, + { 0, 48, 2, "Dot3StatsSingleCollisionFrames" }, + { 0, 50, 2, "Dot3StatMultipleCollisionFrames" }, + { 0, 52, 2, "Dot3sDeferredTransmissions" }, + { 0, 54, 2, "Dot3StatsLateCollisions" }, + { 0, 56, 2, "EtherStatsCollisions" }, + { 0, 58, 2, "Dot3StatsExcessiveCollisions" }, + { 0, 60, 2, "Dot3OutPauseFrames" }, + { 0, 62, 2, "Dot1dBasePortDelayExceededDiscards" }, + { 0, 64, 2, "Dot1dTpPortInDiscards" }, + { 0, 66, 2, "IfOutUcastPkts" }, + { 0, 68, 2, "IfOutMulticastPkts" }, + { 0, 70, 2, "IfOutBroadcastPkts" }, }; #define REG_WR(_smi, _reg, _val) \ diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index df6fe2909..ed20b4fbe 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -193,14 +193,7 @@ struct rtl8366s_vlan_4k { u16 member:6; }; -struct mib_counter { - unsigned base; - unsigned offset; - unsigned length; - const char *name; -}; - -static struct mib_counter rtl8366s_mib_counters[RTL8366S_MIB_COUNT] = { +static struct rtl8366_mib_counter rtl8366s_mib_counters[] = { { 0, 0, 4, "IfInOctets" }, { 0, 4, 4, "EtherStatsOctets" }, { 0, 8, 2, "EtherStatsUnderSizePkts" }, From a99e70d5769e86cd3cf15df0a13dd79eae381a37 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:46 +0000 Subject: [PATCH 42/90] backfire: generic: rtl8366: standardize read_debugfs_mibs functions (backport of r21983) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22029 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.h | 4 +++ .../files/drivers/net/phy/rtl8366rb.c | 33 ++++++++++++------- .../files/drivers/net/phy/rtl8366s.c | 29 ++++++++++------ 3 files changed, 44 insertions(+), 22 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h index f1701a54a..3b639f2b6 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h @@ -38,6 +38,8 @@ struct rtl8366_smi { unsigned int cpu_port; unsigned int num_ports; unsigned int num_vlan_mc; + unsigned int num_mib_counters; + struct rtl8366_mib_counter *mib_counters; struct rtl8366_smi_ops *ops; @@ -79,6 +81,8 @@ struct rtl8366_smi_ops { const struct rtl8366_vlan_4k *vlan4k); int (*get_mc_index)(struct rtl8366_smi *smi, int port, int *val); int (*set_mc_index)(struct rtl8366_smi *smi, int port, int index); + int (*get_mib_counter)(struct rtl8366_smi *smi, int counter, + int port, unsigned long long *val); }; int rtl8366_smi_init(struct rtl8366_smi *smi); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 495be8e7d..a4623f027 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -366,8 +366,8 @@ static int rtl8366rb_write_phy_reg(struct rtl8366_smi *smi, return 0; } -static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter, - int port, unsigned long long *val) +static int rtl8366rb_get_mib_counter(struct rtl8366_smi *smi, int counter, + int port, unsigned long long *val) { int i; int err; @@ -680,19 +680,25 @@ static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, int i, j, len = 0; char *buf = smi->buf; - len += snprintf(buf + len, sizeof(smi->buf) - len, - "%-36s %12s %12s %12s %12s %12s %12s\n", - "Counter", - "Port 0", "Port 1", "Port 2", - "Port 3", "Port 4", "Port 5"); + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s", + "Counter"); - for (i = 0; i < ARRAY_SIZE(rtl8366rb_mib_counters); ++i) { + for (i = 0; i < smi->num_ports; i++) { + char port_buf[10]; + + snprintf(port_buf, sizeof(port_buf), "Port %d", i); + len += snprintf(buf + len, sizeof(smi->buf) - len, " %12s", + port_buf); + } + len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); + + for (i = 0; i < smi->num_mib_counters; i++) { len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s ", - rtl8366rb_mib_counters[i].name); - for (j = 0; j < RTL8366RB_NUM_PORTS; ++j) { + smi->mib_counters[i].name); + for (j = 0; j < smi->num_ports; j++) { unsigned long long counter = 0; - if (!rtl8366_get_mib_counter(smi, i, j, &counter)) + if (!smi->ops->get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, sizeof(smi->buf) - len, "%12llu ", counter); @@ -981,7 +987,7 @@ static int rtl8366rb_sw_get_port_mib(struct switch_dev *dev, for (i = 0; i < ARRAY_SIZE(rtl8366rb_mib_counters); ++i) { len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s: ", rtl8366rb_mib_counters[i].name); - if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) + if (!rtl8366rb_get_mib_counter(smi, i, val->port_vlan, &counter)) len += snprintf(buf + len, sizeof(smi->buf) - len, "%llu\n", counter); else @@ -1289,6 +1295,7 @@ static struct rtl8366_smi_ops rtl8366rb_smi_ops = { .set_vlan_4k = rtl8366rb_set_vlan_4k, .get_mc_index = rtl8366rb_get_mc_index, .set_mc_index = rtl8366rb_set_mc_index, + .get_mib_counter = rtl8366rb_get_mib_counter, }; static int __init rtl8366rb_probe(struct platform_device *pdev) @@ -1327,6 +1334,8 @@ static int __init rtl8366rb_probe(struct platform_device *pdev) smi->cpu_port = RTL8366RB_PORT_NUM_CPU; smi->num_ports = RTL8366RB_NUM_PORTS; smi->num_vlan_mc = RTL8366RB_NUM_VLANS; + smi->mib_counters = rtl8366rb_mib_counters; + smi->num_mib_counters = ARRAY_SIZE(rtl8366rb_mib_counters); err = rtl8366_smi_init(smi); if (err) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index ed20b4fbe..ebba2bb67 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -664,23 +664,29 @@ static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { - struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; + struct rtl8366_smi *smi = file->private_data; int i, j, len = 0; char *buf = smi->buf; - len += snprintf(buf + len, sizeof(smi->buf) - len, - "%-36s %12s %12s %12s %12s %12s %12s\n", - "Counter", - "Port 0", "Port 1", "Port 2", - "Port 3", "Port 4", "Port 5"); + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s", + "Counter"); - for (i = 0; i < ARRAY_SIZE(rtl8366s_mib_counters); ++i) { + for (i = 0; i < smi->num_ports; i++) { + char port_buf[10]; + + snprintf(port_buf, sizeof(port_buf), "Port %d", i); + len += snprintf(buf + len, sizeof(smi->buf) - len, " %12s", + port_buf); + } + len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); + + for (i = 0; i < smi->num_mib_counters; i++) { len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s ", - rtl8366s_mib_counters[i].name); - for (j = 0; j < RTL8366S_NUM_PORTS; ++j) { + smi->mib_counters[i].name); + for (j = 0; j < smi->num_ports; j++) { unsigned long long counter = 0; - if (!rtl8366_get_mib_counter(smi, i, j, &counter)) + if (!smi->ops->get_mib_counter(smi, i, j, &counter)) len += snprintf(buf + len, sizeof(smi->buf) - len, "%12llu ", counter); @@ -1277,6 +1283,7 @@ static struct rtl8366_smi_ops rtl8366s_smi_ops = { .set_vlan_4k = rtl8366s_set_vlan_4k, .get_mc_index = rtl8366s_get_mc_index, .set_mc_index = rtl8366s_set_mc_index, + .get_mib_counter = rtl8366_get_mib_counter, }; static int __init rtl8366s_probe(struct platform_device *pdev) @@ -1315,6 +1322,8 @@ static int __init rtl8366s_probe(struct platform_device *pdev) smi->cpu_port = RTL8366S_PORT_NUM_CPU; smi->num_ports = RTL8366S_NUM_PORTS; smi->num_vlan_mc = RTL8366S_NUM_VLANS; + smi->mib_counters = rtl8366s_mib_counters; + smi->num_mib_counters = ARRAY_SIZE(rtl8366s_mib_counters); err = rtl8366_smi_init(smi); if (err) From ea51bbc9aeb6b9d5e7d4fc3ea387cb26ac124408 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:52 +0000 Subject: [PATCH 43/90] backfire: generic: rtl8366: add common read_debugfs_mibs function (backport of 21984) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22030 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366_smi.c | 57 ++++++++++++++- .../files/drivers/net/phy/rtl8366rb.c | 72 ------------------- .../files/drivers/net/phy/rtl8366s.c | 71 ------------------ 3 files changed, 56 insertions(+), 144 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c index feb7d2ca9..d0b368056 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c @@ -582,6 +582,47 @@ static ssize_t rtl8366_write_debugfs_reg(struct file *file, return count; } +static ssize_t rtl8366_read_debugfs_mibs(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct rtl8366_smi *smi = file->private_data; + int i, j, len = 0; + char *buf = smi->buf; + + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s", + "Counter"); + + for (i = 0; i < smi->num_ports; i++) { + char port_buf[10]; + + snprintf(port_buf, sizeof(port_buf), "Port %d", i); + len += snprintf(buf + len, sizeof(smi->buf) - len, " %12s", + port_buf); + } + len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); + + for (i = 0; i < smi->num_mib_counters; i++) { + len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s ", + smi->mib_counters[i].name); + for (j = 0; j < smi->num_ports; j++) { + unsigned long long counter = 0; + + if (!smi->ops->get_mib_counter(smi, i, j, &counter)) + len += snprintf(buf + len, + sizeof(smi->buf) - len, + "%12llu ", counter); + else + len += snprintf(buf + len, + sizeof(smi->buf) - len, + "%12s ", "error"); + } + len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); + } + + return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + static const struct file_operations fops_rtl8366_regs = { .read = rtl8366_read_debugfs_reg, .write = rtl8366_write_debugfs_reg, @@ -595,6 +636,12 @@ static const struct file_operations fops_rtl8366_vlan_mc = { .owner = THIS_MODULE }; +static const struct file_operations fops_rtl8366_mibs = { + .read = rtl8366_read_debugfs_mibs, + .open = rtl8366_debugfs_open, + .owner = THIS_MODULE +}; + static void rtl8366_debugfs_init(struct rtl8366_smi *smi) { struct dentry *node; @@ -628,9 +675,17 @@ static void rtl8366_debugfs_init(struct rtl8366_smi *smi) node = debugfs_create_file("vlan_mc", S_IRUSR, root, smi, &fops_rtl8366_vlan_mc); - if (!node) + if (!node) { dev_err(smi->parent, "Creating debugfs file '%s' failed\n", "vlan_mc"); + return; + } + + node = debugfs_create_file("mibs", S_IRUSR, smi->debugfs_root, smi, + &fops_rtl8366_mibs); + if (!node) + dev_err(smi->parent, "Creating debugfs file '%s' failed\n", + "mibs"); } static void rtl8366_debugfs_remove(struct rtl8366_smi *smi) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index a4623f027..418269365 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -20,10 +20,6 @@ #include "rtl8366_smi.h" -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -#include -#endif - #define RTL8366RB_DRIVER_DESC "Realtek RTL8366RB ethernet switch driver" #define RTL8366RB_DRIVER_VER "0.2.2" @@ -671,72 +667,6 @@ static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) (enable) ? RTL8366RB_CHIP_CTRL_VLAN_4KTB : 0); } -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -static ssize_t rtl8366rb_read_debugfs_mibs(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366_smi *smi = file->private_data; - int i, j, len = 0; - char *buf = smi->buf; - - len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s", - "Counter"); - - for (i = 0; i < smi->num_ports; i++) { - char port_buf[10]; - - snprintf(port_buf, sizeof(port_buf), "Port %d", i); - len += snprintf(buf + len, sizeof(smi->buf) - len, " %12s", - port_buf); - } - len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); - - for (i = 0; i < smi->num_mib_counters; i++) { - len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s ", - smi->mib_counters[i].name); - for (j = 0; j < smi->num_ports; j++) { - unsigned long long counter = 0; - - if (!smi->ops->get_mib_counter(smi, i, j, &counter)) - len += snprintf(buf + len, - sizeof(smi->buf) - len, - "%12llu ", counter); - else - len += snprintf(buf + len, - sizeof(smi->buf) - len, - "%12s ", "error"); - } - len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); - } - - return simple_read_from_buffer(user_buf, count, ppos, buf, len); -} - -static const struct file_operations fops_rtl8366rb_mibs = { - .read = rtl8366rb_read_debugfs_mibs, - .open = rtl8366_debugfs_open, - .owner = THIS_MODULE -}; - -static void rtl8366rb_debugfs_init(struct rtl8366_smi *smi) -{ - struct dentry *node; - - if (!smi->debugfs_root) - return; - - node = debugfs_create_file("mibs", S_IRUSR, smi->debugfs_root, smi, - &fops_rtl8366rb_mibs); - if (!node) - dev_err(smi->parent, "Creating debugfs file '%s' failed\n", - "mibs"); -} - -#else -static inline void rtl8366rb_debugfs_init(struct rtl8366_smi *smi) {} -#endif /* CONFIG_RTL8366S_PHY_DEBUG_FS */ - static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) @@ -1241,8 +1171,6 @@ static int rtl8366rb_setup(struct rtl8366rb *rtl) struct rtl8366_smi *smi = &rtl->smi; int ret; - rtl8366rb_debugfs_init(smi); - ret = rtl8366rb_reset_chip(smi); if (ret) return ret; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index ebba2bb67..f0d394065 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -20,10 +20,6 @@ #include "rtl8366_smi.h" -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -#include -#endif - #define RTL8366S_DRIVER_DESC "Realtek RTL8366S ethernet switch driver" #define RTL8366S_DRIVER_VER "0.2.2" @@ -659,71 +655,6 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) 1, (enable) ? 1 : 0); } -#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS -static ssize_t rtl8366s_read_debugfs_mibs(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) -{ - struct rtl8366_smi *smi = file->private_data; - int i, j, len = 0; - char *buf = smi->buf; - - len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s", - "Counter"); - - for (i = 0; i < smi->num_ports; i++) { - char port_buf[10]; - - snprintf(port_buf, sizeof(port_buf), "Port %d", i); - len += snprintf(buf + len, sizeof(smi->buf) - len, " %12s", - port_buf); - } - len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); - - for (i = 0; i < smi->num_mib_counters; i++) { - len += snprintf(buf + len, sizeof(smi->buf) - len, "%-36s ", - smi->mib_counters[i].name); - for (j = 0; j < smi->num_ports; j++) { - unsigned long long counter = 0; - - if (!smi->ops->get_mib_counter(smi, i, j, &counter)) - len += snprintf(buf + len, - sizeof(smi->buf) - len, - "%12llu ", counter); - else - len += snprintf(buf + len, - sizeof(smi->buf) - len, - "%12s ", "error"); - } - len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); - } - - return simple_read_from_buffer(user_buf, count, ppos, buf, len); -} - -static const struct file_operations fops_rtl8366s_mibs = { - .read = rtl8366s_read_debugfs_mibs, - .open = rtl8366_debugfs_open, - .owner = THIS_MODULE -}; - -static void rtl8366s_debugfs_init(struct rtl8366_smi *smi) -{ - struct dentry *node; - - if (!smi->debugfs_root) - return; - - node = debugfs_create_file("mibs", S_IRUSR, smi->debugfs_root, smi, - &fops_rtl8366s_mibs); - if (!node) - dev_err(smi->parent, "Creating debugfs file '%s' failed\n", - "mibs"); -} -#else -static inline void rtl8366s_debugfs_init(struct rtl8366_smi *smi) {} -#endif /* CONFIG_RTL8366S_PHY_DEBUG_FS */ - static int rtl8366s_sw_reset_mibs(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) @@ -1229,8 +1160,6 @@ static int rtl8366s_setup(struct rtl8366s *rtl) struct rtl8366_smi *smi = &rtl->smi; int ret; - rtl8366s_debugfs_init(smi); - ret = rtl8366s_reset_chip(smi); if (ret) return ret; From f30e642e2f7a6e86ccc0cf014dff7e65c5618f67 Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:08:58 +0000 Subject: [PATCH 44/90] backfire: generic: rtl8366: minor cleanup (backport of r21985) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22031 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 25 ++++++++----------- .../files/drivers/net/phy/rtl8366s.c | 13 ++++------ 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 418269365..c006f73de 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -27,10 +27,6 @@ #define RTL8366RB_PHY_PAGE_MAX 7 #define RTL8366RB_PHY_ADDR_MAX 31 -#define RTL8366RB_CHIP_GLOBAL_CTRL_REG 0x0000 -#define RTL8366RB_CHIP_CTRL_VLAN (1 << 13) -#define RTL8366RB_CHIP_CTRL_VLAN_4KTB (1 << 14) - /* Switch Global Configuration register */ #define RTL8366RB_SGCR 0x0000 #define RTL8366RB_SGCR_EN_BC_STORM_CTRL BIT(0) @@ -40,6 +36,8 @@ #define RTL8366RB_SGCR_MAX_LENGTH_1536 RTL8366RB_SGCR_MAX_LENGTH(0x1) #define RTL8366RB_SGCR_MAX_LENGTH_1552 RTL8366RB_SGCR_MAX_LENGTH(0x2) #define RTL8366RB_SGCR_MAX_LENGTH_9216 RTL8366RB_SGCR_MAX_LENGTH(0x3) +#define RTL8366RB_SGCR_EN_VLAN BIT(13) +#define RTL8366RB_SGCR_EN_VLAN_4KTB BIT(14) /* Port Enable Control register */ #define RTL8366RB_PECR 0x0001 @@ -655,16 +653,15 @@ static int rtl8366rb_set_mc_index(struct rtl8366_smi *smi, int port, int index) static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - return rtl8366_smi_rmwr(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, - RTL8366RB_CHIP_CTRL_VLAN, - (enable) ? RTL8366RB_CHIP_CTRL_VLAN : 0); + return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_EN_VLAN, + (enable) ? RTL8366RB_SGCR_EN_VLAN : 0); } static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) { - return rtl8366_smi_rmwr(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, - RTL8366RB_CHIP_CTRL_VLAN_4KTB, - (enable) ? RTL8366RB_CHIP_CTRL_VLAN_4KTB : 0); + return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, + RTL8366RB_SGCR_EN_VLAN_4KTB, + (enable) ? RTL8366RB_SGCR_EN_VLAN_4KTB : 0); } static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev, @@ -689,16 +686,16 @@ static int rtl8366rb_sw_get_vlan_enable(struct switch_dev *dev, u32 data; if (attr->ofs == 1) { - rtl8366_smi_read_reg(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366RB_SGCR, &data); - if (data & RTL8366RB_CHIP_CTRL_VLAN) + if (data & RTL8366RB_SGCR_EN_VLAN) val->value.i = 1; else val->value.i = 0; } else if (attr->ofs == 2) { - rtl8366_smi_read_reg(smi, RTL8366RB_CHIP_GLOBAL_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366RB_SGCR, &data); - if (data & RTL8366RB_CHIP_CTRL_VLAN_4KTB) + if (data & RTL8366RB_SGCR_EN_VLAN_4KTB) val->value.i = 1; else val->value.i = 0; diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index f0d394065..91030ac48 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -27,9 +27,6 @@ #define RTL8366S_PHY_PAGE_MAX 7 #define RTL8366S_PHY_ADDR_MAX 31 -#define RTL8366S_CHIP_GLOBAL_CTRL_REG 0x0000 -#define RTL8366S_CHIP_CTRL_VLAN (1 << 13) - /* Switch Global Configuration register */ #define RTL8366S_SGCR 0x0000 #define RTL8366S_SGCR_EN_BC_STORM_CTRL BIT(0) @@ -39,6 +36,7 @@ #define RTL8366S_SGCR_MAX_LENGTH_1536 RTL8366S_SGCR_MAX_LENGTH(0x1) #define RTL8366S_SGCR_MAX_LENGTH_1552 RTL8366S_SGCR_MAX_LENGTH(0x2) #define RTL8366S_SGCR_MAX_LENGTH_16000 RTL8366S_SGCR_MAX_LENGTH(0x3) +#define RTL8366S_SGCR_EN_VLAN BIT(13) /* Port Enable Control register */ #define RTL8366S_PECR 0x0001 @@ -644,9 +642,8 @@ static int rtl8366s_set_mc_index(struct rtl8366_smi *smi, int port, int index) static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) { - return rtl8366_smi_rmwr(smi, RTL8366S_CHIP_GLOBAL_CTRL_REG, - RTL8366S_CHIP_CTRL_VLAN, - (enable) ? RTL8366S_CHIP_CTRL_VLAN : 0); + return rtl8366_smi_rmwr(smi, RTL8366S_SGCR, RTL8366S_SGCR_EN_VLAN, + (enable) ? RTL8366S_SGCR_EN_VLAN : 0); } static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) @@ -676,9 +673,9 @@ static int rtl8366s_sw_get_vlan_enable(struct switch_dev *dev, u32 data; if (attr->ofs == 1) { - rtl8366_smi_read_reg(smi, RTL8366S_CHIP_GLOBAL_CTRL_REG, &data); + rtl8366_smi_read_reg(smi, RTL8366S_SGCR, &data); - if (data & RTL8366S_CHIP_CTRL_VLAN) + if (data & RTL8366S_SGCR_EN_VLAN) val->value.i = 1; else val->value.i = 0; From 86f86091834577cc6a28ca9d2d0ff228cfe2bacf Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 1 Jul 2010 18:09:03 +0000 Subject: [PATCH 45/90] backfire: [ar71xx] fix dir-825-b1 default network config (backport of r22005) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22032 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ar71xx/base-files/etc/defconfig/dir-825-b1/network | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ar71xx/base-files/etc/defconfig/dir-825-b1/network b/target/linux/ar71xx/base-files/etc/defconfig/dir-825-b1/network index 3ab4bc81d..48477fab1 100644 --- a/target/linux/ar71xx/base-files/etc/defconfig/dir-825-b1/network +++ b/target/linux/ar71xx/base-files/etc/defconfig/dir-825-b1/network @@ -22,5 +22,5 @@ config switch config switch_vlan option device rtl8366s - option vlan 0 + option vlan 1 option ports "0 1 2 3 5" From 33ecfa4cae5a3c39fc0ad58b03fc79180d2d6431 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 1 Jul 2010 19:41:50 +0000 Subject: [PATCH 46/90] [backfire] backport r22033 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22034 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches-2.6.32/005-mtx1_fix_pci.patch | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch diff --git a/target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch b/target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch new file mode 100644 index 000000000..c2d747348 --- /dev/null +++ b/target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch @@ -0,0 +1,38 @@ + + +diff --git a/arch/mips/alchemy/mtx-1/board_setup.c +b/arch/mips/alchemy/mtx-1/board_setup.c +index 45b61c9..17140ac 100644 +--- a/arch/mips/alchemy/mtx-1/board_setup.c ++++ b/arch/mips/alchemy/mtx-1/board_setup.c +@@ -56,8 +56,6 @@ void __init board_setup(void) + } + #endif + +- alchemy_gpio2_enable(); +- + #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) + /* Enable USB power switch */ + alchemy_gpio_direction_output(204, 0); +@@ -92,20 +90,12 @@ void __init board_setup(void) + int + mtx1_pci_idsel(unsigned int devsel, int assert) + { +-#define MTX_IDSEL_ONLY_0_AND_3 0 +-#if MTX_IDSEL_ONLY_0_AND_3 +- if (devsel != 0 && devsel != 3) { +- printk(KERN_ERR "*** not 0 or 3\n"); +- return 0; +- } +-#endif +- + if (assert && devsel != 0) + /* Suppress signal to Cardbus */ + gpio_set_value(1, 0); /* set EXT_IO3 OFF */ + else + gpio_set_value(1, 1); /* set EXT_IO3 ON */ + +- au_sync_udelay(1); ++ udelay(1); + return 1; + } From 89a94b52f685b3d7009b108c313e283a72fb9eb7 Mon Sep 17 00:00:00 2001 From: nbd Date: Thu, 1 Jul 2010 22:22:39 +0000 Subject: [PATCH 47/90] merge latest mac80211 from trunk (as of r22038) to backfire git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22039 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/Makefile | 57 +- .../mac80211/patches/001-disable_b44.patch | 2 +- .../mac80211/patches/002-disable_rfkill.patch | 2 +- .../patches/005-disable_ssb_build.patch | 4 +- .../patches/007-remove_misc_drivers.patch | 4 +- package/mac80211/patches/010-no_pcmcia.patch | 2 +- package/mac80211/patches/011-no_sdio.patch | 4 +- .../patches/013-disable_b43_nphy.patch | 2 +- .../patches/015-remove-rt2x00-options.patch | 4 +- package/mac80211/patches/020-wext-fix.patch | 15 + .../patches/110-disable_usb_compat.patch | 2 +- .../patches/170-dma_set_coherent_mask.patch | 28 - ...1-ath9k-dont-register-leds-on-ar9100.patch | 4 +- ...h9k-fix-invalid-mac-address-handling.patch | 2 +- ...m-data-from-platform-data-on-pci-bus.patch | 2 +- ...ROM-only-if-no-platform-data-present.patch | 10 +- ...rride-mac-address-from-platform-data.patch | 2 +- .../408-ath9k_tweak_rx_intr_mitigation.patch | 2 +- ...-add-wndr3700-antenna-initialization.patch | 8 +- .../410-ath9k-wndr3700-led-pin-fix.patch | 4 +- .../patches/500-ath9k_use_minstrel.patch | 2 +- .../patches/510-ar9100_tsf_preserve.patch | 39 + .../mac80211/patches/510-pending_work.patch | 1893 -- .../patches/520-ath9k_enable_ar9300.patch | 10 - .../mac80211/patches/520-initval_rename.patch | 59 + .../patches/521-initval_format_changes.patch | 14200 ++++++++++++++++ .../patches/522-initval_updates.patch | 376 + .../patches/530-ath9k_nf_sanitize.patch | 406 + .../patches/531-ath9k_nf_cleanup.patch | 207 + .../patches/540-ath9k_hang_check.patch | 90 + .../mac80211/patches/750-set_pci_mwi.patch | 13 + 31 files changed, 15483 insertions(+), 1972 deletions(-) create mode 100644 package/mac80211/patches/020-wext-fix.patch delete mode 100644 package/mac80211/patches/170-dma_set_coherent_mask.patch create mode 100644 package/mac80211/patches/510-ar9100_tsf_preserve.patch delete mode 100644 package/mac80211/patches/510-pending_work.patch delete mode 100644 package/mac80211/patches/520-ath9k_enable_ar9300.patch create mode 100644 package/mac80211/patches/520-initval_rename.patch create mode 100644 package/mac80211/patches/521-initval_format_changes.patch create mode 100644 package/mac80211/patches/522-initval_updates.patch create mode 100644 package/mac80211/patches/530-ath9k_nf_sanitize.patch create mode 100644 package/mac80211/patches/531-ath9k_nf_cleanup.patch create mode 100644 package/mac80211/patches/540-ath9k_hang_check.patch create mode 100644 package/mac80211/patches/750-set_pci_mwi.patch diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 02759e1dc..4d2ef0ede 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=2010-06-10 -PKG_RELEASE:=2 +PKG_VERSION:=2010-06-28 +PKG_RELEASE:=1 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources # http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \ # http://wireless.kernel.org/download/compat-wireless-2.6 -PKG_MD5SUM:=4074469689f7a5a0d2e038f2b5dad0bb +PKG_MD5SUM:=10100e68991ed0749ee52cfc1704966b PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) @@ -35,7 +35,7 @@ define KernelPackage/mac80211/Default SUBMENU:=$(WMENU) URL:=http://linuxwireless.org/ MAINTAINER:=Felix Fietkau - DEPENDS:=@LINUX_2_6 @(!(TARGET_avr32||TARGET_ep93xx||TARGET_ps3||TARGET_pxcab)||BROKEN) + DEPENDS:=@(!(TARGET_avr32||TARGET_ep93xx||TARGET_ps3||TARGET_pxcab)||BROKEN) endef define KernelPackage/cfg80211 @@ -440,7 +440,26 @@ define Download/usb8388 endef $(eval $(call Download,usb8388)) -define KernelPackage/libertas +SD8686FW_NAME:=sd8686 +SD8686FW_VERSION:=9.70.7.p0 + +define Download/sd8686 + URL:=http://dev.laptop.org/pub/firmware/libertas/ + FILE:=$(SD8686FW_NAME)-$(SD8686FW_VERSION).bin + MD5SUM=b4f8be61e19780a14836f146c538c5dd +endef +$(eval $(call Download,sd8686)) + +SD8686HELPER_NAME:=sd8686_helper + +define Download/sd8686_helper + URL:=http://dev.laptop.org/pub/firmware/libertas/ + FILE:=$(SD8686HELPER_NAME).bin + MD5SUM=2a4d8f4df198ce949c350df5674f4ac6 +endef +$(eval $(call Download,sd8686_helper)) + +define KernelPackage/libertas-usb $(call KernelPackage/mac80211/Default) DEPENDS+= @USB_SUPPORT +kmod-mac80211 +kmod-usb-core +kmod-lib80211 TITLE:=Marvell 88W8015 Wireless Driver @@ -450,6 +469,15 @@ define KernelPackage/libertas AUTOLOAD:=$(call AutoLoad,27,libertas usb8xxx) endef +define KernelPackage/libertas-sd + $(call KernelPackage/mac80211/Default) + DEPENDS+= +kmod-mac80211 +kmod-lib80211 + TITLE:=Marvell 88W8686 Wireless Driver + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas.$(LINUX_KMOD_SUFFIX) \ + $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas_sdio.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,27,libertas libertas_sdio) +endef define KernelPackage/ar9170 $(call KernelPackage/mac80211/Default) @@ -848,11 +876,12 @@ MAKE_OPTS:= \ CONFIG_MAC80211_HWSIM=$(if $(CONFIG_PACKAGE_kmod-mac80211-hwsim),m) \ CONFIG_PCMCIA= \ CONFIG_LIBIPW=$(if $(CONFIG_PACKAGE_kmod-net-libipw),m) \ - CONFIG_LIBERTAS=$(if $(CONFIG_PACKAGE_kmod-libertas),m) \ + CONFIG_LIBERTAS=$(if $(CONFIG_PACKAGE_kmod-libertas-sd)$(CONFIG_PACKAGE_kmod-libertas-usb),m) \ CONFIG_LIBERTAS_CS= \ - CONFIG_LIBERTAS_SDIO= \ + CONFIG_LIBERTAS_SPI= \ + CONFIG_LIBERTAS_SDIO=$(if $(CONFIG_PACKAGE_kmod-libertas-sd),m) \ CONFIG_LIBERTAS_THINFIRM= \ - CONFIG_LIBERTAS_USB=$(if $(CONFIG_PACKAGE_kmod-libertas),m) \ + CONFIG_LIBERTAS_USB=$(if $(CONFIG_PACKAGE_kmod-libertas-usb),m) \ CONFIG_IPW2100=$(if $(CONFIG_PACKAGE_kmod-net-ipw2100),m) \ CONFIG_IPW2200=$(if $(CONFIG_PACKAGE_kmod-net-ipw2200),m) \ CONFIG_NL80211=y \ @@ -924,11 +953,18 @@ define Build/InstallDev $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/ endef -define KernelPackage/libertas/install +define KernelPackage/libertas-usb/install $(INSTALL_DIR) $(1)/lib/firmware $(INSTALL_DATA) $(DL_DIR)/$(USB8388FW_NAME)-$(USB8388FW_VERSION).bin $(1)/lib/firmware/$(USB8388FW_NAME).bin endef +define KernelPackage/libertas-sd/install + echo "Libertas install: $(CONFIG_PACKAGE_kmod-libertas-sd)" + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(DL_DIR)/$(SD8686FW_NAME)-$(SD8686FW_VERSION).bin $(1)/lib/firmware/$(SD8686FW_NAME).bin + $(INSTALL_DATA) $(DL_DIR)/$(SD8686HELPER_NAME).bin $(1)/lib/firmware/$(SD8686HELPER_NAME).bin +endef + define KernelPackage/cfg80211/install $(INSTALL_DIR) $(1)/lib/wifi $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi @@ -1033,7 +1069,8 @@ endif endef $(eval $(call KernelPackage,ath5k)) -$(eval $(call KernelPackage,libertas)) +$(eval $(call KernelPackage,libertas-usb)) +$(eval $(call KernelPackage,libertas-sd)) $(eval $(call KernelPackage,cfg80211)) $(eval $(call KernelPackage,mac80211)) $(eval $(call KernelPackage,p54-common)) diff --git a/package/mac80211/patches/001-disable_b44.patch b/package/mac80211/patches/001-disable_b44.patch index 3182261fd..31976bd64 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 -@@ -257,8 +257,8 @@ endif +@@ -268,8 +268,8 @@ endif CONFIG_P54_PCI=m diff --git a/package/mac80211/patches/002-disable_rfkill.patch b/package/mac80211/patches/002-disable_rfkill.patch index c8183baae..c5d1ccc50 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") -@@ -488,8 +488,8 @@ endif +@@ -495,8 +495,8 @@ endif # We need the backported rfkill module on kernel < 2.6.31. # In more recent kernel versions use the in kernel rfkill module. ifdef CONFIG_COMPAT_KERNEL_31 diff --git a/package/mac80211/patches/005-disable_ssb_build.patch b/package/mac80211/patches/005-disable_ssb_build.patch index 4b01fa3bb..7207d7b84 100644 --- a/package/mac80211/patches/005-disable_ssb_build.patch +++ b/package/mac80211/patches/005-disable_ssb_build.patch @@ -19,7 +19,7 @@ else include $(KLIB_BUILD)/.config endif -@@ -240,21 +239,6 @@ CONFIG_IPW2200_QOS=y +@@ -251,21 +250,6 @@ CONFIG_IPW2200_QOS=y # # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface @@ -41,7 +41,7 @@ CONFIG_P54_PCI=m # CONFIG_B44=m -@@ -418,7 +402,6 @@ endif # end of SPI driver list +@@ -429,7 +413,6 @@ endif # end of SPI driver list ifneq ($(CONFIG_MMC),) diff --git a/package/mac80211/patches/007-remove_misc_drivers.patch b/package/mac80211/patches/007-remove_misc_drivers.patch index 4087e7450..1fb835333 100644 --- a/package/mac80211/patches/007-remove_misc_drivers.patch +++ b/package/mac80211/patches/007-remove_misc_drivers.patch @@ -1,6 +1,6 @@ --- a/config.mk +++ b/config.mk -@@ -271,13 +271,13 @@ endif +@@ -282,13 +282,13 @@ endif CONFIG_MWL8K=m # Ethernet drivers go here @@ -19,7 +19,7 @@ endif CONFIG_HERMES=m -@@ -331,10 +331,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n +@@ -342,10 +342,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n CONFIG_USB_NET_COMPAT_CDCETHER=n else diff --git a/package/mac80211/patches/010-no_pcmcia.patch b/package/mac80211/patches/010-no_pcmcia.patch index 078b8039f..0c8072a3e 100644 --- a/package/mac80211/patches/010-no_pcmcia.patch +++ b/package/mac80211/patches/010-no_pcmcia.patch @@ -9,7 +9,7 @@ else include $(KLIB_BUILD)/.config endif -@@ -181,7 +181,7 @@ CONFIG_B43=m +@@ -192,7 +192,7 @@ CONFIG_B43=m CONFIG_B43_HWRNG=y CONFIG_B43_PCI_AUTOSELECT=y ifneq ($(CONFIG_PCMCIA),) diff --git a/package/mac80211/patches/011-no_sdio.patch b/package/mac80211/patches/011-no_sdio.patch index d0916e459..3f7fd5a2c 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 -@@ -387,7 +387,7 @@ endif # end of SPI driver list +@@ -398,7 +398,7 @@ endif # end of SPI driver list ifneq ($(CONFIG_MMC),) @@ -8,4 +8,4 @@ +# CONFIG_B43_SDIO=y CONFIG_WL1251_SDIO=m - ifneq ($(CONFIG_ARM),) + ifndef CONFIG_COMPAT_KERNEL_32 diff --git a/package/mac80211/patches/013-disable_b43_nphy.patch b/package/mac80211/patches/013-disable_b43_nphy.patch index efdfb149a..f71d3b288 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 -@@ -185,7 +185,7 @@ ifneq ($(CONFIG_PCMCIA),) +@@ -196,7 +196,7 @@ ifneq ($(CONFIG_PCMCIA),) endif CONFIG_B43_LEDS=y 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 a9176ece5..694694870 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 -@@ -233,12 +233,12 @@ CONFIG_RTL8180=m +@@ -244,12 +244,12 @@ CONFIG_RTL8180=m CONFIG_ADM8211=m @@ -15,7 +15,7 @@ # CONFIG_RT2800PCI_RT30XX=y # CONFIG_RT2800PCI_RT35XX=y # CONFIG_RT2800PCI_SOC=y -@@ -344,7 +344,7 @@ CONFIG_RT2800USB_RT30XX=y +@@ -355,7 +355,7 @@ CONFIG_RT2800USB_RT30XX=y CONFIG_RT2800USB_RT35XX=y CONFIG_RT2800USB_UNKNOWN=y endif diff --git a/package/mac80211/patches/020-wext-fix.patch b/package/mac80211/patches/020-wext-fix.patch new file mode 100644 index 000000000..9cbbb4377 --- /dev/null +++ b/package/mac80211/patches/020-wext-fix.patch @@ -0,0 +1,15 @@ +--- a/scripts/gen-compat-autoconf.sh ++++ b/scripts/gen-compat-autoconf.sh +@@ -191,10 +191,8 @@ if [ -f $KLIB_BUILD/Makefile ]; then + echo CONFIG_NETDEVICES_MULTIQUEUE >> $MULT_DEP_FILE + define_config_multiple_deps CONFIG_MAC80211_QOS y $ALL_DEPS + rm -f $MULT_DEP_FILE +- # Kernels >= 2.6.32 can disable WEXT :D +- if [ $SUBLEVEL -le 32 ]; then +- define_config_dep CONFIG_CFG80211_WEXT 1 CONFIG_WIRELESS_EXT +- fi ++ # Up to kernel 2.6.35 we still need the following: ++ define_config_dep CONFIG_CFG80211_WEXT 1 CONFIG_WIRELESS_EXT + fi + fi + echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" diff --git a/package/mac80211/patches/110-disable_usb_compat.patch b/package/mac80211/patches/110-disable_usb_compat.patch index 2d7394e83..c60705a53 100644 --- a/package/mac80211/patches/110-disable_usb_compat.patch +++ b/package/mac80211/patches/110-disable_usb_compat.patch @@ -11,7 +11,7 @@ { --- a/compat/compat-2.6.29.c +++ b/compat/compat-2.6.29.c -@@ -50,7 +50,7 @@ void netdev_attach_ops(struct net_device +@@ -51,7 +51,7 @@ void netdev_attach_ops(struct net_device EXPORT_SYMBOL(netdev_attach_ops); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)) diff --git a/package/mac80211/patches/170-dma_set_coherent_mask.patch b/package/mac80211/patches/170-dma_set_coherent_mask.patch deleted file mode 100644 index 9bafbeb87..000000000 --- a/package/mac80211/patches/170-dma_set_coherent_mask.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 3c02b107ec11e14ef21e7a444ad83f0ef1e68f79 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Sun, 13 Jun 2010 20:41:55 +0200 -Subject: [PATCH 1/2] compat: backport dma_set_coherent_mask - - -Signed-off-by: Hauke Mehrtens ---- - include/linux/compat-2.6.34.h | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - ---- a/include/linux/compat-2.6.34.h -+++ b/include/linux/compat-2.6.34.h -@@ -216,6 +216,14 @@ do { \ - #define dma_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) - #endif - -+static inline int dma_set_coherent_mask(struct device *dev, u64 mask) -+{ -+ if (!dma_supported(dev, mask)) -+ return -EIO; -+ dev->coherent_dma_mask = mask; -+ return 0; -+} -+ - #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) */ - - #endif /* LINUX_26_34_COMPAT_H */ diff --git a/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch b/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch index 96c22a0d0..166c133a6 100644 --- a/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch +++ b/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/gpio.c +++ b/drivers/net/wireless/ath/ath9k/gpio.c -@@ -119,6 +119,9 @@ static void ath_unregister_led(struct at +@@ -120,6 +120,9 @@ static void ath_unregister_led(struct at void ath_deinit_leds(struct ath_softc *sc) { @@ -10,7 +10,7 @@ ath_unregister_led(&sc->assoc_led); sc->sc_flags &= ~SC_OP_LED_ASSOCIATED; ath_unregister_led(&sc->tx_led); -@@ -132,6 +135,9 @@ void ath_init_leds(struct ath_softc *sc) +@@ -133,6 +136,9 @@ void ath_init_leds(struct ath_softc *sc) char *trigger; int ret; diff --git a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch index 2c6a5670f..23631dcac 100644 --- a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch +++ b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch @@ -8,7 +8,7 @@ #include #include "hw.h" -@@ -450,8 +451,16 @@ static int ath9k_hw_init_macaddr(struct +@@ -451,8 +452,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-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch b/package/mac80211/patches/405-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch index 560f8d42d..bbf46a0d2 100644 --- a/package/mac80211/patches/405-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch +++ b/package/mac80211/patches/405-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch @@ -8,7 +8,7 @@ #include "ath9k.h" static DEFINE_PCI_DEVICE_TABLE(ath_pci_id_table) = { -@@ -52,21 +53,36 @@ static void ath_pci_read_cachesize(struc +@@ -53,21 +54,36 @@ static void ath_pci_read_cachesize(struc static bool ath_pci_eeprom_read(struct ath_common *common, u32 off, u16 *data) { diff --git a/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch b/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch index 72d3701dc..77d1c7b6e 100644 --- a/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch +++ b/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch @@ -10,7 +10,7 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -556,6 +556,7 @@ static int ath9k_init_softc(u16 devid, s +@@ -538,6 +538,7 @@ static int ath9k_init_softc(u16 devid, s { struct ath_hw *ah = NULL; struct ath_common *common; @@ -18,7 +18,7 @@ int ret = 0, i; int csz = 0; -@@ -567,6 +568,10 @@ static int ath9k_init_softc(u16 devid, s +@@ -549,6 +550,10 @@ static int ath9k_init_softc(u16 devid, s ah->hw_version.subsysid = subsysid; sc->sc_ah = ah; @@ -31,7 +31,7 @@ common->bus_ops = bus_ops; --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -423,10 +423,6 @@ static void ath9k_hw_init_defaults(struc +@@ -422,10 +422,6 @@ static void ath9k_hw_init_defaults(struc ah->hw_version.magic = AR5416_MAGIC; ah->hw_version.subvendorid = 0; @@ -40,5 +40,5 @@ - ah->ah_flags = AH_USE_EEPROM; - ah->atim_window = 0; - ah->sta_id1_defaults = AR_STA_ID1_CRPT_MIC_ENABLE; - ah->beacon_interval = 100; + ah->sta_id1_defaults = + AR_STA_ID1_CRPT_MIC_ENABLE | diff --git a/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch b/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch index 7a3e71735..72f7751fc 100644 --- a/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch +++ b/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch @@ -11,7 +11,7 @@ #include "hw.h" #include "hw-ops.h" #include "rc.h" -@@ -435,18 +437,23 @@ static void ath9k_hw_init_defaults(struc +@@ -436,18 +438,23 @@ static void ath9k_hw_init_defaults(struc static int ath9k_hw_init_macaddr(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); diff --git a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch index 180368a1f..c280f3cf6 100644 --- a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch +++ b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1398,7 +1398,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1407,7 +1407,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st if (ah->config.rx_intr_mitigation) { REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500); diff --git a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch index 1cdd45e4e..ed7d34883 100644 --- a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch +++ b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch @@ -8,7 +8,7 @@ #include "ath9k.h" static char *dev_info = "ath9k"; -@@ -571,6 +572,8 @@ static int ath9k_init_softc(u16 devid, s +@@ -553,6 +554,8 @@ static int ath9k_init_softc(u16 devid, s pdata = (struct ath9k_platform_data *) sc->dev->platform_data; if (!pdata) ah->ah_flags |= AH_USE_EEPROM; @@ -17,7 +17,7 @@ common = ath9k_hw_common(ah); common->ops = &ath9k_common_ops; -@@ -693,6 +696,24 @@ void ath9k_set_hw_capab(struct ath_softc +@@ -675,6 +678,24 @@ void ath9k_set_hw_capab(struct ath_softc SET_IEEE80211_PERM_ADDR(hw, common->macaddr); } @@ -42,7 +42,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid, const struct ath_bus_ops *bus_ops) { -@@ -711,6 +732,9 @@ int ath9k_init_device(u16 devid, struct +@@ -693,6 +714,9 @@ int ath9k_init_device(u16 devid, struct common = ath9k_hw_common(ah); ath9k_set_hw_capab(sc, hw); @@ -54,7 +54,7 @@ ath9k_reg_notifier); --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -583,6 +583,8 @@ struct ath_softc { +@@ -594,6 +594,8 @@ struct ath_softc { int beacon_interval; diff --git a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch index eb1d316b5..2544bbf47 100644 --- a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch +++ b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/gpio.c +++ b/drivers/net/wireless/ath/ath9k/gpio.c -@@ -138,7 +138,9 @@ void ath_init_leds(struct ath_softc *sc) +@@ -139,7 +139,9 @@ void ath_init_leds(struct ath_softc *sc) if (AR_SREV_9100(sc->sc_ah)) return; @@ -13,7 +13,7 @@ sc->sc_ah->led_pin = ATH_LED_PIN_DEF; --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -458,6 +458,7 @@ void ath9k_btcoex_timer_pause(struct ath +@@ -466,6 +466,7 @@ void ath9k_btcoex_timer_pause(struct ath #define ATH_LED_PIN_DEF 1 #define ATH_LED_PIN_9287 8 diff --git a/package/mac80211/patches/500-ath9k_use_minstrel.patch b/package/mac80211/patches/500-ath9k_use_minstrel.patch index 8669c8c04..9cb129309 100644 --- a/package/mac80211/patches/500-ath9k_use_minstrel.patch +++ b/package/mac80211/patches/500-ath9k_use_minstrel.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -677,7 +677,11 @@ void ath9k_set_hw_capab(struct ath_softc +@@ -659,7 +659,11 @@ void ath9k_set_hw_capab(struct ath_softc hw->sta_data_size = sizeof(struct ath_node); hw->vif_data_size = sizeof(struct ath_vif); diff --git a/package/mac80211/patches/510-ar9100_tsf_preserve.patch b/package/mac80211/patches/510-ar9100_tsf_preserve.patch new file mode 100644 index 000000000..3af78dabb --- /dev/null +++ b/package/mac80211/patches/510-ar9100_tsf_preserve.patch @@ -0,0 +1,39 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1280,7 +1280,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st + macStaId1 = REG_READ(ah, AR_STA_ID1) & AR_STA_ID1_BASE_RATE_11B; + + /* For chips on which RTC reset is done, save TSF before it gets cleared */ +- if (AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) ++ if (AR_SREV_9100(ah) || ++ (AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL))) + tsf = ath9k_hw_gettsf64(ah); + + saveLedState = REG_READ(ah, AR_CFG_LED) & +@@ -1312,7 +1313,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st + } + + /* Restore TSF */ +- if (tsf && AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) ++ if (tsf) + ath9k_hw_settsf64(ah, tsf); + + if (AR_SREV_9280_10_OR_LATER(ah)) +@@ -1325,6 +1326,17 @@ int ath9k_hw_reset(struct ath_hw *ah, st + if (r) + return r; + ++ /* ++ * Some AR91xx SoC devices frequently fail to accept TSF writes ++ * right after the chip reset. When that happens, write a new ++ * value after the initvals have been applied, with an offset ++ * based on measured time differences ++ */ ++ if (AR_SREV_9100(ah) && (ath9k_hw_gettsf64(ah) < tsf)) { ++ tsf += 1500; ++ ath9k_hw_settsf64(ah, tsf); ++ } ++ + /* Setup MFP options for CCMP */ + if (AR_SREV_9280_20_OR_LATER(ah)) { + /* Mask Retry(b11), PwrMgt(b12), MoreData(b13) to 0 in mgmt diff --git a/package/mac80211/patches/510-pending_work.patch b/package/mac80211/patches/510-pending_work.patch deleted file mode 100644 index d52eaa444..000000000 --- a/package/mac80211/patches/510-pending_work.patch +++ /dev/null @@ -1,1893 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/Makefile -+++ b/drivers/net/wireless/ath/ath9k/Makefile -@@ -32,7 +32,8 @@ ath9k_hw-y:= \ - mac.o \ - ar9002_mac.o \ - ar9003_mac.o \ -- ar9003_eeprom.o -+ ar9003_eeprom.o \ -+ ar9003_paprd.o - - obj-$(CONFIG_ATH9K_HW) += ath9k_hw.o - ---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -@@ -67,6 +67,7 @@ static const struct ar9300_eeprom ar9300 - * bit2 - enable fastClock - enabled - * bit3 - enable doubling - enabled - * bit4 - enable internal regulator - disabled -+ * bit5 - enable pa predistortion - disabled - */ - .miscConfiguration = 0, /* bit0 - turn down drivestrength */ - .eepromWriteEnableGpio = 3, -@@ -129,9 +130,11 @@ static const struct ar9300_eeprom ar9300 - .txEndToRxOn = 0x2, - .txFrameToXpaOn = 0xe, - .thresh62 = 28, -- .futureModal = { /* [32] */ -+ .papdRateMaskHt20 = LE32(0x80c080), -+ .papdRateMaskHt40 = LE32(0x80c080), -+ .futureModal = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -+ 0, 0, 0, 0, 0, 0, 0, 0 - }, - }, - .calFreqPier2G = { -@@ -326,9 +329,11 @@ static const struct ar9300_eeprom ar9300 - .txEndToRxOn = 0x2, - .txFrameToXpaOn = 0xe, - .thresh62 = 28, -+ .papdRateMaskHt20 = LE32(0xf0e0e0), -+ .papdRateMaskHt40 = LE32(0xf0e0e0), - .futureModal = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -+ 0, 0, 0, 0, 0, 0, 0, 0 - }, - }, - .calFreqPier5G = { -@@ -644,6 +649,8 @@ static u32 ath9k_hw_ar9300_get_eeprom(st - return (pBase->featureEnable & 0x10) >> 4; - case EEP_SWREG: - return le32_to_cpu(pBase->swreg); -+ case EEP_PAPRD: -+ return !!(pBase->featureEnable & BIT(5)); - default: - return 0; - } ---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h -@@ -234,7 +234,9 @@ struct ar9300_modal_eep_header { - u8 txEndToRxOn; - u8 txFrameToXpaOn; - u8 thresh62; -- u8 futureModal[32]; -+ __le32 papdRateMaskHt20; -+ __le32 papdRateMaskHt40; -+ u8 futureModal[24]; - } __packed; - - struct ar9300_cal_data_per_freq_op_loop { ---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -470,6 +470,14 @@ static void ar9003_hw_set11n_virtualmore - ads->ctl11 &= ~AR_VirtMoreFrag; - } - -+void ar9003_hw_set_paprd_txdesc(struct ath_hw *ah, void *ds, u8 chains) -+{ -+ struct ar9003_txc *ads = ds; -+ -+ ads->ctl12 |= SM(chains, AR_PAPRDChainMask); -+} -+EXPORT_SYMBOL(ar9003_hw_set_paprd_txdesc); -+ - void ar9003_hw_attach_mac_ops(struct ath_hw *hw) - { - struct ath_hw_ops *ops = ath9k_hw_ops(hw); ---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.h -@@ -40,6 +40,10 @@ - - #define AR_Not_Sounding 0x20000000 - -+/* ctl 12 */ -+#define AR_PAPRDChainMask 0x00000e00 -+#define AR_PAPRDChainMask_S 9 -+ - #define MAP_ISR_S2_CST 6 - #define MAP_ISR_S2_GTT 6 - #define MAP_ISR_S2_TIM 3 ---- /dev/null -+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c -@@ -0,0 +1,713 @@ -+/* -+ * Copyright (c) 2010 Atheros Communications Inc. -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#include "hw.h" -+#include "ar9003_phy.h" -+ -+void ar9003_paprd_enable(struct ath_hw *ah, bool val) -+{ -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B0, -+ AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE, !!val); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B1, -+ AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE, !!val); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B2, -+ AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE, !!val); -+} -+EXPORT_SYMBOL(ar9003_paprd_enable); -+ -+static void ar9003_paprd_setup_single_table(struct ath_hw *ah) -+{ -+ struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep; -+ struct ar9300_modal_eep_header *hdr; -+ const u32 ctrl0[3] = { -+ AR_PHY_PAPRD_CTRL0_B0, -+ AR_PHY_PAPRD_CTRL0_B1, -+ AR_PHY_PAPRD_CTRL0_B2 -+ }; -+ const u32 ctrl1[3] = { -+ AR_PHY_PAPRD_CTRL1_B0, -+ AR_PHY_PAPRD_CTRL1_B1, -+ AR_PHY_PAPRD_CTRL1_B2 -+ }; -+ u32 am_mask, ht40_mask; -+ int i; -+ -+ if (ah->curchan && IS_CHAN_5GHZ(ah->curchan)) -+ hdr = &eep->modalHeader5G; -+ else -+ hdr = &eep->modalHeader2G; -+ -+ am_mask = le32_to_cpu(hdr->papdRateMaskHt20); -+ ht40_mask = le32_to_cpu(hdr->papdRateMaskHt40); -+ -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2AM, AR_PHY_PAPRD_AM2AM_MASK, am_mask); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2PM, AR_PHY_PAPRD_AM2PM_MASK, am_mask); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_HT40, AR_PHY_PAPRD_HT40_MASK, ht40_mask); -+ -+ for (i = 0; i < 3; i++) { -+ REG_RMW_FIELD(ah, ctrl0[i], -+ AR_PHY_PAPRD_CTRL0_USE_SINGLE_TABLE_MASK, 1); -+ REG_RMW_FIELD(ah, ctrl1[i], -+ AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2PM_ENABLE, 1); -+ REG_RMW_FIELD(ah, ctrl1[i], -+ AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2AM_ENABLE, 1); -+ REG_RMW_FIELD(ah, ctrl1[i], -+ AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA, 0); -+ REG_RMW_FIELD(ah, ctrl1[i], -+ AR_PHY_PAPRD_CTRL1_PA_GAIN_SCALE_FACT_MASK, 181); -+ REG_RMW_FIELD(ah, ctrl1[i], -+ AR_PHY_PAPRD_CTRL1_PAPRD_MAG_SCALE_FACT, 361); -+ REG_RMW_FIELD(ah, ctrl1[i], -+ AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA, 0); -+ REG_RMW_FIELD(ah, ctrl0[i], -+ AR_PHY_PAPRD_CTRL0_PAPRD_MAG_THRSH, 3); -+ } -+ -+ ar9003_paprd_enable(ah, false); -+ -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, -+ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_SKIP, 0x30); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, -+ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_ENABLE, 1); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, -+ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_TX_GAIN_FORCE, 1); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, -+ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_RX_BB_GAIN_FORCE, 0); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, -+ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_IQCORR_ENABLE, 0); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, -+ AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_AGC2_SETTLING, 28); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL1, -+ AR_PHY_PAPRD_TRAINER_CNTL1_CF_CF_PAPRD_TRAIN_ENABLE, 1); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL2, -+ AR_PHY_PAPRD_TRAINER_CNTL2_CF_PAPRD_INIT_RX_BB_GAIN, 147); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, -+ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_FINE_CORR_LEN, 4); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, -+ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_COARSE_CORR_LEN, 4); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, -+ 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); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, -+ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_QUICK_DROP, -6); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, -+ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_ADC_DESIRED_SIZE, -+ -15); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL3, -+ AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_BBTXMIX_DISABLE, 1); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL4, -+ AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_SAFETY_DELTA, 0); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL4, -+ AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_MIN_CORR, 400); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_TRAINER_CNTL4, -+ AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_NUM_TRAIN_SAMPLES, -+ 100); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_0_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 261376); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_1_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 248079); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_2_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 233759); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_3_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 220464); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_4_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 208194); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_5_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 196949); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_6_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 185706); -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_PRE_POST_SCALE_7_B0, -+ AR_PHY_PAPRD_PRE_POST_SCALING, 175487); -+} -+ -+static void ar9003_paprd_get_gain_table(struct ath_hw *ah) -+{ -+ u32 *entry = ah->paprd_gain_table_entries; -+ u8 *index = ah->paprd_gain_table_index; -+ u32 reg = AR_PHY_TXGAIN_TABLE; -+ int i; -+ -+ memset(entry, 0, sizeof(ah->paprd_gain_table_entries)); -+ memset(index, 0, sizeof(ah->paprd_gain_table_index)); -+ -+ for (i = 0; i < 32; i++) { -+ entry[i] = REG_READ(ah, reg); -+ index[i] = (entry[i] >> 24) & 0xff; -+ reg += 4; -+ } -+} -+ -+static unsigned int ar9003_get_desired_gain(struct ath_hw *ah, int chain, -+ int target_power) -+{ -+ int olpc_gain_delta = 0; -+ int alpha_therm, alpha_volt; -+ int therm_cal_value, volt_cal_value; -+ int therm_value, volt_value; -+ int thermal_gain_corr, voltage_gain_corr; -+ int desired_scale, desired_gain = 0; -+ u32 reg; -+ -+ REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, -+ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); -+ desired_scale = REG_READ_FIELD(ah, AR_PHY_TPC_12, -+ AR_PHY_TPC_12_DESIRED_SCALE_HT40_5); -+ alpha_therm = REG_READ_FIELD(ah, AR_PHY_TPC_19, -+ AR_PHY_TPC_19_ALPHA_THERM); -+ alpha_volt = REG_READ_FIELD(ah, AR_PHY_TPC_19, -+ AR_PHY_TPC_19_ALPHA_VOLT); -+ therm_cal_value = REG_READ_FIELD(ah, AR_PHY_TPC_18, -+ AR_PHY_TPC_18_THERM_CAL_VALUE); -+ volt_cal_value = REG_READ_FIELD(ah, AR_PHY_TPC_18, -+ AR_PHY_TPC_18_VOLT_CAL_VALUE); -+ therm_value = REG_READ_FIELD(ah, AR_PHY_BB_THERM_ADC_4, -+ AR_PHY_BB_THERM_ADC_4_LATEST_THERM_VALUE); -+ volt_value = REG_READ_FIELD(ah, AR_PHY_BB_THERM_ADC_4, -+ AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE); -+ -+ if (chain == 0) -+ reg = AR_PHY_TPC_11_B0; -+ else if (chain == 1) -+ reg = AR_PHY_TPC_11_B1; -+ else -+ reg = AR_PHY_TPC_11_B2; -+ -+ olpc_gain_delta = REG_READ_FIELD(ah, reg, -+ AR_PHY_TPC_11_OLPC_GAIN_DELTA); -+ -+ if (olpc_gain_delta >= 128) -+ olpc_gain_delta = olpc_gain_delta - 256; -+ -+ thermal_gain_corr = (alpha_therm * (therm_value - therm_cal_value) + -+ (256 / 2)) / 256; -+ voltage_gain_corr = (alpha_volt * (volt_value - volt_cal_value) + -+ (128 / 2)) / 128; -+ desired_gain = target_power - olpc_gain_delta - thermal_gain_corr - -+ voltage_gain_corr + desired_scale; -+ -+ return desired_gain; -+} -+ -+static void ar9003_tx_force_gain(struct ath_hw *ah, unsigned int gain_index) -+{ -+ int selected_gain_entry, txbb1dbgain, txbb6dbgain, txmxrgain; -+ int padrvgnA, padrvgnB, padrvgnC, padrvgnD; -+ u32 *gain_table_entries = ah->paprd_gain_table_entries; -+ -+ selected_gain_entry = gain_table_entries[gain_index]; -+ txbb1dbgain = selected_gain_entry & 0x7; -+ txbb6dbgain = (selected_gain_entry >> 3) & 0x3; -+ txmxrgain = (selected_gain_entry >> 5) & 0xf; -+ padrvgnA = (selected_gain_entry >> 9) & 0xf; -+ padrvgnB = (selected_gain_entry >> 13) & 0xf; -+ padrvgnC = (selected_gain_entry >> 17) & 0xf; -+ padrvgnD = (selected_gain_entry >> 21) & 0x3; -+ -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_TXBB1DBGAIN, txbb1dbgain); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_TXBB6DBGAIN, txbb6dbgain); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_TXMXRGAIN, txmxrgain); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNA, padrvgnA); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNB, padrvgnB); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNC, padrvgnC); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGND, padrvgnD); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCED_ENABLE_PAL, 0); -+ REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, -+ AR_PHY_TX_FORCED_GAIN_FORCE_TX_GAIN, 0); -+ REG_RMW_FIELD(ah, AR_PHY_TPC_1, AR_PHY_TPC_1_FORCED_DAC_GAIN, 0); -+ REG_RMW_FIELD(ah, AR_PHY_TPC_1, AR_PHY_TPC_1_FORCE_DAC_GAIN, 0); -+} -+ -+static inline int find_expn(int num) -+{ -+ return fls(num) - 1; -+} -+ -+static inline int find_proper_scale(int expn, int N) -+{ -+ return (expn > N) ? expn - 10 : 0; -+} -+ -+#define NUM_BIN 23 -+ -+static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain) -+{ -+ unsigned int thresh_accum_cnt; -+ int x_est[NUM_BIN + 1], Y[NUM_BIN + 1], theta[NUM_BIN + 1]; -+ int PA_in[NUM_BIN + 1]; -+ int B1_tmp[NUM_BIN + 1], B2_tmp[NUM_BIN + 1]; -+ unsigned int B1_abs_max, B2_abs_max; -+ int max_index, scale_factor; -+ int y_est[NUM_BIN + 1]; -+ int x_est_fxp1_nonlin, x_tilde[NUM_BIN + 1]; -+ unsigned int x_tilde_abs; -+ int G_fxp, Y_intercept, order_x_by_y, M, I, L, sum_y_sqr, sum_y_quad; -+ int Q_x, Q_B1, Q_B2, beta_raw, alpha_raw, scale_B; -+ int Q_scale_B, Q_beta, Q_alpha, alpha, beta, order_1, order_2; -+ int order1_5x, order2_3x, order1_5x_rem, order2_3x_rem; -+ int y5, y3, tmp; -+ int theta_low_bin = 0; -+ int i; -+ -+ /* disregard any bin that contains <= 16 samples */ -+ thresh_accum_cnt = 16; -+ scale_factor = 5; -+ max_index = 0; -+ memset(theta, 0, sizeof(theta)); -+ memset(x_est, 0, sizeof(x_est)); -+ memset(Y, 0, sizeof(Y)); -+ memset(y_est, 0, sizeof(y_est)); -+ memset(x_tilde, 0, sizeof(x_tilde)); -+ -+ for (i = 0; i < NUM_BIN; i++) { -+ s32 accum_cnt, accum_tx, accum_rx, accum_ang; -+ -+ /* number of samples */ -+ accum_cnt = data_L[i] & 0xffff; -+ -+ if (accum_cnt <= thresh_accum_cnt) -+ continue; -+ -+ /* sum(tx amplitude) */ -+ accum_tx = ((data_L[i] >> 16) & 0xffff) | -+ ((data_U[i] & 0x7ff) << 16); -+ -+ /* sum(rx amplitude distance to lower bin edge) */ -+ accum_rx = ((data_U[i] >> 11) & 0x1f) | -+ ((data_L[i + 23] & 0xffff) << 5); -+ -+ /* sum(angles) */ -+ accum_ang = ((data_L[i + 23] >> 16) & 0xffff) | -+ ((data_U[i + 23] & 0x7ff) << 16); -+ -+ accum_tx <<= scale_factor; -+ accum_rx <<= scale_factor; -+ x_est[i + 1] = (((accum_tx + accum_cnt) / accum_cnt) + 32) >> -+ scale_factor; -+ -+ Y[i + 1] = ((((accum_rx + accum_cnt) / accum_cnt) + 32) >> -+ scale_factor) + (1 << scale_factor) * max_index + 16; -+ -+ if (accum_ang >= (1 << 26)) -+ accum_ang -= 1 << 27; -+ -+ theta[i + 1] = ((accum_ang * (1 << scale_factor)) + accum_cnt) / -+ accum_cnt; -+ -+ max_index++; -+ } -+ -+ /* -+ * Find average theta of first 5 bin and all of those to same value. -+ * Curve is linear at that range. -+ */ -+ for (i = 1; i < 6; i++) -+ theta_low_bin += theta[i]; -+ -+ theta_low_bin = theta_low_bin / 5; -+ for (i = 1; i < 6; i++) -+ theta[i] = theta_low_bin; -+ -+ /* Set values at origin */ -+ theta[0] = theta_low_bin; -+ for (i = 0; i <= max_index; i++) -+ theta[i] -= theta_low_bin; -+ -+ x_est[0] = 0; -+ Y[0] = 0; -+ scale_factor = 8; -+ -+ /* low signal gain */ -+ if (x_est[6] == x_est[3]) -+ return false; -+ -+ G_fxp = -+ (((Y[6] - Y[3]) * 1 << scale_factor) + -+ (x_est[6] - x_est[3])) / (x_est[6] - x_est[3]); -+ -+ Y_intercept = -+ (G_fxp * (x_est[0] - x_est[3]) + -+ (1 << scale_factor)) / (1 << scale_factor) + Y[3]; -+ -+ for (i = 0; i <= max_index; i++) -+ y_est[i] = Y[i] - Y_intercept; -+ -+ for (i = 0; i <= 3; i++) { -+ y_est[i] = i * 32; -+ -+ /* prevent division by zero */ -+ if (G_fxp == 0) -+ return false; -+ -+ x_est[i] = ((y_est[i] * 1 << scale_factor) + G_fxp) / G_fxp; -+ } -+ -+ x_est_fxp1_nonlin = -+ x_est[max_index] - ((1 << scale_factor) * y_est[max_index] + -+ G_fxp) / G_fxp; -+ -+ order_x_by_y = -+ (x_est_fxp1_nonlin + y_est[max_index]) / y_est[max_index]; -+ -+ if (order_x_by_y == 0) -+ M = 10; -+ else if (order_x_by_y == 1) -+ M = 9; -+ else -+ M = 8; -+ -+ I = (max_index > 15) ? 7 : max_index >> 1; -+ L = max_index - I; -+ scale_factor = 8; -+ sum_y_sqr = 0; -+ sum_y_quad = 0; -+ x_tilde_abs = 0; -+ -+ for (i = 0; i <= L; i++) { -+ unsigned int y_sqr; -+ unsigned int y_quad; -+ unsigned int tmp_abs; -+ -+ /* prevent division by zero */ -+ if (y_est[i + I] == 0) -+ return false; -+ -+ x_est_fxp1_nonlin = -+ x_est[i + I] - ((1 << scale_factor) * y_est[i + I] + -+ G_fxp) / G_fxp; -+ -+ x_tilde[i] = -+ (x_est_fxp1_nonlin * (1 << M) + y_est[i + I]) / y_est[i + -+ I]; -+ x_tilde[i] = -+ (x_tilde[i] * (1 << M) + y_est[i + I]) / y_est[i + I]; -+ x_tilde[i] = -+ (x_tilde[i] * (1 << M) + y_est[i + I]) / y_est[i + I]; -+ y_sqr = -+ (y_est[i + I] * y_est[i + I] + -+ (scale_factor * scale_factor)) / (scale_factor * -+ scale_factor); -+ tmp_abs = abs(x_tilde[i]); -+ if (tmp_abs > x_tilde_abs) -+ x_tilde_abs = tmp_abs; -+ -+ y_quad = y_sqr * y_sqr; -+ sum_y_sqr = sum_y_sqr + y_sqr; -+ sum_y_quad = sum_y_quad + y_quad; -+ B1_tmp[i] = y_sqr * (L + 1); -+ B2_tmp[i] = y_sqr; -+ } -+ -+ B1_abs_max = 0; -+ B2_abs_max = 0; -+ for (i = 0; i <= L; i++) { -+ int abs_val; -+ -+ B1_tmp[i] -= sum_y_sqr; -+ B2_tmp[i] = sum_y_quad - sum_y_sqr * B2_tmp[i]; -+ -+ abs_val = abs(B1_tmp[i]); -+ if (abs_val > B1_abs_max) -+ B1_abs_max = abs_val; -+ -+ abs_val = abs(B2_tmp[i]); -+ if (abs_val > B2_abs_max) -+ B2_abs_max = abs_val; -+ } -+ -+ Q_x = find_proper_scale(find_expn(x_tilde_abs), 10); -+ Q_B1 = find_proper_scale(find_expn(B1_abs_max), 10); -+ Q_B2 = find_proper_scale(find_expn(B2_abs_max), 10); -+ -+ beta_raw = 0; -+ alpha_raw = 0; -+ for (i = 0; i <= L; i++) { -+ x_tilde[i] = x_tilde[i] / (1 << Q_x); -+ B1_tmp[i] = B1_tmp[i] / (1 << Q_B1); -+ B2_tmp[i] = B2_tmp[i] / (1 << Q_B2); -+ beta_raw = beta_raw + B1_tmp[i] * x_tilde[i]; -+ alpha_raw = alpha_raw + B2_tmp[i] * x_tilde[i]; -+ } -+ -+ scale_B = -+ ((sum_y_quad / scale_factor) * (L + 1) - -+ (sum_y_sqr / scale_factor) * sum_y_sqr) * scale_factor; -+ -+ Q_scale_B = find_proper_scale(find_expn(abs(scale_B)), 10); -+ scale_B = scale_B / (1 << Q_scale_B); -+ Q_beta = find_proper_scale(find_expn(abs(beta_raw)), 10); -+ Q_alpha = find_proper_scale(find_expn(abs(alpha_raw)), 10); -+ beta_raw = beta_raw / (1 << Q_beta); -+ alpha_raw = alpha_raw / (1 << Q_alpha); -+ alpha = (alpha_raw << 10) / scale_B; -+ beta = (beta_raw << 10) / scale_B; -+ order_1 = 3 * M - Q_x - Q_B1 - Q_beta + 10 + Q_scale_B; -+ order_2 = 3 * M - Q_x - Q_B2 - Q_alpha + 10 + Q_scale_B; -+ order1_5x = order_1 / 5; -+ order2_3x = order_2 / 3; -+ order1_5x_rem = order_1 - 5 * order1_5x; -+ order2_3x_rem = order_2 - 3 * order2_3x; -+ -+ for (i = 0; i < PAPRD_TABLE_SZ; i++) { -+ tmp = i * 32; -+ y5 = ((beta * tmp) >> 6) >> order1_5x; -+ y5 = (y5 * tmp) >> order1_5x; -+ y5 = (y5 * tmp) >> order1_5x; -+ y5 = (y5 * tmp) >> order1_5x; -+ y5 = (y5 * tmp) >> order1_5x; -+ y5 = y5 >> order1_5x_rem; -+ y3 = (alpha * tmp) >> order2_3x; -+ y3 = (y3 * tmp) >> order2_3x; -+ y3 = (y3 * tmp) >> order2_3x; -+ y3 = y3 >> order2_3x_rem; -+ PA_in[i] = y5 + y3 + (256 * tmp) / G_fxp; -+ -+ if (i >= 2) { -+ tmp = PA_in[i] - PA_in[i - 1]; -+ if (tmp < 0) -+ PA_in[i] = -+ PA_in[i - 1] + (PA_in[i - 1] - -+ PA_in[i - 2]); -+ } -+ -+ PA_in[i] = (PA_in[i] < 1400) ? PA_in[i] : 1400; -+ } -+ -+ beta_raw = 0; -+ alpha_raw = 0; -+ -+ for (i = 0; i <= L; i++) { -+ int theta_tilde = -+ ((theta[i + I] << M) + y_est[i + I]) / y_est[i + I]; -+ theta_tilde = -+ ((theta_tilde << M) + y_est[i + I]) / y_est[i + I]; -+ theta_tilde = -+ ((theta_tilde << M) + y_est[i + I]) / y_est[i + I]; -+ beta_raw = beta_raw + B1_tmp[i] * theta_tilde; -+ alpha_raw = alpha_raw + B2_tmp[i] * theta_tilde; -+ } -+ -+ Q_beta = find_proper_scale(find_expn(abs(beta_raw)), 10); -+ Q_alpha = find_proper_scale(find_expn(abs(alpha_raw)), 10); -+ beta_raw = beta_raw / (1 << Q_beta); -+ alpha_raw = alpha_raw / (1 << Q_alpha); -+ -+ alpha = (alpha_raw << 10) / scale_B; -+ beta = (beta_raw << 10) / scale_B; -+ order_1 = 3 * M - Q_x - Q_B1 - Q_beta + 10 + Q_scale_B + 5; -+ order_2 = 3 * M - Q_x - Q_B2 - Q_alpha + 10 + Q_scale_B + 5; -+ order1_5x = order_1 / 5; -+ order2_3x = order_2 / 3; -+ order1_5x_rem = order_1 - 5 * order1_5x; -+ order2_3x_rem = order_2 - 3 * order2_3x; -+ -+ for (i = 0; i < PAPRD_TABLE_SZ; i++) { -+ int PA_angle; -+ -+ /* pa_table[4] is calculated from PA_angle for i=5 */ -+ if (i == 4) -+ continue; -+ -+ tmp = i * 32; -+ if (beta > 0) -+ y5 = (((beta * tmp - 64) >> 6) - -+ (1 << order1_5x)) / (1 << order1_5x); -+ else -+ y5 = ((((beta * tmp - 64) >> 6) + -+ (1 << order1_5x)) / (1 << order1_5x)); -+ -+ y5 = (y5 * tmp) / (1 << order1_5x); -+ y5 = (y5 * tmp) / (1 << order1_5x); -+ y5 = (y5 * tmp) / (1 << order1_5x); -+ y5 = (y5 * tmp) / (1 << order1_5x); -+ y5 = y5 / (1 << order1_5x_rem); -+ -+ if (beta > 0) -+ y3 = (alpha * tmp - -+ (1 << order2_3x)) / (1 << order2_3x); -+ else -+ y3 = (alpha * tmp + -+ (1 << order2_3x)) / (1 << order2_3x); -+ y3 = (y3 * tmp) / (1 << order2_3x); -+ y3 = (y3 * tmp) / (1 << order2_3x); -+ y3 = y3 / (1 << order2_3x_rem); -+ -+ if (i < 4) { -+ PA_angle = 0; -+ } else { -+ PA_angle = y5 + y3; -+ if (PA_angle < -150) -+ PA_angle = -150; -+ else if (PA_angle > 150) -+ PA_angle = 150; -+ } -+ -+ pa_table[i] = ((PA_in[i] & 0x7ff) << 11) + (PA_angle & 0x7ff); -+ if (i == 5) { -+ PA_angle = (PA_angle + 2) >> 1; -+ pa_table[i - 1] = ((PA_in[i - 1] & 0x7ff) << 11) + -+ (PA_angle & 0x7ff); -+ } -+ } -+ -+ *gain = G_fxp; -+ return true; -+} -+ -+void ar9003_paprd_populate_single_table(struct ath_hw *ah, -+ struct ath9k_channel *chan, int chain) -+{ -+ u32 *paprd_table_val = chan->pa_table[chain]; -+ u32 small_signal_gain = chan->small_signal_gain[chain]; -+ u32 training_power; -+ u32 reg = 0; -+ int i; -+ -+ training_power = -+ REG_READ_FIELD(ah, AR_PHY_POWERTX_RATE5, -+ AR_PHY_POWERTX_RATE5_POWERTXHT20_0); -+ training_power -= 4; -+ -+ if (chain == 0) -+ reg = AR_PHY_PAPRD_MEM_TAB_B0; -+ else if (chain == 1) -+ reg = AR_PHY_PAPRD_MEM_TAB_B1; -+ else if (chain == 2) -+ reg = AR_PHY_PAPRD_MEM_TAB_B2; -+ -+ for (i = 0; i < PAPRD_TABLE_SZ; i++) { -+ REG_WRITE(ah, reg, paprd_table_val[i]); -+ reg = reg + 4; -+ } -+ -+ if (chain == 0) -+ reg = AR_PHY_PA_GAIN123_B0; -+ else if (chain == 1) -+ reg = AR_PHY_PA_GAIN123_B1; -+ else -+ reg = AR_PHY_PA_GAIN123_B2; -+ -+ REG_RMW_FIELD(ah, reg, AR_PHY_PA_GAIN123_PA_GAIN1, small_signal_gain); -+ -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL1_B0, -+ AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL, -+ training_power); -+ -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL1_B1, -+ AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL, -+ training_power); -+ -+ REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL1_B2, -+ AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL, -+ training_power); -+} -+EXPORT_SYMBOL(ar9003_paprd_populate_single_table); -+ -+int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain) -+{ -+ -+ unsigned int i, desired_gain, gain_index; -+ unsigned int train_power; -+ -+ train_power = REG_READ_FIELD(ah, AR_PHY_POWERTX_RATE5, -+ AR_PHY_POWERTX_RATE5_POWERTXHT20_0); -+ -+ train_power = train_power - 4; -+ -+ desired_gain = ar9003_get_desired_gain(ah, chain, train_power); -+ -+ gain_index = 0; -+ for (i = 0; i < 32; i++) { -+ if (ah->paprd_gain_table_index[i] >= desired_gain) -+ break; -+ gain_index++; -+ } -+ -+ ar9003_tx_force_gain(ah, gain_index); -+ -+ REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, -+ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); -+ -+ return 0; -+} -+EXPORT_SYMBOL(ar9003_paprd_setup_gain_table); -+ -+int ar9003_paprd_create_curve(struct ath_hw *ah, struct ath9k_channel *chan, -+ int chain) -+{ -+ u16 *small_signal_gain = &chan->small_signal_gain[chain]; -+ u32 *pa_table = chan->pa_table[chain]; -+ u32 *data_L, *data_U; -+ int i, status = 0; -+ u32 *buf; -+ u32 reg; -+ -+ memset(chan->pa_table[chain], 0, sizeof(chan->pa_table[chain])); -+ -+ buf = kmalloc(2 * 48 * sizeof(u32), GFP_ATOMIC); -+ if (!buf) -+ return -ENOMEM; -+ -+ data_L = &buf[0]; -+ data_U = &buf[48]; -+ -+ REG_CLR_BIT(ah, AR_PHY_CHAN_INFO_MEMORY, -+ AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ); -+ -+ reg = AR_PHY_CHAN_INFO_TAB_0; -+ for (i = 0; i < 48; i++) -+ data_L[i] = REG_READ(ah, reg + (i << 2)); -+ -+ REG_SET_BIT(ah, AR_PHY_CHAN_INFO_MEMORY, -+ AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ); -+ -+ for (i = 0; i < 48; i++) -+ data_U[i] = REG_READ(ah, reg + (i << 2)); -+ -+ if (!create_pa_curve(data_L, data_U, pa_table, small_signal_gain)) -+ status = -2; -+ -+ REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, -+ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); -+ -+ kfree(buf); -+ -+ return status; -+} -+EXPORT_SYMBOL(ar9003_paprd_create_curve); -+ -+int ar9003_paprd_init_table(struct ath_hw *ah) -+{ -+ ar9003_paprd_setup_single_table(ah); -+ ar9003_paprd_get_gain_table(ah); -+ return 0; -+} -+EXPORT_SYMBOL(ar9003_paprd_init_table); -+ -+bool ar9003_paprd_is_done(struct ath_hw *ah) -+{ -+ return !!REG_READ_FIELD(ah, AR_PHY_PAPRD_TRAINER_STAT1, -+ AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); -+} -+EXPORT_SYMBOL(ar9003_paprd_is_done); ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h -@@ -451,7 +451,11 @@ - #define AR_PHY_TSTDAC (AR_SM_BASE + 0x168) - - #define AR_PHY_CHAN_STATUS (AR_SM_BASE + 0x16c) --#define AR_PHY_CHAN_INFO_MEMORY (AR_SM_BASE + 0x170) -+ -+#define AR_PHY_CHAN_INFO_MEMORY (AR_SM_BASE + 0x170) -+#define AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ 0x00000008 -+#define AR_PHY_CHAN_INFO_MEMORY_CHANINFOMEM_S2_READ_S 3 -+ - #define AR_PHY_CHNINFO_NOISEPWR (AR_SM_BASE + 0x174) - #define AR_PHY_CHNINFO_GAINDIFF (AR_SM_BASE + 0x178) - #define AR_PHY_CHNINFO_FINETIM (AR_SM_BASE + 0x17c) -@@ -467,17 +471,63 @@ - #define AR_PHY_PWRTX_MAX (AR_SM_BASE + 0x1f0) - #define AR_PHY_POWER_TX_SUB (AR_SM_BASE + 0x1f4) - --#define AR_PHY_TPC_4_B0 (AR_SM_BASE + 0x204) --#define AR_PHY_TPC_5_B0 (AR_SM_BASE + 0x208) --#define AR_PHY_TPC_6_B0 (AR_SM_BASE + 0x20c) --#define AR_PHY_TPC_11_B0 (AR_SM_BASE + 0x220) --#define AR_PHY_TPC_18 (AR_SM_BASE + 0x23c) --#define AR_PHY_TPC_19 (AR_SM_BASE + 0x240) -+#define AR_PHY_TPC_1 (AR_SM_BASE + 0x1f8) -+#define AR_PHY_TPC_1_FORCED_DAC_GAIN 0x0000003e -+#define AR_PHY_TPC_1_FORCED_DAC_GAIN_S 1 -+#define AR_PHY_TPC_1_FORCE_DAC_GAIN 0x00000001 -+#define AR_PHY_TPC_1_FORCE_DAC_GAIN_S 0 -+ -+#define AR_PHY_TPC_4_B0 (AR_SM_BASE + 0x204) -+#define AR_PHY_TPC_5_B0 (AR_SM_BASE + 0x208) -+#define AR_PHY_TPC_6_B0 (AR_SM_BASE + 0x20c) -+ -+#define AR_PHY_TPC_11_B0 (AR_SM_BASE + 0x220) -+#define AR_PHY_TPC_11_B1 (AR_SM1_BASE + 0x220) -+#define AR_PHY_TPC_11_B2 (AR_SM2_BASE + 0x220) -+#define AR_PHY_TPC_11_OLPC_GAIN_DELTA 0x00ff0000 -+#define AR_PHY_TPC_11_OLPC_GAIN_DELTA_S 16 -+ -+#define AR_PHY_TPC_12 (AR_SM_BASE + 0x224) -+#define AR_PHY_TPC_12_DESIRED_SCALE_HT40_5 0x3e000000 -+#define AR_PHY_TPC_12_DESIRED_SCALE_HT40_5_S 25 -+ -+#define AR_PHY_TPC_18 (AR_SM_BASE + 0x23c) -+#define AR_PHY_TPC_18_THERM_CAL_VALUE 0x000000ff -+#define AR_PHY_TPC_18_THERM_CAL_VALUE_S 0 -+#define AR_PHY_TPC_18_VOLT_CAL_VALUE 0x0000ff00 -+#define AR_PHY_TPC_18_VOLT_CAL_VALUE_S 8 -+ -+#define AR_PHY_TPC_19 (AR_SM_BASE + 0x240) -+#define AR_PHY_TPC_19_ALPHA_VOLT 0x001f0000 -+#define AR_PHY_TPC_19_ALPHA_VOLT_S 16 -+#define AR_PHY_TPC_19_ALPHA_THERM 0xff -+#define AR_PHY_TPC_19_ALPHA_THERM_S 0 -+ -+#define AR_PHY_TX_FORCED_GAIN (AR_SM_BASE + 0x258) -+#define AR_PHY_TX_FORCED_GAIN_FORCE_TX_GAIN 0x00000001 -+#define AR_PHY_TX_FORCED_GAIN_FORCE_TX_GAIN_S 0 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB1DBGAIN 0x0000000e -+#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB1DBGAIN_S 1 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB6DBGAIN 0x00000030 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_TXBB6DBGAIN_S 4 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_TXMXRGAIN 0x000003c0 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_TXMXRGAIN_S 6 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNA 0x00003c00 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNA_S 10 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNB 0x0003c000 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNB_S 14 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNC 0x003c0000 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGNC_S 18 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGND 0x00c00000 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_PADRVGND_S 22 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_ENABLE_PAL 0x01000000 -+#define AR_PHY_TX_FORCED_GAIN_FORCED_ENABLE_PAL_S 24 - --#define AR_PHY_TX_FORCED_GAIN (AR_SM_BASE + 0x258) - - #define AR_PHY_PDADC_TAB_0 (AR_SM_BASE + 0x280) - -+#define AR_PHY_TXGAIN_TABLE (AR_SM_BASE + 0x300) -+ - #define AR_PHY_TX_IQCAL_CONTROL_1 (AR_SM_BASE + 0x448) - #define AR_PHY_TX_IQCAL_START (AR_SM_BASE + 0x440) - #define AR_PHY_TX_IQCAL_STATUS_B0 (AR_SM_BASE + 0x48c) -@@ -490,7 +540,17 @@ - #define AR_PHY_ONLY_WARMRESET (AR_SM_BASE + 0x5d0) - #define AR_PHY_ONLY_CTL (AR_SM_BASE + 0x5d4) - #define AR_PHY_ECO_CTRL (AR_SM_BASE + 0x5dc) --#define AR_PHY_BB_THERM_ADC_1 (AR_SM_BASE + 0x248) -+ -+#define AR_PHY_BB_THERM_ADC_1 (AR_SM_BASE + 0x248) -+#define AR_PHY_BB_THERM_ADC_1_INIT_THERM 0x000000ff -+#define AR_PHY_BB_THERM_ADC_1_INIT_THERM_S 0 -+ -+#define AR_PHY_BB_THERM_ADC_4 (AR_SM_BASE + 0x254) -+#define AR_PHY_BB_THERM_ADC_4_LATEST_THERM_VALUE 0x000000ff -+#define AR_PHY_BB_THERM_ADC_4_LATEST_THERM_VALUE_S 0 -+#define AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE 0x0000ff00 -+#define AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE_S 8 -+ - - #define AR_PHY_65NM_CH0_SYNTH4 0x1608c - #define AR_PHY_SYNTH4_LONG_SHIFT_SELECT 0x00000002 -@@ -660,17 +720,9 @@ - #define AR_PHY_TX_IQCAL_CORR_COEFF_01_COEFF_TABLE 0x00003fff - #define AR_PHY_TX_IQCAL_CORR_COEFF_01_COEFF_TABLE_S 0 - --#define AR_PHY_TPC_18_THERM_CAL_VALUE 0xff --#define AR_PHY_TPC_18_THERM_CAL_VALUE_S 0 --#define AR_PHY_TPC_19_ALPHA_THERM 0xff --#define AR_PHY_TPC_19_ALPHA_THERM_S 0 -- - #define AR_PHY_65NM_CH0_RXTX4_THERM_ON 0x10000000 - #define AR_PHY_65NM_CH0_RXTX4_THERM_ON_S 28 - --#define AR_PHY_BB_THERM_ADC_1_INIT_THERM 0x000000ff --#define AR_PHY_BB_THERM_ADC_1_INIT_THERM_S 0 -- - /* - * Channel 1 Register Map - */ -@@ -842,6 +894,144 @@ - - #define AR_PHY_WATCHDOG_STATUS_CLR 0x00000008 - -+/* -+ * PAPRD registers -+ */ -+#define AR_PHY_XPA_TIMING_CTL (AR_SM_BASE + 0x64) -+ -+#define AR_PHY_PAPRD_AM2AM (AR_CHAN_BASE + 0xe4) -+#define AR_PHY_PAPRD_AM2AM_MASK 0x01ffffff -+#define AR_PHY_PAPRD_AM2AM_MASK_S 0 -+ -+#define AR_PHY_PAPRD_AM2PM (AR_CHAN_BASE + 0xe8) -+#define AR_PHY_PAPRD_AM2PM_MASK 0x01ffffff -+#define AR_PHY_PAPRD_AM2PM_MASK_S 0 -+ -+#define AR_PHY_PAPRD_HT40 (AR_CHAN_BASE + 0xec) -+#define AR_PHY_PAPRD_HT40_MASK 0x01ffffff -+#define AR_PHY_PAPRD_HT40_MASK_S 0 -+ -+#define AR_PHY_PAPRD_CTRL0_B0 (AR_CHAN_BASE + 0xf0) -+#define AR_PHY_PAPRD_CTRL0_B1 (AR_CHAN1_BASE + 0xf0) -+#define AR_PHY_PAPRD_CTRL0_B2 (AR_CHAN2_BASE + 0xf0) -+#define AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE 0x00000001 -+#define AR_PHY_PAPRD_CTRL0_PAPRD_ENABLE_S 0 -+#define AR_PHY_PAPRD_CTRL0_USE_SINGLE_TABLE_MASK 0x00000002 -+#define AR_PHY_PAPRD_CTRL0_USE_SINGLE_TABLE_MASK_S 1 -+#define AR_PHY_PAPRD_CTRL0_PAPRD_MAG_THRSH 0xf8000000 -+#define AR_PHY_PAPRD_CTRL0_PAPRD_MAG_THRSH_S 27 -+ -+#define AR_PHY_PAPRD_CTRL1_B0 (AR_CHAN_BASE + 0xf4) -+#define AR_PHY_PAPRD_CTRL1_B1 (AR_CHAN1_BASE + 0xf4) -+#define AR_PHY_PAPRD_CTRL1_B2 (AR_CHAN2_BASE + 0xf4) -+#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA 0x00000001 -+#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_SCALING_ENA_S 0 -+#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2AM_ENABLE 0x00000002 -+#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2AM_ENABLE_S 1 -+#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2PM_ENABLE 0x00000004 -+#define AR_PHY_PAPRD_CTRL1_ADAPTIVE_AM2PM_ENABLE_S 2 -+#define AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL 0x000001f8 -+#define AR_PHY_PAPRD_CTRL1_PAPRD_POWER_AT_AM2AM_CAL_S 3 -+#define AR_PHY_PAPRD_CTRL1_PA_GAIN_SCALE_FACT_MASK 0x0001fe00 -+#define AR_PHY_PAPRD_CTRL1_PA_GAIN_SCALE_FACT_MASK_S 9 -+#define AR_PHY_PAPRD_CTRL1_PAPRD_MAG_SCALE_FACT 0x0ffe0000 -+#define AR_PHY_PAPRD_CTRL1_PAPRD_MAG_SCALE_FACT_S 17 -+ -+#define AR_PHY_PAPRD_TRAINER_CNTL1 (AR_SM_BASE + 0x490) -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_CF_PAPRD_TRAIN_ENABLE 0x00000001 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_CF_PAPRD_TRAIN_ENABLE_S 0 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_AGC2_SETTLING 0x0000007e -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_AGC2_SETTLING_S 1 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_IQCORR_ENABLE 0x00000100 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_IQCORR_ENABLE_S 8 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_RX_BB_GAIN_FORCE 0x00000200 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_RX_BB_GAIN_FORCE_S 9 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_TX_GAIN_FORCE 0x00000400 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_TX_GAIN_FORCE_S 10 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_ENABLE 0x00000800 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_ENABLE_S 11 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_SKIP 0x0003f000 -+#define AR_PHY_PAPRD_TRAINER_CNTL1_CF_PAPRD_LB_SKIP_S 12 -+ -+#define AR_PHY_PAPRD_TRAINER_CNTL2 (AR_SM_BASE + 0x494) -+#define AR_PHY_PAPRD_TRAINER_CNTL2_CF_PAPRD_INIT_RX_BB_GAIN 0xFFFFFFFF -+#define AR_PHY_PAPRD_TRAINER_CNTL2_CF_PAPRD_INIT_RX_BB_GAIN_S 0 -+ -+#define AR_PHY_PAPRD_TRAINER_CNTL3 (AR_SM_BASE + 0x498) -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_ADC_DESIRED_SIZE 0x0000003f -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_ADC_DESIRED_SIZE_S 0 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_QUICK_DROP 0x00000fc0 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_QUICK_DROP_S 6 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_MIN_LOOPBACK_DEL 0x0001f000 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_MIN_LOOPBACK_DEL_S 12 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_NUM_CORR_STAGES 0x000e0000 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_NUM_CORR_STAGES_S 17 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_COARSE_CORR_LEN 0x00f00000 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_COARSE_CORR_LEN_S 20 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_FINE_CORR_LEN 0x0f000000 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_FINE_CORR_LEN_S 24 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_BBTXMIX_DISABLE 0x20000000 -+#define AR_PHY_PAPRD_TRAINER_CNTL3_CF_PAPRD_BBTXMIX_DISABLE_S 29 -+ -+#define AR_PHY_PAPRD_TRAINER_CNTL4 (AR_SM_BASE + 0x49c) -+#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_NUM_TRAIN_SAMPLES 0x03ff0000 -+#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_NUM_TRAIN_SAMPLES_S 16 -+#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_SAFETY_DELTA 0x0000f000 -+#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_SAFETY_DELTA_S 12 -+#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_MIN_CORR 0x00000fff -+#define AR_PHY_PAPRD_TRAINER_CNTL4_CF_PAPRD_MIN_CORR_S 0 -+ -+#define AR_PHY_PAPRD_PRE_POST_SCALE_0_B0 (AR_CHAN_BASE + 0x100) -+#define AR_PHY_PAPRD_PRE_POST_SCALE_1_B0 (AR_CHAN_BASE + 0x104) -+#define AR_PHY_PAPRD_PRE_POST_SCALE_2_B0 (AR_CHAN_BASE + 0x108) -+#define AR_PHY_PAPRD_PRE_POST_SCALE_3_B0 (AR_CHAN_BASE + 0x10c) -+#define AR_PHY_PAPRD_PRE_POST_SCALE_4_B0 (AR_CHAN_BASE + 0x110) -+#define AR_PHY_PAPRD_PRE_POST_SCALE_5_B0 (AR_CHAN_BASE + 0x114) -+#define AR_PHY_PAPRD_PRE_POST_SCALE_6_B0 (AR_CHAN_BASE + 0x118) -+#define AR_PHY_PAPRD_PRE_POST_SCALE_7_B0 (AR_CHAN_BASE + 0x11c) -+#define AR_PHY_PAPRD_PRE_POST_SCALING 0x3FFFF -+#define AR_PHY_PAPRD_PRE_POST_SCALING_S 0 -+ -+#define AR_PHY_PAPRD_TRAINER_STAT1 (AR_SM_BASE + 0x4a0) -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE 0x00000001 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE_S 0 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_INCOMPLETE 0x00000002 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_INCOMPLETE_S 1 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_CORR_ERR 0x00000004 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_CORR_ERR_S 2 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_ACTIVE 0x00000008 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_ACTIVE_S 3 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_RX_GAIN_IDX 0x000001f0 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_RX_GAIN_IDX_S 4 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_AGC2_PWR 0x0001fe00 -+#define AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_AGC2_PWR_S 9 -+ -+#define AR_PHY_PAPRD_TRAINER_STAT2 (AR_SM_BASE + 0x4a4) -+#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_VAL 0x0000ffff -+#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_VAL_S 0 -+#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_COARSE_IDX 0x001f0000 -+#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_COARSE_IDX_S 16 -+#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_IDX 0x00600000 -+#define AR_PHY_PAPRD_TRAINER_STAT2_PAPRD_FINE_IDX_S 21 -+ -+#define AR_PHY_PAPRD_TRAINER_STAT3 (AR_SM_BASE + 0x4a8) -+#define AR_PHY_PAPRD_TRAINER_STAT3_PAPRD_TRAIN_SAMPLES_CNT 0x000fffff -+#define AR_PHY_PAPRD_TRAINER_STAT3_PAPRD_TRAIN_SAMPLES_CNT_S 0 -+ -+#define AR_PHY_PAPRD_MEM_TAB_B0 (AR_CHAN_BASE + 0x120) -+#define AR_PHY_PAPRD_MEM_TAB_B1 (AR_CHAN1_BASE + 0x120) -+#define AR_PHY_PAPRD_MEM_TAB_B2 (AR_CHAN2_BASE + 0x120) -+ -+#define AR_PHY_PA_GAIN123_B0 (AR_CHAN_BASE + 0xf8) -+#define AR_PHY_PA_GAIN123_B1 (AR_CHAN1_BASE + 0xf8) -+#define AR_PHY_PA_GAIN123_B2 (AR_CHAN2_BASE + 0xf8) -+#define AR_PHY_PA_GAIN123_PA_GAIN1 0x3FF -+#define AR_PHY_PA_GAIN123_PA_GAIN1_S 0 -+ -+#define AR_PHY_POWERTX_RATE5 (AR_SM_BASE + 0x1d0) -+#define AR_PHY_POWERTX_RATE5_POWERTXHT20_0 0x3F -+#define AR_PHY_POWERTX_RATE5_POWERTXHT20_0_S 0 -+ - void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); - - #endif /* AR9003_PHY_H */ ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - - #include "debug.h" - #include "common.h" -@@ -194,6 +195,7 @@ enum ATH_AGGR_STATUS { - - #define ATH_TXFIFO_DEPTH 8 - struct ath_txq { -+ int axq_class; - u32 axq_qnum; - u32 *axq_link; - struct list_head axq_q; -@@ -206,7 +208,6 @@ struct ath_txq { - struct list_head txq_fifo_pending; - u8 txq_headidx; - u8 txq_tailidx; -- int pending_frames; - }; - - struct ath_atx_ac { -@@ -224,6 +225,7 @@ struct ath_buf_state { - int bfs_tidno; - int bfs_retries; - u8 bf_type; -+ u8 bfs_paprd; - u32 bfs_keyix; - enum ath9k_key_type bfs_keytype; - }; -@@ -244,7 +246,6 @@ struct ath_buf { - struct ath_buf_state bf_state; - dma_addr_t bf_dmacontext; - struct ath_wiphy *aphy; -- struct ath_txq *txq; - }; - - struct ath_atx_tid { -@@ -281,6 +282,7 @@ struct ath_tx_control { - struct ath_txq *txq; - int if_id; - enum ath9k_internal_frame_type frame_type; -+ u8 paprd; - }; - - #define ATH_TX_ERROR 0x01 -@@ -290,11 +292,12 @@ struct ath_tx_control { - struct ath_tx { - u16 seq_no; - u32 txqsetup; -- int hwq_map[ATH9K_WME_AC_VO+1]; -+ int hwq_map[WME_NUM_AC]; - spinlock_t txbuflock; - struct list_head txbuf; - struct ath_txq txq[ATH9K_NUM_TX_QUEUES]; - struct ath_descdma txdma; -+ int pending_frames[WME_NUM_AC]; - }; - - struct ath_rx_edma { -@@ -421,6 +424,7 @@ int ath_beaconq_config(struct ath_softc - #define ATH_LONG_CALINTERVAL 30000 /* 30 seconds */ - #define ATH_RESTART_CALINTERVAL 1200000 /* 20 minutes */ - -+void ath_paprd_calibrate(struct work_struct *work); - void ath_ani_calibrate(unsigned long data); - - /**********/ -@@ -553,6 +557,9 @@ struct ath_softc { - spinlock_t sc_serial_rw; - spinlock_t sc_pm_lock; - struct mutex mutex; -+ struct work_struct paprd_work; -+ struct completion paprd_complete; -+ int paprd_txok; - - u32 intrstatus; - u32 sc_flags; /* SC_OP_* */ -@@ -613,7 +620,6 @@ struct ath_wiphy { - - void ath9k_tasklet(unsigned long data); - int ath_reset(struct ath_softc *sc, bool retry_tx); --int ath_get_hal_qnum(u16 queue, struct ath_softc *sc); - int ath_get_mac80211_qnum(u32 queue, struct ath_softc *sc); - int ath_cabq_update(struct ath_softc *); - -@@ -629,8 +635,6 @@ irqreturn_t ath_isr(int irq, void *dev); - int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid, - const struct ath_bus_ops *bus_ops); - void ath9k_deinit_device(struct ath_softc *sc); --const char *ath_mac_bb_name(u32 mac_bb_version); --const char *ath_rf_name(u16 rf_version); - void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw); - void ath9k_update_ichannel(struct ath_softc *sc, struct ieee80211_hw *hw, - struct ath9k_channel *ichan); -@@ -681,8 +685,6 @@ void ath9k_set_wiphy_idle(struct ath_wip - void ath_mac80211_stop_queue(struct ath_softc *sc, u16 skb_queue); - void ath_mac80211_start_queue(struct ath_softc *sc, u16 skb_queue); - --int ath_tx_get_qnum(struct ath_softc *sc, int qtype, int haltype); -- - void ath_start_rfkill_poll(struct ath_softc *sc); - extern void ath9k_rfkill_poll_state(struct ieee80211_hw *hw); - ---- a/drivers/net/wireless/ath/ath9k/eeprom.h -+++ b/drivers/net/wireless/ath/ath9k/eeprom.h -@@ -263,7 +263,8 @@ enum eeprom_param { - EEP_PWR_TABLE_OFFSET, - EEP_DRIVE_STRENGTH, - EEP_INTERNAL_REGULATOR, -- EEP_SWREG -+ EEP_SWREG, -+ EEP_PAPRD, - }; - - enum ar5416_rates { ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -2246,6 +2246,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw - pCap->rx_status_len = sizeof(struct ar9003_rxs); - pCap->tx_desc_len = sizeof(struct ar9003_txc); - pCap->txs_len = sizeof(struct ar9003_txs); -+ if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD)) -+ pCap->hw_caps |= ATH9K_HW_CAP_PAPRD; - } else { - pCap->tx_desc_len = sizeof(struct ath_desc); - if (AR_SREV_9280_20(ah) && ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -158,6 +158,9 @@ - #define ATH9K_HW_RX_HP_QDEPTH 16 - #define ATH9K_HW_RX_LP_QDEPTH 128 - -+#define PAPRD_GAIN_TABLE_ENTRIES 32 -+#define PAPRD_TABLE_SZ 24 -+ - enum ath_ini_subsys { - ATH_INI_PRE = 0, - ATH_INI_CORE, -@@ -200,6 +203,7 @@ enum ath9k_hw_caps { - ATH9K_HW_CAP_LDPC = BIT(19), - ATH9K_HW_CAP_FASTCLOCK = BIT(20), - ATH9K_HW_CAP_SGI_20 = BIT(21), -+ ATH9K_HW_CAP_PAPRD = BIT(22), - }; - - enum ath9k_capability_type { -@@ -359,6 +363,9 @@ struct ath9k_channel { - int8_t iCoff; - int8_t qCoff; - int16_t rawNoiseFloor; -+ bool paprd_done; -+ u16 small_signal_gain[AR9300_MAX_CHAINS]; -+ u32 pa_table[AR9300_MAX_CHAINS][PAPRD_TABLE_SZ]; - }; - - #define IS_CHAN_G(_c) ((((_c)->channelFlags & (CHANNEL_G)) == CHANNEL_G) || \ -@@ -793,6 +800,9 @@ struct ath_hw { - - u32 bb_watchdog_last_status; - u32 bb_watchdog_timeout_ms; /* in ms, 0 to disable */ -+ -+ u32 paprd_gain_table_entries[PAPRD_GAIN_TABLE_ENTRIES]; -+ u8 paprd_gain_table_index[PAPRD_GAIN_TABLE_ENTRIES]; - }; - - static inline struct ath_common *ath9k_hw_common(struct ath_hw *ah) -@@ -922,6 +932,15 @@ void ar9003_hw_set_nf_limits(struct ath_ - void ar9003_hw_bb_watchdog_config(struct ath_hw *ah); - void ar9003_hw_bb_watchdog_read(struct ath_hw *ah); - void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah); -+void ar9003_paprd_enable(struct ath_hw *ah, bool val); -+void ar9003_paprd_populate_single_table(struct ath_hw *ah, -+ struct ath9k_channel *chan, int chain); -+int ar9003_paprd_create_curve(struct ath_hw *ah, struct ath9k_channel *chan, -+ int chain); -+int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain); -+int ar9003_paprd_init_table(struct ath_hw *ah); -+bool ar9003_paprd_is_done(struct ath_hw *ah); -+void ar9003_hw_set_paprd_txdesc(struct ath_hw *ah, void *ds, u8 chains); - - /* Hardware family op attach helpers */ - void ar5008_hw_attach_phy_ops(struct ath_hw *ah); ---- a/drivers/net/wireless/ath/ath9k/init.c -+++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -427,7 +427,7 @@ static int ath9k_init_btcoex(struct ath_ - r = ath_init_btcoex_timer(sc); - if (r) - return -1; -- qnum = ath_tx_get_qnum(sc, ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_BE); -+ qnum = sc->tx.hwq_map[WME_AC_BE]; - ath9k_hw_init_btcoex_hw(sc->sc_ah, qnum); - sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW; - break; -@@ -464,23 +464,23 @@ static int ath9k_init_queues(struct ath_ - sc->config.cabqReadytime = ATH_CABQ_READY_TIME; - ath_cabq_update(sc); - -- if (!ath_tx_setup(sc, ATH9K_WME_AC_BK)) { -+ if (!ath_tx_setup(sc, WME_AC_BK)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for BK traffic\n"); - goto err; - } - -- if (!ath_tx_setup(sc, ATH9K_WME_AC_BE)) { -+ if (!ath_tx_setup(sc, WME_AC_BE)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for BE traffic\n"); - goto err; - } -- if (!ath_tx_setup(sc, ATH9K_WME_AC_VI)) { -+ if (!ath_tx_setup(sc, WME_AC_VI)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for VI traffic\n"); - goto err; - } -- if (!ath_tx_setup(sc, ATH9K_WME_AC_VO)) { -+ if (!ath_tx_setup(sc, WME_AC_VO)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for VO traffic\n"); - goto err; -@@ -769,6 +769,7 @@ int ath9k_init_device(u16 devid, struct - goto error_world; - } - -+ INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); - INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work); - INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work); - sc->wiphy_scheduler_int = msecs_to_jiffies(500); ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -233,6 +233,104 @@ int ath_set_channel(struct ath_softc *sc - return r; - } - -+static void ath_paprd_activate(struct ath_softc *sc) -+{ -+ struct ath_hw *ah = sc->sc_ah; -+ int chain; -+ -+ if (!ah->curchan->paprd_done) -+ return; -+ -+ ath9k_ps_wakeup(sc); -+ for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) { -+ if (!(ah->caps.tx_chainmask & BIT(chain))) -+ continue; -+ -+ ar9003_paprd_populate_single_table(ah, ah->curchan, chain); -+ } -+ -+ ar9003_paprd_enable(ah, true); -+ ath9k_ps_restore(sc); -+} -+ -+void ath_paprd_calibrate(struct work_struct *work) -+{ -+ struct ath_softc *sc = container_of(work, struct ath_softc, paprd_work); -+ struct ieee80211_hw *hw = sc->hw; -+ struct ath_hw *ah = sc->sc_ah; -+ struct ieee80211_hdr *hdr; -+ struct sk_buff *skb = NULL; -+ struct ieee80211_tx_info *tx_info; -+ int band = hw->conf.channel->band; -+ struct ieee80211_supported_band *sband = &sc->sbands[band]; -+ struct ath_tx_control txctl; -+ int qnum, ftype; -+ int chain_ok = 0; -+ int chain; -+ int len = 1800; -+ int i; -+ -+ ath9k_ps_wakeup(sc); -+ skb = alloc_skb(len, GFP_KERNEL); -+ if (!skb) -+ return; -+ -+ tx_info = IEEE80211_SKB_CB(skb); -+ -+ skb_put(skb, len); -+ memset(skb->data, 0, len); -+ hdr = (struct ieee80211_hdr *)skb->data; -+ ftype = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC; -+ hdr->frame_control = cpu_to_le16(ftype); -+ hdr->duration_id = 10; -+ memcpy(hdr->addr1, hw->wiphy->perm_addr, ETH_ALEN); -+ memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN); -+ memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN); -+ -+ memset(&txctl, 0, sizeof(txctl)); -+ qnum = sc->tx.hwq_map[WME_AC_BE]; -+ txctl.txq = &sc->tx.txq[qnum]; -+ -+ ar9003_paprd_init_table(ah); -+ for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) { -+ if (!(ah->caps.tx_chainmask & BIT(chain))) -+ continue; -+ -+ chain_ok = 0; -+ memset(tx_info, 0, sizeof(*tx_info)); -+ tx_info->band = band; -+ -+ for (i = 0; i < 4; i++) { -+ tx_info->control.rates[i].idx = sband->n_bitrates - 1; -+ tx_info->control.rates[i].count = 6; -+ } -+ -+ init_completion(&sc->paprd_complete); -+ ar9003_paprd_setup_gain_table(ah, chain); -+ txctl.paprd = BIT(chain); -+ if (ath_tx_start(hw, skb, &txctl) != 0) -+ break; -+ -+ wait_for_completion(&sc->paprd_complete); -+ -+ if (!ar9003_paprd_is_done(ah)) -+ break; -+ -+ if (ar9003_paprd_create_curve(ah, ah->curchan, chain) != 0) -+ break; -+ -+ chain_ok = 1; -+ } -+ kfree_skb(skb); -+ -+ if (chain_ok) { -+ ah->curchan->paprd_done = true; -+ ath_paprd_activate(sc); -+ } -+ -+ ath9k_ps_restore(sc); -+} -+ - /* - * This routine performs the periodic noise floor calibration function - * that is used to adjust and optimize the chip performance. This -@@ -332,6 +430,13 @@ set_timer: - cal_interval = min(cal_interval, (u32)short_cal_interval); - - mod_timer(&common->ani.timer, jiffies + msecs_to_jiffies(cal_interval)); -+ if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_PAPRD) && -+ !(sc->sc_flags & SC_OP_SCANNING)) { -+ if (!sc->sc_ah->curchan->paprd_done) -+ ieee80211_queue_work(sc->hw, &sc->paprd_work); -+ else -+ ath_paprd_activate(sc); -+ } - } - - static void ath_start_ani(struct ath_common *common) -@@ -805,25 +910,25 @@ int ath_reset(struct ath_softc *sc, bool - return r; - } - --int ath_get_hal_qnum(u16 queue, struct ath_softc *sc) -+static int ath_get_hal_qnum(u16 queue, struct ath_softc *sc) - { - int qnum; - - switch (queue) { - case 0: -- qnum = sc->tx.hwq_map[ATH9K_WME_AC_VO]; -+ qnum = sc->tx.hwq_map[WME_AC_VO]; - break; - case 1: -- qnum = sc->tx.hwq_map[ATH9K_WME_AC_VI]; -+ qnum = sc->tx.hwq_map[WME_AC_VI]; - break; - case 2: -- qnum = sc->tx.hwq_map[ATH9K_WME_AC_BE]; -+ qnum = sc->tx.hwq_map[WME_AC_BE]; - break; - case 3: -- qnum = sc->tx.hwq_map[ATH9K_WME_AC_BK]; -+ qnum = sc->tx.hwq_map[WME_AC_BK]; - break; - default: -- qnum = sc->tx.hwq_map[ATH9K_WME_AC_BE]; -+ qnum = sc->tx.hwq_map[WME_AC_BE]; - break; - } - -@@ -835,16 +940,16 @@ int ath_get_mac80211_qnum(u32 queue, str - int qnum; - - switch (queue) { -- case ATH9K_WME_AC_VO: -+ case WME_AC_VO: - qnum = 0; - break; -- case ATH9K_WME_AC_VI: -+ case WME_AC_VI: - qnum = 1; - break; -- case ATH9K_WME_AC_BE: -+ case WME_AC_BE: - qnum = 2; - break; -- case ATH9K_WME_AC_BK: -+ case WME_AC_BK: - qnum = 3; - break; - default: -@@ -1128,6 +1233,7 @@ static void ath9k_stop(struct ieee80211_ - - cancel_delayed_work_sync(&sc->ath_led_blink_work); - cancel_delayed_work_sync(&sc->tx_complete_work); -+ cancel_work_sync(&sc->paprd_work); - - if (!sc->num_sec_wiphy) { - cancel_delayed_work_sync(&sc->wiphy_work); -@@ -1556,7 +1662,7 @@ static int ath9k_conf_tx(struct ieee8021 - ath_print(common, ATH_DBG_FATAL, "TXQ Update failed\n"); - - if (sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) -- if ((qnum == sc->tx.hwq_map[ATH9K_WME_AC_BE]) && !ret) -+ if ((qnum == sc->tx.hwq_map[WME_AC_BE]) && !ret) - ath_beaconq_config(sc); - - mutex_unlock(&sc->mutex); -@@ -1843,6 +1949,7 @@ static void ath9k_sw_scan_start(struct i - ath9k_wiphy_pause_all_forced(sc, aphy); - sc->sc_flags |= SC_OP_SCANNING; - del_timer_sync(&common->ani.timer); -+ cancel_work_sync(&sc->paprd_work); - cancel_delayed_work_sync(&sc->tx_complete_work); - mutex_unlock(&sc->mutex); - } ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -941,6 +941,7 @@ struct ath_txq *ath_txq_setup(struct ath - if (!ATH_TXQ_SETUP(sc, qnum)) { - struct ath_txq *txq = &sc->tx.txq[qnum]; - -+ txq->axq_class = subtype; - txq->axq_qnum = qnum; - txq->axq_link = NULL; - INIT_LIST_HEAD(&txq->axq_q); -@@ -958,32 +959,6 @@ struct ath_txq *ath_txq_setup(struct ath - return &sc->tx.txq[qnum]; - } - --int ath_tx_get_qnum(struct ath_softc *sc, int qtype, int haltype) --{ -- int qnum; -- -- switch (qtype) { -- case ATH9K_TX_QUEUE_DATA: -- if (haltype >= ARRAY_SIZE(sc->tx.hwq_map)) { -- ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_FATAL, -- "HAL AC %u out of range, max %zu!\n", -- haltype, ARRAY_SIZE(sc->tx.hwq_map)); -- return -1; -- } -- qnum = sc->tx.hwq_map[haltype]; -- break; -- case ATH9K_TX_QUEUE_BEACON: -- qnum = sc->beacon.beaconq; -- break; -- case ATH9K_TX_QUEUE_CAB: -- qnum = sc->beacon.cabq->axq_qnum; -- break; -- default: -- qnum = -1; -- } -- return qnum; --} -- - int ath_txq_update(struct ath_softc *sc, int qnum, - struct ath9k_tx_queue_info *qinfo) - { -@@ -1662,12 +1637,13 @@ static int ath_tx_setup_buffer(struct ie - bf->bf_frmlen -= padsize; - } - -- if (conf_is_ht(&hw->conf)) { -+ if (!txctl->paprd && conf_is_ht(&hw->conf)) { - bf->bf_state.bf_type |= BUF_HT; - if (tx_info->flags & IEEE80211_TX_CTL_LDPC) - use_ldpc = true; - } - -+ bf->bf_state.bfs_paprd = txctl->paprd; - bf->bf_flags = setup_tx_flags(skb, use_ldpc); - - bf->bf_keytype = get_hw_crypto_keytype(skb); -@@ -1742,6 +1718,9 @@ static void ath_tx_start_dma(struct ath_ - bf->bf_buf_addr, - txctl->txq->axq_qnum); - -+ if (bf->bf_state.bfs_paprd) -+ ar9003_hw_set_paprd_txdesc(ah, ds, bf->bf_state.bfs_paprd); -+ - spin_lock_bh(&txctl->txq->axq_lock); - - if (bf_isht(bf) && (sc->sc_flags & SC_OP_TXAGGR) && -@@ -1785,7 +1764,7 @@ int ath_tx_start(struct ieee80211_hw *hw - struct ath_common *common = ath9k_hw_common(sc->sc_ah); - struct ath_txq *txq = txctl->txq; - struct ath_buf *bf; -- int r; -+ int q, r; - - bf = ath_tx_get_buffer(sc); - if (!bf) { -@@ -1793,14 +1772,6 @@ int ath_tx_start(struct ieee80211_hw *hw - return -1; - } - -- bf->txq = txctl->txq; -- spin_lock_bh(&bf->txq->axq_lock); -- if (++bf->txq->pending_frames > ATH_MAX_QDEPTH && !txq->stopped) { -- ath_mac80211_stop_queue(sc, skb_get_queue_mapping(skb)); -- txq->stopped = 1; -- } -- spin_unlock_bh(&bf->txq->axq_lock); -- - r = ath_tx_setup_buffer(hw, bf, skb, txctl); - if (unlikely(r)) { - ath_print(common, ATH_DBG_FATAL, "TX mem alloc failure\n"); -@@ -1821,6 +1792,17 @@ int ath_tx_start(struct ieee80211_hw *hw - return r; - } - -+ q = skb_get_queue_mapping(skb); -+ if (q >= 4) -+ q = 0; -+ -+ spin_lock_bh(&txq->axq_lock); -+ if (++sc->tx.pending_frames[q] > ATH_MAX_QDEPTH && !txq->stopped) { -+ ath_mac80211_stop_queue(sc, skb_get_queue_mapping(skb)); -+ txq->stopped = 1; -+ } -+ spin_unlock_bh(&txq->axq_lock); -+ - ath_tx_start_dma(sc, bf, txctl); - - return 0; -@@ -1890,7 +1872,7 @@ static void ath_tx_complete(struct ath_s - struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); - struct ath_common *common = ath9k_hw_common(sc->sc_ah); - struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data; -- int padpos, padsize; -+ int q, padpos, padsize; - - ath_print(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb); - -@@ -1929,8 +1911,16 @@ static void ath_tx_complete(struct ath_s - - if (unlikely(tx_info->pad[0] & ATH_TX_INFO_FRAME_TYPE_INTERNAL)) - ath9k_tx_status(hw, skb); -- else -+ else { -+ q = skb_get_queue_mapping(skb); -+ if (q >= 4) -+ q = 0; -+ -+ if (--sc->tx.pending_frames[q] < 0) -+ sc->tx.pending_frames[q] = 0; -+ - ieee80211_tx_status(hw, skb); -+ } - } - - static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf, -@@ -1951,16 +1941,15 @@ static void ath_tx_complete_buf(struct a - tx_flags |= ATH_TX_XRETRY; - } - -- if (bf->txq) { -- spin_lock_bh(&bf->txq->axq_lock); -- bf->txq->pending_frames--; -- spin_unlock_bh(&bf->txq->axq_lock); -- bf->txq = NULL; -- } -- - dma_unmap_single(sc->dev, bf->bf_dmacontext, skb->len, DMA_TO_DEVICE); -- ath_tx_complete(sc, skb, bf->aphy, tx_flags); -- ath_debug_stat_tx(sc, txq, bf, ts); -+ -+ if (bf->bf_state.bfs_paprd) { -+ sc->paprd_txok = txok; -+ complete(&sc->paprd_complete); -+ } else { -+ ath_tx_complete(sc, skb, bf->aphy, tx_flags); -+ ath_debug_stat_tx(sc, txq, bf, ts); -+ } - - /* - * Return the list of ath_buf of this mpdu to free queue -@@ -2045,13 +2034,14 @@ static void ath_wake_mac80211_queue(stru - { - int qnum; - -+ qnum = ath_get_mac80211_qnum(txq->axq_class, sc); -+ if (qnum == -1) -+ return; -+ - spin_lock_bh(&txq->axq_lock); -- if (txq->stopped && txq->pending_frames < ATH_MAX_QDEPTH) { -- qnum = ath_get_mac80211_qnum(txq->axq_qnum, sc); -- if (qnum != -1) { -- ath_mac80211_start_queue(sc, qnum); -- txq->stopped = 0; -- } -+ if (txq->stopped && sc->tx.pending_frames[qnum] < ATH_MAX_QDEPTH) { -+ ath_mac80211_start_queue(sc, qnum); -+ txq->stopped = 0; - } - spin_unlock_bh(&txq->axq_lock); - } -@@ -2422,26 +2412,8 @@ void ath_tx_node_init(struct ath_softc * - for (acno = 0, ac = &an->ac[acno]; - acno < WME_NUM_AC; acno++, ac++) { - ac->sched = false; -+ ac->qnum = sc->tx.hwq_map[acno]; - INIT_LIST_HEAD(&ac->tid_q); -- -- switch (acno) { -- case WME_AC_BE: -- ac->qnum = ath_tx_get_qnum(sc, -- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_BE); -- break; -- case WME_AC_BK: -- ac->qnum = ath_tx_get_qnum(sc, -- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_BK); -- break; -- case WME_AC_VI: -- ac->qnum = ath_tx_get_qnum(sc, -- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_VI); -- break; -- case WME_AC_VO: -- ac->qnum = ath_tx_get_qnum(sc, -- ATH9K_TX_QUEUE_DATA, ATH9K_WME_AC_VO); -- break; -- } - } - } - ---- a/drivers/net/wireless/ath/ath9k/beacon.c -+++ b/drivers/net/wireless/ath/ath9k/beacon.c -@@ -38,8 +38,7 @@ int ath_beaconq_config(struct ath_softc - qi.tqi_cwmax = 0; - } else { - /* Adhoc mode; important thing is to use 2x cwmin. */ -- qnum = ath_tx_get_qnum(sc, ATH9K_TX_QUEUE_DATA, -- ATH9K_WME_AC_BE); -+ qnum = sc->tx.hwq_map[WME_AC_BE]; - ath9k_hw_get_txq_props(ah, qnum, &qi_be); - qi.tqi_aifs = qi_be.tqi_aifs; - qi.tqi_cwmin = 4*qi_be.tqi_cwmin; ---- a/drivers/net/wireless/ath/ath9k/debug.c -+++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -630,10 +630,10 @@ static const struct file_operations fops - do { \ - len += snprintf(buf + len, size - len, \ - "%s%13u%11u%10u%10u\n", str, \ -- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_BE]].elem, \ -- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_BK]].elem, \ -- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_VI]].elem, \ -- sc->debug.stats.txstats[sc->tx.hwq_map[ATH9K_WME_AC_VO]].elem); \ -+ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_BE]].elem, \ -+ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_BK]].elem, \ -+ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_VI]].elem, \ -+ sc->debug.stats.txstats[sc->tx.hwq_map[WME_AC_VO]].elem); \ - } while(0) - - static ssize_t read_file_xmit(struct file *file, char __user *user_buf, -@@ -956,6 +956,10 @@ int ath9k_init_debug(struct ath_hw *ah) - sc->debug.debugfs_phy, sc, &fops_regval)) - goto err; - -+ if (!debugfs_create_bool("ignore_extcca", S_IRUSR | S_IWUSR, -+ sc->debug.debugfs_phy, &ah->config.cwm_ignore_extcca)) -+ goto err; -+ - sc->debug.regidx = 0; - return 0; - err: ---- a/drivers/net/wireless/ath/ath9k/htc.h -+++ b/drivers/net/wireless/ath/ath9k/htc.h -@@ -398,7 +398,7 @@ struct ath9k_htc_priv { - - int beaconq; - int cabq; -- int hwq_map[ATH9K_WME_AC_VO+1]; -+ int hwq_map[WME_NUM_AC]; - - #ifdef CONFIG_ATH9K_HTC_DEBUGFS - struct ath9k_debug debug; ---- a/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c -+++ b/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c -@@ -227,7 +227,7 @@ void ath9k_htc_beaconq_config(struct ath - { - struct ath_hw *ah = priv->ah; - struct ath9k_tx_queue_info qi, qi_be; -- int qnum = priv->hwq_map[ATH9K_WME_AC_BE]; -+ int qnum = priv->hwq_map[WME_AC_BE]; - - memset(&qi, 0, sizeof(struct ath9k_tx_queue_info)); - memset(&qi_be, 0, sizeof(struct ath9k_tx_queue_info)); ---- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c -+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c -@@ -521,23 +521,23 @@ static int ath9k_init_queues(struct ath9 - goto err; - } - -- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_BE)) { -+ if (!ath9k_htc_txq_setup(priv, WME_AC_BE)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for BE traffic\n"); - goto err; - } - -- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_BK)) { -+ if (!ath9k_htc_txq_setup(priv, WME_AC_BK)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for BK traffic\n"); - goto err; - } -- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_VI)) { -+ if (!ath9k_htc_txq_setup(priv, WME_AC_VI)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for VI traffic\n"); - goto err; - } -- if (!ath9k_htc_txq_setup(priv, ATH9K_WME_AC_VO)) { -+ if (!ath9k_htc_txq_setup(priv, WME_AC_VO)) { - ath_print(common, ATH_DBG_FATAL, - "Unable to setup xmit queue for VO traffic\n"); - goto err; ---- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c -+++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c -@@ -1590,7 +1590,7 @@ static int ath9k_htc_conf_tx(struct ieee - } - - if ((priv->ah->opmode == NL80211_IFTYPE_ADHOC) && -- (qnum == priv->hwq_map[ATH9K_WME_AC_BE])) -+ (qnum == priv->hwq_map[WME_AC_BE])) - ath9k_htc_beaconq_config(priv); - out: - ath9k_htc_ps_restore(priv); ---- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c -+++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c -@@ -34,15 +34,15 @@ int get_hw_qnum(u16 queue, int *hwq_map) - { - switch (queue) { - case 0: -- return hwq_map[ATH9K_WME_AC_VO]; -+ return hwq_map[WME_AC_VO]; - case 1: -- return hwq_map[ATH9K_WME_AC_VI]; -+ return hwq_map[WME_AC_VI]; - case 2: -- return hwq_map[ATH9K_WME_AC_BE]; -+ return hwq_map[WME_AC_BE]; - case 3: -- return hwq_map[ATH9K_WME_AC_BK]; -+ return hwq_map[WME_AC_BK]; - default: -- return hwq_map[ATH9K_WME_AC_BE]; -+ return hwq_map[WME_AC_BE]; - } - } - ---- a/drivers/net/wireless/ath/ath9k/mac.h -+++ b/drivers/net/wireless/ath/ath9k/mac.h -@@ -577,13 +577,8 @@ enum ath9k_tx_queue { - - #define ATH9K_NUM_TX_QUEUES 10 - --enum ath9k_tx_queue_subtype { -- ATH9K_WME_AC_BK = 0, -- ATH9K_WME_AC_BE, -- ATH9K_WME_AC_VI, -- ATH9K_WME_AC_VO, -- ATH9K_WME_UPSD --}; -+/* Used as a queue subtype instead of a WMM AC */ -+#define ATH9K_WME_UPSD 4 - - enum ath9k_tx_queue_flags { - TXQ_FLAG_TXOKINT_ENABLE = 0x0001, -@@ -617,7 +612,7 @@ enum ath9k_pkt_type { - struct ath9k_tx_queue_info { - u32 tqi_ver; - enum ath9k_tx_queue tqi_type; -- enum ath9k_tx_queue_subtype tqi_subtype; -+ int tqi_subtype; - enum ath9k_tx_queue_flags tqi_qflags; - u32 tqi_priority; - u32 tqi_aifs; ---- a/drivers/net/wireless/ath/ath9k/virtual.c -+++ b/drivers/net/wireless/ath/ath9k/virtual.c -@@ -219,7 +219,7 @@ static int ath9k_send_nullfunc(struct at - info->control.rates[1].idx = -1; - - memset(&txctl, 0, sizeof(struct ath_tx_control)); -- txctl.txq = &sc->tx.txq[sc->tx.hwq_map[ATH9K_WME_AC_VO]]; -+ txctl.txq = &sc->tx.txq[sc->tx.hwq_map[WME_AC_VO]]; - txctl.frame_type = ps ? ATH9K_IFT_PAUSE : ATH9K_IFT_UNPAUSE; - - if (ath_tx_start(aphy->hw, skb, &txctl) != 0) diff --git a/package/mac80211/patches/520-ath9k_enable_ar9300.patch b/package/mac80211/patches/520-ath9k_enable_ar9300.patch deleted file mode 100644 index f8fbe860f..000000000 --- a/package/mac80211/patches/520-ath9k_enable_ar9300.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/pci.c -+++ b/drivers/net/wireless/ath/ath9k/pci.c -@@ -29,6 +29,7 @@ static DEFINE_PCI_DEVICE_TABLE(ath_pci_i - { PCI_VDEVICE(ATHEROS, 0x002C) }, /* PCI-E 802.11n bonded out */ - { PCI_VDEVICE(ATHEROS, 0x002D) }, /* PCI */ - { PCI_VDEVICE(ATHEROS, 0x002E) }, /* PCI-E */ -+ { PCI_VDEVICE(ATHEROS, 0x0030) }, /* PCI-E AR9300 */ - { 0 } - }; - diff --git a/package/mac80211/patches/520-initval_rename.patch b/package/mac80211/patches/520-initval_rename.patch new file mode 100644 index 000000000..0a2760d3c --- /dev/null +++ b/package/mac80211/patches/520-initval_rename.patch @@ -0,0 +1,59 @@ +--- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h +@@ -1217,7 +1217,7 @@ static const u32 ar5416Addac_9160[][2] = + {0x000098cc, 0x00000000 }, + }; + +-static const u32 ar5416Addac_91601_1[][2] = { ++static const u32 ar5416Addac_9160_1_1[][2] = { + {0x0000989c, 0x00000000 }, + {0x0000989c, 0x00000000 }, + {0x0000989c, 0x00000000 }, +--- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c +@@ -179,8 +179,8 @@ static void ar9002_hw_init_mode_regs(str + ARRAY_SIZE(ar5416Bank7_9160), 2); + if (AR_SREV_9160_11(ah)) { + INIT_INI_ARRAY(&ah->iniAddac, +- ar5416Addac_91601_1, +- ARRAY_SIZE(ar5416Addac_91601_1), 2); ++ ar5416Addac_9160_1_1, ++ ARRAY_SIZE(ar5416Addac_9160_1_1), 2); + } else { + INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac_9160, + ARRAY_SIZE(ar5416Addac_9160), 2); +@@ -239,12 +239,12 @@ void ar9002_hw_cck_chan14_spread(struct + { + if (AR_SREV_9287_11_OR_LATER(ah)) { + INIT_INI_ARRAY(&ah->iniCckfirNormal, +- ar9287Common_normal_cck_fir_coeff_92871_1, +- ARRAY_SIZE(ar9287Common_normal_cck_fir_coeff_92871_1), ++ ar9287Common_normal_cck_fir_coeff_9287_1_1, ++ ARRAY_SIZE(ar9287Common_normal_cck_fir_coeff_9287_1_1), + 2); + INIT_INI_ARRAY(&ah->iniCckfirJapan2484, +- ar9287Common_japan_2484_cck_fir_coeff_92871_1, +- ARRAY_SIZE(ar9287Common_japan_2484_cck_fir_coeff_92871_1), ++ ar9287Common_japan_2484_cck_fir_coeff_9287_1_1, ++ ARRAY_SIZE(ar9287Common_japan_2484_cck_fir_coeff_9287_1_1), + 2); + } + } +--- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h +@@ -4142,13 +4142,13 @@ static const u32 ar9287Common_9287_1_1[] + * registers be programmed differently from the channel between 2412 and + * 2472 MHz. + */ +-static const u32 ar9287Common_normal_cck_fir_coeff_92871_1[][2] = { ++static const u32 ar9287Common_normal_cck_fir_coeff_9287_1_1[][2] = { + { 0x0000a1f4, 0x00fffeff }, + { 0x0000a1f8, 0x00f5f9ff }, + { 0x0000a1fc, 0xb79f6427 }, + }; + +-static const u32 ar9287Common_japan_2484_cck_fir_coeff_92871_1[][2] = { ++static const u32 ar9287Common_japan_2484_cck_fir_coeff_9287_1_1[][2] = { + { 0x0000a1f4, 0x00000000 }, + { 0x0000a1f8, 0xefff0301 }, + { 0x0000a1fc, 0xca9228ee }, diff --git a/package/mac80211/patches/521-initval_format_changes.patch b/package/mac80211/patches/521-initval_format_changes.patch new file mode 100644 index 000000000..49bd62c6e --- /dev/null +++ b/package/mac80211/patches/521-initval_format_changes.patch @@ -0,0 +1,14200 @@ +--- a/drivers/net/wireless/ath/ath9k/ar5008_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar5008_initvals.h +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2008-2009 Atheros Communications Inc. ++ * Copyright (c) 2010 Atheros Communications Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above +@@ -14,729 +14,660 @@ + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-#ifndef INITVALS_AR5008_H +-#define INITVALS_AR5008_H +- + static const u32 ar5416Modes[][6] = { +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, +- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, +- { 0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0 }, +- { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x00009850, 0x6c48b4e0, 0x6d48b4e0, 0x6d48b0de, 0x6c48b0de, 0x6c48b0de }, +- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, +- { 0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e }, +- { 0x00009860, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18 }, +- { 0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190 }, +- { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, +- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000134 }, +- { 0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b }, +- { 0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020 }, +- { 0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, +- { 0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, +- { 0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, +- { 0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120 }, +- { 0x000099bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00 }, +- { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, +- { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, +- { 0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, +- { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, +- { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, +- { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, +- { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, +- { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, +- { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, +- { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, +- { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, +- { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, +- { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, +- { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, ++ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, ++ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0}, ++ {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x00009850, 0x6c48b4e0, 0x6d48b4e0, 0x6d48b0de, 0x6c48b0de, 0x6c48b0de}, ++ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, ++ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, ++ {0x00009860, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18}, ++ {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190}, ++ {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, ++ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000134}, ++ {0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b}, ++ {0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020}, ++ {0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80}, ++ {0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80}, ++ {0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80}, ++ {0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120}, ++ {0x000099bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00}, ++ {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880}, ++ {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788}, ++ {0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa}, ++ {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000}, ++ {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402}, ++ {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06}, ++ {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b}, ++ {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b}, ++ {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a}, ++ {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf}, ++ {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f}, ++ {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f}, ++ {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f}, ++ {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + }; + + static const u32 ar5416Common[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020015 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00007010, 0x00000000 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x40000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x000080c0, 0x2a82301a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0xffffffff }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c4, 0x00000000 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008264, 0x88000010 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x00008300, 0x00000000 }, +- { 0x00008304, 0x00000000 }, +- { 0x00008308, 0x00000000 }, +- { 0x0000830c, 0x00000000 }, +- { 0x00008310, 0x00000000 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008318, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000007 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00070000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x000107ff }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xad848e19 }, +- { 0x00009810, 0x7d14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x00009840, 0x206a002e }, +- { 0x0000984c, 0x1284233c }, +- { 0x00009854, 0x00000859 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x05100000 }, +- { 0x0000a920, 0x05100000 }, +- { 0x0000b920, 0x05100000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009948, 0x9280b212 }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5d50e188 }, +- { 0x00009958, 0x00081fff }, +- { 0x0000c95c, 0x004b6a8e }, +- { 0x0000c968, 0x000003ce }, +- { 0x00009970, 0x190fb515 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x001fff00 }, +- { 0x000099ac, 0x00000000 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000200 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x000000aa }, +- { 0x000099fc, 0x00001042 }, +- { 0x00009b00, 0x00000000 }, +- { 0x00009b04, 0x00000001 }, +- { 0x00009b08, 0x00000002 }, +- { 0x00009b0c, 0x00000003 }, +- { 0x00009b10, 0x00000004 }, +- { 0x00009b14, 0x00000005 }, +- { 0x00009b18, 0x00000008 }, +- { 0x00009b1c, 0x00000009 }, +- { 0x00009b20, 0x0000000a }, +- { 0x00009b24, 0x0000000b }, +- { 0x00009b28, 0x0000000c }, +- { 0x00009b2c, 0x0000000d }, +- { 0x00009b30, 0x00000010 }, +- { 0x00009b34, 0x00000011 }, +- { 0x00009b38, 0x00000012 }, +- { 0x00009b3c, 0x00000013 }, +- { 0x00009b40, 0x00000014 }, +- { 0x00009b44, 0x00000015 }, +- { 0x00009b48, 0x00000018 }, +- { 0x00009b4c, 0x00000019 }, +- { 0x00009b50, 0x0000001a }, +- { 0x00009b54, 0x0000001b }, +- { 0x00009b58, 0x0000001c }, +- { 0x00009b5c, 0x0000001d }, +- { 0x00009b60, 0x00000020 }, +- { 0x00009b64, 0x00000021 }, +- { 0x00009b68, 0x00000022 }, +- { 0x00009b6c, 0x00000023 }, +- { 0x00009b70, 0x00000024 }, +- { 0x00009b74, 0x00000025 }, +- { 0x00009b78, 0x00000028 }, +- { 0x00009b7c, 0x00000029 }, +- { 0x00009b80, 0x0000002a }, +- { 0x00009b84, 0x0000002b }, +- { 0x00009b88, 0x0000002c }, +- { 0x00009b8c, 0x0000002d }, +- { 0x00009b90, 0x00000030 }, +- { 0x00009b94, 0x00000031 }, +- { 0x00009b98, 0x00000032 }, +- { 0x00009b9c, 0x00000033 }, +- { 0x00009ba0, 0x00000034 }, +- { 0x00009ba4, 0x00000035 }, +- { 0x00009ba8, 0x00000035 }, +- { 0x00009bac, 0x00000035 }, +- { 0x00009bb0, 0x00000035 }, +- { 0x00009bb4, 0x00000035 }, +- { 0x00009bb8, 0x00000035 }, +- { 0x00009bbc, 0x00000035 }, +- { 0x00009bc0, 0x00000035 }, +- { 0x00009bc4, 0x00000035 }, +- { 0x00009bc8, 0x00000035 }, +- { 0x00009bcc, 0x00000035 }, +- { 0x00009bd0, 0x00000035 }, +- { 0x00009bd4, 0x00000035 }, +- { 0x00009bd8, 0x00000035 }, +- { 0x00009bdc, 0x00000035 }, +- { 0x00009be0, 0x00000035 }, +- { 0x00009be4, 0x00000035 }, +- { 0x00009be8, 0x00000035 }, +- { 0x00009bec, 0x00000035 }, +- { 0x00009bf0, 0x00000035 }, +- { 0x00009bf4, 0x00000035 }, +- { 0x00009bf8, 0x00000010 }, +- { 0x00009bfc, 0x0000001a }, +- { 0x0000a210, 0x40806333 }, +- { 0x0000a214, 0x00106c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x018830c6 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x00000bb5 }, +- { 0x0000a22c, 0x00000011 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a23c, 0x13c889af }, +- { 0x0000a240, 0x38490a20 }, +- { 0x0000a244, 0x00007bb6 }, +- { 0x0000a248, 0x0fff3ffc }, +- { 0x0000a24c, 0x00000001 }, +- { 0x0000a250, 0x0000a000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0cc75380 }, +- { 0x0000a25c, 0x0f0f0f01 }, +- { 0x0000a260, 0xdfa91f01 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0e79e5c6 }, +- { 0x0000b26c, 0x0e79e5c6 }, +- { 0x0000c26c, 0x0e79e5c6 }, +- { 0x0000d270, 0x00820820 }, +- { 0x0000a278, 0x1ce739ce }, +- { 0x0000a27c, 0x051701ce }, +- { 0x0000a338, 0x00000000 }, +- { 0x0000a33c, 0x00000000 }, +- { 0x0000a340, 0x00000000 }, +- { 0x0000a344, 0x00000000 }, +- { 0x0000a348, 0x3fffffff }, +- { 0x0000a34c, 0x3fffffff }, +- { 0x0000a350, 0x3fffffff }, +- { 0x0000a354, 0x0003ffff }, +- { 0x0000a358, 0x79a8aa1f }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x08000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x1ce739ce }, +- { 0x0000a398, 0x000001ce }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3c8, 0x00000246 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x1ce739ce }, +- { 0x0000a3e0, 0x000001ce }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020015}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00007010, 0x00000000}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x40000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x000080c0, 0x2a82301a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0xffffffff}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c4, 0x00000000}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008264, 0x88000010}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x00008300, 0x00000000}, ++ {0x00008304, 0x00000000}, ++ {0x00008308, 0x00000000}, ++ {0x0000830c, 0x00000000}, ++ {0x00008310, 0x00000000}, ++ {0x00008314, 0x00000000}, ++ {0x00008318, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000007}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00070000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x000107ff}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xad848e19}, ++ {0x00009810, 0x7d14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x00009840, 0x206a002e}, ++ {0x0000984c, 0x1284233c}, ++ {0x00009854, 0x00000859}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x05100000}, ++ {0x0000a920, 0x05100000}, ++ {0x0000b920, 0x05100000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009948, 0x9280b212}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5d50e188}, ++ {0x00009958, 0x00081fff}, ++ {0x0000c95c, 0x004b6a8e}, ++ {0x0000c968, 0x000003ce}, ++ {0x00009970, 0x190fb515}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x001fff00}, ++ {0x000099ac, 0x00000000}, ++ {0x000099b0, 0x03051000}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000200}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x000000aa}, ++ {0x000099fc, 0x00001042}, ++ {0x00009b00, 0x00000000}, ++ {0x00009b04, 0x00000001}, ++ {0x00009b08, 0x00000002}, ++ {0x00009b0c, 0x00000003}, ++ {0x00009b10, 0x00000004}, ++ {0x00009b14, 0x00000005}, ++ {0x00009b18, 0x00000008}, ++ {0x00009b1c, 0x00000009}, ++ {0x00009b20, 0x0000000a}, ++ {0x00009b24, 0x0000000b}, ++ {0x00009b28, 0x0000000c}, ++ {0x00009b2c, 0x0000000d}, ++ {0x00009b30, 0x00000010}, ++ {0x00009b34, 0x00000011}, ++ {0x00009b38, 0x00000012}, ++ {0x00009b3c, 0x00000013}, ++ {0x00009b40, 0x00000014}, ++ {0x00009b44, 0x00000015}, ++ {0x00009b48, 0x00000018}, ++ {0x00009b4c, 0x00000019}, ++ {0x00009b50, 0x0000001a}, ++ {0x00009b54, 0x0000001b}, ++ {0x00009b58, 0x0000001c}, ++ {0x00009b5c, 0x0000001d}, ++ {0x00009b60, 0x00000020}, ++ {0x00009b64, 0x00000021}, ++ {0x00009b68, 0x00000022}, ++ {0x00009b6c, 0x00000023}, ++ {0x00009b70, 0x00000024}, ++ {0x00009b74, 0x00000025}, ++ {0x00009b78, 0x00000028}, ++ {0x00009b7c, 0x00000029}, ++ {0x00009b80, 0x0000002a}, ++ {0x00009b84, 0x0000002b}, ++ {0x00009b88, 0x0000002c}, ++ {0x00009b8c, 0x0000002d}, ++ {0x00009b90, 0x00000030}, ++ {0x00009b94, 0x00000031}, ++ {0x00009b98, 0x00000032}, ++ {0x00009b9c, 0x00000033}, ++ {0x00009ba0, 0x00000034}, ++ {0x00009ba4, 0x00000035}, ++ {0x00009ba8, 0x00000035}, ++ {0x00009bac, 0x00000035}, ++ {0x00009bb0, 0x00000035}, ++ {0x00009bb4, 0x00000035}, ++ {0x00009bb8, 0x00000035}, ++ {0x00009bbc, 0x00000035}, ++ {0x00009bc0, 0x00000035}, ++ {0x00009bc4, 0x00000035}, ++ {0x00009bc8, 0x00000035}, ++ {0x00009bcc, 0x00000035}, ++ {0x00009bd0, 0x00000035}, ++ {0x00009bd4, 0x00000035}, ++ {0x00009bd8, 0x00000035}, ++ {0x00009bdc, 0x00000035}, ++ {0x00009be0, 0x00000035}, ++ {0x00009be4, 0x00000035}, ++ {0x00009be8, 0x00000035}, ++ {0x00009bec, 0x00000035}, ++ {0x00009bf0, 0x00000035}, ++ {0x00009bf4, 0x00000035}, ++ {0x00009bf8, 0x00000010}, ++ {0x00009bfc, 0x0000001a}, ++ {0x0000a210, 0x40806333}, ++ {0x0000a214, 0x00106c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x018830c6}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x00000bb5}, ++ {0x0000a22c, 0x00000011}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a23c, 0x13c889af}, ++ {0x0000a240, 0x38490a20}, ++ {0x0000a244, 0x00007bb6}, ++ {0x0000a248, 0x0fff3ffc}, ++ {0x0000a24c, 0x00000001}, ++ {0x0000a250, 0x0000a000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0cc75380}, ++ {0x0000a25c, 0x0f0f0f01}, ++ {0x0000a260, 0xdfa91f01}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0e79e5c6}, ++ {0x0000b26c, 0x0e79e5c6}, ++ {0x0000c26c, 0x0e79e5c6}, ++ {0x0000d270, 0x00820820}, ++ {0x0000a278, 0x1ce739ce}, ++ {0x0000a27c, 0x051701ce}, ++ {0x0000a338, 0x00000000}, ++ {0x0000a33c, 0x00000000}, ++ {0x0000a340, 0x00000000}, ++ {0x0000a344, 0x00000000}, ++ {0x0000a348, 0x3fffffff}, ++ {0x0000a34c, 0x3fffffff}, ++ {0x0000a350, 0x3fffffff}, ++ {0x0000a354, 0x0003ffff}, ++ {0x0000a358, 0x79a8aa1f}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x08000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x1ce739ce}, ++ {0x0000a398, 0x000001ce}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3c8, 0x00000246}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x1ce739ce}, ++ {0x0000a3e0, 0x000001ce}, + }; + + static const u32 ar5416Bank0[][2] = { +- { 0x000098b0, 0x1e5795e5 }, +- { 0x000098e0, 0x02008020 }, ++ /* Addr allmodes */ ++ {0x000098b0, 0x1e5795e5}, ++ {0x000098e0, 0x02008020}, + }; + + static const u32 ar5416BB_RfGain[][3] = { +- { 0x00009a00, 0x00000000, 0x00000000 }, +- { 0x00009a04, 0x00000040, 0x00000040 }, +- { 0x00009a08, 0x00000080, 0x00000080 }, +- { 0x00009a0c, 0x000001a1, 0x00000141 }, +- { 0x00009a10, 0x000001e1, 0x00000181 }, +- { 0x00009a14, 0x00000021, 0x000001c1 }, +- { 0x00009a18, 0x00000061, 0x00000001 }, +- { 0x00009a1c, 0x00000168, 0x00000041 }, +- { 0x00009a20, 0x000001a8, 0x000001a8 }, +- { 0x00009a24, 0x000001e8, 0x000001e8 }, +- { 0x00009a28, 0x00000028, 0x00000028 }, +- { 0x00009a2c, 0x00000068, 0x00000068 }, +- { 0x00009a30, 0x00000189, 0x000000a8 }, +- { 0x00009a34, 0x000001c9, 0x00000169 }, +- { 0x00009a38, 0x00000009, 0x000001a9 }, +- { 0x00009a3c, 0x00000049, 0x000001e9 }, +- { 0x00009a40, 0x00000089, 0x00000029 }, +- { 0x00009a44, 0x00000170, 0x00000069 }, +- { 0x00009a48, 0x000001b0, 0x00000190 }, +- { 0x00009a4c, 0x000001f0, 0x000001d0 }, +- { 0x00009a50, 0x00000030, 0x00000010 }, +- { 0x00009a54, 0x00000070, 0x00000050 }, +- { 0x00009a58, 0x00000191, 0x00000090 }, +- { 0x00009a5c, 0x000001d1, 0x00000151 }, +- { 0x00009a60, 0x00000011, 0x00000191 }, +- { 0x00009a64, 0x00000051, 0x000001d1 }, +- { 0x00009a68, 0x00000091, 0x00000011 }, +- { 0x00009a6c, 0x000001b8, 0x00000051 }, +- { 0x00009a70, 0x000001f8, 0x00000198 }, +- { 0x00009a74, 0x00000038, 0x000001d8 }, +- { 0x00009a78, 0x00000078, 0x00000018 }, +- { 0x00009a7c, 0x00000199, 0x00000058 }, +- { 0x00009a80, 0x000001d9, 0x00000098 }, +- { 0x00009a84, 0x00000019, 0x00000159 }, +- { 0x00009a88, 0x00000059, 0x00000199 }, +- { 0x00009a8c, 0x00000099, 0x000001d9 }, +- { 0x00009a90, 0x000000d9, 0x00000019 }, +- { 0x00009a94, 0x000000f9, 0x00000059 }, +- { 0x00009a98, 0x000000f9, 0x00000099 }, +- { 0x00009a9c, 0x000000f9, 0x000000d9 }, +- { 0x00009aa0, 0x000000f9, 0x000000f9 }, +- { 0x00009aa4, 0x000000f9, 0x000000f9 }, +- { 0x00009aa8, 0x000000f9, 0x000000f9 }, +- { 0x00009aac, 0x000000f9, 0x000000f9 }, +- { 0x00009ab0, 0x000000f9, 0x000000f9 }, +- { 0x00009ab4, 0x000000f9, 0x000000f9 }, +- { 0x00009ab8, 0x000000f9, 0x000000f9 }, +- { 0x00009abc, 0x000000f9, 0x000000f9 }, +- { 0x00009ac0, 0x000000f9, 0x000000f9 }, +- { 0x00009ac4, 0x000000f9, 0x000000f9 }, +- { 0x00009ac8, 0x000000f9, 0x000000f9 }, +- { 0x00009acc, 0x000000f9, 0x000000f9 }, +- { 0x00009ad0, 0x000000f9, 0x000000f9 }, +- { 0x00009ad4, 0x000000f9, 0x000000f9 }, +- { 0x00009ad8, 0x000000f9, 0x000000f9 }, +- { 0x00009adc, 0x000000f9, 0x000000f9 }, +- { 0x00009ae0, 0x000000f9, 0x000000f9 }, +- { 0x00009ae4, 0x000000f9, 0x000000f9 }, +- { 0x00009ae8, 0x000000f9, 0x000000f9 }, +- { 0x00009aec, 0x000000f9, 0x000000f9 }, +- { 0x00009af0, 0x000000f9, 0x000000f9 }, +- { 0x00009af4, 0x000000f9, 0x000000f9 }, +- { 0x00009af8, 0x000000f9, 0x000000f9 }, +- { 0x00009afc, 0x000000f9, 0x000000f9 }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x00009a00, 0x00000000, 0x00000000}, ++ {0x00009a04, 0x00000040, 0x00000040}, ++ {0x00009a08, 0x00000080, 0x00000080}, ++ {0x00009a0c, 0x000001a1, 0x00000141}, ++ {0x00009a10, 0x000001e1, 0x00000181}, ++ {0x00009a14, 0x00000021, 0x000001c1}, ++ {0x00009a18, 0x00000061, 0x00000001}, ++ {0x00009a1c, 0x00000168, 0x00000041}, ++ {0x00009a20, 0x000001a8, 0x000001a8}, ++ {0x00009a24, 0x000001e8, 0x000001e8}, ++ {0x00009a28, 0x00000028, 0x00000028}, ++ {0x00009a2c, 0x00000068, 0x00000068}, ++ {0x00009a30, 0x00000189, 0x000000a8}, ++ {0x00009a34, 0x000001c9, 0x00000169}, ++ {0x00009a38, 0x00000009, 0x000001a9}, ++ {0x00009a3c, 0x00000049, 0x000001e9}, ++ {0x00009a40, 0x00000089, 0x00000029}, ++ {0x00009a44, 0x00000170, 0x00000069}, ++ {0x00009a48, 0x000001b0, 0x00000190}, ++ {0x00009a4c, 0x000001f0, 0x000001d0}, ++ {0x00009a50, 0x00000030, 0x00000010}, ++ {0x00009a54, 0x00000070, 0x00000050}, ++ {0x00009a58, 0x00000191, 0x00000090}, ++ {0x00009a5c, 0x000001d1, 0x00000151}, ++ {0x00009a60, 0x00000011, 0x00000191}, ++ {0x00009a64, 0x00000051, 0x000001d1}, ++ {0x00009a68, 0x00000091, 0x00000011}, ++ {0x00009a6c, 0x000001b8, 0x00000051}, ++ {0x00009a70, 0x000001f8, 0x00000198}, ++ {0x00009a74, 0x00000038, 0x000001d8}, ++ {0x00009a78, 0x00000078, 0x00000018}, ++ {0x00009a7c, 0x00000199, 0x00000058}, ++ {0x00009a80, 0x000001d9, 0x00000098}, ++ {0x00009a84, 0x00000019, 0x00000159}, ++ {0x00009a88, 0x00000059, 0x00000199}, ++ {0x00009a8c, 0x00000099, 0x000001d9}, ++ {0x00009a90, 0x000000d9, 0x00000019}, ++ {0x00009a94, 0x000000f9, 0x00000059}, ++ {0x00009a98, 0x000000f9, 0x00000099}, ++ {0x00009a9c, 0x000000f9, 0x000000d9}, ++ {0x00009aa0, 0x000000f9, 0x000000f9}, ++ {0x00009aa4, 0x000000f9, 0x000000f9}, ++ {0x00009aa8, 0x000000f9, 0x000000f9}, ++ {0x00009aac, 0x000000f9, 0x000000f9}, ++ {0x00009ab0, 0x000000f9, 0x000000f9}, ++ {0x00009ab4, 0x000000f9, 0x000000f9}, ++ {0x00009ab8, 0x000000f9, 0x000000f9}, ++ {0x00009abc, 0x000000f9, 0x000000f9}, ++ {0x00009ac0, 0x000000f9, 0x000000f9}, ++ {0x00009ac4, 0x000000f9, 0x000000f9}, ++ {0x00009ac8, 0x000000f9, 0x000000f9}, ++ {0x00009acc, 0x000000f9, 0x000000f9}, ++ {0x00009ad0, 0x000000f9, 0x000000f9}, ++ {0x00009ad4, 0x000000f9, 0x000000f9}, ++ {0x00009ad8, 0x000000f9, 0x000000f9}, ++ {0x00009adc, 0x000000f9, 0x000000f9}, ++ {0x00009ae0, 0x000000f9, 0x000000f9}, ++ {0x00009ae4, 0x000000f9, 0x000000f9}, ++ {0x00009ae8, 0x000000f9, 0x000000f9}, ++ {0x00009aec, 0x000000f9, 0x000000f9}, ++ {0x00009af0, 0x000000f9, 0x000000f9}, ++ {0x00009af4, 0x000000f9, 0x000000f9}, ++ {0x00009af8, 0x000000f9, 0x000000f9}, ++ {0x00009afc, 0x000000f9, 0x000000f9}, + }; + + static const u32 ar5416Bank1[][2] = { +- { 0x000098b0, 0x02108421 }, +- { 0x000098ec, 0x00000008 }, ++ /* Addr allmodes */ ++ {0x000098b0, 0x02108421}, ++ {0x000098ec, 0x00000008}, + }; + + static const u32 ar5416Bank2[][2] = { +- { 0x000098b0, 0x0e73ff17 }, +- { 0x000098e0, 0x00000420 }, ++ /* Addr allmodes */ ++ {0x000098b0, 0x0e73ff17}, ++ {0x000098e0, 0x00000420}, + }; + + static const u32 ar5416Bank3[][3] = { +- { 0x000098f0, 0x01400018, 0x01c00018 }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x000098f0, 0x01400018, 0x01c00018}, + }; + + static const u32 ar5416Bank6[][3] = { +- +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00e00000, 0x00e00000 }, +- { 0x0000989c, 0x005e0000, 0x005e0000 }, +- { 0x0000989c, 0x00120000, 0x00120000 }, +- { 0x0000989c, 0x00620000, 0x00620000 }, +- { 0x0000989c, 0x00020000, 0x00020000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, +- { 0x0000989c, 0x005f0000, 0x005f0000 }, +- { 0x0000989c, 0x00870000, 0x00870000 }, +- { 0x0000989c, 0x00f90000, 0x00f90000 }, +- { 0x0000989c, 0x007b0000, 0x007b0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00f50000, 0x00f50000 }, +- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, +- { 0x0000989c, 0x00110000, 0x00110000 }, +- { 0x0000989c, 0x006100a8, 0x006100a8 }, +- { 0x0000989c, 0x004210a2, 0x004210a2 }, +- { 0x0000989c, 0x0014008f, 0x0014008f }, +- { 0x0000989c, 0x00c40003, 0x00c40003 }, +- { 0x0000989c, 0x003000f2, 0x003000f2 }, +- { 0x0000989c, 0x00440016, 0x00440016 }, +- { 0x0000989c, 0x00410040, 0x00410040 }, +- { 0x0000989c, 0x0001805e, 0x0001805e }, +- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, +- { 0x0000989c, 0x000000f1, 0x000000f1 }, +- { 0x0000989c, 0x00002081, 0x00002081 }, +- { 0x0000989c, 0x000000d4, 0x000000d4 }, +- { 0x000098d0, 0x0000000f, 0x0010000f }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00e00000, 0x00e00000}, ++ {0x0000989c, 0x005e0000, 0x005e0000}, ++ {0x0000989c, 0x00120000, 0x00120000}, ++ {0x0000989c, 0x00620000, 0x00620000}, ++ {0x0000989c, 0x00020000, 0x00020000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x40ff0000, 0x40ff0000}, ++ {0x0000989c, 0x005f0000, 0x005f0000}, ++ {0x0000989c, 0x00870000, 0x00870000}, ++ {0x0000989c, 0x00f90000, 0x00f90000}, ++ {0x0000989c, 0x007b0000, 0x007b0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00f50000, 0x00f50000}, ++ {0x0000989c, 0x00dc0000, 0x00dc0000}, ++ {0x0000989c, 0x00110000, 0x00110000}, ++ {0x0000989c, 0x006100a8, 0x006100a8}, ++ {0x0000989c, 0x004210a2, 0x004210a2}, ++ {0x0000989c, 0x0014008f, 0x0014008f}, ++ {0x0000989c, 0x00c40003, 0x00c40003}, ++ {0x0000989c, 0x003000f2, 0x003000f2}, ++ {0x0000989c, 0x00440016, 0x00440016}, ++ {0x0000989c, 0x00410040, 0x00410040}, ++ {0x0000989c, 0x0001805e, 0x0001805e}, ++ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, ++ {0x0000989c, 0x000000f1, 0x000000f1}, ++ {0x0000989c, 0x00002081, 0x00002081}, ++ {0x0000989c, 0x000000d4, 0x000000d4}, ++ {0x000098d0, 0x0000000f, 0x0010000f}, + }; + + static const u32 ar5416Bank6TPC[][3] = { +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00e00000, 0x00e00000 }, +- { 0x0000989c, 0x005e0000, 0x005e0000 }, +- { 0x0000989c, 0x00120000, 0x00120000 }, +- { 0x0000989c, 0x00620000, 0x00620000 }, +- { 0x0000989c, 0x00020000, 0x00020000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, +- { 0x0000989c, 0x005f0000, 0x005f0000 }, +- { 0x0000989c, 0x00870000, 0x00870000 }, +- { 0x0000989c, 0x00f90000, 0x00f90000 }, +- { 0x0000989c, 0x007b0000, 0x007b0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00f50000, 0x00f50000 }, +- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, +- { 0x0000989c, 0x00110000, 0x00110000 }, +- { 0x0000989c, 0x006100a8, 0x006100a8 }, +- { 0x0000989c, 0x00423022, 0x00423022 }, +- { 0x0000989c, 0x201400df, 0x201400df }, +- { 0x0000989c, 0x00c40002, 0x00c40002 }, +- { 0x0000989c, 0x003000f2, 0x003000f2 }, +- { 0x0000989c, 0x00440016, 0x00440016 }, +- { 0x0000989c, 0x00410040, 0x00410040 }, +- { 0x0000989c, 0x0001805e, 0x0001805e }, +- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, +- { 0x0000989c, 0x000000e1, 0x000000e1 }, +- { 0x0000989c, 0x00007081, 0x00007081 }, +- { 0x0000989c, 0x000000d4, 0x000000d4 }, +- { 0x000098d0, 0x0000000f, 0x0010000f }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00e00000, 0x00e00000}, ++ {0x0000989c, 0x005e0000, 0x005e0000}, ++ {0x0000989c, 0x00120000, 0x00120000}, ++ {0x0000989c, 0x00620000, 0x00620000}, ++ {0x0000989c, 0x00020000, 0x00020000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x40ff0000, 0x40ff0000}, ++ {0x0000989c, 0x005f0000, 0x005f0000}, ++ {0x0000989c, 0x00870000, 0x00870000}, ++ {0x0000989c, 0x00f90000, 0x00f90000}, ++ {0x0000989c, 0x007b0000, 0x007b0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00f50000, 0x00f50000}, ++ {0x0000989c, 0x00dc0000, 0x00dc0000}, ++ {0x0000989c, 0x00110000, 0x00110000}, ++ {0x0000989c, 0x006100a8, 0x006100a8}, ++ {0x0000989c, 0x00423022, 0x00423022}, ++ {0x0000989c, 0x201400df, 0x201400df}, ++ {0x0000989c, 0x00c40002, 0x00c40002}, ++ {0x0000989c, 0x003000f2, 0x003000f2}, ++ {0x0000989c, 0x00440016, 0x00440016}, ++ {0x0000989c, 0x00410040, 0x00410040}, ++ {0x0000989c, 0x0001805e, 0x0001805e}, ++ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, ++ {0x0000989c, 0x000000e1, 0x000000e1}, ++ {0x0000989c, 0x00007081, 0x00007081}, ++ {0x0000989c, 0x000000d4, 0x000000d4}, ++ {0x000098d0, 0x0000000f, 0x0010000f}, + }; + + static const u32 ar5416Bank7[][2] = { +- { 0x0000989c, 0x00000500 }, +- { 0x0000989c, 0x00000800 }, +- { 0x000098cc, 0x0000000e }, ++ /* Addr allmodes */ ++ {0x0000989c, 0x00000500}, ++ {0x0000989c, 0x00000800}, ++ {0x000098cc, 0x0000000e}, + }; + + static const u32 ar5416Addac[][2] = { +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000003 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x0000000c }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000030 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000060 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000058 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x000098cc, 0x00000000 }, +-}; +- +-static const u32 ar5416Modes_9100[][6] = { +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, +- { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x00009850, 0x6d48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6d48b0e2, 0x6d48b0e2 }, +- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec86d2e, 0x7ec84d2e, 0x7ec82d2e }, +- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e }, +- { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, +- { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0 }, +- { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, +- { 0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a11, 0xd00a8a0d, 0xd00a8a0d }, +- { 0x00009940, 0x00754604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204 }, +- { 0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020 }, +- { 0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e }, +- { 0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff }, +-#ifdef TB243 +- { 0x00009960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 }, +- { 0x0000a960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 }, +- { 0x0000b960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 }, +- { 0x00009964, 0x00000000, 0x00000000, 0x00002210, 0x00002210, 0x00001120 }, +-#else +- { 0x00009960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 }, +- { 0x0000a960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 }, +- { 0x0000b960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 }, +- { 0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120 }, +-#endif +- { 0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00 }, +- { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, +- { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, +- { 0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, +- { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, +- { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, +- { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, +- { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, +- { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, +- { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, +- { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, +- { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, +- { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, +- { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, +- { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000003}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x0000000c}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000030}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000060}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000058}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x000098cc, 0x00000000}, + }; + +-#endif /* INITVALS_AR5008_H */ +--- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h +@@ -1,1254 +1,1354 @@ ++/* ++ * Copyright (c) 2010 Atheros Communications Inc. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++static const u32 ar5416Modes_9100[][6] = { ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0}, ++ {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x00009850, 0x6d48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6d48b0e2, 0x6d48b0e2}, ++ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec86d2e, 0x7ec84d2e, 0x7ec82d2e}, ++ {0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e}, ++ {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, ++ {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, ++ {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, ++ {0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a11, 0xd00a8a0d, 0xd00a8a0d}, ++ {0x00009940, 0x00754604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204}, ++ {0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020}, ++ {0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e}, ++ {0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff}, ++ {0x00009960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0}, ++ {0x0000a960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0}, ++ {0x0000b960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0}, ++ {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120}, ++ {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00}, ++ {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880}, ++ {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788}, ++ {0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa}, ++ {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000}, ++ {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402}, ++ {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06}, ++ {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b}, ++ {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b}, ++ {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a}, ++ {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf}, ++ {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f}, ++ {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f}, ++ {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f}, ++ {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++}; + + static const u32 ar5416Common_9100[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020015 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00020010, 0x00000003 }, +- { 0x00020038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x40000000 }, +- { 0x00008054, 0x00004000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x000080c0, 0x2a82301a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008120, 0x08f04800 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0x00000000 }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c4, 0x00000000 }, +- { 0x000081d0, 0x00003210 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x00008300, 0x00000000 }, +- { 0x00008304, 0x00000000 }, +- { 0x00008308, 0x00000000 }, +- { 0x0000830c, 0x00000000 }, +- { 0x00008310, 0x00000000 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008318, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000007 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00000000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x000107ff }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xad848e19 }, +- { 0x00009810, 0x7d14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x00009840, 0x206a01ae }, +- { 0x0000984c, 0x1284233c }, +- { 0x00009854, 0x00000859 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x05100000 }, +- { 0x0000a920, 0x05100000 }, +- { 0x0000b920, 0x05100000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009948, 0x9280b212 }, +- { 0x0000994c, 0x00020028 }, +- { 0x0000c95c, 0x004b6a8e }, +- { 0x0000c968, 0x000003ce }, +- { 0x00009970, 0x190fb515 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x006f0000 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000200 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099fc, 0x00001042 }, +- { 0x00009b00, 0x00000000 }, +- { 0x00009b04, 0x00000001 }, +- { 0x00009b08, 0x00000002 }, +- { 0x00009b0c, 0x00000003 }, +- { 0x00009b10, 0x00000004 }, +- { 0x00009b14, 0x00000005 }, +- { 0x00009b18, 0x00000008 }, +- { 0x00009b1c, 0x00000009 }, +- { 0x00009b20, 0x0000000a }, +- { 0x00009b24, 0x0000000b }, +- { 0x00009b28, 0x0000000c }, +- { 0x00009b2c, 0x0000000d }, +- { 0x00009b30, 0x00000010 }, +- { 0x00009b34, 0x00000011 }, +- { 0x00009b38, 0x00000012 }, +- { 0x00009b3c, 0x00000013 }, +- { 0x00009b40, 0x00000014 }, +- { 0x00009b44, 0x00000015 }, +- { 0x00009b48, 0x00000018 }, +- { 0x00009b4c, 0x00000019 }, +- { 0x00009b50, 0x0000001a }, +- { 0x00009b54, 0x0000001b }, +- { 0x00009b58, 0x0000001c }, +- { 0x00009b5c, 0x0000001d }, +- { 0x00009b60, 0x00000020 }, +- { 0x00009b64, 0x00000021 }, +- { 0x00009b68, 0x00000022 }, +- { 0x00009b6c, 0x00000023 }, +- { 0x00009b70, 0x00000024 }, +- { 0x00009b74, 0x00000025 }, +- { 0x00009b78, 0x00000028 }, +- { 0x00009b7c, 0x00000029 }, +- { 0x00009b80, 0x0000002a }, +- { 0x00009b84, 0x0000002b }, +- { 0x00009b88, 0x0000002c }, +- { 0x00009b8c, 0x0000002d }, +- { 0x00009b90, 0x00000030 }, +- { 0x00009b94, 0x00000031 }, +- { 0x00009b98, 0x00000032 }, +- { 0x00009b9c, 0x00000033 }, +- { 0x00009ba0, 0x00000034 }, +- { 0x00009ba4, 0x00000035 }, +- { 0x00009ba8, 0x00000035 }, +- { 0x00009bac, 0x00000035 }, +- { 0x00009bb0, 0x00000035 }, +- { 0x00009bb4, 0x00000035 }, +- { 0x00009bb8, 0x00000035 }, +- { 0x00009bbc, 0x00000035 }, +- { 0x00009bc0, 0x00000035 }, +- { 0x00009bc4, 0x00000035 }, +- { 0x00009bc8, 0x00000035 }, +- { 0x00009bcc, 0x00000035 }, +- { 0x00009bd0, 0x00000035 }, +- { 0x00009bd4, 0x00000035 }, +- { 0x00009bd8, 0x00000035 }, +- { 0x00009bdc, 0x00000035 }, +- { 0x00009be0, 0x00000035 }, +- { 0x00009be4, 0x00000035 }, +- { 0x00009be8, 0x00000035 }, +- { 0x00009bec, 0x00000035 }, +- { 0x00009bf0, 0x00000035 }, +- { 0x00009bf4, 0x00000035 }, +- { 0x00009bf8, 0x00000010 }, +- { 0x00009bfc, 0x0000001a }, +- { 0x0000a210, 0x40806333 }, +- { 0x0000a214, 0x00106c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x018830c6 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x001a0bb5 }, +- { 0x0000a22c, 0x00000000 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a23c, 0x13c889ae }, +- { 0x0000a240, 0x38490a20 }, +- { 0x0000a244, 0x00007bb6 }, +- { 0x0000a248, 0x0fff3ffc }, +- { 0x0000a24c, 0x00000001 }, +- { 0x0000a250, 0x0000a000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0cc75380 }, +- { 0x0000a25c, 0x0f0f0f01 }, +- { 0x0000a260, 0xdfa91f01 }, +- { 0x0000a268, 0x00000001 }, +- { 0x0000a26c, 0x0ebae9c6 }, +- { 0x0000b26c, 0x0ebae9c6 }, +- { 0x0000c26c, 0x0ebae9c6 }, +- { 0x0000d270, 0x00820820 }, +- { 0x0000a278, 0x1ce739ce }, +- { 0x0000a27c, 0x050701ce }, +- { 0x0000a338, 0x00000000 }, +- { 0x0000a33c, 0x00000000 }, +- { 0x0000a340, 0x00000000 }, +- { 0x0000a344, 0x00000000 }, +- { 0x0000a348, 0x3fffffff }, +- { 0x0000a34c, 0x3fffffff }, +- { 0x0000a350, 0x3fffffff }, +- { 0x0000a354, 0x0003ffff }, +- { 0x0000a358, 0x79a8aa33 }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x1ce739ce }, +- { 0x0000a398, 0x000001ce }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3c8, 0x00000246 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x1ce739ce }, +- { 0x0000a3e0, 0x000001ce }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020015}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00020010, 0x00000003}, ++ {0x00020038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x40000000}, ++ {0x00008054, 0x00004000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x000080c0, 0x2a82301a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008120, 0x08f04800}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0x00000000}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c4, 0x00000000}, ++ {0x000081d0, 0x00003210}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x00008300, 0x00000000}, ++ {0x00008304, 0x00000000}, ++ {0x00008308, 0x00000000}, ++ {0x0000830c, 0x00000000}, ++ {0x00008310, 0x00000000}, ++ {0x00008314, 0x00000000}, ++ {0x00008318, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000007}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00000000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x000107ff}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xad848e19}, ++ {0x00009810, 0x7d14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x00009840, 0x206a01ae}, ++ {0x0000984c, 0x1284233c}, ++ {0x00009854, 0x00000859}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x05100000}, ++ {0x0000a920, 0x05100000}, ++ {0x0000b920, 0x05100000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009948, 0x9280b212}, ++ {0x0000994c, 0x00020028}, ++ {0x0000c95c, 0x004b6a8e}, ++ {0x0000c968, 0x000003ce}, ++ {0x00009970, 0x190fb515}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x006f0000}, ++ {0x000099b0, 0x03051000}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000200}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099fc, 0x00001042}, ++ {0x00009b00, 0x00000000}, ++ {0x00009b04, 0x00000001}, ++ {0x00009b08, 0x00000002}, ++ {0x00009b0c, 0x00000003}, ++ {0x00009b10, 0x00000004}, ++ {0x00009b14, 0x00000005}, ++ {0x00009b18, 0x00000008}, ++ {0x00009b1c, 0x00000009}, ++ {0x00009b20, 0x0000000a}, ++ {0x00009b24, 0x0000000b}, ++ {0x00009b28, 0x0000000c}, ++ {0x00009b2c, 0x0000000d}, ++ {0x00009b30, 0x00000010}, ++ {0x00009b34, 0x00000011}, ++ {0x00009b38, 0x00000012}, ++ {0x00009b3c, 0x00000013}, ++ {0x00009b40, 0x00000014}, ++ {0x00009b44, 0x00000015}, ++ {0x00009b48, 0x00000018}, ++ {0x00009b4c, 0x00000019}, ++ {0x00009b50, 0x0000001a}, ++ {0x00009b54, 0x0000001b}, ++ {0x00009b58, 0x0000001c}, ++ {0x00009b5c, 0x0000001d}, ++ {0x00009b60, 0x00000020}, ++ {0x00009b64, 0x00000021}, ++ {0x00009b68, 0x00000022}, ++ {0x00009b6c, 0x00000023}, ++ {0x00009b70, 0x00000024}, ++ {0x00009b74, 0x00000025}, ++ {0x00009b78, 0x00000028}, ++ {0x00009b7c, 0x00000029}, ++ {0x00009b80, 0x0000002a}, ++ {0x00009b84, 0x0000002b}, ++ {0x00009b88, 0x0000002c}, ++ {0x00009b8c, 0x0000002d}, ++ {0x00009b90, 0x00000030}, ++ {0x00009b94, 0x00000031}, ++ {0x00009b98, 0x00000032}, ++ {0x00009b9c, 0x00000033}, ++ {0x00009ba0, 0x00000034}, ++ {0x00009ba4, 0x00000035}, ++ {0x00009ba8, 0x00000035}, ++ {0x00009bac, 0x00000035}, ++ {0x00009bb0, 0x00000035}, ++ {0x00009bb4, 0x00000035}, ++ {0x00009bb8, 0x00000035}, ++ {0x00009bbc, 0x00000035}, ++ {0x00009bc0, 0x00000035}, ++ {0x00009bc4, 0x00000035}, ++ {0x00009bc8, 0x00000035}, ++ {0x00009bcc, 0x00000035}, ++ {0x00009bd0, 0x00000035}, ++ {0x00009bd4, 0x00000035}, ++ {0x00009bd8, 0x00000035}, ++ {0x00009bdc, 0x00000035}, ++ {0x00009be0, 0x00000035}, ++ {0x00009be4, 0x00000035}, ++ {0x00009be8, 0x00000035}, ++ {0x00009bec, 0x00000035}, ++ {0x00009bf0, 0x00000035}, ++ {0x00009bf4, 0x00000035}, ++ {0x00009bf8, 0x00000010}, ++ {0x00009bfc, 0x0000001a}, ++ {0x0000a210, 0x40806333}, ++ {0x0000a214, 0x00106c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x018830c6}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x001a0bb5}, ++ {0x0000a22c, 0x00000000}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a23c, 0x13c889ae}, ++ {0x0000a240, 0x38490a20}, ++ {0x0000a244, 0x00007bb6}, ++ {0x0000a248, 0x0fff3ffc}, ++ {0x0000a24c, 0x00000001}, ++ {0x0000a250, 0x0000a000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0cc75380}, ++ {0x0000a25c, 0x0f0f0f01}, ++ {0x0000a260, 0xdfa91f01}, ++ {0x0000a268, 0x00000001}, ++ {0x0000a26c, 0x0ebae9c6}, ++ {0x0000b26c, 0x0ebae9c6}, ++ {0x0000c26c, 0x0ebae9c6}, ++ {0x0000d270, 0x00820820}, ++ {0x0000a278, 0x1ce739ce}, ++ {0x0000a27c, 0x050701ce}, ++ {0x0000a338, 0x00000000}, ++ {0x0000a33c, 0x00000000}, ++ {0x0000a340, 0x00000000}, ++ {0x0000a344, 0x00000000}, ++ {0x0000a348, 0x3fffffff}, ++ {0x0000a34c, 0x3fffffff}, ++ {0x0000a350, 0x3fffffff}, ++ {0x0000a354, 0x0003ffff}, ++ {0x0000a358, 0x79a8aa33}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x1ce739ce}, ++ {0x0000a398, 0x000001ce}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3c8, 0x00000246}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x1ce739ce}, ++ {0x0000a3e0, 0x000001ce}, + }; + + static const u32 ar5416Bank0_9100[][2] = { +- { 0x000098b0, 0x1e5795e5 }, +- { 0x000098e0, 0x02008020 }, ++ /* Addr allmodes */ ++ {0x000098b0, 0x1e5795e5}, ++ {0x000098e0, 0x02008020}, + }; + + static const u32 ar5416BB_RfGain_9100[][3] = { +- { 0x00009a00, 0x00000000, 0x00000000 }, +- { 0x00009a04, 0x00000040, 0x00000040 }, +- { 0x00009a08, 0x00000080, 0x00000080 }, +- { 0x00009a0c, 0x000001a1, 0x00000141 }, +- { 0x00009a10, 0x000001e1, 0x00000181 }, +- { 0x00009a14, 0x00000021, 0x000001c1 }, +- { 0x00009a18, 0x00000061, 0x00000001 }, +- { 0x00009a1c, 0x00000168, 0x00000041 }, +- { 0x00009a20, 0x000001a8, 0x000001a8 }, +- { 0x00009a24, 0x000001e8, 0x000001e8 }, +- { 0x00009a28, 0x00000028, 0x00000028 }, +- { 0x00009a2c, 0x00000068, 0x00000068 }, +- { 0x00009a30, 0x00000189, 0x000000a8 }, +- { 0x00009a34, 0x000001c9, 0x00000169 }, +- { 0x00009a38, 0x00000009, 0x000001a9 }, +- { 0x00009a3c, 0x00000049, 0x000001e9 }, +- { 0x00009a40, 0x00000089, 0x00000029 }, +- { 0x00009a44, 0x00000170, 0x00000069 }, +- { 0x00009a48, 0x000001b0, 0x00000190 }, +- { 0x00009a4c, 0x000001f0, 0x000001d0 }, +- { 0x00009a50, 0x00000030, 0x00000010 }, +- { 0x00009a54, 0x00000070, 0x00000050 }, +- { 0x00009a58, 0x00000191, 0x00000090 }, +- { 0x00009a5c, 0x000001d1, 0x00000151 }, +- { 0x00009a60, 0x00000011, 0x00000191 }, +- { 0x00009a64, 0x00000051, 0x000001d1 }, +- { 0x00009a68, 0x00000091, 0x00000011 }, +- { 0x00009a6c, 0x000001b8, 0x00000051 }, +- { 0x00009a70, 0x000001f8, 0x00000198 }, +- { 0x00009a74, 0x00000038, 0x000001d8 }, +- { 0x00009a78, 0x00000078, 0x00000018 }, +- { 0x00009a7c, 0x00000199, 0x00000058 }, +- { 0x00009a80, 0x000001d9, 0x00000098 }, +- { 0x00009a84, 0x00000019, 0x00000159 }, +- { 0x00009a88, 0x00000059, 0x00000199 }, +- { 0x00009a8c, 0x00000099, 0x000001d9 }, +- { 0x00009a90, 0x000000d9, 0x00000019 }, +- { 0x00009a94, 0x000000f9, 0x00000059 }, +- { 0x00009a98, 0x000000f9, 0x00000099 }, +- { 0x00009a9c, 0x000000f9, 0x000000d9 }, +- { 0x00009aa0, 0x000000f9, 0x000000f9 }, +- { 0x00009aa4, 0x000000f9, 0x000000f9 }, +- { 0x00009aa8, 0x000000f9, 0x000000f9 }, +- { 0x00009aac, 0x000000f9, 0x000000f9 }, +- { 0x00009ab0, 0x000000f9, 0x000000f9 }, +- { 0x00009ab4, 0x000000f9, 0x000000f9 }, +- { 0x00009ab8, 0x000000f9, 0x000000f9 }, +- { 0x00009abc, 0x000000f9, 0x000000f9 }, +- { 0x00009ac0, 0x000000f9, 0x000000f9 }, +- { 0x00009ac4, 0x000000f9, 0x000000f9 }, +- { 0x00009ac8, 0x000000f9, 0x000000f9 }, +- { 0x00009acc, 0x000000f9, 0x000000f9 }, +- { 0x00009ad0, 0x000000f9, 0x000000f9 }, +- { 0x00009ad4, 0x000000f9, 0x000000f9 }, +- { 0x00009ad8, 0x000000f9, 0x000000f9 }, +- { 0x00009adc, 0x000000f9, 0x000000f9 }, +- { 0x00009ae0, 0x000000f9, 0x000000f9 }, +- { 0x00009ae4, 0x000000f9, 0x000000f9 }, +- { 0x00009ae8, 0x000000f9, 0x000000f9 }, +- { 0x00009aec, 0x000000f9, 0x000000f9 }, +- { 0x00009af0, 0x000000f9, 0x000000f9 }, +- { 0x00009af4, 0x000000f9, 0x000000f9 }, +- { 0x00009af8, 0x000000f9, 0x000000f9 }, +- { 0x00009afc, 0x000000f9, 0x000000f9 }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x00009a00, 0x00000000, 0x00000000}, ++ {0x00009a04, 0x00000040, 0x00000040}, ++ {0x00009a08, 0x00000080, 0x00000080}, ++ {0x00009a0c, 0x000001a1, 0x00000141}, ++ {0x00009a10, 0x000001e1, 0x00000181}, ++ {0x00009a14, 0x00000021, 0x000001c1}, ++ {0x00009a18, 0x00000061, 0x00000001}, ++ {0x00009a1c, 0x00000168, 0x00000041}, ++ {0x00009a20, 0x000001a8, 0x000001a8}, ++ {0x00009a24, 0x000001e8, 0x000001e8}, ++ {0x00009a28, 0x00000028, 0x00000028}, ++ {0x00009a2c, 0x00000068, 0x00000068}, ++ {0x00009a30, 0x00000189, 0x000000a8}, ++ {0x00009a34, 0x000001c9, 0x00000169}, ++ {0x00009a38, 0x00000009, 0x000001a9}, ++ {0x00009a3c, 0x00000049, 0x000001e9}, ++ {0x00009a40, 0x00000089, 0x00000029}, ++ {0x00009a44, 0x00000170, 0x00000069}, ++ {0x00009a48, 0x000001b0, 0x00000190}, ++ {0x00009a4c, 0x000001f0, 0x000001d0}, ++ {0x00009a50, 0x00000030, 0x00000010}, ++ {0x00009a54, 0x00000070, 0x00000050}, ++ {0x00009a58, 0x00000191, 0x00000090}, ++ {0x00009a5c, 0x000001d1, 0x00000151}, ++ {0x00009a60, 0x00000011, 0x00000191}, ++ {0x00009a64, 0x00000051, 0x000001d1}, ++ {0x00009a68, 0x00000091, 0x00000011}, ++ {0x00009a6c, 0x000001b8, 0x00000051}, ++ {0x00009a70, 0x000001f8, 0x00000198}, ++ {0x00009a74, 0x00000038, 0x000001d8}, ++ {0x00009a78, 0x00000078, 0x00000018}, ++ {0x00009a7c, 0x00000199, 0x00000058}, ++ {0x00009a80, 0x000001d9, 0x00000098}, ++ {0x00009a84, 0x00000019, 0x00000159}, ++ {0x00009a88, 0x00000059, 0x00000199}, ++ {0x00009a8c, 0x00000099, 0x000001d9}, ++ {0x00009a90, 0x000000d9, 0x00000019}, ++ {0x00009a94, 0x000000f9, 0x00000059}, ++ {0x00009a98, 0x000000f9, 0x00000099}, ++ {0x00009a9c, 0x000000f9, 0x000000d9}, ++ {0x00009aa0, 0x000000f9, 0x000000f9}, ++ {0x00009aa4, 0x000000f9, 0x000000f9}, ++ {0x00009aa8, 0x000000f9, 0x000000f9}, ++ {0x00009aac, 0x000000f9, 0x000000f9}, ++ {0x00009ab0, 0x000000f9, 0x000000f9}, ++ {0x00009ab4, 0x000000f9, 0x000000f9}, ++ {0x00009ab8, 0x000000f9, 0x000000f9}, ++ {0x00009abc, 0x000000f9, 0x000000f9}, ++ {0x00009ac0, 0x000000f9, 0x000000f9}, ++ {0x00009ac4, 0x000000f9, 0x000000f9}, ++ {0x00009ac8, 0x000000f9, 0x000000f9}, ++ {0x00009acc, 0x000000f9, 0x000000f9}, ++ {0x00009ad0, 0x000000f9, 0x000000f9}, ++ {0x00009ad4, 0x000000f9, 0x000000f9}, ++ {0x00009ad8, 0x000000f9, 0x000000f9}, ++ {0x00009adc, 0x000000f9, 0x000000f9}, ++ {0x00009ae0, 0x000000f9, 0x000000f9}, ++ {0x00009ae4, 0x000000f9, 0x000000f9}, ++ {0x00009ae8, 0x000000f9, 0x000000f9}, ++ {0x00009aec, 0x000000f9, 0x000000f9}, ++ {0x00009af0, 0x000000f9, 0x000000f9}, ++ {0x00009af4, 0x000000f9, 0x000000f9}, ++ {0x00009af8, 0x000000f9, 0x000000f9}, ++ {0x00009afc, 0x000000f9, 0x000000f9}, + }; + + static const u32 ar5416Bank1_9100[][2] = { +- { 0x000098b0, 0x02108421}, +- { 0x000098ec, 0x00000008}, ++ /* Addr allmodes */ ++ {0x000098b0, 0x02108421}, ++ {0x000098ec, 0x00000008}, + }; + + static const u32 ar5416Bank2_9100[][2] = { +- { 0x000098b0, 0x0e73ff17}, +- { 0x000098e0, 0x00000420}, ++ /* Addr allmodes */ ++ {0x000098b0, 0x0e73ff17}, ++ {0x000098e0, 0x00000420}, + }; + + static const u32 ar5416Bank3_9100[][3] = { +- { 0x000098f0, 0x01400018, 0x01c00018 }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x000098f0, 0x01400018, 0x01c00018}, + }; + + static const u32 ar5416Bank6_9100[][3] = { +- +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00e00000, 0x00e00000 }, +- { 0x0000989c, 0x005e0000, 0x005e0000 }, +- { 0x0000989c, 0x00120000, 0x00120000 }, +- { 0x0000989c, 0x00620000, 0x00620000 }, +- { 0x0000989c, 0x00020000, 0x00020000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x005f0000, 0x005f0000 }, +- { 0x0000989c, 0x00870000, 0x00870000 }, +- { 0x0000989c, 0x00f90000, 0x00f90000 }, +- { 0x0000989c, 0x007b0000, 0x007b0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00f50000, 0x00f50000 }, +- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, +- { 0x0000989c, 0x00110000, 0x00110000 }, +- { 0x0000989c, 0x006100a8, 0x006100a8 }, +- { 0x0000989c, 0x004210a2, 0x004210a2 }, +- { 0x0000989c, 0x0014000f, 0x0014000f }, +- { 0x0000989c, 0x00c40002, 0x00c40002 }, +- { 0x0000989c, 0x003000f2, 0x003000f2 }, +- { 0x0000989c, 0x00440016, 0x00440016 }, +- { 0x0000989c, 0x00410040, 0x00410040 }, +- { 0x0000989c, 0x000180d6, 0x000180d6 }, +- { 0x0000989c, 0x0000c0aa, 0x0000c0aa }, +- { 0x0000989c, 0x000000b1, 0x000000b1 }, +- { 0x0000989c, 0x00002000, 0x00002000 }, +- { 0x0000989c, 0x000000d4, 0x000000d4 }, +- { 0x000098d0, 0x0000000f, 0x0010000f }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00e00000, 0x00e00000}, ++ {0x0000989c, 0x005e0000, 0x005e0000}, ++ {0x0000989c, 0x00120000, 0x00120000}, ++ {0x0000989c, 0x00620000, 0x00620000}, ++ {0x0000989c, 0x00020000, 0x00020000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x005f0000, 0x005f0000}, ++ {0x0000989c, 0x00870000, 0x00870000}, ++ {0x0000989c, 0x00f90000, 0x00f90000}, ++ {0x0000989c, 0x007b0000, 0x007b0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00f50000, 0x00f50000}, ++ {0x0000989c, 0x00dc0000, 0x00dc0000}, ++ {0x0000989c, 0x00110000, 0x00110000}, ++ {0x0000989c, 0x006100a8, 0x006100a8}, ++ {0x0000989c, 0x004210a2, 0x004210a2}, ++ {0x0000989c, 0x0014000f, 0x0014000f}, ++ {0x0000989c, 0x00c40002, 0x00c40002}, ++ {0x0000989c, 0x003000f2, 0x003000f2}, ++ {0x0000989c, 0x00440016, 0x00440016}, ++ {0x0000989c, 0x00410040, 0x00410040}, ++ {0x0000989c, 0x000180d6, 0x000180d6}, ++ {0x0000989c, 0x0000c0aa, 0x0000c0aa}, ++ {0x0000989c, 0x000000b1, 0x000000b1}, ++ {0x0000989c, 0x00002000, 0x00002000}, ++ {0x0000989c, 0x000000d4, 0x000000d4}, ++ {0x000098d0, 0x0000000f, 0x0010000f}, + }; + +- + static const u32 ar5416Bank6TPC_9100[][3] = { +- +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00e00000, 0x00e00000 }, +- { 0x0000989c, 0x005e0000, 0x005e0000 }, +- { 0x0000989c, 0x00120000, 0x00120000 }, +- { 0x0000989c, 0x00620000, 0x00620000 }, +- { 0x0000989c, 0x00020000, 0x00020000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, +- { 0x0000989c, 0x005f0000, 0x005f0000 }, +- { 0x0000989c, 0x00870000, 0x00870000 }, +- { 0x0000989c, 0x00f90000, 0x00f90000 }, +- { 0x0000989c, 0x007b0000, 0x007b0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00f50000, 0x00f50000 }, +- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, +- { 0x0000989c, 0x00110000, 0x00110000 }, +- { 0x0000989c, 0x006100a8, 0x006100a8 }, +- { 0x0000989c, 0x00423022, 0x00423022 }, +- { 0x0000989c, 0x2014008f, 0x2014008f }, +- { 0x0000989c, 0x00c40002, 0x00c40002 }, +- { 0x0000989c, 0x003000f2, 0x003000f2 }, +- { 0x0000989c, 0x00440016, 0x00440016 }, +- { 0x0000989c, 0x00410040, 0x00410040 }, +- { 0x0000989c, 0x0001805e, 0x0001805e }, +- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, +- { 0x0000989c, 0x000000e1, 0x000000e1 }, +- { 0x0000989c, 0x00007080, 0x00007080 }, +- { 0x0000989c, 0x000000d4, 0x000000d4 }, +- { 0x000098d0, 0x0000000f, 0x0010000f }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00e00000, 0x00e00000}, ++ {0x0000989c, 0x005e0000, 0x005e0000}, ++ {0x0000989c, 0x00120000, 0x00120000}, ++ {0x0000989c, 0x00620000, 0x00620000}, ++ {0x0000989c, 0x00020000, 0x00020000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x40ff0000, 0x40ff0000}, ++ {0x0000989c, 0x005f0000, 0x005f0000}, ++ {0x0000989c, 0x00870000, 0x00870000}, ++ {0x0000989c, 0x00f90000, 0x00f90000}, ++ {0x0000989c, 0x007b0000, 0x007b0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00f50000, 0x00f50000}, ++ {0x0000989c, 0x00dc0000, 0x00dc0000}, ++ {0x0000989c, 0x00110000, 0x00110000}, ++ {0x0000989c, 0x006100a8, 0x006100a8}, ++ {0x0000989c, 0x00423022, 0x00423022}, ++ {0x0000989c, 0x2014008f, 0x2014008f}, ++ {0x0000989c, 0x00c40002, 0x00c40002}, ++ {0x0000989c, 0x003000f2, 0x003000f2}, ++ {0x0000989c, 0x00440016, 0x00440016}, ++ {0x0000989c, 0x00410040, 0x00410040}, ++ {0x0000989c, 0x0001805e, 0x0001805e}, ++ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, ++ {0x0000989c, 0x000000e1, 0x000000e1}, ++ {0x0000989c, 0x00007080, 0x00007080}, ++ {0x0000989c, 0x000000d4, 0x000000d4}, ++ {0x000098d0, 0x0000000f, 0x0010000f}, + }; + + static const u32 ar5416Bank7_9100[][2] = { +- { 0x0000989c, 0x00000500 }, +- { 0x0000989c, 0x00000800 }, +- { 0x000098cc, 0x0000000e }, ++ /* Addr allmodes */ ++ {0x0000989c, 0x00000500}, ++ {0x0000989c, 0x00000800}, ++ {0x000098cc, 0x0000000e}, + }; + + static const u32 ar5416Addac_9100[][2] = { +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000010 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x000000c0 }, +- {0x0000989c, 0x00000015 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x000098cc, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000010}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x000000c0}, ++ {0x0000989c, 0x00000015}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x000098cc, 0x00000000}, + }; + + static const u32 ar5416Modes_9160[][6] = { +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, +- { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, +- { 0x00009850, 0x6c48b4e2, 0x6c48b4e2, 0x6c48b0e2, 0x6c48b0e2, 0x6c48b0e2 }, +- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, +- { 0x0000985c, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e }, +- { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, +- { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0 }, +- { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, +- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, +- { 0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020 }, +- { 0x00009960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, +- { 0x0000a960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, +- { 0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, +- { 0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120 }, +- { 0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce }, +- { 0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00 }, +- { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, +- { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, +- { 0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, +- { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, +- { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, +- { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, +- { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, +- { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, +- { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, +- { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, +- { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, +- { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, +- { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, +- { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0}, ++ {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, ++ {0x00009850, 0x6c48b4e2, 0x6c48b4e2, 0x6c48b0e2, 0x6c48b0e2, 0x6c48b0e2}, ++ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, ++ {0x0000985c, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e}, ++ {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, ++ {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, ++ {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, ++ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, ++ {0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020}, ++ {0x00009960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, ++ {0x0000a960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, ++ {0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, ++ {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120}, ++ {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce}, ++ {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00}, ++ {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880}, ++ {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788}, ++ {0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa}, ++ {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000}, ++ {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402}, ++ {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06}, ++ {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b}, ++ {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b}, ++ {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a}, ++ {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf}, ++ {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f}, ++ {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f}, ++ {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f}, ++ {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + }; + + static const u32 ar5416Common_9160[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020015 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00007010, 0x00000020 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x40000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x000080c0, 0x2a82301a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008120, 0x08f04800 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0xffffffff }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c4, 0x00000000 }, +- { 0x000081d0, 0x00003210 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x00008300, 0x00000000 }, +- { 0x00008304, 0x00000000 }, +- { 0x00008308, 0x00000000 }, +- { 0x0000830c, 0x00000000 }, +- { 0x00008310, 0x00000000 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008318, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000007 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00ff0000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x000107ff }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xad848e19 }, +- { 0x00009810, 0x7d14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x00009840, 0x206a01ae }, +- { 0x0000984c, 0x1284233c }, +- { 0x00009854, 0x00000859 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x05100000 }, +- { 0x0000a920, 0x05100000 }, +- { 0x0000b920, 0x05100000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009948, 0x9280b212 }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5f3ca3de }, +- { 0x00009958, 0x2108ecff }, +- { 0x00009940, 0x00750604 }, +- { 0x0000c95c, 0x004b6a8e }, +- { 0x00009970, 0x190fb515 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x006f0000 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000200 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099fc, 0x00001042 }, +- { 0x00009b00, 0x00000000 }, +- { 0x00009b04, 0x00000001 }, +- { 0x00009b08, 0x00000002 }, +- { 0x00009b0c, 0x00000003 }, +- { 0x00009b10, 0x00000004 }, +- { 0x00009b14, 0x00000005 }, +- { 0x00009b18, 0x00000008 }, +- { 0x00009b1c, 0x00000009 }, +- { 0x00009b20, 0x0000000a }, +- { 0x00009b24, 0x0000000b }, +- { 0x00009b28, 0x0000000c }, +- { 0x00009b2c, 0x0000000d }, +- { 0x00009b30, 0x00000010 }, +- { 0x00009b34, 0x00000011 }, +- { 0x00009b38, 0x00000012 }, +- { 0x00009b3c, 0x00000013 }, +- { 0x00009b40, 0x00000014 }, +- { 0x00009b44, 0x00000015 }, +- { 0x00009b48, 0x00000018 }, +- { 0x00009b4c, 0x00000019 }, +- { 0x00009b50, 0x0000001a }, +- { 0x00009b54, 0x0000001b }, +- { 0x00009b58, 0x0000001c }, +- { 0x00009b5c, 0x0000001d }, +- { 0x00009b60, 0x00000020 }, +- { 0x00009b64, 0x00000021 }, +- { 0x00009b68, 0x00000022 }, +- { 0x00009b6c, 0x00000023 }, +- { 0x00009b70, 0x00000024 }, +- { 0x00009b74, 0x00000025 }, +- { 0x00009b78, 0x00000028 }, +- { 0x00009b7c, 0x00000029 }, +- { 0x00009b80, 0x0000002a }, +- { 0x00009b84, 0x0000002b }, +- { 0x00009b88, 0x0000002c }, +- { 0x00009b8c, 0x0000002d }, +- { 0x00009b90, 0x00000030 }, +- { 0x00009b94, 0x00000031 }, +- { 0x00009b98, 0x00000032 }, +- { 0x00009b9c, 0x00000033 }, +- { 0x00009ba0, 0x00000034 }, +- { 0x00009ba4, 0x00000035 }, +- { 0x00009ba8, 0x00000035 }, +- { 0x00009bac, 0x00000035 }, +- { 0x00009bb0, 0x00000035 }, +- { 0x00009bb4, 0x00000035 }, +- { 0x00009bb8, 0x00000035 }, +- { 0x00009bbc, 0x00000035 }, +- { 0x00009bc0, 0x00000035 }, +- { 0x00009bc4, 0x00000035 }, +- { 0x00009bc8, 0x00000035 }, +- { 0x00009bcc, 0x00000035 }, +- { 0x00009bd0, 0x00000035 }, +- { 0x00009bd4, 0x00000035 }, +- { 0x00009bd8, 0x00000035 }, +- { 0x00009bdc, 0x00000035 }, +- { 0x00009be0, 0x00000035 }, +- { 0x00009be4, 0x00000035 }, +- { 0x00009be8, 0x00000035 }, +- { 0x00009bec, 0x00000035 }, +- { 0x00009bf0, 0x00000035 }, +- { 0x00009bf4, 0x00000035 }, +- { 0x00009bf8, 0x00000010 }, +- { 0x00009bfc, 0x0000001a }, +- { 0x0000a210, 0x40806333 }, +- { 0x0000a214, 0x00106c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x018830c6 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x001a0bb5 }, +- { 0x0000a22c, 0x00000000 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a23c, 0x13c889af }, +- { 0x0000a240, 0x38490a20 }, +- { 0x0000a244, 0x00007bb6 }, +- { 0x0000a248, 0x0fff3ffc }, +- { 0x0000a24c, 0x00000001 }, +- { 0x0000a250, 0x0000e000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0cc75380 }, +- { 0x0000a25c, 0x0f0f0f01 }, +- { 0x0000a260, 0xdfa91f01 }, +- { 0x0000a268, 0x00000001 }, +- { 0x0000a26c, 0x0ebae9c6 }, +- { 0x0000b26c, 0x0ebae9c6 }, +- { 0x0000c26c, 0x0ebae9c6 }, +- { 0x0000d270, 0x00820820 }, +- { 0x0000a278, 0x1ce739ce }, +- { 0x0000a27c, 0x050701ce }, +- { 0x0000a338, 0x00000000 }, +- { 0x0000a33c, 0x00000000 }, +- { 0x0000a340, 0x00000000 }, +- { 0x0000a344, 0x00000000 }, +- { 0x0000a348, 0x3fffffff }, +- { 0x0000a34c, 0x3fffffff }, +- { 0x0000a350, 0x3fffffff }, +- { 0x0000a354, 0x0003ffff }, +- { 0x0000a358, 0x79bfaa03 }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x1ce739ce }, +- { 0x0000a398, 0x000001ce }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3c8, 0x00000246 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x1ce739ce }, +- { 0x0000a3e0, 0x000001ce }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020015}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00007010, 0x00000020}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x40000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x000080c0, 0x2a82301a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008120, 0x08f04800}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0xffffffff}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c4, 0x00000000}, ++ {0x000081d0, 0x00003210}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x00008300, 0x00000000}, ++ {0x00008304, 0x00000000}, ++ {0x00008308, 0x00000000}, ++ {0x0000830c, 0x00000000}, ++ {0x00008310, 0x00000000}, ++ {0x00008314, 0x00000000}, ++ {0x00008318, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000007}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00ff0000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x000107ff}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xad848e19}, ++ {0x00009810, 0x7d14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x00009840, 0x206a01ae}, ++ {0x0000984c, 0x1284233c}, ++ {0x00009854, 0x00000859}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x05100000}, ++ {0x0000a920, 0x05100000}, ++ {0x0000b920, 0x05100000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009948, 0x9280b212}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5f3ca3de}, ++ {0x00009958, 0x2108ecff}, ++ {0x00009940, 0x00750604}, ++ {0x0000c95c, 0x004b6a8e}, ++ {0x00009970, 0x190fb515}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x006f0000}, ++ {0x000099b0, 0x03051000}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000200}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099fc, 0x00001042}, ++ {0x00009b00, 0x00000000}, ++ {0x00009b04, 0x00000001}, ++ {0x00009b08, 0x00000002}, ++ {0x00009b0c, 0x00000003}, ++ {0x00009b10, 0x00000004}, ++ {0x00009b14, 0x00000005}, ++ {0x00009b18, 0x00000008}, ++ {0x00009b1c, 0x00000009}, ++ {0x00009b20, 0x0000000a}, ++ {0x00009b24, 0x0000000b}, ++ {0x00009b28, 0x0000000c}, ++ {0x00009b2c, 0x0000000d}, ++ {0x00009b30, 0x00000010}, ++ {0x00009b34, 0x00000011}, ++ {0x00009b38, 0x00000012}, ++ {0x00009b3c, 0x00000013}, ++ {0x00009b40, 0x00000014}, ++ {0x00009b44, 0x00000015}, ++ {0x00009b48, 0x00000018}, ++ {0x00009b4c, 0x00000019}, ++ {0x00009b50, 0x0000001a}, ++ {0x00009b54, 0x0000001b}, ++ {0x00009b58, 0x0000001c}, ++ {0x00009b5c, 0x0000001d}, ++ {0x00009b60, 0x00000020}, ++ {0x00009b64, 0x00000021}, ++ {0x00009b68, 0x00000022}, ++ {0x00009b6c, 0x00000023}, ++ {0x00009b70, 0x00000024}, ++ {0x00009b74, 0x00000025}, ++ {0x00009b78, 0x00000028}, ++ {0x00009b7c, 0x00000029}, ++ {0x00009b80, 0x0000002a}, ++ {0x00009b84, 0x0000002b}, ++ {0x00009b88, 0x0000002c}, ++ {0x00009b8c, 0x0000002d}, ++ {0x00009b90, 0x00000030}, ++ {0x00009b94, 0x00000031}, ++ {0x00009b98, 0x00000032}, ++ {0x00009b9c, 0x00000033}, ++ {0x00009ba0, 0x00000034}, ++ {0x00009ba4, 0x00000035}, ++ {0x00009ba8, 0x00000035}, ++ {0x00009bac, 0x00000035}, ++ {0x00009bb0, 0x00000035}, ++ {0x00009bb4, 0x00000035}, ++ {0x00009bb8, 0x00000035}, ++ {0x00009bbc, 0x00000035}, ++ {0x00009bc0, 0x00000035}, ++ {0x00009bc4, 0x00000035}, ++ {0x00009bc8, 0x00000035}, ++ {0x00009bcc, 0x00000035}, ++ {0x00009bd0, 0x00000035}, ++ {0x00009bd4, 0x00000035}, ++ {0x00009bd8, 0x00000035}, ++ {0x00009bdc, 0x00000035}, ++ {0x00009be0, 0x00000035}, ++ {0x00009be4, 0x00000035}, ++ {0x00009be8, 0x00000035}, ++ {0x00009bec, 0x00000035}, ++ {0x00009bf0, 0x00000035}, ++ {0x00009bf4, 0x00000035}, ++ {0x00009bf8, 0x00000010}, ++ {0x00009bfc, 0x0000001a}, ++ {0x0000a210, 0x40806333}, ++ {0x0000a214, 0x00106c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x018830c6}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x001a0bb5}, ++ {0x0000a22c, 0x00000000}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a23c, 0x13c889af}, ++ {0x0000a240, 0x38490a20}, ++ {0x0000a244, 0x00007bb6}, ++ {0x0000a248, 0x0fff3ffc}, ++ {0x0000a24c, 0x00000001}, ++ {0x0000a250, 0x0000e000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0cc75380}, ++ {0x0000a25c, 0x0f0f0f01}, ++ {0x0000a260, 0xdfa91f01}, ++ {0x0000a268, 0x00000001}, ++ {0x0000a26c, 0x0ebae9c6}, ++ {0x0000b26c, 0x0ebae9c6}, ++ {0x0000c26c, 0x0ebae9c6}, ++ {0x0000d270, 0x00820820}, ++ {0x0000a278, 0x1ce739ce}, ++ {0x0000a27c, 0x050701ce}, ++ {0x0000a338, 0x00000000}, ++ {0x0000a33c, 0x00000000}, ++ {0x0000a340, 0x00000000}, ++ {0x0000a344, 0x00000000}, ++ {0x0000a348, 0x3fffffff}, ++ {0x0000a34c, 0x3fffffff}, ++ {0x0000a350, 0x3fffffff}, ++ {0x0000a354, 0x0003ffff}, ++ {0x0000a358, 0x79bfaa03}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x1ce739ce}, ++ {0x0000a398, 0x000001ce}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3c8, 0x00000246}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x1ce739ce}, ++ {0x0000a3e0, 0x000001ce}, + }; + + static const u32 ar5416Bank0_9160[][2] = { +- { 0x000098b0, 0x1e5795e5 }, +- { 0x000098e0, 0x02008020 }, ++ /* Addr allmodes */ ++ {0x000098b0, 0x1e5795e5}, ++ {0x000098e0, 0x02008020}, + }; + + static const u32 ar5416BB_RfGain_9160[][3] = { +- { 0x00009a00, 0x00000000, 0x00000000 }, +- { 0x00009a04, 0x00000040, 0x00000040 }, +- { 0x00009a08, 0x00000080, 0x00000080 }, +- { 0x00009a0c, 0x000001a1, 0x00000141 }, +- { 0x00009a10, 0x000001e1, 0x00000181 }, +- { 0x00009a14, 0x00000021, 0x000001c1 }, +- { 0x00009a18, 0x00000061, 0x00000001 }, +- { 0x00009a1c, 0x00000168, 0x00000041 }, +- { 0x00009a20, 0x000001a8, 0x000001a8 }, +- { 0x00009a24, 0x000001e8, 0x000001e8 }, +- { 0x00009a28, 0x00000028, 0x00000028 }, +- { 0x00009a2c, 0x00000068, 0x00000068 }, +- { 0x00009a30, 0x00000189, 0x000000a8 }, +- { 0x00009a34, 0x000001c9, 0x00000169 }, +- { 0x00009a38, 0x00000009, 0x000001a9 }, +- { 0x00009a3c, 0x00000049, 0x000001e9 }, +- { 0x00009a40, 0x00000089, 0x00000029 }, +- { 0x00009a44, 0x00000170, 0x00000069 }, +- { 0x00009a48, 0x000001b0, 0x00000190 }, +- { 0x00009a4c, 0x000001f0, 0x000001d0 }, +- { 0x00009a50, 0x00000030, 0x00000010 }, +- { 0x00009a54, 0x00000070, 0x00000050 }, +- { 0x00009a58, 0x00000191, 0x00000090 }, +- { 0x00009a5c, 0x000001d1, 0x00000151 }, +- { 0x00009a60, 0x00000011, 0x00000191 }, +- { 0x00009a64, 0x00000051, 0x000001d1 }, +- { 0x00009a68, 0x00000091, 0x00000011 }, +- { 0x00009a6c, 0x000001b8, 0x00000051 }, +- { 0x00009a70, 0x000001f8, 0x00000198 }, +- { 0x00009a74, 0x00000038, 0x000001d8 }, +- { 0x00009a78, 0x00000078, 0x00000018 }, +- { 0x00009a7c, 0x00000199, 0x00000058 }, +- { 0x00009a80, 0x000001d9, 0x00000098 }, +- { 0x00009a84, 0x00000019, 0x00000159 }, +- { 0x00009a88, 0x00000059, 0x00000199 }, +- { 0x00009a8c, 0x00000099, 0x000001d9 }, +- { 0x00009a90, 0x000000d9, 0x00000019 }, +- { 0x00009a94, 0x000000f9, 0x00000059 }, +- { 0x00009a98, 0x000000f9, 0x00000099 }, +- { 0x00009a9c, 0x000000f9, 0x000000d9 }, +- { 0x00009aa0, 0x000000f9, 0x000000f9 }, +- { 0x00009aa4, 0x000000f9, 0x000000f9 }, +- { 0x00009aa8, 0x000000f9, 0x000000f9 }, +- { 0x00009aac, 0x000000f9, 0x000000f9 }, +- { 0x00009ab0, 0x000000f9, 0x000000f9 }, +- { 0x00009ab4, 0x000000f9, 0x000000f9 }, +- { 0x00009ab8, 0x000000f9, 0x000000f9 }, +- { 0x00009abc, 0x000000f9, 0x000000f9 }, +- { 0x00009ac0, 0x000000f9, 0x000000f9 }, +- { 0x00009ac4, 0x000000f9, 0x000000f9 }, +- { 0x00009ac8, 0x000000f9, 0x000000f9 }, +- { 0x00009acc, 0x000000f9, 0x000000f9 }, +- { 0x00009ad0, 0x000000f9, 0x000000f9 }, +- { 0x00009ad4, 0x000000f9, 0x000000f9 }, +- { 0x00009ad8, 0x000000f9, 0x000000f9 }, +- { 0x00009adc, 0x000000f9, 0x000000f9 }, +- { 0x00009ae0, 0x000000f9, 0x000000f9 }, +- { 0x00009ae4, 0x000000f9, 0x000000f9 }, +- { 0x00009ae8, 0x000000f9, 0x000000f9 }, +- { 0x00009aec, 0x000000f9, 0x000000f9 }, +- { 0x00009af0, 0x000000f9, 0x000000f9 }, +- { 0x00009af4, 0x000000f9, 0x000000f9 }, +- { 0x00009af8, 0x000000f9, 0x000000f9 }, +- { 0x00009afc, 0x000000f9, 0x000000f9 }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x00009a00, 0x00000000, 0x00000000}, ++ {0x00009a04, 0x00000040, 0x00000040}, ++ {0x00009a08, 0x00000080, 0x00000080}, ++ {0x00009a0c, 0x000001a1, 0x00000141}, ++ {0x00009a10, 0x000001e1, 0x00000181}, ++ {0x00009a14, 0x00000021, 0x000001c1}, ++ {0x00009a18, 0x00000061, 0x00000001}, ++ {0x00009a1c, 0x00000168, 0x00000041}, ++ {0x00009a20, 0x000001a8, 0x000001a8}, ++ {0x00009a24, 0x000001e8, 0x000001e8}, ++ {0x00009a28, 0x00000028, 0x00000028}, ++ {0x00009a2c, 0x00000068, 0x00000068}, ++ {0x00009a30, 0x00000189, 0x000000a8}, ++ {0x00009a34, 0x000001c9, 0x00000169}, ++ {0x00009a38, 0x00000009, 0x000001a9}, ++ {0x00009a3c, 0x00000049, 0x000001e9}, ++ {0x00009a40, 0x00000089, 0x00000029}, ++ {0x00009a44, 0x00000170, 0x00000069}, ++ {0x00009a48, 0x000001b0, 0x00000190}, ++ {0x00009a4c, 0x000001f0, 0x000001d0}, ++ {0x00009a50, 0x00000030, 0x00000010}, ++ {0x00009a54, 0x00000070, 0x00000050}, ++ {0x00009a58, 0x00000191, 0x00000090}, ++ {0x00009a5c, 0x000001d1, 0x00000151}, ++ {0x00009a60, 0x00000011, 0x00000191}, ++ {0x00009a64, 0x00000051, 0x000001d1}, ++ {0x00009a68, 0x00000091, 0x00000011}, ++ {0x00009a6c, 0x000001b8, 0x00000051}, ++ {0x00009a70, 0x000001f8, 0x00000198}, ++ {0x00009a74, 0x00000038, 0x000001d8}, ++ {0x00009a78, 0x00000078, 0x00000018}, ++ {0x00009a7c, 0x00000199, 0x00000058}, ++ {0x00009a80, 0x000001d9, 0x00000098}, ++ {0x00009a84, 0x00000019, 0x00000159}, ++ {0x00009a88, 0x00000059, 0x00000199}, ++ {0x00009a8c, 0x00000099, 0x000001d9}, ++ {0x00009a90, 0x000000d9, 0x00000019}, ++ {0x00009a94, 0x000000f9, 0x00000059}, ++ {0x00009a98, 0x000000f9, 0x00000099}, ++ {0x00009a9c, 0x000000f9, 0x000000d9}, ++ {0x00009aa0, 0x000000f9, 0x000000f9}, ++ {0x00009aa4, 0x000000f9, 0x000000f9}, ++ {0x00009aa8, 0x000000f9, 0x000000f9}, ++ {0x00009aac, 0x000000f9, 0x000000f9}, ++ {0x00009ab0, 0x000000f9, 0x000000f9}, ++ {0x00009ab4, 0x000000f9, 0x000000f9}, ++ {0x00009ab8, 0x000000f9, 0x000000f9}, ++ {0x00009abc, 0x000000f9, 0x000000f9}, ++ {0x00009ac0, 0x000000f9, 0x000000f9}, ++ {0x00009ac4, 0x000000f9, 0x000000f9}, ++ {0x00009ac8, 0x000000f9, 0x000000f9}, ++ {0x00009acc, 0x000000f9, 0x000000f9}, ++ {0x00009ad0, 0x000000f9, 0x000000f9}, ++ {0x00009ad4, 0x000000f9, 0x000000f9}, ++ {0x00009ad8, 0x000000f9, 0x000000f9}, ++ {0x00009adc, 0x000000f9, 0x000000f9}, ++ {0x00009ae0, 0x000000f9, 0x000000f9}, ++ {0x00009ae4, 0x000000f9, 0x000000f9}, ++ {0x00009ae8, 0x000000f9, 0x000000f9}, ++ {0x00009aec, 0x000000f9, 0x000000f9}, ++ {0x00009af0, 0x000000f9, 0x000000f9}, ++ {0x00009af4, 0x000000f9, 0x000000f9}, ++ {0x00009af8, 0x000000f9, 0x000000f9}, ++ {0x00009afc, 0x000000f9, 0x000000f9}, + }; + + static const u32 ar5416Bank1_9160[][2] = { +- { 0x000098b0, 0x02108421 }, +- { 0x000098ec, 0x00000008 }, ++ /* Addr allmodes */ ++ {0x000098b0, 0x02108421}, ++ {0x000098ec, 0x00000008}, + }; + + static const u32 ar5416Bank2_9160[][2] = { +- { 0x000098b0, 0x0e73ff17 }, +- { 0x000098e0, 0x00000420 }, ++ /* Addr allmodes */ ++ {0x000098b0, 0x0e73ff17}, ++ {0x000098e0, 0x00000420}, + }; + + static const u32 ar5416Bank3_9160[][3] = { +- { 0x000098f0, 0x01400018, 0x01c00018 }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x000098f0, 0x01400018, 0x01c00018}, + }; + + static const u32 ar5416Bank6_9160[][3] = { +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00e00000, 0x00e00000 }, +- { 0x0000989c, 0x005e0000, 0x005e0000 }, +- { 0x0000989c, 0x00120000, 0x00120000 }, +- { 0x0000989c, 0x00620000, 0x00620000 }, +- { 0x0000989c, 0x00020000, 0x00020000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, +- { 0x0000989c, 0x005f0000, 0x005f0000 }, +- { 0x0000989c, 0x00870000, 0x00870000 }, +- { 0x0000989c, 0x00f90000, 0x00f90000 }, +- { 0x0000989c, 0x007b0000, 0x007b0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00f50000, 0x00f50000 }, +- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, +- { 0x0000989c, 0x00110000, 0x00110000 }, +- { 0x0000989c, 0x006100a8, 0x006100a8 }, +- { 0x0000989c, 0x004210a2, 0x004210a2 }, +- { 0x0000989c, 0x0014008f, 0x0014008f }, +- { 0x0000989c, 0x00c40003, 0x00c40003 }, +- { 0x0000989c, 0x003000f2, 0x003000f2 }, +- { 0x0000989c, 0x00440016, 0x00440016 }, +- { 0x0000989c, 0x00410040, 0x00410040 }, +- { 0x0000989c, 0x0001805e, 0x0001805e }, +- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, +- { 0x0000989c, 0x000000f1, 0x000000f1 }, +- { 0x0000989c, 0x00002081, 0x00002081 }, +- { 0x0000989c, 0x000000d4, 0x000000d4 }, +- { 0x000098d0, 0x0000000f, 0x0010000f }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00e00000, 0x00e00000}, ++ {0x0000989c, 0x005e0000, 0x005e0000}, ++ {0x0000989c, 0x00120000, 0x00120000}, ++ {0x0000989c, 0x00620000, 0x00620000}, ++ {0x0000989c, 0x00020000, 0x00020000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x40ff0000, 0x40ff0000}, ++ {0x0000989c, 0x005f0000, 0x005f0000}, ++ {0x0000989c, 0x00870000, 0x00870000}, ++ {0x0000989c, 0x00f90000, 0x00f90000}, ++ {0x0000989c, 0x007b0000, 0x007b0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00f50000, 0x00f50000}, ++ {0x0000989c, 0x00dc0000, 0x00dc0000}, ++ {0x0000989c, 0x00110000, 0x00110000}, ++ {0x0000989c, 0x006100a8, 0x006100a8}, ++ {0x0000989c, 0x004210a2, 0x004210a2}, ++ {0x0000989c, 0x0014008f, 0x0014008f}, ++ {0x0000989c, 0x00c40003, 0x00c40003}, ++ {0x0000989c, 0x003000f2, 0x003000f2}, ++ {0x0000989c, 0x00440016, 0x00440016}, ++ {0x0000989c, 0x00410040, 0x00410040}, ++ {0x0000989c, 0x0001805e, 0x0001805e}, ++ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, ++ {0x0000989c, 0x000000f1, 0x000000f1}, ++ {0x0000989c, 0x00002081, 0x00002081}, ++ {0x0000989c, 0x000000d4, 0x000000d4}, ++ {0x000098d0, 0x0000000f, 0x0010000f}, + }; + + static const u32 ar5416Bank6TPC_9160[][3] = { +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00000000, 0x00000000 }, +- { 0x0000989c, 0x00e00000, 0x00e00000 }, +- { 0x0000989c, 0x005e0000, 0x005e0000 }, +- { 0x0000989c, 0x00120000, 0x00120000 }, +- { 0x0000989c, 0x00620000, 0x00620000 }, +- { 0x0000989c, 0x00020000, 0x00020000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, +- { 0x0000989c, 0x005f0000, 0x005f0000 }, +- { 0x0000989c, 0x00870000, 0x00870000 }, +- { 0x0000989c, 0x00f90000, 0x00f90000 }, +- { 0x0000989c, 0x007b0000, 0x007b0000 }, +- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, +- { 0x0000989c, 0x00f50000, 0x00f50000 }, +- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, +- { 0x0000989c, 0x00110000, 0x00110000 }, +- { 0x0000989c, 0x006100a8, 0x006100a8 }, +- { 0x0000989c, 0x00423022, 0x00423022 }, +- { 0x0000989c, 0x2014008f, 0x2014008f }, +- { 0x0000989c, 0x00c40002, 0x00c40002 }, +- { 0x0000989c, 0x003000f2, 0x003000f2 }, +- { 0x0000989c, 0x00440016, 0x00440016 }, +- { 0x0000989c, 0x00410040, 0x00410040 }, +- { 0x0000989c, 0x0001805e, 0x0001805e }, +- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, +- { 0x0000989c, 0x000000e1, 0x000000e1 }, +- { 0x0000989c, 0x00007080, 0x00007080 }, +- { 0x0000989c, 0x000000d4, 0x000000d4 }, +- { 0x000098d0, 0x0000000f, 0x0010000f }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00000000, 0x00000000}, ++ {0x0000989c, 0x00e00000, 0x00e00000}, ++ {0x0000989c, 0x005e0000, 0x005e0000}, ++ {0x0000989c, 0x00120000, 0x00120000}, ++ {0x0000989c, 0x00620000, 0x00620000}, ++ {0x0000989c, 0x00020000, 0x00020000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x40ff0000, 0x40ff0000}, ++ {0x0000989c, 0x005f0000, 0x005f0000}, ++ {0x0000989c, 0x00870000, 0x00870000}, ++ {0x0000989c, 0x00f90000, 0x00f90000}, ++ {0x0000989c, 0x007b0000, 0x007b0000}, ++ {0x0000989c, 0x00ff0000, 0x00ff0000}, ++ {0x0000989c, 0x00f50000, 0x00f50000}, ++ {0x0000989c, 0x00dc0000, 0x00dc0000}, ++ {0x0000989c, 0x00110000, 0x00110000}, ++ {0x0000989c, 0x006100a8, 0x006100a8}, ++ {0x0000989c, 0x00423022, 0x00423022}, ++ {0x0000989c, 0x2014008f, 0x2014008f}, ++ {0x0000989c, 0x00c40002, 0x00c40002}, ++ {0x0000989c, 0x003000f2, 0x003000f2}, ++ {0x0000989c, 0x00440016, 0x00440016}, ++ {0x0000989c, 0x00410040, 0x00410040}, ++ {0x0000989c, 0x0001805e, 0x0001805e}, ++ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, ++ {0x0000989c, 0x000000e1, 0x000000e1}, ++ {0x0000989c, 0x00007080, 0x00007080}, ++ {0x0000989c, 0x000000d4, 0x000000d4}, ++ {0x000098d0, 0x0000000f, 0x0010000f}, + }; + + static const u32 ar5416Bank7_9160[][2] = { +- { 0x0000989c, 0x00000500 }, +- { 0x0000989c, 0x00000800 }, +- { 0x000098cc, 0x0000000e }, ++ /* Addr allmodes */ ++ {0x0000989c, 0x00000500}, ++ {0x0000989c, 0x00000800}, ++ {0x000098cc, 0x0000000e}, + }; + + static const u32 ar5416Addac_9160[][2] = { +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x000000c0 }, +- {0x0000989c, 0x00000018 }, +- {0x0000989c, 0x00000004 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x000000c0 }, +- {0x0000989c, 0x00000019 }, +- {0x0000989c, 0x00000004 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000004 }, +- {0x0000989c, 0x00000003 }, +- {0x0000989c, 0x00000008 }, +- {0x0000989c, 0x00000000 }, +- {0x000098cc, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x000000c0}, ++ {0x0000989c, 0x00000018}, ++ {0x0000989c, 0x00000004}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x000000c0}, ++ {0x0000989c, 0x00000019}, ++ {0x0000989c, 0x00000004}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000004}, ++ {0x0000989c, 0x00000003}, ++ {0x0000989c, 0x00000008}, ++ {0x0000989c, 0x00000000}, ++ {0x000098cc, 0x00000000}, + }; + + static const u32 ar5416Addac_9160_1_1[][2] = { +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x000000c0 }, +- {0x0000989c, 0x00000018 }, +- {0x0000989c, 0x00000004 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x000000c0 }, +- {0x0000989c, 0x00000019 }, +- {0x0000989c, 0x00000004 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x0000989c, 0x00000000 }, +- {0x000098cc, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x000000c0}, ++ {0x0000989c, 0x00000018}, ++ {0x0000989c, 0x00000004}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x000000c0}, ++ {0x0000989c, 0x00000019}, ++ {0x0000989c, 0x00000004}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x0000989c, 0x00000000}, ++ {0x000098cc, 0x00000000}, + }; + +--- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h +@@ -14,5217 +14,5212 @@ + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-#ifndef INITVALS_9002_10_H +-#define INITVALS_9002_10_H +- + static const u32 ar9280Modes_9280[][6] = { +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801080, 0x08400840, 0x06e006e0 }, +- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0 }, +- { 0x00009848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563 }, +- { 0x0000a848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563 }, +- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, +- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, +- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e }, +- { 0x00009860, 0x00049d18, 0x00049d18, 0x00049d20, 0x00049d20, 0x00049d18 }, +- { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190 }, +- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, +- { 0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010 }, +- { 0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210 }, +- { 0x0000c9b8, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a }, +- { 0x0000c9bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00009a00, 0x00008184, 0x00008184, 0x00000214, 0x00000214, 0x00000214 }, +- { 0x00009a04, 0x00008188, 0x00008188, 0x00000218, 0x00000218, 0x00000218 }, +- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000224, 0x00000224, 0x00000224 }, +- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000228, 0x00000228, 0x00000228 }, +- { 0x00009a10, 0x00008194, 0x00008194, 0x0000022c, 0x0000022c, 0x0000022c }, +- { 0x00009a14, 0x00008200, 0x00008200, 0x00000230, 0x00000230, 0x00000230 }, +- { 0x00009a18, 0x00008204, 0x00008204, 0x000002a4, 0x000002a4, 0x000002a4 }, +- { 0x00009a1c, 0x00008208, 0x00008208, 0x000002a8, 0x000002a8, 0x000002a8 }, +- { 0x00009a20, 0x0000820c, 0x0000820c, 0x000002ac, 0x000002ac, 0x000002ac }, +- { 0x00009a24, 0x00008210, 0x00008210, 0x000002b0, 0x000002b0, 0x000002b0 }, +- { 0x00009a28, 0x00008214, 0x00008214, 0x000002b4, 0x000002b4, 0x000002b4 }, +- { 0x00009a2c, 0x00008280, 0x00008280, 0x000002b8, 0x000002b8, 0x000002b8 }, +- { 0x00009a30, 0x00008284, 0x00008284, 0x00000390, 0x00000390, 0x00000390 }, +- { 0x00009a34, 0x00008288, 0x00008288, 0x00000394, 0x00000394, 0x00000394 }, +- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00000398, 0x00000398, 0x00000398 }, +- { 0x00009a3c, 0x00008290, 0x00008290, 0x00000334, 0x00000334, 0x00000334 }, +- { 0x00009a40, 0x00008300, 0x00008300, 0x00000338, 0x00000338, 0x00000338 }, +- { 0x00009a44, 0x00008304, 0x00008304, 0x000003ac, 0x000003ac, 0x000003ac }, +- { 0x00009a48, 0x00008308, 0x00008308, 0x000003b0, 0x000003b0, 0x000003b0 }, +- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x000003b4, 0x000003b4, 0x000003b4 }, +- { 0x00009a50, 0x00008310, 0x00008310, 0x000003b8, 0x000003b8, 0x000003b8 }, +- { 0x00009a54, 0x00008314, 0x00008314, 0x000003a5, 0x000003a5, 0x000003a5 }, +- { 0x00009a58, 0x00008380, 0x00008380, 0x000003a9, 0x000003a9, 0x000003a9 }, +- { 0x00009a5c, 0x00008384, 0x00008384, 0x000003ad, 0x000003ad, 0x000003ad }, +- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, +- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, +- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, +- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, +- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, +- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, +- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, +- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, +- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, +- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, +- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, +- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, +- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, +- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, +- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, +- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, +- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, +- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, +- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, +- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, +- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, +- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, +- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, +- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, +- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, +- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, +- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, +- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, +- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, +- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, +- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, +- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, +- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, +- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, +- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c }, +- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310 }, +- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384 }, +- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388 }, +- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324 }, +- { 0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704 }, +- { 0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4 }, +- { 0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8 }, +- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710 }, +- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714 }, +- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720 }, +- { 0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724 }, +- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728 }, +- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c }, +- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0 }, +- { 0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4 }, +- { 0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8 }, +- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0 }, +- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4 }, +- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8 }, +- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5 }, +- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9 }, +- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad }, +- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1 }, +- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5 }, +- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9 }, +- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5 }, +- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9 }, +- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1 }, +- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5 }, +- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9 }, +- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6 }, +- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca }, +- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce }, +- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2 }, +- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6 }, +- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3 }, +- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7 }, +- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb }, +- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf }, +- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7 }, +- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444 }, +- { 0x0000a208, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788 }, +- { 0x0000a20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019 }, +- { 0x0000b20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002 }, +- { 0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009 }, +- { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b }, +- { 0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012 }, +- { 0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048 }, +- { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a }, +- { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211 }, +- { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, +- { 0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b }, +- { 0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412 }, +- { 0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414 }, +- { 0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a }, +- { 0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649 }, +- { 0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b }, +- { 0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49 }, +- { 0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48 }, +- { 0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a }, +- { 0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88 }, +- { 0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a }, +- { 0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9 }, +- { 0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42 }, +- { 0x0000784c, 0x0e4f048c, 0x0e4f048c, 0x0e4d048c, 0x0e4d048c, 0x0e4d048c }, +- { 0x00007854, 0x12031828, 0x12031828, 0x12035828, 0x12035828, 0x12035828 }, +- { 0x00007870, 0x807ec400, 0x807ec400, 0x807ec000, 0x807ec000, 0x807ec000 }, +- { 0x0000788c, 0x00010000, 0x00010000, 0x00110000, 0x00110000, 0x00110000 }, ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801080, 0x08400840, 0x06e006e0}, ++ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0}, ++ {0x00009848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563}, ++ {0x0000a848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563}, ++ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, ++ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, ++ {0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e}, ++ {0x00009860, 0x00049d18, 0x00049d18, 0x00049d20, 0x00049d20, 0x00049d18}, ++ {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190}, ++ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, ++ {0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010}, ++ {0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, ++ {0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, ++ {0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210}, ++ {0x0000c9b8, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, ++ {0x0000c9bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00009a00, 0x00008184, 0x00008184, 0x00000214, 0x00000214, 0x00000214}, ++ {0x00009a04, 0x00008188, 0x00008188, 0x00000218, 0x00000218, 0x00000218}, ++ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000224, 0x00000224, 0x00000224}, ++ {0x00009a0c, 0x00008190, 0x00008190, 0x00000228, 0x00000228, 0x00000228}, ++ {0x00009a10, 0x00008194, 0x00008194, 0x0000022c, 0x0000022c, 0x0000022c}, ++ {0x00009a14, 0x00008200, 0x00008200, 0x00000230, 0x00000230, 0x00000230}, ++ {0x00009a18, 0x00008204, 0x00008204, 0x000002a4, 0x000002a4, 0x000002a4}, ++ {0x00009a1c, 0x00008208, 0x00008208, 0x000002a8, 0x000002a8, 0x000002a8}, ++ {0x00009a20, 0x0000820c, 0x0000820c, 0x000002ac, 0x000002ac, 0x000002ac}, ++ {0x00009a24, 0x00008210, 0x00008210, 0x000002b0, 0x000002b0, 0x000002b0}, ++ {0x00009a28, 0x00008214, 0x00008214, 0x000002b4, 0x000002b4, 0x000002b4}, ++ {0x00009a2c, 0x00008280, 0x00008280, 0x000002b8, 0x000002b8, 0x000002b8}, ++ {0x00009a30, 0x00008284, 0x00008284, 0x00000390, 0x00000390, 0x00000390}, ++ {0x00009a34, 0x00008288, 0x00008288, 0x00000394, 0x00000394, 0x00000394}, ++ {0x00009a38, 0x0000828c, 0x0000828c, 0x00000398, 0x00000398, 0x00000398}, ++ {0x00009a3c, 0x00008290, 0x00008290, 0x00000334, 0x00000334, 0x00000334}, ++ {0x00009a40, 0x00008300, 0x00008300, 0x00000338, 0x00000338, 0x00000338}, ++ {0x00009a44, 0x00008304, 0x00008304, 0x000003ac, 0x000003ac, 0x000003ac}, ++ {0x00009a48, 0x00008308, 0x00008308, 0x000003b0, 0x000003b0, 0x000003b0}, ++ {0x00009a4c, 0x0000830c, 0x0000830c, 0x000003b4, 0x000003b4, 0x000003b4}, ++ {0x00009a50, 0x00008310, 0x00008310, 0x000003b8, 0x000003b8, 0x000003b8}, ++ {0x00009a54, 0x00008314, 0x00008314, 0x000003a5, 0x000003a5, 0x000003a5}, ++ {0x00009a58, 0x00008380, 0x00008380, 0x000003a9, 0x000003a9, 0x000003a9}, ++ {0x00009a5c, 0x00008384, 0x00008384, 0x000003ad, 0x000003ad, 0x000003ad}, ++ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, ++ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, ++ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, ++ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, ++ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, ++ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, ++ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, ++ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, ++ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, ++ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, ++ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, ++ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, ++ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, ++ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, ++ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, ++ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, ++ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, ++ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, ++ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, ++ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, ++ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, ++ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, ++ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, ++ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, ++ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80}, ++ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84}, ++ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88}, ++ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c}, ++ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90}, ++ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80}, ++ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84}, ++ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88}, ++ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c}, ++ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90}, ++ {0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c}, ++ {0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310}, ++ {0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384}, ++ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388}, ++ {0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324}, ++ {0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704}, ++ {0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4}, ++ {0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8}, ++ {0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710}, ++ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714}, ++ {0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720}, ++ {0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724}, ++ {0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728}, ++ {0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c}, ++ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0}, ++ {0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4}, ++ {0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8}, ++ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0}, ++ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4}, ++ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8}, ++ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5}, ++ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9}, ++ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad}, ++ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1}, ++ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5}, ++ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9}, ++ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5}, ++ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9}, ++ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1}, ++ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5}, ++ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9}, ++ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6}, ++ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca}, ++ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce}, ++ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2}, ++ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6}, ++ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3}, ++ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7}, ++ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb}, ++ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf}, ++ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7}, ++ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444}, ++ {0x0000a208, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788}, ++ {0x0000a20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019}, ++ {0x0000b20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652}, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002}, ++ {0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009}, ++ {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b}, ++ {0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012}, ++ {0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048}, ++ {0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a}, ++ {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211}, ++ {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213}, ++ {0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b}, ++ {0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412}, ++ {0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414}, ++ {0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a}, ++ {0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649}, ++ {0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b}, ++ {0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49}, ++ {0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48}, ++ {0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a}, ++ {0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88}, ++ {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a}, ++ {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9}, ++ {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42}, ++ {0x0000784c, 0x0e4f048c, 0x0e4f048c, 0x0e4d048c, 0x0e4d048c, 0x0e4d048c}, ++ {0x00007854, 0x12031828, 0x12031828, 0x12035828, 0x12035828, 0x12035828}, ++ {0x00007870, 0x807ec400, 0x807ec400, 0x807ec000, 0x807ec000, 0x807ec000}, ++ {0x0000788c, 0x00010000, 0x00010000, 0x00110000, 0x00110000, 0x00110000}, + }; + + static const u32 ar9280Common_9280[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020015 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00004024, 0x0000001f }, +- { 0x00007010, 0x00000033 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x40000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x00008070, 0x00000000 }, +- { 0x000080c0, 0x2a82301a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008120, 0x08f04800 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0x00000000 }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c4, 0x00000000 }, +- { 0x000081d0, 0x00003210 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x00008300, 0x00000000 }, +- { 0x00008304, 0x00000000 }, +- { 0x00008308, 0x00000000 }, +- { 0x0000830c, 0x00000000 }, +- { 0x00008310, 0x00000000 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008318, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000007 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00000000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x000107ff }, +- { 0x00008344, 0x00000000 }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xaf268e30 }, +- { 0x00009810, 0xfd14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x00009840, 0x206a01ae }, +- { 0x0000984c, 0x0040233c }, +- { 0x0000a84c, 0x0040233c }, +- { 0x00009854, 0x00000044 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x04900000 }, +- { 0x0000a920, 0x04900000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009948, 0x9280c00a }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0xe250a51e }, +- { 0x00009958, 0x3388ffff }, +- { 0x00009940, 0x00781204 }, +- { 0x0000c95c, 0x004b6a8e }, +- { 0x0000c968, 0x000003ce }, +- { 0x00009970, 0x190fb514 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x006f00c4 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099b4, 0x00000820 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000000 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099fc, 0x00001042 }, +- { 0x0000a210, 0x4080a333 }, +- { 0x0000a214, 0x40206c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x01834061 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x000003b5 }, +- { 0x0000a22c, 0x23277200 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a23c, 0x13c889af }, +- { 0x0000a240, 0x38490a20 }, +- { 0x0000a244, 0x00007bb6 }, +- { 0x0000a248, 0x0fff3ffc }, +- { 0x0000a24c, 0x00000001 }, +- { 0x0000a250, 0x001da000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0cdbd380 }, +- { 0x0000a25c, 0x0f0f0f01 }, +- { 0x0000a260, 0xdfa91f01 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0ebae9c6 }, +- { 0x0000b26c, 0x0ebae9c6 }, +- { 0x0000d270, 0x00820820 }, +- { 0x0000a278, 0x1ce739ce }, +- { 0x0000a27c, 0x050701ce }, +- { 0x0000a358, 0x7999aa0f }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x1ce739ce }, +- { 0x0000a398, 0x000001ce }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3c8, 0x00000246 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x1ce739ce }, +- { 0x0000a3e0, 0x000001ce }, +- { 0x0000a3e4, 0x00000000 }, +- { 0x0000a3e8, 0x18c43433 }, +- { 0x0000a3ec, 0x00f38081 }, +- { 0x00007800, 0x00040000 }, +- { 0x00007804, 0xdb005012 }, +- { 0x00007808, 0x04924914 }, +- { 0x0000780c, 0x21084210 }, +- { 0x00007810, 0x6d801300 }, +- { 0x00007814, 0x0019beff }, +- { 0x00007818, 0x07e40000 }, +- { 0x0000781c, 0x00492000 }, +- { 0x00007820, 0x92492480 }, +- { 0x00007824, 0x00040000 }, +- { 0x00007828, 0xdb005012 }, +- { 0x0000782c, 0x04924914 }, +- { 0x00007830, 0x21084210 }, +- { 0x00007834, 0x6d801300 }, +- { 0x00007838, 0x0019beff }, +- { 0x0000783c, 0x07e40000 }, +- { 0x00007840, 0x00492000 }, +- { 0x00007844, 0x92492480 }, +- { 0x00007848, 0x00120000 }, +- { 0x00007850, 0x54214514 }, +- { 0x00007858, 0x92592692 }, +- { 0x00007860, 0x52802000 }, +- { 0x00007864, 0x0a8e370e }, +- { 0x00007868, 0xc0102850 }, +- { 0x0000786c, 0x812d4000 }, +- { 0x00007874, 0x001b6db0 }, +- { 0x00007878, 0x00376b63 }, +- { 0x0000787c, 0x06db6db6 }, +- { 0x00007880, 0x006d8000 }, +- { 0x00007884, 0xffeffffe }, +- { 0x00007888, 0xffeffffe }, +- { 0x00007890, 0x00060aeb }, +- { 0x00007894, 0x5a108000 }, +- { 0x00007898, 0x2a850160 }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020015}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00004024, 0x0000001f}, ++ {0x00007010, 0x00000033}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x40000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x00008070, 0x00000000}, ++ {0x000080c0, 0x2a82301a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008120, 0x08f04800}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0x00000000}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c4, 0x00000000}, ++ {0x000081d0, 0x00003210}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x00008300, 0x00000000}, ++ {0x00008304, 0x00000000}, ++ {0x00008308, 0x00000000}, ++ {0x0000830c, 0x00000000}, ++ {0x00008310, 0x00000000}, ++ {0x00008314, 0x00000000}, ++ {0x00008318, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000007}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00000000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x000107ff}, ++ {0x00008344, 0x00000000}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xaf268e30}, ++ {0x00009810, 0xfd14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x00009840, 0x206a01ae}, ++ {0x0000984c, 0x0040233c}, ++ {0x0000a84c, 0x0040233c}, ++ {0x00009854, 0x00000044}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x04900000}, ++ {0x0000a920, 0x04900000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009948, 0x9280c00a}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0xe250a51e}, ++ {0x00009958, 0x3388ffff}, ++ {0x00009940, 0x00781204}, ++ {0x0000c95c, 0x004b6a8e}, ++ {0x0000c968, 0x000003ce}, ++ {0x00009970, 0x190fb514}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x006f00c4}, ++ {0x000099b0, 0x03051000}, ++ {0x000099b4, 0x00000820}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000000}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099fc, 0x00001042}, ++ {0x0000a210, 0x4080a333}, ++ {0x0000a214, 0x40206c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x01834061}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x000003b5}, ++ {0x0000a22c, 0x23277200}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a23c, 0x13c889af}, ++ {0x0000a240, 0x38490a20}, ++ {0x0000a244, 0x00007bb6}, ++ {0x0000a248, 0x0fff3ffc}, ++ {0x0000a24c, 0x00000001}, ++ {0x0000a250, 0x001da000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0cdbd380}, ++ {0x0000a25c, 0x0f0f0f01}, ++ {0x0000a260, 0xdfa91f01}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0ebae9c6}, ++ {0x0000b26c, 0x0ebae9c6}, ++ {0x0000d270, 0x00820820}, ++ {0x0000a278, 0x1ce739ce}, ++ {0x0000a27c, 0x050701ce}, ++ {0x0000a358, 0x7999aa0f}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x1ce739ce}, ++ {0x0000a398, 0x000001ce}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3c8, 0x00000246}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x1ce739ce}, ++ {0x0000a3e0, 0x000001ce}, ++ {0x0000a3e4, 0x00000000}, ++ {0x0000a3e8, 0x18c43433}, ++ {0x0000a3ec, 0x00f38081}, ++ {0x00007800, 0x00040000}, ++ {0x00007804, 0xdb005012}, ++ {0x00007808, 0x04924914}, ++ {0x0000780c, 0x21084210}, ++ {0x00007810, 0x6d801300}, ++ {0x00007814, 0x0019beff}, ++ {0x00007818, 0x07e40000}, ++ {0x0000781c, 0x00492000}, ++ {0x00007820, 0x92492480}, ++ {0x00007824, 0x00040000}, ++ {0x00007828, 0xdb005012}, ++ {0x0000782c, 0x04924914}, ++ {0x00007830, 0x21084210}, ++ {0x00007834, 0x6d801300}, ++ {0x00007838, 0x0019beff}, ++ {0x0000783c, 0x07e40000}, ++ {0x00007840, 0x00492000}, ++ {0x00007844, 0x92492480}, ++ {0x00007848, 0x00120000}, ++ {0x00007850, 0x54214514}, ++ {0x00007858, 0x92592692}, ++ {0x00007860, 0x52802000}, ++ {0x00007864, 0x0a8e370e}, ++ {0x00007868, 0xc0102850}, ++ {0x0000786c, 0x812d4000}, ++ {0x00007874, 0x001b6db0}, ++ {0x00007878, 0x00376b63}, ++ {0x0000787c, 0x06db6db6}, ++ {0x00007880, 0x006d8000}, ++ {0x00007884, 0xffeffffe}, ++ {0x00007888, 0xffeffffe}, ++ {0x00007890, 0x00060aeb}, ++ {0x00007894, 0x5a108000}, ++ {0x00007898, 0x2a850160}, + }; + +-/* XXX 9280 2 */ + static const u32 ar9280Modes_9280_2[][6] = { +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, +- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, +- { 0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a }, +- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009840, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e, 0x206a012e }, +- { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, +- { 0x00009850, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, +- { 0x00009858, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, +- { 0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e }, +- { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, +- { 0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, +- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x0000000a, 0x00000014, 0x00000268, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8a0b, 0xd00a8a0b, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, +- { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010 }, +- { 0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210 }, +- { 0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce }, +- { 0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c }, +- { 0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444 }, +- { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019 }, +- { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a23c, 0x13c88000, 0x13c88000, 0x13c88001, 0x13c88000, 0x13c88000 }, +- { 0x0000a250, 0x001ff000, 0x001ff000, 0x0004a000, 0x0004a000, 0x0004a000 }, +- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, +- { 0x0000a388, 0x0c000000, 0x0c000000, 0x08000000, 0x0c000000, 0x0c000000 }, +- { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00007894, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000 }, ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, ++ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, ++ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, ++ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009840, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e, 0x206a012e}, ++ {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0}, ++ {0x00009850, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2}, ++ {0x00009858, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, ++ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, ++ {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, ++ {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, ++ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x0000000a, 0x00000014, 0x00000268, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8a0b, 0xd00a8a0b, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, ++ {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010}, ++ {0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, ++ {0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, ++ {0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210}, ++ {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce}, ++ {0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c}, ++ {0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444}, ++ {0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, ++ {0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a23c, 0x13c88000, 0x13c88000, 0x13c88001, 0x13c88000, 0x13c88000}, ++ {0x0000a250, 0x001ff000, 0x001ff000, 0x0004a000, 0x0004a000, 0x0004a000}, ++ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, ++ {0x0000a388, 0x0c000000, 0x0c000000, 0x08000000, 0x0c000000, 0x0c000000}, ++ {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00007894, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000}, + }; + + static const u32 ar9280Common_9280_2[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020015 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00004024, 0x0000001f }, +- { 0x00004060, 0x00000000 }, +- { 0x00004064, 0x00000000 }, +- { 0x00007010, 0x00000033 }, +- { 0x00007034, 0x00000002 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x40000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x00008070, 0x00000000 }, +- { 0x000080c0, 0x2a80001a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0xffffffff }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c0, 0x00000000 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008264, 0x88a00010 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x0000829c, 0x00000000 }, +- { 0x00008300, 0x00000040 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000007 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00ff0000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x000107ff }, +- { 0x00008344, 0x00481043 }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xafa68e30 }, +- { 0x00009810, 0xfd14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x0000984c, 0x0040233c }, +- { 0x0000a84c, 0x0040233c }, +- { 0x00009854, 0x00000044 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x00009910, 0x01002310 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x04900000 }, +- { 0x0000a920, 0x04900000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009948, 0x9280c00a }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5f3ca3de }, +- { 0x00009958, 0x2108ecff }, +- { 0x00009940, 0x14750604 }, +- { 0x0000c95c, 0x004b6a8e }, +- { 0x00009970, 0x190fb515 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x006f0000 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099b4, 0x00000820 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000000 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099f0, 0x00000000 }, +- { 0x000099fc, 0x00001042 }, +- { 0x0000a208, 0x803e4788 }, +- { 0x0000a210, 0x4080a333 }, +- { 0x0000a214, 0x40206c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x01834061 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x000003b5 }, +- { 0x0000a22c, 0x233f7180 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a240, 0x38490a20 }, +- { 0x0000a244, 0x00007bb6 }, +- { 0x0000a248, 0x0fff3ffc }, +- { 0x0000a24c, 0x00000000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0cdbd380 }, +- { 0x0000a25c, 0x0f0f0f01 }, +- { 0x0000a260, 0xdfa91f01 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0e79e5c6 }, +- { 0x0000b26c, 0x0e79e5c6 }, +- { 0x0000d270, 0x00820820 }, +- { 0x0000a278, 0x1ce739ce }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x1ce739ce }, +- { 0x0000a398, 0x000001ce }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3c8, 0x00000246 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x1ce739ce }, +- { 0x0000a3e0, 0x000001ce }, +- { 0x0000a3e4, 0x00000000 }, +- { 0x0000a3e8, 0x18c43433 }, +- { 0x0000a3ec, 0x00f70081 }, +- { 0x00007800, 0x00040000 }, +- { 0x00007804, 0xdb005012 }, +- { 0x00007808, 0x04924914 }, +- { 0x0000780c, 0x21084210 }, +- { 0x00007810, 0x6d801300 }, +- { 0x00007818, 0x07e41000 }, +- { 0x00007824, 0x00040000 }, +- { 0x00007828, 0xdb005012 }, +- { 0x0000782c, 0x04924914 }, +- { 0x00007830, 0x21084210 }, +- { 0x00007834, 0x6d801300 }, +- { 0x0000783c, 0x07e40000 }, +- { 0x00007848, 0x00100000 }, +- { 0x0000784c, 0x773f0567 }, +- { 0x00007850, 0x54214514 }, +- { 0x00007854, 0x12035828 }, +- { 0x00007858, 0x9259269a }, +- { 0x00007860, 0x52802000 }, +- { 0x00007864, 0x0a8e370e }, +- { 0x00007868, 0xc0102850 }, +- { 0x0000786c, 0x812d4000 }, +- { 0x00007870, 0x807ec400 }, +- { 0x00007874, 0x001b6db0 }, +- { 0x00007878, 0x00376b63 }, +- { 0x0000787c, 0x06db6db6 }, +- { 0x00007880, 0x006d8000 }, +- { 0x00007884, 0xffeffffe }, +- { 0x00007888, 0xffeffffe }, +- { 0x0000788c, 0x00010000 }, +- { 0x00007890, 0x02060aeb }, +- { 0x00007898, 0x2a850160 }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020015}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00004024, 0x0000001f}, ++ {0x00004060, 0x00000000}, ++ {0x00004064, 0x00000000}, ++ {0x00007010, 0x00000033}, ++ {0x00007034, 0x00000002}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x40000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x00008070, 0x00000000}, ++ {0x000080c0, 0x2a80001a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0xffffffff}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c0, 0x00000000}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008264, 0x88a00010}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x0000829c, 0x00000000}, ++ {0x00008300, 0x00000040}, ++ {0x00008314, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000007}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00ff0000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x000107ff}, ++ {0x00008344, 0x00481043}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xafa68e30}, ++ {0x00009810, 0xfd14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x0000984c, 0x0040233c}, ++ {0x0000a84c, 0x0040233c}, ++ {0x00009854, 0x00000044}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x00009910, 0x01002310}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x04900000}, ++ {0x0000a920, 0x04900000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009948, 0x9280c00a}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5f3ca3de}, ++ {0x00009958, 0x2108ecff}, ++ {0x00009940, 0x14750604}, ++ {0x0000c95c, 0x004b6a8e}, ++ {0x00009970, 0x190fb515}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x006f0000}, ++ {0x000099b0, 0x03051000}, ++ {0x000099b4, 0x00000820}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000000}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099f0, 0x00000000}, ++ {0x000099fc, 0x00001042}, ++ {0x0000a208, 0x803e4788}, ++ {0x0000a210, 0x4080a333}, ++ {0x0000a214, 0x40206c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x01834061}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x000003b5}, ++ {0x0000a22c, 0x233f7180}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a240, 0x38490a20}, ++ {0x0000a244, 0x00007bb6}, ++ {0x0000a248, 0x0fff3ffc}, ++ {0x0000a24c, 0x00000000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0cdbd380}, ++ {0x0000a25c, 0x0f0f0f01}, ++ {0x0000a260, 0xdfa91f01}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0e79e5c6}, ++ {0x0000b26c, 0x0e79e5c6}, ++ {0x0000d270, 0x00820820}, ++ {0x0000a278, 0x1ce739ce}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x1ce739ce}, ++ {0x0000a398, 0x000001ce}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3c8, 0x00000246}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x1ce739ce}, ++ {0x0000a3e0, 0x000001ce}, ++ {0x0000a3e4, 0x00000000}, ++ {0x0000a3e8, 0x18c43433}, ++ {0x0000a3ec, 0x00f70081}, ++ {0x00007800, 0x00040000}, ++ {0x00007804, 0xdb005012}, ++ {0x00007808, 0x04924914}, ++ {0x0000780c, 0x21084210}, ++ {0x00007810, 0x6d801300}, ++ {0x00007818, 0x07e41000}, ++ {0x00007824, 0x00040000}, ++ {0x00007828, 0xdb005012}, ++ {0x0000782c, 0x04924914}, ++ {0x00007830, 0x21084210}, ++ {0x00007834, 0x6d801300}, ++ {0x0000783c, 0x07e40000}, ++ {0x00007848, 0x00100000}, ++ {0x0000784c, 0x773f0567}, ++ {0x00007850, 0x54214514}, ++ {0x00007854, 0x12035828}, ++ {0x00007858, 0x9259269a}, ++ {0x00007860, 0x52802000}, ++ {0x00007864, 0x0a8e370e}, ++ {0x00007868, 0xc0102850}, ++ {0x0000786c, 0x812d4000}, ++ {0x00007870, 0x807ec400}, ++ {0x00007874, 0x001b6db0}, ++ {0x00007878, 0x00376b63}, ++ {0x0000787c, 0x06db6db6}, ++ {0x00007880, 0x006d8000}, ++ {0x00007884, 0xffeffffe}, ++ {0x00007888, 0xffeffffe}, ++ {0x0000788c, 0x00010000}, ++ {0x00007890, 0x02060aeb}, ++ {0x00007898, 0x2a850160}, + }; + + static const u32 ar9280Modes_fast_clock_9280_2[][3] = { +- { 0x00001030, 0x00000268, 0x000004d0 }, +- { 0x00001070, 0x0000018c, 0x00000318 }, +- { 0x000010b0, 0x00000fd0, 0x00001fa0 }, +- { 0x00008014, 0x044c044c, 0x08980898 }, +- { 0x0000801c, 0x148ec02b, 0x148ec057 }, +- { 0x00008318, 0x000044c0, 0x00008980 }, +- { 0x00009820, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x01000f0f, 0x01000f0f }, +- { 0x00009828, 0x0b020001, 0x0b020001 }, +- { 0x00009834, 0x00000f0f, 0x00000f0f }, +- { 0x00009844, 0x03721821, 0x03721821 }, +- { 0x00009914, 0x00000898, 0x00001130 }, +- { 0x00009918, 0x0000000b, 0x00000016 }, ++ /* Addr 5G_HT20 5G_HT40 */ ++ {0x00001030, 0x00000268, 0x000004d0}, ++ {0x00001070, 0x0000018c, 0x00000318}, ++ {0x000010b0, 0x00000fd0, 0x00001fa0}, ++ {0x00008014, 0x044c044c, 0x08980898}, ++ {0x0000801c, 0x148ec02b, 0x148ec057}, ++ {0x00008318, 0x000044c0, 0x00008980}, ++ {0x00009820, 0x02020200, 0x02020200}, ++ {0x00009824, 0x01000f0f, 0x01000f0f}, ++ {0x00009828, 0x0b020001, 0x0b020001}, ++ {0x00009834, 0x00000f0f, 0x00000f0f}, ++ {0x00009844, 0x03721821, 0x03721821}, ++ {0x00009914, 0x00000898, 0x00001130}, ++ {0x00009918, 0x0000000b, 0x00000016}, + }; + + static const u32 ar9280Modes_backoff_23db_rxgain_9280_2[][6] = { +- { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, +- { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, +- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, +- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, +- { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, +- { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, +- { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, +- { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, +- { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, +- { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, +- { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, +- { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, +- { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, +- { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, +- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, +- { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, +- { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, +- { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, +- { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, +- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, +- { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, +- { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, +- { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, +- { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, +- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, +- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, +- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, +- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, +- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, +- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, +- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, +- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, +- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, +- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, +- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, +- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, +- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, +- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, +- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, +- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, +- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, +- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, +- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, +- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, +- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, +- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, +- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, +- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, +- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10 }, +- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b14, 0x00008b14, 0x00008b14 }, +- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b01, 0x00008b01, 0x00008b01 }, +- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b05, 0x00008b05, 0x00008b05 }, +- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b09, 0x00008b09, 0x00008b09 }, +- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b0d, 0x00008b0d, 0x00008b0d }, +- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b11, 0x00008b11, 0x00008b11 }, +- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008b15, 0x00008b15, 0x00008b15 }, +- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008b02, 0x00008b02, 0x00008b02 }, +- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008b06, 0x00008b06, 0x00008b06 }, +- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x00008b0a, 0x00008b0a, 0x00008b0a }, +- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00008b0e, 0x00008b0e, 0x00008b0e }, +- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00008b12, 0x00008b12, 0x00008b12 }, +- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008b16, 0x00008b16, 0x00008b16 }, +- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00008b03, 0x00008b03, 0x00008b03 }, +- { 0x00009afc, 0x0000b794, 0x0000b794, 0x00008b07, 0x00008b07, 0x00008b07 }, +- { 0x00009b00, 0x0000b798, 0x0000b798, 0x00008b0b, 0x00008b0b, 0x00008b0b }, +- { 0x00009b04, 0x0000d784, 0x0000d784, 0x00008b0f, 0x00008b0f, 0x00008b0f }, +- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00008b13, 0x00008b13, 0x00008b13 }, +- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008b17, 0x00008b17, 0x00008b17 }, +- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00008b23, 0x00008b23, 0x00008b23 }, +- { 0x00009b14, 0x0000f780, 0x0000f780, 0x00008b27, 0x00008b27, 0x00008b27 }, +- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00008b2b, 0x00008b2b, 0x00008b2b }, +- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x00008b2f, 0x00008b2f, 0x00008b2f }, +- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008b33, 0x00008b33, 0x00008b33 }, +- { 0x00009b24, 0x0000f790, 0x0000f790, 0x00008b37, 0x00008b37, 0x00008b37 }, +- { 0x00009b28, 0x0000f794, 0x0000f794, 0x00008b43, 0x00008b43, 0x00008b43 }, +- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008b47, 0x00008b47, 0x00008b47 }, +- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008b4b, 0x00008b4b, 0x00008b4b }, +- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008b4f, 0x00008b4f, 0x00008b4f }, +- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008b53, 0x00008b53, 0x00008b53 }, +- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008b57, 0x00008b57, 0x00008b57 }, +- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, +- { 0x00009848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050 }, +- { 0x0000a848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050 }, ++ {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, ++ {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, ++ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, ++ {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, ++ {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, ++ {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, ++ {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, ++ {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, ++ {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c}, ++ {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080}, ++ {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084}, ++ {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088}, ++ {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c}, ++ {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100}, ++ {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104}, ++ {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108}, ++ {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c}, ++ {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110}, ++ {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114}, ++ {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180}, ++ {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184}, ++ {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188}, ++ {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c}, ++ {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190}, ++ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, ++ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, ++ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, ++ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, ++ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, ++ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, ++ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, ++ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, ++ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, ++ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, ++ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, ++ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, ++ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, ++ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, ++ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, ++ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, ++ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, ++ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, ++ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, ++ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, ++ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, ++ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, ++ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, ++ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, ++ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10}, ++ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b14, 0x00008b14, 0x00008b14}, ++ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b01, 0x00008b01, 0x00008b01}, ++ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b05, 0x00008b05, 0x00008b05}, ++ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b09, 0x00008b09, 0x00008b09}, ++ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b0d, 0x00008b0d, 0x00008b0d}, ++ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b11, 0x00008b11, 0x00008b11}, ++ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008b15, 0x00008b15, 0x00008b15}, ++ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008b02, 0x00008b02, 0x00008b02}, ++ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008b06, 0x00008b06, 0x00008b06}, ++ {0x00009ae8, 0x0000b780, 0x0000b780, 0x00008b0a, 0x00008b0a, 0x00008b0a}, ++ {0x00009aec, 0x0000b784, 0x0000b784, 0x00008b0e, 0x00008b0e, 0x00008b0e}, ++ {0x00009af0, 0x0000b788, 0x0000b788, 0x00008b12, 0x00008b12, 0x00008b12}, ++ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008b16, 0x00008b16, 0x00008b16}, ++ {0x00009af8, 0x0000b790, 0x0000b790, 0x00008b03, 0x00008b03, 0x00008b03}, ++ {0x00009afc, 0x0000b794, 0x0000b794, 0x00008b07, 0x00008b07, 0x00008b07}, ++ {0x00009b00, 0x0000b798, 0x0000b798, 0x00008b0b, 0x00008b0b, 0x00008b0b}, ++ {0x00009b04, 0x0000d784, 0x0000d784, 0x00008b0f, 0x00008b0f, 0x00008b0f}, ++ {0x00009b08, 0x0000d788, 0x0000d788, 0x00008b13, 0x00008b13, 0x00008b13}, ++ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008b17, 0x00008b17, 0x00008b17}, ++ {0x00009b10, 0x0000d790, 0x0000d790, 0x00008b23, 0x00008b23, 0x00008b23}, ++ {0x00009b14, 0x0000f780, 0x0000f780, 0x00008b27, 0x00008b27, 0x00008b27}, ++ {0x00009b18, 0x0000f784, 0x0000f784, 0x00008b2b, 0x00008b2b, 0x00008b2b}, ++ {0x00009b1c, 0x0000f788, 0x0000f788, 0x00008b2f, 0x00008b2f, 0x00008b2f}, ++ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008b33, 0x00008b33, 0x00008b33}, ++ {0x00009b24, 0x0000f790, 0x0000f790, 0x00008b37, 0x00008b37, 0x00008b37}, ++ {0x00009b28, 0x0000f794, 0x0000f794, 0x00008b43, 0x00008b43, 0x00008b43}, ++ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008b47, 0x00008b47, 0x00008b47}, ++ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008b4b, 0x00008b4b, 0x00008b4b}, ++ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008b4f, 0x00008b4f, 0x00008b4f}, ++ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008b53, 0x00008b53, 0x00008b53}, ++ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008b57, 0x00008b57, 0x00008b57}, ++ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, ++ {0x00009848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, ++ {0x0000a848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, + }; + + static const u32 ar9280Modes_original_rxgain_9280_2[][6] = { +- { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, +- { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, +- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, +- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, +- { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, +- { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, +- { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, +- { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, +- { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, +- { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, +- { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, +- { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, +- { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, +- { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, +- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, +- { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, +- { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, +- { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, +- { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, +- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, +- { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, +- { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, +- { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, +- { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, +- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, +- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, +- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, +- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, +- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, +- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, +- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, +- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, +- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, +- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, +- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, +- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, +- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, +- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, +- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, +- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, +- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, +- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, +- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, +- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, +- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, +- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, +- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, +- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, +- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, +- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, +- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, +- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, +- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, +- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, +- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, +- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, +- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, +- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, +- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c }, +- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310 }, +- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384 }, +- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388 }, +- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324 }, +- { 0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704 }, +- { 0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4 }, +- { 0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8 }, +- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710 }, +- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714 }, +- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720 }, +- { 0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724 }, +- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728 }, +- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c }, +- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0 }, +- { 0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4 }, +- { 0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8 }, +- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0 }, +- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4 }, +- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8 }, +- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5 }, +- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9 }, +- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad }, +- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1 }, +- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5 }, +- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9 }, +- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5 }, +- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9 }, +- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1 }, +- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5 }, +- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9 }, +- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6 }, +- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca }, +- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce }, +- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2 }, +- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6 }, +- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3 }, +- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7 }, +- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb }, +- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf }, +- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7 }, +- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, +- { 0x00009848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063 }, +- { 0x0000a848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063 }, ++ {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, ++ {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, ++ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, ++ {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, ++ {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, ++ {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, ++ {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, ++ {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, ++ {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c}, ++ {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080}, ++ {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084}, ++ {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088}, ++ {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c}, ++ {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100}, ++ {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104}, ++ {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108}, ++ {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c}, ++ {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110}, ++ {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114}, ++ {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180}, ++ {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184}, ++ {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188}, ++ {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c}, ++ {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190}, ++ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, ++ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, ++ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, ++ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, ++ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, ++ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, ++ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, ++ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, ++ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, ++ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, ++ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, ++ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, ++ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, ++ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, ++ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, ++ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, ++ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, ++ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, ++ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, ++ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, ++ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, ++ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, ++ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, ++ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, ++ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80}, ++ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84}, ++ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88}, ++ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c}, ++ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90}, ++ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80}, ++ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84}, ++ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88}, ++ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c}, ++ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90}, ++ {0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c}, ++ {0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310}, ++ {0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384}, ++ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388}, ++ {0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324}, ++ {0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704}, ++ {0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4}, ++ {0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8}, ++ {0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710}, ++ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714}, ++ {0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720}, ++ {0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724}, ++ {0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728}, ++ {0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c}, ++ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0}, ++ {0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4}, ++ {0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8}, ++ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0}, ++ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4}, ++ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8}, ++ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5}, ++ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9}, ++ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad}, ++ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1}, ++ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5}, ++ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9}, ++ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5}, ++ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9}, ++ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1}, ++ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5}, ++ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9}, ++ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6}, ++ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca}, ++ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce}, ++ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2}, ++ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6}, ++ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3}, ++ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7}, ++ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb}, ++ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf}, ++ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7}, ++ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, ++ {0x00009848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063}, ++ {0x0000a848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063}, + }; + + static const u32 ar9280Modes_backoff_13db_rxgain_9280_2[][6] = { +- { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, +- { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, +- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, +- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, +- { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, +- { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, +- { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, +- { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, +- { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, +- { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, +- { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, +- { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, +- { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, +- { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, +- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, +- { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, +- { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, +- { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, +- { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, +- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, +- { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, +- { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, +- { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, +- { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, +- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, +- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, +- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, +- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, +- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, +- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, +- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, +- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, +- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, +- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, +- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, +- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, +- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, +- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, +- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, +- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, +- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, +- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, +- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, +- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, +- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, +- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, +- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, +- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, +- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, +- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, +- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, +- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, +- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, +- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, +- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, +- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, +- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, +- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, +- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x00009310, 0x00009310, 0x00009310 }, +- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009314, 0x00009314, 0x00009314 }, +- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009320, 0x00009320, 0x00009320 }, +- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009324, 0x00009324, 0x00009324 }, +- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009328, 0x00009328, 0x00009328 }, +- { 0x00009afc, 0x0000b794, 0x0000b794, 0x0000932c, 0x0000932c, 0x0000932c }, +- { 0x00009b00, 0x0000b798, 0x0000b798, 0x00009330, 0x00009330, 0x00009330 }, +- { 0x00009b04, 0x0000d784, 0x0000d784, 0x00009334, 0x00009334, 0x00009334 }, +- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009321, 0x00009321, 0x00009321 }, +- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009325, 0x00009325, 0x00009325 }, +- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009329, 0x00009329, 0x00009329 }, +- { 0x00009b14, 0x0000f780, 0x0000f780, 0x0000932d, 0x0000932d, 0x0000932d }, +- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009331, 0x00009331, 0x00009331 }, +- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x00009335, 0x00009335, 0x00009335 }, +- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x00009322, 0x00009322, 0x00009322 }, +- { 0x00009b24, 0x0000f790, 0x0000f790, 0x00009326, 0x00009326, 0x00009326 }, +- { 0x00009b28, 0x0000f794, 0x0000f794, 0x0000932a, 0x0000932a, 0x0000932a }, +- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x0000932e, 0x0000932e, 0x0000932e }, +- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00009332, 0x00009332, 0x00009332 }, +- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00009336, 0x00009336, 0x00009336 }, +- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00009323, 0x00009323, 0x00009323 }, +- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00009327, 0x00009327, 0x00009327 }, +- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x0000932b, 0x0000932b, 0x0000932b }, +- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x0000932f, 0x0000932f, 0x0000932f }, +- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00009333, 0x00009333, 0x00009333 }, +- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00009337, 0x00009337, 0x00009337 }, +- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00009343, 0x00009343, 0x00009343 }, +- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00009347, 0x00009347, 0x00009347 }, +- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x0000934b, 0x0000934b, 0x0000934b }, +- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x0000934f, 0x0000934f, 0x0000934f }, +- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00009353, 0x00009353, 0x00009353 }, +- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00009357, 0x00009357, 0x00009357 }, +- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, +- { 0x00009848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a }, +- { 0x0000a848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a }, ++ {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, ++ {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, ++ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, ++ {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, ++ {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, ++ {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, ++ {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, ++ {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, ++ {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c}, ++ {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080}, ++ {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084}, ++ {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088}, ++ {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c}, ++ {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100}, ++ {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104}, ++ {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108}, ++ {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c}, ++ {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110}, ++ {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114}, ++ {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180}, ++ {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184}, ++ {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188}, ++ {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c}, ++ {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190}, ++ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, ++ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, ++ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, ++ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, ++ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, ++ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, ++ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, ++ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, ++ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, ++ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, ++ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, ++ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, ++ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, ++ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, ++ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, ++ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, ++ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, ++ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, ++ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, ++ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, ++ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, ++ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, ++ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, ++ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, ++ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80}, ++ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84}, ++ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88}, ++ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c}, ++ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90}, ++ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80}, ++ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84}, ++ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88}, ++ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c}, ++ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90}, ++ {0x00009ae8, 0x0000b780, 0x0000b780, 0x00009310, 0x00009310, 0x00009310}, ++ {0x00009aec, 0x0000b784, 0x0000b784, 0x00009314, 0x00009314, 0x00009314}, ++ {0x00009af0, 0x0000b788, 0x0000b788, 0x00009320, 0x00009320, 0x00009320}, ++ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009324, 0x00009324, 0x00009324}, ++ {0x00009af8, 0x0000b790, 0x0000b790, 0x00009328, 0x00009328, 0x00009328}, ++ {0x00009afc, 0x0000b794, 0x0000b794, 0x0000932c, 0x0000932c, 0x0000932c}, ++ {0x00009b00, 0x0000b798, 0x0000b798, 0x00009330, 0x00009330, 0x00009330}, ++ {0x00009b04, 0x0000d784, 0x0000d784, 0x00009334, 0x00009334, 0x00009334}, ++ {0x00009b08, 0x0000d788, 0x0000d788, 0x00009321, 0x00009321, 0x00009321}, ++ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009325, 0x00009325, 0x00009325}, ++ {0x00009b10, 0x0000d790, 0x0000d790, 0x00009329, 0x00009329, 0x00009329}, ++ {0x00009b14, 0x0000f780, 0x0000f780, 0x0000932d, 0x0000932d, 0x0000932d}, ++ {0x00009b18, 0x0000f784, 0x0000f784, 0x00009331, 0x00009331, 0x00009331}, ++ {0x00009b1c, 0x0000f788, 0x0000f788, 0x00009335, 0x00009335, 0x00009335}, ++ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00009322, 0x00009322, 0x00009322}, ++ {0x00009b24, 0x0000f790, 0x0000f790, 0x00009326, 0x00009326, 0x00009326}, ++ {0x00009b28, 0x0000f794, 0x0000f794, 0x0000932a, 0x0000932a, 0x0000932a}, ++ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x0000932e, 0x0000932e, 0x0000932e}, ++ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00009332, 0x00009332, 0x00009332}, ++ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00009336, 0x00009336, 0x00009336}, ++ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00009323, 0x00009323, 0x00009323}, ++ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00009327, 0x00009327, 0x00009327}, ++ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x0000932b, 0x0000932b, 0x0000932b}, ++ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x0000932f, 0x0000932f, 0x0000932f}, ++ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00009333, 0x00009333, 0x00009333}, ++ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00009337, 0x00009337, 0x00009337}, ++ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00009343, 0x00009343, 0x00009343}, ++ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00009347, 0x00009347, 0x00009347}, ++ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x0000934b, 0x0000934b, 0x0000934b}, ++ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x0000934f, 0x0000934f, 0x0000934f}, ++ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00009353, 0x00009353, 0x00009353}, ++ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00009357, 0x00009357, 0x00009357}, ++ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, ++ {0x00009848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a}, ++ {0x0000a848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a}, + }; + + static const u32 ar9280Modes_high_power_tx_gain_9280_2[][6] = { +- { 0x0000a274, 0x0a19e652, 0x0a19e652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, +- { 0x0000a27c, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce }, +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00003002, 0x00003002, 0x00004002, 0x00004002, 0x00004002 }, +- { 0x0000a308, 0x00006004, 0x00006004, 0x00007008, 0x00007008, 0x00007008 }, +- { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000c010, 0x0000c010, 0x0000c010 }, +- { 0x0000a310, 0x0000e012, 0x0000e012, 0x00010012, 0x00010012, 0x00010012 }, +- { 0x0000a314, 0x00011014, 0x00011014, 0x00013014, 0x00013014, 0x00013014 }, +- { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001820a, 0x0001820a, 0x0001820a }, +- { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001b211, 0x0001b211, 0x0001b211 }, +- { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, +- { 0x0000a324, 0x00021092, 0x00021092, 0x00022411, 0x00022411, 0x00022411 }, +- { 0x0000a328, 0x0002510a, 0x0002510a, 0x00025413, 0x00025413, 0x00025413 }, +- { 0x0000a32c, 0x0002910c, 0x0002910c, 0x00029811, 0x00029811, 0x00029811 }, +- { 0x0000a330, 0x0002c18b, 0x0002c18b, 0x0002c813, 0x0002c813, 0x0002c813 }, +- { 0x0000a334, 0x0002f1cc, 0x0002f1cc, 0x00030a14, 0x00030a14, 0x00030a14 }, +- { 0x0000a338, 0x000321eb, 0x000321eb, 0x00035a50, 0x00035a50, 0x00035a50 }, +- { 0x0000a33c, 0x000341ec, 0x000341ec, 0x00039c4c, 0x00039c4c, 0x00039c4c }, +- { 0x0000a340, 0x000341ec, 0x000341ec, 0x0003de8a, 0x0003de8a, 0x0003de8a }, +- { 0x0000a344, 0x000341ec, 0x000341ec, 0x00042e92, 0x00042e92, 0x00042e92 }, +- { 0x0000a348, 0x000341ec, 0x000341ec, 0x00046ed2, 0x00046ed2, 0x00046ed2 }, +- { 0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5 }, +- { 0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54 }, +- { 0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5 }, +- { 0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff }, +- { 0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff }, +- { 0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000 }, +- { 0x00007840, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000 }, +- { 0x00007820, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480 }, +- { 0x00007844, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480 }, ++ {0x0000a274, 0x0a19e652, 0x0a19e652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652}, ++ {0x0000a27c, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce}, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00003002, 0x00003002, 0x00004002, 0x00004002, 0x00004002}, ++ {0x0000a308, 0x00006004, 0x00006004, 0x00007008, 0x00007008, 0x00007008}, ++ {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000c010, 0x0000c010, 0x0000c010}, ++ {0x0000a310, 0x0000e012, 0x0000e012, 0x00010012, 0x00010012, 0x00010012}, ++ {0x0000a314, 0x00011014, 0x00011014, 0x00013014, 0x00013014, 0x00013014}, ++ {0x0000a318, 0x0001504a, 0x0001504a, 0x0001820a, 0x0001820a, 0x0001820a}, ++ {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001b211, 0x0001b211, 0x0001b211}, ++ {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213}, ++ {0x0000a324, 0x00021092, 0x00021092, 0x00022411, 0x00022411, 0x00022411}, ++ {0x0000a328, 0x0002510a, 0x0002510a, 0x00025413, 0x00025413, 0x00025413}, ++ {0x0000a32c, 0x0002910c, 0x0002910c, 0x00029811, 0x00029811, 0x00029811}, ++ {0x0000a330, 0x0002c18b, 0x0002c18b, 0x0002c813, 0x0002c813, 0x0002c813}, ++ {0x0000a334, 0x0002f1cc, 0x0002f1cc, 0x00030a14, 0x00030a14, 0x00030a14}, ++ {0x0000a338, 0x000321eb, 0x000321eb, 0x00035a50, 0x00035a50, 0x00035a50}, ++ {0x0000a33c, 0x000341ec, 0x000341ec, 0x00039c4c, 0x00039c4c, 0x00039c4c}, ++ {0x0000a340, 0x000341ec, 0x000341ec, 0x0003de8a, 0x0003de8a, 0x0003de8a}, ++ {0x0000a344, 0x000341ec, 0x000341ec, 0x00042e92, 0x00042e92, 0x00042e92}, ++ {0x0000a348, 0x000341ec, 0x000341ec, 0x00046ed2, 0x00046ed2, 0x00046ed2}, ++ {0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5}, ++ {0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54}, ++ {0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5}, ++ {0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, ++ {0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, ++ {0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000}, ++ {0x00007840, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000}, ++ {0x00007820, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480}, ++ {0x00007844, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480}, + }; + + static const u32 ar9280Modes_original_tx_gain_9280_2[][6] = { +- { 0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, +- { 0x0000a27c, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce }, +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002 }, +- { 0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009 }, +- { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b }, +- { 0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012 }, +- { 0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048 }, +- { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a }, +- { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211 }, +- { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, +- { 0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b }, +- { 0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412 }, +- { 0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414 }, +- { 0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a }, +- { 0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649 }, +- { 0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b }, +- { 0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49 }, +- { 0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48 }, +- { 0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a }, +- { 0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88 }, +- { 0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a }, +- { 0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9 }, +- { 0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42 }, +- { 0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff }, +- { 0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff }, +- { 0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000 }, +- { 0x00007840, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000 }, +- { 0x00007820, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480 }, +- { 0x00007844, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480 }, ++ {0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652}, ++ {0x0000a27c, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce}, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002}, ++ {0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009}, ++ {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b}, ++ {0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012}, ++ {0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048}, ++ {0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a}, ++ {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211}, ++ {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213}, ++ {0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b}, ++ {0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412}, ++ {0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414}, ++ {0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a}, ++ {0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649}, ++ {0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b}, ++ {0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49}, ++ {0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48}, ++ {0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a}, ++ {0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88}, ++ {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a}, ++ {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9}, ++ {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42}, ++ {0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, ++ {0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, ++ {0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000}, ++ {0x00007840, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000}, ++ {0x00007820, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480}, ++ {0x00007844, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480}, + }; + + static const u32 ar9280PciePhy_clkreq_off_L1_9280[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffc }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffc}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + + static const u32 ar9280PciePhy_clkreq_always_on_L1_9280[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffd }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffd}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + +-/* AR9285 Revsion 10*/ + static const u32 ar9285Modes_9285[][6] = { +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, +- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, +- { 0x00009844, 0x0372161e, 0x0372161e, 0x03720020, 0x03720020, 0x037216a0 }, +- { 0x00009848, 0x00001066, 0x00001066, 0x0000004e, 0x0000004e, 0x00001059 }, +- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, +- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, +- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3136605e, 0x3136605e, 0x3139605e }, +- { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18 }, +- { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, +- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, +- { 0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1020, 0xdfbc1020, 0xdfbc1010 }, +- { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099b8, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c }, +- { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00009a00, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000 }, +- { 0x00009a04, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000 }, +- { 0x00009a08, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000 }, +- { 0x00009a0c, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000 }, +- { 0x00009a10, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000 }, +- { 0x00009a14, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000 }, +- { 0x00009a18, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000 }, +- { 0x00009a1c, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, +- { 0x00009a20, 0x00000000, 0x00000000, 0x00068114, 0x00068114, 0x00000000 }, +- { 0x00009a24, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000 }, +- { 0x00009a28, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000 }, +- { 0x00009a2c, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000 }, +- { 0x00009a30, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000 }, +- { 0x00009a34, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000 }, +- { 0x00009a38, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000 }, +- { 0x00009a3c, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000 }, +- { 0x00009a40, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000 }, +- { 0x00009a44, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000 }, +- { 0x00009a48, 0x00000000, 0x00000000, 0x00068284, 0x00068284, 0x00000000 }, +- { 0x00009a4c, 0x00000000, 0x00000000, 0x00068288, 0x00068288, 0x00000000 }, +- { 0x00009a50, 0x00000000, 0x00000000, 0x00068220, 0x00068220, 0x00000000 }, +- { 0x00009a54, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000 }, +- { 0x00009a58, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000 }, +- { 0x00009a5c, 0x00000000, 0x00000000, 0x00068304, 0x00068304, 0x00000000 }, +- { 0x00009a60, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000 }, +- { 0x00009a64, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000 }, +- { 0x00009a68, 0x00000000, 0x00000000, 0x00068380, 0x00068380, 0x00000000 }, +- { 0x00009a6c, 0x00000000, 0x00000000, 0x00068384, 0x00068384, 0x00000000 }, +- { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, +- { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, +- { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, +- { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, +- { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, +- { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, +- { 0x00009a88, 0x00000000, 0x00000000, 0x00068b04, 0x00068b04, 0x00000000 }, +- { 0x00009a8c, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000 }, +- { 0x00009a90, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000 }, +- { 0x00009a94, 0x00000000, 0x00000000, 0x00068b0c, 0x00068b0c, 0x00000000 }, +- { 0x00009a98, 0x00000000, 0x00000000, 0x00068b80, 0x00068b80, 0x00000000 }, +- { 0x00009a9c, 0x00000000, 0x00000000, 0x00068b84, 0x00068b84, 0x00000000 }, +- { 0x00009aa0, 0x00000000, 0x00000000, 0x00068b88, 0x00068b88, 0x00000000 }, +- { 0x00009aa4, 0x00000000, 0x00000000, 0x00068b8c, 0x00068b8c, 0x00000000 }, +- { 0x00009aa8, 0x00000000, 0x00000000, 0x000b8b90, 0x000b8b90, 0x00000000 }, +- { 0x00009aac, 0x00000000, 0x00000000, 0x000b8f80, 0x000b8f80, 0x00000000 }, +- { 0x00009ab0, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, +- { 0x00009ab4, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000 }, +- { 0x00009ab8, 0x00000000, 0x00000000, 0x000b8f8c, 0x000b8f8c, 0x00000000 }, +- { 0x00009abc, 0x00000000, 0x00000000, 0x000b8f90, 0x000b8f90, 0x00000000 }, +- { 0x00009ac0, 0x00000000, 0x00000000, 0x000bb30c, 0x000bb30c, 0x00000000 }, +- { 0x00009ac4, 0x00000000, 0x00000000, 0x000bb310, 0x000bb310, 0x00000000 }, +- { 0x00009ac8, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000 }, +- { 0x00009acc, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000 }, +- { 0x00009ad0, 0x00000000, 0x00000000, 0x000bb324, 0x000bb324, 0x00000000 }, +- { 0x00009ad4, 0x00000000, 0x00000000, 0x000bb704, 0x000bb704, 0x00000000 }, +- { 0x00009ad8, 0x00000000, 0x00000000, 0x000f96a4, 0x000f96a4, 0x00000000 }, +- { 0x00009adc, 0x00000000, 0x00000000, 0x000f96a8, 0x000f96a8, 0x00000000 }, +- { 0x00009ae0, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000 }, +- { 0x00009ae4, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000 }, +- { 0x00009ae8, 0x00000000, 0x00000000, 0x000f9720, 0x000f9720, 0x00000000 }, +- { 0x00009aec, 0x00000000, 0x00000000, 0x000f9724, 0x000f9724, 0x00000000 }, +- { 0x00009af0, 0x00000000, 0x00000000, 0x000f9728, 0x000f9728, 0x00000000 }, +- { 0x00009af4, 0x00000000, 0x00000000, 0x000f972c, 0x000f972c, 0x00000000 }, +- { 0x00009af8, 0x00000000, 0x00000000, 0x000f97a0, 0x000f97a0, 0x00000000 }, +- { 0x00009afc, 0x00000000, 0x00000000, 0x000f97a4, 0x000f97a4, 0x00000000 }, +- { 0x00009b00, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000 }, +- { 0x00009b04, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000 }, +- { 0x00009b08, 0x00000000, 0x00000000, 0x000fb7b4, 0x000fb7b4, 0x00000000 }, +- { 0x00009b0c, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000 }, +- { 0x00009b10, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000 }, +- { 0x00009b14, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000 }, +- { 0x00009b18, 0x00000000, 0x00000000, 0x000fb7ad, 0x000fb7ad, 0x00000000 }, +- { 0x00009b1c, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000 }, +- { 0x00009b20, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000 }, +- { 0x00009b24, 0x00000000, 0x00000000, 0x000fb7b9, 0x000fb7b9, 0x00000000 }, +- { 0x00009b28, 0x00000000, 0x00000000, 0x000fb7c5, 0x000fb7c5, 0x00000000 }, +- { 0x00009b2c, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000 }, +- { 0x00009b30, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000 }, +- { 0x00009b34, 0x00000000, 0x00000000, 0x000fb7d5, 0x000fb7d5, 0x00000000 }, +- { 0x00009b38, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000 }, +- { 0x00009b3c, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000 }, +- { 0x00009b40, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000 }, +- { 0x00009b44, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000 }, +- { 0x00009b48, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000 }, +- { 0x00009b4c, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000 }, +- { 0x00009b50, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000 }, +- { 0x00009b54, 0x00000000, 0x00000000, 0x000fb7c7, 0x000fb7c7, 0x00000000 }, +- { 0x00009b58, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000 }, +- { 0x00009b5c, 0x00000000, 0x00000000, 0x000fb7cf, 0x000fb7cf, 0x00000000 }, +- { 0x00009b60, 0x00000000, 0x00000000, 0x000fb7d7, 0x000fb7d7, 0x00000000 }, +- { 0x00009b64, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b68, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b6c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b70, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b74, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b78, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b7c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b80, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b84, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b88, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b8c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b90, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b94, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b98, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009b9c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009ba0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009ba4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009ba8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bac, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bb0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bb4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bb8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bbc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bc0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bc4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bc8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bcc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bd0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bd4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bd8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bdc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009be0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009be4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009be8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bec, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bf0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bf4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bf8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x00009bfc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, +- { 0x0000aa00, 0x00000000, 0x00000000, 0x0006801c, 0x0006801c, 0x00000000 }, +- { 0x0000aa04, 0x00000000, 0x00000000, 0x00068080, 0x00068080, 0x00000000 }, +- { 0x0000aa08, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000 }, +- { 0x0000aa0c, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000 }, +- { 0x0000aa10, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000 }, +- { 0x0000aa14, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000 }, +- { 0x0000aa18, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000 }, +- { 0x0000aa1c, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000 }, +- { 0x0000aa20, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000 }, +- { 0x0000aa24, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, +- { 0x0000aa28, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, +- { 0x0000aa2c, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000 }, +- { 0x0000aa30, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000 }, +- { 0x0000aa34, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000 }, +- { 0x0000aa38, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000 }, +- { 0x0000aa3c, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000 }, +- { 0x0000aa40, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000 }, +- { 0x0000aa44, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000 }, +- { 0x0000aa48, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000 }, +- { 0x0000aa4c, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000 }, +- { 0x0000aa50, 0x00000000, 0x00000000, 0x000681ac, 0x000681ac, 0x00000000 }, +- { 0x0000aa54, 0x00000000, 0x00000000, 0x0006821c, 0x0006821c, 0x00000000 }, +- { 0x0000aa58, 0x00000000, 0x00000000, 0x00068224, 0x00068224, 0x00000000 }, +- { 0x0000aa5c, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000 }, +- { 0x0000aa60, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000 }, +- { 0x0000aa64, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000 }, +- { 0x0000aa68, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000 }, +- { 0x0000aa6c, 0x00000000, 0x00000000, 0x00068310, 0x00068310, 0x00000000 }, +- { 0x0000aa70, 0x00000000, 0x00000000, 0x00068788, 0x00068788, 0x00000000 }, +- { 0x0000aa74, 0x00000000, 0x00000000, 0x0006878c, 0x0006878c, 0x00000000 }, +- { 0x0000aa78, 0x00000000, 0x00000000, 0x00068790, 0x00068790, 0x00000000 }, +- { 0x0000aa7c, 0x00000000, 0x00000000, 0x00068794, 0x00068794, 0x00000000 }, +- { 0x0000aa80, 0x00000000, 0x00000000, 0x00068798, 0x00068798, 0x00000000 }, +- { 0x0000aa84, 0x00000000, 0x00000000, 0x0006879c, 0x0006879c, 0x00000000 }, +- { 0x0000aa88, 0x00000000, 0x00000000, 0x00068b89, 0x00068b89, 0x00000000 }, +- { 0x0000aa8c, 0x00000000, 0x00000000, 0x00068b8d, 0x00068b8d, 0x00000000 }, +- { 0x0000aa90, 0x00000000, 0x00000000, 0x00068b91, 0x00068b91, 0x00000000 }, +- { 0x0000aa94, 0x00000000, 0x00000000, 0x00068b95, 0x00068b95, 0x00000000 }, +- { 0x0000aa98, 0x00000000, 0x00000000, 0x00068b99, 0x00068b99, 0x00000000 }, +- { 0x0000aa9c, 0x00000000, 0x00000000, 0x00068ba5, 0x00068ba5, 0x00000000 }, +- { 0x0000aaa0, 0x00000000, 0x00000000, 0x00068ba9, 0x00068ba9, 0x00000000 }, +- { 0x0000aaa4, 0x00000000, 0x00000000, 0x00068bad, 0x00068bad, 0x00000000 }, +- { 0x0000aaa8, 0x00000000, 0x00000000, 0x000b8b0c, 0x000b8b0c, 0x00000000 }, +- { 0x0000aaac, 0x00000000, 0x00000000, 0x000b8f10, 0x000b8f10, 0x00000000 }, +- { 0x0000aab0, 0x00000000, 0x00000000, 0x000b8f14, 0x000b8f14, 0x00000000 }, +- { 0x0000aab4, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, +- { 0x0000aab8, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, +- { 0x0000aabc, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000 }, +- { 0x0000aac0, 0x00000000, 0x00000000, 0x000bb380, 0x000bb380, 0x00000000 }, +- { 0x0000aac4, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000 }, +- { 0x0000aac8, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000 }, +- { 0x0000aacc, 0x00000000, 0x00000000, 0x000bb38c, 0x000bb38c, 0x00000000 }, +- { 0x0000aad0, 0x00000000, 0x00000000, 0x000bb394, 0x000bb394, 0x00000000 }, +- { 0x0000aad4, 0x00000000, 0x00000000, 0x000bb798, 0x000bb798, 0x00000000 }, +- { 0x0000aad8, 0x00000000, 0x00000000, 0x000f970c, 0x000f970c, 0x00000000 }, +- { 0x0000aadc, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000 }, +- { 0x0000aae0, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000 }, +- { 0x0000aae4, 0x00000000, 0x00000000, 0x000f9718, 0x000f9718, 0x00000000 }, +- { 0x0000aae8, 0x00000000, 0x00000000, 0x000f9705, 0x000f9705, 0x00000000 }, +- { 0x0000aaec, 0x00000000, 0x00000000, 0x000f9709, 0x000f9709, 0x00000000 }, +- { 0x0000aaf0, 0x00000000, 0x00000000, 0x000f970d, 0x000f970d, 0x00000000 }, +- { 0x0000aaf4, 0x00000000, 0x00000000, 0x000f9711, 0x000f9711, 0x00000000 }, +- { 0x0000aaf8, 0x00000000, 0x00000000, 0x000f9715, 0x000f9715, 0x00000000 }, +- { 0x0000aafc, 0x00000000, 0x00000000, 0x000f9719, 0x000f9719, 0x00000000 }, +- { 0x0000ab00, 0x00000000, 0x00000000, 0x000fb7a4, 0x000fb7a4, 0x00000000 }, +- { 0x0000ab04, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000 }, +- { 0x0000ab08, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000 }, +- { 0x0000ab0c, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000 }, +- { 0x0000ab10, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000 }, +- { 0x0000ab14, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000 }, +- { 0x0000ab18, 0x00000000, 0x00000000, 0x000fb7bc, 0x000fb7bc, 0x00000000 }, +- { 0x0000ab1c, 0x00000000, 0x00000000, 0x000fb7a1, 0x000fb7a1, 0x00000000 }, +- { 0x0000ab20, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000 }, +- { 0x0000ab24, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000 }, +- { 0x0000ab28, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000 }, +- { 0x0000ab2c, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000 }, +- { 0x0000ab30, 0x00000000, 0x00000000, 0x000fb7bd, 0x000fb7bd, 0x00000000 }, +- { 0x0000ab34, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000 }, +- { 0x0000ab38, 0x00000000, 0x00000000, 0x000fb7cd, 0x000fb7cd, 0x00000000 }, +- { 0x0000ab3c, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000 }, +- { 0x0000ab40, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000 }, +- { 0x0000ab44, 0x00000000, 0x00000000, 0x000fb7c2, 0x000fb7c2, 0x00000000 }, +- { 0x0000ab48, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000 }, +- { 0x0000ab4c, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000 }, +- { 0x0000ab50, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000 }, +- { 0x0000ab54, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000 }, +- { 0x0000ab58, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000 }, +- { 0x0000ab5c, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000 }, +- { 0x0000ab60, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000 }, +- { 0x0000ab64, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab68, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab6c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab70, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab74, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab78, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab7c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab80, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab84, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab88, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab8c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab90, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab94, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab98, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000ab9c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000aba0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000aba4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000aba8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abac, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abb0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abb4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abb8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abbc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abc0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abc4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abc8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abcc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abd0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abd4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abd8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abdc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abe0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abe4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abe8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abec, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abf0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abf4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abf8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000abfc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, +- { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, +- { 0x0000a20c, 0x00000014, 0x00000014, 0x00000000, 0x00000000, 0x0001f000 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a250, 0x001ff000, 0x001ff000, 0x001ca000, 0x001ca000, 0x001da000 }, +- { 0x0000a274, 0x0a81c652, 0x0a81c652, 0x0a820652, 0x0a820652, 0x0a82a652 }, +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00007201, 0x00007201, 0x00000000 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00010408, 0x00010408, 0x00000000 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x0001860a, 0x0001860a, 0x00000000 }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x00020818, 0x00020818, 0x00000000 }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x00024858, 0x00024858, 0x00000000 }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x00026859, 0x00026859, 0x00000000 }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x0002985b, 0x0002985b, 0x00000000 }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x0002c89a, 0x0002c89a, 0x00000000 }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x0002e89b, 0x0002e89b, 0x00000000 }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x0003089c, 0x0003089c, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0003289d, 0x0003289d, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x0003489e, 0x0003489e, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x000388de, 0x000388de, 0x00000000 }, +- { 0x0000a338, 0x00000000, 0x00000000, 0x0003b91e, 0x0003b91e, 0x00000000 }, +- { 0x0000a33c, 0x00000000, 0x00000000, 0x0003d95e, 0x0003d95e, 0x00000000 }, +- { 0x0000a340, 0x00000000, 0x00000000, 0x000419df, 0x000419df, 0x00000000 }, +- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, ++ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e}, ++ {0x00009844, 0x0372161e, 0x0372161e, 0x03720020, 0x03720020, 0x037216a0}, ++ {0x00009848, 0x00001066, 0x00001066, 0x0000004e, 0x0000004e, 0x00001059}, ++ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, ++ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, ++ {0x0000985c, 0x3139605e, 0x3139605e, 0x3136605e, 0x3136605e, 0x3139605e}, ++ {0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18}, ++ {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, ++ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, ++ {0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1020, 0xdfbc1020, 0xdfbc1010}, ++ {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099b8, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c}, ++ {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00009a00, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000}, ++ {0x00009a04, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000}, ++ {0x00009a08, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000}, ++ {0x00009a0c, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000}, ++ {0x00009a10, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000}, ++ {0x00009a14, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000}, ++ {0x00009a18, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000}, ++ {0x00009a1c, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000}, ++ {0x00009a20, 0x00000000, 0x00000000, 0x00068114, 0x00068114, 0x00000000}, ++ {0x00009a24, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000}, ++ {0x00009a28, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000}, ++ {0x00009a2c, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000}, ++ {0x00009a30, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000}, ++ {0x00009a34, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000}, ++ {0x00009a38, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000}, ++ {0x00009a3c, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000}, ++ {0x00009a40, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000}, ++ {0x00009a44, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000}, ++ {0x00009a48, 0x00000000, 0x00000000, 0x00068284, 0x00068284, 0x00000000}, ++ {0x00009a4c, 0x00000000, 0x00000000, 0x00068288, 0x00068288, 0x00000000}, ++ {0x00009a50, 0x00000000, 0x00000000, 0x00068220, 0x00068220, 0x00000000}, ++ {0x00009a54, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000}, ++ {0x00009a58, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000}, ++ {0x00009a5c, 0x00000000, 0x00000000, 0x00068304, 0x00068304, 0x00000000}, ++ {0x00009a60, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000}, ++ {0x00009a64, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000}, ++ {0x00009a68, 0x00000000, 0x00000000, 0x00068380, 0x00068380, 0x00000000}, ++ {0x00009a6c, 0x00000000, 0x00000000, 0x00068384, 0x00068384, 0x00000000}, ++ {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, ++ {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, ++ {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, ++ {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, ++ {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, ++ {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, ++ {0x00009a88, 0x00000000, 0x00000000, 0x00068b04, 0x00068b04, 0x00000000}, ++ {0x00009a8c, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000}, ++ {0x00009a90, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000}, ++ {0x00009a94, 0x00000000, 0x00000000, 0x00068b0c, 0x00068b0c, 0x00000000}, ++ {0x00009a98, 0x00000000, 0x00000000, 0x00068b80, 0x00068b80, 0x00000000}, ++ {0x00009a9c, 0x00000000, 0x00000000, 0x00068b84, 0x00068b84, 0x00000000}, ++ {0x00009aa0, 0x00000000, 0x00000000, 0x00068b88, 0x00068b88, 0x00000000}, ++ {0x00009aa4, 0x00000000, 0x00000000, 0x00068b8c, 0x00068b8c, 0x00000000}, ++ {0x00009aa8, 0x00000000, 0x00000000, 0x000b8b90, 0x000b8b90, 0x00000000}, ++ {0x00009aac, 0x00000000, 0x00000000, 0x000b8f80, 0x000b8f80, 0x00000000}, ++ {0x00009ab0, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000}, ++ {0x00009ab4, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000}, ++ {0x00009ab8, 0x00000000, 0x00000000, 0x000b8f8c, 0x000b8f8c, 0x00000000}, ++ {0x00009abc, 0x00000000, 0x00000000, 0x000b8f90, 0x000b8f90, 0x00000000}, ++ {0x00009ac0, 0x00000000, 0x00000000, 0x000bb30c, 0x000bb30c, 0x00000000}, ++ {0x00009ac4, 0x00000000, 0x00000000, 0x000bb310, 0x000bb310, 0x00000000}, ++ {0x00009ac8, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000}, ++ {0x00009acc, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000}, ++ {0x00009ad0, 0x00000000, 0x00000000, 0x000bb324, 0x000bb324, 0x00000000}, ++ {0x00009ad4, 0x00000000, 0x00000000, 0x000bb704, 0x000bb704, 0x00000000}, ++ {0x00009ad8, 0x00000000, 0x00000000, 0x000f96a4, 0x000f96a4, 0x00000000}, ++ {0x00009adc, 0x00000000, 0x00000000, 0x000f96a8, 0x000f96a8, 0x00000000}, ++ {0x00009ae0, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000}, ++ {0x00009ae4, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000}, ++ {0x00009ae8, 0x00000000, 0x00000000, 0x000f9720, 0x000f9720, 0x00000000}, ++ {0x00009aec, 0x00000000, 0x00000000, 0x000f9724, 0x000f9724, 0x00000000}, ++ {0x00009af0, 0x00000000, 0x00000000, 0x000f9728, 0x000f9728, 0x00000000}, ++ {0x00009af4, 0x00000000, 0x00000000, 0x000f972c, 0x000f972c, 0x00000000}, ++ {0x00009af8, 0x00000000, 0x00000000, 0x000f97a0, 0x000f97a0, 0x00000000}, ++ {0x00009afc, 0x00000000, 0x00000000, 0x000f97a4, 0x000f97a4, 0x00000000}, ++ {0x00009b00, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000}, ++ {0x00009b04, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000}, ++ {0x00009b08, 0x00000000, 0x00000000, 0x000fb7b4, 0x000fb7b4, 0x00000000}, ++ {0x00009b0c, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000}, ++ {0x00009b10, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000}, ++ {0x00009b14, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000}, ++ {0x00009b18, 0x00000000, 0x00000000, 0x000fb7ad, 0x000fb7ad, 0x00000000}, ++ {0x00009b1c, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000}, ++ {0x00009b20, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000}, ++ {0x00009b24, 0x00000000, 0x00000000, 0x000fb7b9, 0x000fb7b9, 0x00000000}, ++ {0x00009b28, 0x00000000, 0x00000000, 0x000fb7c5, 0x000fb7c5, 0x00000000}, ++ {0x00009b2c, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000}, ++ {0x00009b30, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000}, ++ {0x00009b34, 0x00000000, 0x00000000, 0x000fb7d5, 0x000fb7d5, 0x00000000}, ++ {0x00009b38, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000}, ++ {0x00009b3c, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000}, ++ {0x00009b40, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000}, ++ {0x00009b44, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000}, ++ {0x00009b48, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000}, ++ {0x00009b4c, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000}, ++ {0x00009b50, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000}, ++ {0x00009b54, 0x00000000, 0x00000000, 0x000fb7c7, 0x000fb7c7, 0x00000000}, ++ {0x00009b58, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000}, ++ {0x00009b5c, 0x00000000, 0x00000000, 0x000fb7cf, 0x000fb7cf, 0x00000000}, ++ {0x00009b60, 0x00000000, 0x00000000, 0x000fb7d7, 0x000fb7d7, 0x00000000}, ++ {0x00009b64, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b68, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b6c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b70, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b74, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b78, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b7c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b80, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b84, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b88, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b8c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b90, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b94, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b98, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009b9c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009ba0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009ba4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009ba8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bac, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bb0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bb4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bb8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bbc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bc0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bc4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bc8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bcc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bd0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bd4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bd8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bdc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009be0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009be4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009be8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bec, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bf0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bf4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bf8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x00009bfc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, ++ {0x0000aa00, 0x00000000, 0x00000000, 0x0006801c, 0x0006801c, 0x00000000}, ++ {0x0000aa04, 0x00000000, 0x00000000, 0x00068080, 0x00068080, 0x00000000}, ++ {0x0000aa08, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000}, ++ {0x0000aa0c, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000}, ++ {0x0000aa10, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000}, ++ {0x0000aa14, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000}, ++ {0x0000aa18, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000}, ++ {0x0000aa1c, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000}, ++ {0x0000aa20, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000}, ++ {0x0000aa24, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000}, ++ {0x0000aa28, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000}, ++ {0x0000aa2c, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000}, ++ {0x0000aa30, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000}, ++ {0x0000aa34, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000}, ++ {0x0000aa38, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000}, ++ {0x0000aa3c, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000}, ++ {0x0000aa40, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000}, ++ {0x0000aa44, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000}, ++ {0x0000aa48, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000}, ++ {0x0000aa4c, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000}, ++ {0x0000aa50, 0x00000000, 0x00000000, 0x000681ac, 0x000681ac, 0x00000000}, ++ {0x0000aa54, 0x00000000, 0x00000000, 0x0006821c, 0x0006821c, 0x00000000}, ++ {0x0000aa58, 0x00000000, 0x00000000, 0x00068224, 0x00068224, 0x00000000}, ++ {0x0000aa5c, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000}, ++ {0x0000aa60, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000}, ++ {0x0000aa64, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000}, ++ {0x0000aa68, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000}, ++ {0x0000aa6c, 0x00000000, 0x00000000, 0x00068310, 0x00068310, 0x00000000}, ++ {0x0000aa70, 0x00000000, 0x00000000, 0x00068788, 0x00068788, 0x00000000}, ++ {0x0000aa74, 0x00000000, 0x00000000, 0x0006878c, 0x0006878c, 0x00000000}, ++ {0x0000aa78, 0x00000000, 0x00000000, 0x00068790, 0x00068790, 0x00000000}, ++ {0x0000aa7c, 0x00000000, 0x00000000, 0x00068794, 0x00068794, 0x00000000}, ++ {0x0000aa80, 0x00000000, 0x00000000, 0x00068798, 0x00068798, 0x00000000}, ++ {0x0000aa84, 0x00000000, 0x00000000, 0x0006879c, 0x0006879c, 0x00000000}, ++ {0x0000aa88, 0x00000000, 0x00000000, 0x00068b89, 0x00068b89, 0x00000000}, ++ {0x0000aa8c, 0x00000000, 0x00000000, 0x00068b8d, 0x00068b8d, 0x00000000}, ++ {0x0000aa90, 0x00000000, 0x00000000, 0x00068b91, 0x00068b91, 0x00000000}, ++ {0x0000aa94, 0x00000000, 0x00000000, 0x00068b95, 0x00068b95, 0x00000000}, ++ {0x0000aa98, 0x00000000, 0x00000000, 0x00068b99, 0x00068b99, 0x00000000}, ++ {0x0000aa9c, 0x00000000, 0x00000000, 0x00068ba5, 0x00068ba5, 0x00000000}, ++ {0x0000aaa0, 0x00000000, 0x00000000, 0x00068ba9, 0x00068ba9, 0x00000000}, ++ {0x0000aaa4, 0x00000000, 0x00000000, 0x00068bad, 0x00068bad, 0x00000000}, ++ {0x0000aaa8, 0x00000000, 0x00000000, 0x000b8b0c, 0x000b8b0c, 0x00000000}, ++ {0x0000aaac, 0x00000000, 0x00000000, 0x000b8f10, 0x000b8f10, 0x00000000}, ++ {0x0000aab0, 0x00000000, 0x00000000, 0x000b8f14, 0x000b8f14, 0x00000000}, ++ {0x0000aab4, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000}, ++ {0x0000aab8, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000}, ++ {0x0000aabc, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000}, ++ {0x0000aac0, 0x00000000, 0x00000000, 0x000bb380, 0x000bb380, 0x00000000}, ++ {0x0000aac4, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000}, ++ {0x0000aac8, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000}, ++ {0x0000aacc, 0x00000000, 0x00000000, 0x000bb38c, 0x000bb38c, 0x00000000}, ++ {0x0000aad0, 0x00000000, 0x00000000, 0x000bb394, 0x000bb394, 0x00000000}, ++ {0x0000aad4, 0x00000000, 0x00000000, 0x000bb798, 0x000bb798, 0x00000000}, ++ {0x0000aad8, 0x00000000, 0x00000000, 0x000f970c, 0x000f970c, 0x00000000}, ++ {0x0000aadc, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000}, ++ {0x0000aae0, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000}, ++ {0x0000aae4, 0x00000000, 0x00000000, 0x000f9718, 0x000f9718, 0x00000000}, ++ {0x0000aae8, 0x00000000, 0x00000000, 0x000f9705, 0x000f9705, 0x00000000}, ++ {0x0000aaec, 0x00000000, 0x00000000, 0x000f9709, 0x000f9709, 0x00000000}, ++ {0x0000aaf0, 0x00000000, 0x00000000, 0x000f970d, 0x000f970d, 0x00000000}, ++ {0x0000aaf4, 0x00000000, 0x00000000, 0x000f9711, 0x000f9711, 0x00000000}, ++ {0x0000aaf8, 0x00000000, 0x00000000, 0x000f9715, 0x000f9715, 0x00000000}, ++ {0x0000aafc, 0x00000000, 0x00000000, 0x000f9719, 0x000f9719, 0x00000000}, ++ {0x0000ab00, 0x00000000, 0x00000000, 0x000fb7a4, 0x000fb7a4, 0x00000000}, ++ {0x0000ab04, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000}, ++ {0x0000ab08, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000}, ++ {0x0000ab0c, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000}, ++ {0x0000ab10, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000}, ++ {0x0000ab14, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000}, ++ {0x0000ab18, 0x00000000, 0x00000000, 0x000fb7bc, 0x000fb7bc, 0x00000000}, ++ {0x0000ab1c, 0x00000000, 0x00000000, 0x000fb7a1, 0x000fb7a1, 0x00000000}, ++ {0x0000ab20, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000}, ++ {0x0000ab24, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000}, ++ {0x0000ab28, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000}, ++ {0x0000ab2c, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000}, ++ {0x0000ab30, 0x00000000, 0x00000000, 0x000fb7bd, 0x000fb7bd, 0x00000000}, ++ {0x0000ab34, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000}, ++ {0x0000ab38, 0x00000000, 0x00000000, 0x000fb7cd, 0x000fb7cd, 0x00000000}, ++ {0x0000ab3c, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000}, ++ {0x0000ab40, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000}, ++ {0x0000ab44, 0x00000000, 0x00000000, 0x000fb7c2, 0x000fb7c2, 0x00000000}, ++ {0x0000ab48, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000}, ++ {0x0000ab4c, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000}, ++ {0x0000ab50, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000}, ++ {0x0000ab54, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000}, ++ {0x0000ab58, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000}, ++ {0x0000ab5c, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000}, ++ {0x0000ab60, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000}, ++ {0x0000ab64, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab68, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab6c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab70, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab74, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab78, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab7c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab80, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab84, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab88, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab8c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab90, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab94, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab98, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000ab9c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000aba0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000aba4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000aba8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abac, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abb0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abb4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abb8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abbc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abc0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abc4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abc8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abcc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abd0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abd4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abd8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abdc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abe0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abe4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abe8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abec, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abf0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abf4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abf8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000abfc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, ++ {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004}, ++ {0x0000a20c, 0x00000014, 0x00000014, 0x00000000, 0x00000000, 0x0001f000}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a250, 0x001ff000, 0x001ff000, 0x001ca000, 0x001ca000, 0x001da000}, ++ {0x0000a274, 0x0a81c652, 0x0a81c652, 0x0a820652, 0x0a820652, 0x0a82a652}, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00007201, 0x00007201, 0x00000000}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00010408, 0x00010408, 0x00000000}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x0001860a, 0x0001860a, 0x00000000}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x00020818, 0x00020818, 0x00000000}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x00024858, 0x00024858, 0x00000000}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x00026859, 0x00026859, 0x00000000}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x0002985b, 0x0002985b, 0x00000000}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x0002c89a, 0x0002c89a, 0x00000000}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x0002e89b, 0x0002e89b, 0x00000000}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x0003089c, 0x0003089c, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0003289d, 0x0003289d, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x0003489e, 0x0003489e, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x000388de, 0x000388de, 0x00000000}, ++ {0x0000a338, 0x00000000, 0x00000000, 0x0003b91e, 0x0003b91e, 0x00000000}, ++ {0x0000a33c, 0x00000000, 0x00000000, 0x0003d95e, 0x0003d95e, 0x00000000}, ++ {0x0000a340, 0x00000000, 0x00000000, 0x000419df, 0x000419df, 0x00000000}, ++ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, + }; + + static const u32 ar9285Common_9285[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020045 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00004024, 0x0000001f }, +- { 0x00004060, 0x00000000 }, +- { 0x00004064, 0x00000000 }, +- { 0x00007010, 0x00000031 }, +- { 0x00007034, 0x00000002 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x00000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x00008070, 0x00000000 }, +- { 0x000080c0, 0x2a80001a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008120, 0x08f04800 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0x00000000 }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c0, 0x00000000 }, +- { 0x000081d0, 0x00003210 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008264, 0x88a00010 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x0000829c, 0x00000000 }, +- { 0x00008300, 0x00000040 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000001 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00000000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x00010380 }, +- { 0x00008344, 0x00481043 }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xafe68e30 }, +- { 0x00009810, 0xfd14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x0000984c, 0x0040233c }, +- { 0x00009854, 0x00000044 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x00009910, 0x01002310 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x04900000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009940, 0x14750604 }, +- { 0x00009948, 0x9280c00a }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5f3ca3de }, +- { 0x00009958, 0x2108ecff }, +- { 0x00009968, 0x000003ce }, +- { 0x00009970, 0x1927b515 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x2def0a00 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099b4, 0x00000820 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000000 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099f0, 0x00000000 }, +- { 0x0000a208, 0x803e6788 }, +- { 0x0000a210, 0x4080a333 }, +- { 0x0000a214, 0x00206c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x01834061 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x000003b5 }, +- { 0x0000a22c, 0x00000000 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a244, 0x00000000 }, +- { 0x0000a248, 0xfffffffc }, +- { 0x0000a24c, 0x00000000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0ccb5380 }, +- { 0x0000a25c, 0x15151501 }, +- { 0x0000a260, 0xdfa90f01 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0ebae9e6 }, +- { 0x0000d270, 0x0d820820 }, +- { 0x0000a278, 0x39ce739c }, +- { 0x0000a27c, 0x050e039c }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x39ce739c }, +- { 0x0000a398, 0x0000039c }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x39ce739c }, +- { 0x0000a3e0, 0x0000039c }, +- { 0x0000a3e4, 0x00000000 }, +- { 0x0000a3e8, 0x18c43433 }, +- { 0x0000a3ec, 0x00f70081 }, +- { 0x00007800, 0x00140000 }, +- { 0x00007804, 0x0e4548d8 }, +- { 0x00007808, 0x54214514 }, +- { 0x0000780c, 0x02025820 }, +- { 0x00007810, 0x71c0d388 }, +- { 0x00007814, 0x924934a8 }, +- { 0x0000781c, 0x00000000 }, +- { 0x00007820, 0x00000c04 }, +- { 0x00007824, 0x00d86fff }, +- { 0x00007828, 0x26d2491b }, +- { 0x0000782c, 0x6e36d97b }, +- { 0x00007830, 0xedb6d96c }, +- { 0x00007834, 0x71400086 }, +- { 0x00007838, 0xfac68800 }, +- { 0x0000783c, 0x0001fffe }, +- { 0x00007840, 0xffeb1a20 }, +- { 0x00007844, 0x000c0db6 }, +- { 0x00007848, 0x6db61b6f }, +- { 0x0000784c, 0x6d9b66db }, +- { 0x00007850, 0x6d8c6dba }, +- { 0x00007854, 0x00040000 }, +- { 0x00007858, 0xdb003012 }, +- { 0x0000785c, 0x04924914 }, +- { 0x00007860, 0x21084210 }, +- { 0x00007864, 0xf7d7ffde }, +- { 0x00007868, 0xc2034080 }, +- { 0x0000786c, 0x48609eb4 }, +- { 0x00007870, 0x10142c00 }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020045}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00004024, 0x0000001f}, ++ {0x00004060, 0x00000000}, ++ {0x00004064, 0x00000000}, ++ {0x00007010, 0x00000031}, ++ {0x00007034, 0x00000002}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x00000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x00008070, 0x00000000}, ++ {0x000080c0, 0x2a80001a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008120, 0x08f04800}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0x00000000}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c0, 0x00000000}, ++ {0x000081d0, 0x00003210}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008264, 0x88a00010}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x0000829c, 0x00000000}, ++ {0x00008300, 0x00000040}, ++ {0x00008314, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000001}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00000000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x00010380}, ++ {0x00008344, 0x00481043}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xafe68e30}, ++ {0x00009810, 0xfd14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x0000984c, 0x0040233c}, ++ {0x00009854, 0x00000044}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x00009910, 0x01002310}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x04900000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009940, 0x14750604}, ++ {0x00009948, 0x9280c00a}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5f3ca3de}, ++ {0x00009958, 0x2108ecff}, ++ {0x00009968, 0x000003ce}, ++ {0x00009970, 0x1927b515}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x2def0a00}, ++ {0x000099b0, 0x03051000}, ++ {0x000099b4, 0x00000820}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000000}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099f0, 0x00000000}, ++ {0x0000a208, 0x803e6788}, ++ {0x0000a210, 0x4080a333}, ++ {0x0000a214, 0x00206c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x01834061}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x000003b5}, ++ {0x0000a22c, 0x00000000}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a244, 0x00000000}, ++ {0x0000a248, 0xfffffffc}, ++ {0x0000a24c, 0x00000000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0ccb5380}, ++ {0x0000a25c, 0x15151501}, ++ {0x0000a260, 0xdfa90f01}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0ebae9e6}, ++ {0x0000d270, 0x0d820820}, ++ {0x0000a278, 0x39ce739c}, ++ {0x0000a27c, 0x050e039c}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x39ce739c}, ++ {0x0000a398, 0x0000039c}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x39ce739c}, ++ {0x0000a3e0, 0x0000039c}, ++ {0x0000a3e4, 0x00000000}, ++ {0x0000a3e8, 0x18c43433}, ++ {0x0000a3ec, 0x00f70081}, ++ {0x00007800, 0x00140000}, ++ {0x00007804, 0x0e4548d8}, ++ {0x00007808, 0x54214514}, ++ {0x0000780c, 0x02025820}, ++ {0x00007810, 0x71c0d388}, ++ {0x00007814, 0x924934a8}, ++ {0x0000781c, 0x00000000}, ++ {0x00007820, 0x00000c04}, ++ {0x00007824, 0x00d86fff}, ++ {0x00007828, 0x26d2491b}, ++ {0x0000782c, 0x6e36d97b}, ++ {0x00007830, 0xedb6d96c}, ++ {0x00007834, 0x71400086}, ++ {0x00007838, 0xfac68800}, ++ {0x0000783c, 0x0001fffe}, ++ {0x00007840, 0xffeb1a20}, ++ {0x00007844, 0x000c0db6}, ++ {0x00007848, 0x6db61b6f}, ++ {0x0000784c, 0x6d9b66db}, ++ {0x00007850, 0x6d8c6dba}, ++ {0x00007854, 0x00040000}, ++ {0x00007858, 0xdb003012}, ++ {0x0000785c, 0x04924914}, ++ {0x00007860, 0x21084210}, ++ {0x00007864, 0xf7d7ffde}, ++ {0x00007868, 0xc2034080}, ++ {0x0000786c, 0x48609eb4}, ++ {0x00007870, 0x10142c00}, + }; + + static const u32 ar9285PciePhy_clkreq_always_on_L1_9285[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffd }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffd}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + + static const u32 ar9285PciePhy_clkreq_off_L1_9285[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffc }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffc}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + +-/* AR9285 v1_2 PCI Register Writes. Created: 04/13/09 */ + static const u32 ar9285Modes_9285_1_2[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, +- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, +- { 0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0 }, +- { 0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, +- { 0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, +- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, +- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, +- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, +- { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18 }, +- { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, +- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, +- { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010 }, +- { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c }, +- { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, +- { 0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, +- { 0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, +- { 0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, +- { 0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, +- { 0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, +- { 0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, +- { 0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, +- { 0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, +- { 0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, +- { 0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, +- { 0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, +- { 0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, +- { 0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, +- { 0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, +- { 0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, +- { 0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, +- { 0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, +- { 0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, +- { 0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, +- { 0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, +- { 0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, +- { 0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, +- { 0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, +- { 0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, +- { 0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, +- { 0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, +- { 0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, +- { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, +- { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, +- { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, +- { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, +- { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, +- { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, +- { 0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, +- { 0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, +- { 0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, +- { 0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, +- { 0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, +- { 0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, +- { 0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, +- { 0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, +- { 0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, +- { 0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, +- { 0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, +- { 0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, +- { 0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, +- { 0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, +- { 0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, +- { 0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, +- { 0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, +- { 0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, +- { 0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, +- { 0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, +- { 0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, +- { 0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, +- { 0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, +- { 0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, +- { 0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, +- { 0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, +- { 0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, +- { 0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, +- { 0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, +- { 0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, +- { 0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, +- { 0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, +- { 0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, +- { 0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, +- { 0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, +- { 0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, +- { 0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, +- { 0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, +- { 0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, +- { 0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, +- { 0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, +- { 0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, +- { 0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, +- { 0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, +- { 0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, +- { 0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, +- { 0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, +- { 0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, +- { 0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, +- { 0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, +- { 0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, +- { 0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, +- { 0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, +- { 0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, +- { 0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, +- { 0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, +- { 0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, +- { 0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, +- { 0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, +- { 0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, +- { 0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, +- { 0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, +- { 0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, +- { 0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, +- { 0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, +- { 0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, +- { 0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, +- { 0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, +- { 0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, +- { 0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, +- { 0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, +- { 0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, +- { 0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, +- { 0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, +- { 0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, +- { 0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, +- { 0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, +- { 0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, +- { 0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, +- { 0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, +- { 0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, +- { 0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, +- { 0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, +- { 0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, +- { 0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, +- { 0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, +- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, +- { 0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, +- { 0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, +- { 0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, +- { 0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, +- { 0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, +- { 0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, +- { 0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, +- { 0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, +- { 0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, +- { 0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, +- { 0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, +- { 0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, +- { 0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, +- { 0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, +- { 0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, +- { 0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, +- { 0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, +- { 0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, +- { 0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, +- { 0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, +- { 0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, +- { 0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, +- { 0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, +- { 0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, +- { 0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, +- { 0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, +- { 0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, +- { 0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, +- { 0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, +- { 0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, +- { 0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, +- { 0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, +- { 0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, +- { 0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, +- { 0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, +- { 0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, +- { 0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, +- { 0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, +- { 0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, +- { 0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, +- { 0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, +- { 0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, +- { 0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, +- { 0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, +- { 0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, +- { 0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, +- { 0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, +- { 0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, +- { 0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, +- { 0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, +- { 0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, +- { 0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, +- { 0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, +- { 0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, +- { 0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, +- { 0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, +- { 0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, +- { 0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, +- { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, +- { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000 }, +- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, ++ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e}, ++ {0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0}, ++ {0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, ++ {0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, ++ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, ++ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, ++ {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e}, ++ {0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18}, ++ {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, ++ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, ++ {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010}, ++ {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c}, ++ {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, ++ {0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, ++ {0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, ++ {0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, ++ {0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, ++ {0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, ++ {0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, ++ {0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, ++ {0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, ++ {0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, ++ {0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, ++ {0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, ++ {0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, ++ {0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, ++ {0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, ++ {0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, ++ {0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, ++ {0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, ++ {0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, ++ {0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, ++ {0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, ++ {0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, ++ {0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, ++ {0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, ++ {0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, ++ {0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, ++ {0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, ++ {0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, ++ {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, ++ {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, ++ {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, ++ {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, ++ {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, ++ {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, ++ {0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, ++ {0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, ++ {0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, ++ {0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, ++ {0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, ++ {0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, ++ {0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, ++ {0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, ++ {0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, ++ {0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, ++ {0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, ++ {0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, ++ {0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, ++ {0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, ++ {0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, ++ {0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, ++ {0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, ++ {0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, ++ {0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, ++ {0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, ++ {0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, ++ {0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, ++ {0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, ++ {0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, ++ {0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, ++ {0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, ++ {0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, ++ {0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, ++ {0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, ++ {0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, ++ {0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, ++ {0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, ++ {0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, ++ {0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, ++ {0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, ++ {0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, ++ {0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, ++ {0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, ++ {0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, ++ {0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, ++ {0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, ++ {0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, ++ {0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, ++ {0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, ++ {0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, ++ {0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, ++ {0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, ++ {0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, ++ {0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, ++ {0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, ++ {0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, ++ {0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, ++ {0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, ++ {0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, ++ {0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, ++ {0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, ++ {0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, ++ {0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, ++ {0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, ++ {0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, ++ {0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, ++ {0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, ++ {0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, ++ {0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, ++ {0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, ++ {0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, ++ {0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, ++ {0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, ++ {0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, ++ {0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, ++ {0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, ++ {0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, ++ {0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, ++ {0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, ++ {0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, ++ {0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, ++ {0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, ++ {0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, ++ {0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, ++ {0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, ++ {0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, ++ {0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, ++ {0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, ++ {0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, ++ {0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, ++ {0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, ++ {0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, ++ {0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, ++ {0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, ++ {0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, ++ {0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, ++ {0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, ++ {0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, ++ {0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, ++ {0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, ++ {0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, ++ {0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, ++ {0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, ++ {0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, ++ {0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, ++ {0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, ++ {0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, ++ {0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, ++ {0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, ++ {0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, ++ {0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, ++ {0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, ++ {0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, ++ {0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, ++ {0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, ++ {0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, ++ {0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, ++ {0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, ++ {0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, ++ {0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, ++ {0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, ++ {0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, ++ {0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, ++ {0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, ++ {0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, ++ {0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, ++ {0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, ++ {0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, ++ {0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, ++ {0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, ++ {0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, ++ {0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, ++ {0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, ++ {0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, ++ {0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, ++ {0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, ++ {0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, ++ {0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, ++ {0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, ++ {0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, ++ {0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, ++ {0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, ++ {0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, ++ {0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, ++ {0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, ++ {0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, ++ {0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, ++ {0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, ++ {0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, ++ {0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004}, ++ {0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, ++ {0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000}, ++ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, + }; + + static const u32 ar9285Common_9285_1_2[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020045 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00004024, 0x0000001f }, +- { 0x00004060, 0x00000000 }, +- { 0x00004064, 0x00000000 }, +- { 0x00007010, 0x00000031 }, +- { 0x00007034, 0x00000002 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x00000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x00008070, 0x00000000 }, +- { 0x000080c0, 0x2a80001a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008120, 0x08f04810 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0xffffffff }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c0, 0x00000000 }, +- { 0x000081d0, 0x0000320a }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008264, 0x88a00010 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x0000829c, 0x00000000 }, +- { 0x00008300, 0x00000040 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000001 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00ff0000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x00010380 }, +- { 0x00008344, 0x00481043 }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xafe68e30 }, +- { 0x00009810, 0xfd14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x0000984c, 0x0040233c }, +- { 0x00009854, 0x00000044 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x00009910, 0x01002310 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x04900000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009940, 0x14750604 }, +- { 0x00009948, 0x9280c00a }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5f3ca3de }, +- { 0x00009958, 0x2108ecff }, +- { 0x00009968, 0x000003ce }, +- { 0x00009970, 0x192bb514 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x2def0400 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099b4, 0x00000820 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000000 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099f0, 0x00000000 }, +- { 0x0000a208, 0x803e68c8 }, +- { 0x0000a210, 0x4080a333 }, +- { 0x0000a214, 0x00206c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x01834061 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x000003b5 }, +- { 0x0000a22c, 0x00000000 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a244, 0x00000000 }, +- { 0x0000a248, 0xfffffffc }, +- { 0x0000a24c, 0x00000000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0ccb5380 }, +- { 0x0000a25c, 0x15151501 }, +- { 0x0000a260, 0xdfa90f01 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0ebae9e6 }, +- { 0x0000d270, 0x0d820820 }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3e4, 0x00000000 }, +- { 0x0000a3e8, 0x18c43433 }, +- { 0x0000a3ec, 0x00f70081 }, +- { 0x00007800, 0x00140000 }, +- { 0x00007804, 0x0e4548d8 }, +- { 0x00007808, 0x54214514 }, +- { 0x0000780c, 0x02025830 }, +- { 0x00007810, 0x71c0d388 }, +- { 0x0000781c, 0x00000000 }, +- { 0x00007824, 0x00d86fff }, +- { 0x0000782c, 0x6e36d97b }, +- { 0x00007834, 0x71400087 }, +- { 0x00007844, 0x000c0db6 }, +- { 0x00007848, 0x6db6246f }, +- { 0x0000784c, 0x6d9b66db }, +- { 0x00007850, 0x6d8c6dba }, +- { 0x00007854, 0x00040000 }, +- { 0x00007858, 0xdb003012 }, +- { 0x0000785c, 0x04924914 }, +- { 0x00007860, 0x21084210 }, +- { 0x00007864, 0xf7d7ffde }, +- { 0x00007868, 0xc2034080 }, +- { 0x00007870, 0x10142c00 }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020045}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00004024, 0x0000001f}, ++ {0x00004060, 0x00000000}, ++ {0x00004064, 0x00000000}, ++ {0x00007010, 0x00000031}, ++ {0x00007034, 0x00000002}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x00000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x00008070, 0x00000000}, ++ {0x000080c0, 0x2a80001a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008120, 0x08f04810}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0xffffffff}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c0, 0x00000000}, ++ {0x000081d0, 0x0000320a}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008264, 0x88a00010}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x0000829c, 0x00000000}, ++ {0x00008300, 0x00000040}, ++ {0x00008314, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000001}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00ff0000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x00010380}, ++ {0x00008344, 0x00481043}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xafe68e30}, ++ {0x00009810, 0xfd14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x0000984c, 0x0040233c}, ++ {0x00009854, 0x00000044}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x00009910, 0x01002310}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x04900000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009940, 0x14750604}, ++ {0x00009948, 0x9280c00a}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5f3ca3de}, ++ {0x00009958, 0x2108ecff}, ++ {0x00009968, 0x000003ce}, ++ {0x00009970, 0x192bb514}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x2def0400}, ++ {0x000099b0, 0x03051000}, ++ {0x000099b4, 0x00000820}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000000}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099f0, 0x00000000}, ++ {0x0000a208, 0x803e68c8}, ++ {0x0000a210, 0x4080a333}, ++ {0x0000a214, 0x00206c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x01834061}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x000003b5}, ++ {0x0000a22c, 0x00000000}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a244, 0x00000000}, ++ {0x0000a248, 0xfffffffc}, ++ {0x0000a24c, 0x00000000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0ccb5380}, ++ {0x0000a25c, 0x15151501}, ++ {0x0000a260, 0xdfa90f01}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0ebae9e6}, ++ {0x0000d270, 0x0d820820}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3e4, 0x00000000}, ++ {0x0000a3e8, 0x18c43433}, ++ {0x0000a3ec, 0x00f70081}, ++ {0x00007800, 0x00140000}, ++ {0x00007804, 0x0e4548d8}, ++ {0x00007808, 0x54214514}, ++ {0x0000780c, 0x02025830}, ++ {0x00007810, 0x71c0d388}, ++ {0x0000781c, 0x00000000}, ++ {0x00007824, 0x00d86fff}, ++ {0x0000782c, 0x6e36d97b}, ++ {0x00007834, 0x71400087}, ++ {0x00007844, 0x000c0db6}, ++ {0x00007848, 0x6db6246f}, ++ {0x0000784c, 0x6d9b66db}, ++ {0x00007850, 0x6d8c6dba}, ++ {0x00007854, 0x00040000}, ++ {0x00007858, 0xdb003012}, ++ {0x0000785c, 0x04924914}, ++ {0x00007860, 0x21084210}, ++ {0x00007864, 0xf7d7ffde}, ++ {0x00007868, 0xc2034080}, ++ {0x00007870, 0x10142c00}, + }; + + static const u32 ar9285Modes_high_power_tx_gain_9285_1_2[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000 }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000 }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000 }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000 }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000 }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000 }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000 }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000 }, +- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, +- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, +- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8 }, +- { 0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b }, +- { 0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e }, +- { 0x00007838, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803 }, +- { 0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe }, +- { 0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20 }, +- { 0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe }, +- { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652 }, +- { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, +- { 0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7 }, +- { 0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, +- { 0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, +- { 0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, +- { 0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000}, ++ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, ++ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, ++ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8}, ++ {0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b}, ++ {0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e}, ++ {0x00007838, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803}, ++ {0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe}, ++ {0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20}, ++ {0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe}, ++ {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652}, ++ {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, ++ {0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7}, ++ {0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, ++ {0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, ++ {0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, ++ {0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, + }; + + static const u32 ar9285Modes_original_tx_gain_9285_1_2[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000 }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000 }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000 }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000 }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000 }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000 }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000 }, +- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, +- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, +- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8 }, +- { 0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b }, +- { 0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e }, +- { 0x00007838, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801 }, +- { 0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe }, +- { 0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20 }, +- { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, +- { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, +- { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652 }, +- { 0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, +- { 0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c }, +- { 0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, +- { 0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, +- { 0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, +- { 0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000}, ++ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, ++ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, ++ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8}, ++ {0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b}, ++ {0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e}, ++ {0x00007838, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801}, ++ {0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe}, ++ {0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20}, ++ {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4}, ++ {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04}, ++ {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652}, ++ {0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, ++ {0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c}, ++ {0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, ++ {0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, ++ {0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, ++ {0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, + }; + + static const u32 ar9285Modes_XE2_0_normal_power[][6] = { +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000 }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000 }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000 }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000 }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000 }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000 }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000 }, +- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, +- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, +- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8 }, +- { 0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b }, +- { 0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6dbae }, +- { 0x00007838, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441 }, +- { 0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe }, +- { 0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c }, +- { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, +- { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, +- { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652 }, +- { 0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, +- { 0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c }, +- { 0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, +- { 0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, +- { 0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, +- { 0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000}, ++ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, ++ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, ++ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8}, ++ {0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b}, ++ {0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6dbae}, ++ {0x00007838, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441}, ++ {0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe}, ++ {0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c}, ++ {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4}, ++ {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04}, ++ {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652}, ++ {0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, ++ {0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c}, ++ {0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, ++ {0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, ++ {0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, ++ {0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, + }; + + static const u32 ar9285Modes_XE2_0_high_power[][6] = { +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000 }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000 }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000 }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000 }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000 }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000 }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000 }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000 }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000 }, +- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, +- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, +- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8 }, +- { 0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b }, +- { 0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e }, +- { 0x00007838, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443 }, +- { 0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe }, +- { 0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c }, +- { 0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe }, +- { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652 }, +- { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, +- { 0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7 }, +- { 0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, +- { 0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, +- { 0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, +- { 0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000}, ++ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, ++ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, ++ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8}, ++ {0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b}, ++ {0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e}, ++ {0x00007838, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443}, ++ {0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe}, ++ {0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c}, ++ {0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe}, ++ {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652}, ++ {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, ++ {0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7}, ++ {0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, ++ {0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, ++ {0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, ++ {0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, + }; + + static const u32 ar9285PciePhy_clkreq_always_on_L1_9285_1_2[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffd }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffd}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + + static const u32 ar9285PciePhy_clkreq_off_L1_9285_1_2[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffc }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffc}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + +-/* AR9287 Revision 10 */ + static const u32 ar9287Modes_9287_1_0[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, +- { 0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f }, +- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, +- { 0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a }, +- { 0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880 }, +- { 0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e }, +- { 0x00009828, 0x00000000, 0x00000000, 0x0a020001, 0x0a020001, 0x0a020001 }, +- { 0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e }, +- { 0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0 }, +- { 0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, +- { 0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, +- { 0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e }, +- { 0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18 }, +- { 0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, +- { 0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, +- { 0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010 }, +- { 0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210 }, +- { 0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce }, +- { 0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c }, +- { 0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, +- { 0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444 }, +- { 0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000 }, +- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, +- { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, ++ {0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, ++ {0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f}, ++ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, ++ {0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a}, ++ {0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880}, ++ {0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e}, ++ {0x00009828, 0x00000000, 0x00000000, 0x0a020001, 0x0a020001, 0x0a020001}, ++ {0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e}, ++ {0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0}, ++ {0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2}, ++ {0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, ++ {0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e}, ++ {0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18}, ++ {0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, ++ {0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, ++ {0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010}, ++ {0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, ++ {0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, ++ {0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210}, ++ {0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce}, ++ {0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c}, ++ {0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, ++ {0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444}, ++ {0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000}, ++ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, ++ {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + }; + + static const u32 ar9287Common_9287_1_0[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020015 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00004024, 0x0000001f }, +- { 0x00004060, 0x00000000 }, +- { 0x00004064, 0x00000000 }, +- { 0x00007010, 0x00000033 }, +- { 0x00007020, 0x00000000 }, +- { 0x00007034, 0x00000002 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x40000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x00008070, 0x00000000 }, +- { 0x000080c0, 0x2a80001a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0xffffffff }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x18487320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c0, 0x00000000 }, +- { 0x000081c4, 0x00000000 }, +- { 0x000081d4, 0x00000000 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008264, 0x88a00010 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x000000ff }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x0000829c, 0x00000000 }, +- { 0x00008300, 0x00000040 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000007 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00ff0000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x000107ff }, +- { 0x00008344, 0x01c81043 }, +- { 0x00008360, 0xffffffff }, +- { 0x00008364, 0xffffffff }, +- { 0x00008368, 0x00000000 }, +- { 0x00008370, 0x00000000 }, +- { 0x00008374, 0x000000ff }, +- { 0x00008378, 0x00000000 }, +- { 0x0000837c, 0x00000000 }, +- { 0x00008380, 0xffffffff }, +- { 0x00008384, 0xffffffff }, +- { 0x00008390, 0x0fffffff }, +- { 0x00008394, 0x0fffffff }, +- { 0x00008398, 0x00000000 }, +- { 0x0000839c, 0x00000000 }, +- { 0x000083a0, 0x00000000 }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xafe68e30 }, +- { 0x00009810, 0xfd14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x0000984c, 0x0040233c }, +- { 0x0000a84c, 0x0040233c }, +- { 0x00009854, 0x00000044 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x00009910, 0x10002310 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x04900000 }, +- { 0x0000a920, 0x04900000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009930, 0x00000000 }, +- { 0x0000a930, 0x00000000 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009948, 0x9280c00a }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5f3ca3de }, +- { 0x00009958, 0x0108ecff }, +- { 0x00009940, 0x14750604 }, +- { 0x0000c95c, 0x004b6a8e }, +- { 0x00009970, 0x990bb515 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x0c6f0000 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099b4, 0x00000820 }, +- { 0x000099c4, 0x06336f77 }, +- { 0x000099c8, 0x6af65329 }, +- { 0x000099cc, 0x08f186c8 }, +- { 0x000099d0, 0x00046384 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000000 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099f0, 0x00000000 }, +- { 0x000099fc, 0x00001042 }, +- { 0x0000a1f4, 0x00fffeff }, +- { 0x0000a1f8, 0x00f5f9ff }, +- { 0x0000a1fc, 0xb79f6427 }, +- { 0x0000a208, 0x803e4788 }, +- { 0x0000a210, 0x4080a333 }, +- { 0x0000a214, 0x40206c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x01834061 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x000003b5 }, +- { 0x0000a22c, 0x233f7180 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a23c, 0x13c889af }, +- { 0x0000a240, 0x38490a20 }, +- { 0x0000a244, 0x00000000 }, +- { 0x0000a248, 0xfffffffc }, +- { 0x0000a24c, 0x00000000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0cdbd380 }, +- { 0x0000a25c, 0x0f0f0f01 }, +- { 0x0000a260, 0xdfa91f01 }, +- { 0x0000a264, 0x00418a11 }, +- { 0x0000b264, 0x00418a11 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0e79e5c6 }, +- { 0x0000b26c, 0x0e79e5c6 }, +- { 0x0000d270, 0x00820820 }, +- { 0x0000a278, 0x1ce739ce }, +- { 0x0000a27c, 0x050701ce }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x1ce739ce }, +- { 0x0000a398, 0x000001ce }, +- { 0x0000b398, 0x000001ce }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3c8, 0x00000246 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x1ce739ce }, +- { 0x0000a3e0, 0x000001ce }, +- { 0x0000a3e4, 0x00000000 }, +- { 0x0000a3e8, 0x18c43433 }, +- { 0x0000a3ec, 0x00f70081 }, +- { 0x0000a3f0, 0x01036a1e }, +- { 0x0000a3f4, 0x00000000 }, +- { 0x0000b3f4, 0x00000000 }, +- { 0x0000a7d8, 0x00000001 }, +- { 0x00007800, 0x00000800 }, +- { 0x00007804, 0x6c35ffb0 }, +- { 0x00007808, 0x6db6c000 }, +- { 0x0000780c, 0x6db6cb30 }, +- { 0x00007810, 0x6db6cb6c }, +- { 0x00007814, 0x0501e200 }, +- { 0x00007818, 0x0094128d }, +- { 0x0000781c, 0x976ee392 }, +- { 0x00007820, 0xf75ff6fc }, +- { 0x00007824, 0x00040000 }, +- { 0x00007828, 0xdb003012 }, +- { 0x0000782c, 0x04924914 }, +- { 0x00007830, 0x21084210 }, +- { 0x00007834, 0x00140000 }, +- { 0x00007838, 0x0e4548d8 }, +- { 0x0000783c, 0x54214514 }, +- { 0x00007840, 0x02025820 }, +- { 0x00007844, 0x71c0d388 }, +- { 0x00007848, 0x934934a8 }, +- { 0x00007850, 0x00000000 }, +- { 0x00007854, 0x00000800 }, +- { 0x00007858, 0x6c35ffb0 }, +- { 0x0000785c, 0x6db6c000 }, +- { 0x00007860, 0x6db6cb2c }, +- { 0x00007864, 0x6db6cb6c }, +- { 0x00007868, 0x0501e200 }, +- { 0x0000786c, 0x0094128d }, +- { 0x00007870, 0x976ee392 }, +- { 0x00007874, 0xf75ff6fc }, +- { 0x00007878, 0x00040000 }, +- { 0x0000787c, 0xdb003012 }, +- { 0x00007880, 0x04924914 }, +- { 0x00007884, 0x21084210 }, +- { 0x00007888, 0x001b6db0 }, +- { 0x0000788c, 0x00376b63 }, +- { 0x00007890, 0x06db6db6 }, +- { 0x00007894, 0x006d8000 }, +- { 0x00007898, 0x48100000 }, +- { 0x0000789c, 0x00000000 }, +- { 0x000078a0, 0x08000000 }, +- { 0x000078a4, 0x0007ffd8 }, +- { 0x000078a8, 0x0007ffd8 }, +- { 0x000078ac, 0x001c0020 }, +- { 0x000078b0, 0x000611eb }, +- { 0x000078b4, 0x40008080 }, +- { 0x000078b8, 0x2a850160 }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020015}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00004024, 0x0000001f}, ++ {0x00004060, 0x00000000}, ++ {0x00004064, 0x00000000}, ++ {0x00007010, 0x00000033}, ++ {0x00007020, 0x00000000}, ++ {0x00007034, 0x00000002}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x40000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x00008070, 0x00000000}, ++ {0x000080c0, 0x2a80001a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0xffffffff}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x18487320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c0, 0x00000000}, ++ {0x000081c4, 0x00000000}, ++ {0x000081d4, 0x00000000}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008264, 0x88a00010}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x000000ff}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x0000829c, 0x00000000}, ++ {0x00008300, 0x00000040}, ++ {0x00008314, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000007}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00ff0000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x000107ff}, ++ {0x00008344, 0x01c81043}, ++ {0x00008360, 0xffffffff}, ++ {0x00008364, 0xffffffff}, ++ {0x00008368, 0x00000000}, ++ {0x00008370, 0x00000000}, ++ {0x00008374, 0x000000ff}, ++ {0x00008378, 0x00000000}, ++ {0x0000837c, 0x00000000}, ++ {0x00008380, 0xffffffff}, ++ {0x00008384, 0xffffffff}, ++ {0x00008390, 0x0fffffff}, ++ {0x00008394, 0x0fffffff}, ++ {0x00008398, 0x00000000}, ++ {0x0000839c, 0x00000000}, ++ {0x000083a0, 0x00000000}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xafe68e30}, ++ {0x00009810, 0xfd14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x0000984c, 0x0040233c}, ++ {0x0000a84c, 0x0040233c}, ++ {0x00009854, 0x00000044}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x00009910, 0x10002310}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x04900000}, ++ {0x0000a920, 0x04900000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009930, 0x00000000}, ++ {0x0000a930, 0x00000000}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009948, 0x9280c00a}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5f3ca3de}, ++ {0x00009958, 0x0108ecff}, ++ {0x00009940, 0x14750604}, ++ {0x0000c95c, 0x004b6a8e}, ++ {0x00009970, 0x990bb515}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x0c6f0000}, ++ {0x000099b0, 0x03051000}, ++ {0x000099b4, 0x00000820}, ++ {0x000099c4, 0x06336f77}, ++ {0x000099c8, 0x6af65329}, ++ {0x000099cc, 0x08f186c8}, ++ {0x000099d0, 0x00046384}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000000}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099f0, 0x00000000}, ++ {0x000099fc, 0x00001042}, ++ {0x0000a1f4, 0x00fffeff}, ++ {0x0000a1f8, 0x00f5f9ff}, ++ {0x0000a1fc, 0xb79f6427}, ++ {0x0000a208, 0x803e4788}, ++ {0x0000a210, 0x4080a333}, ++ {0x0000a214, 0x40206c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x01834061}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x000003b5}, ++ {0x0000a22c, 0x233f7180}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a23c, 0x13c889af}, ++ {0x0000a240, 0x38490a20}, ++ {0x0000a244, 0x00000000}, ++ {0x0000a248, 0xfffffffc}, ++ {0x0000a24c, 0x00000000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0cdbd380}, ++ {0x0000a25c, 0x0f0f0f01}, ++ {0x0000a260, 0xdfa91f01}, ++ {0x0000a264, 0x00418a11}, ++ {0x0000b264, 0x00418a11}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0e79e5c6}, ++ {0x0000b26c, 0x0e79e5c6}, ++ {0x0000d270, 0x00820820}, ++ {0x0000a278, 0x1ce739ce}, ++ {0x0000a27c, 0x050701ce}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x1ce739ce}, ++ {0x0000a398, 0x000001ce}, ++ {0x0000b398, 0x000001ce}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3c8, 0x00000246}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x1ce739ce}, ++ {0x0000a3e0, 0x000001ce}, ++ {0x0000a3e4, 0x00000000}, ++ {0x0000a3e8, 0x18c43433}, ++ {0x0000a3ec, 0x00f70081}, ++ {0x0000a3f0, 0x01036a1e}, ++ {0x0000a3f4, 0x00000000}, ++ {0x0000b3f4, 0x00000000}, ++ {0x0000a7d8, 0x00000001}, ++ {0x00007800, 0x00000800}, ++ {0x00007804, 0x6c35ffb0}, ++ {0x00007808, 0x6db6c000}, ++ {0x0000780c, 0x6db6cb30}, ++ {0x00007810, 0x6db6cb6c}, ++ {0x00007814, 0x0501e200}, ++ {0x00007818, 0x0094128d}, ++ {0x0000781c, 0x976ee392}, ++ {0x00007820, 0xf75ff6fc}, ++ {0x00007824, 0x00040000}, ++ {0x00007828, 0xdb003012}, ++ {0x0000782c, 0x04924914}, ++ {0x00007830, 0x21084210}, ++ {0x00007834, 0x00140000}, ++ {0x00007838, 0x0e4548d8}, ++ {0x0000783c, 0x54214514}, ++ {0x00007840, 0x02025820}, ++ {0x00007844, 0x71c0d388}, ++ {0x00007848, 0x934934a8}, ++ {0x00007850, 0x00000000}, ++ {0x00007854, 0x00000800}, ++ {0x00007858, 0x6c35ffb0}, ++ {0x0000785c, 0x6db6c000}, ++ {0x00007860, 0x6db6cb2c}, ++ {0x00007864, 0x6db6cb6c}, ++ {0x00007868, 0x0501e200}, ++ {0x0000786c, 0x0094128d}, ++ {0x00007870, 0x976ee392}, ++ {0x00007874, 0xf75ff6fc}, ++ {0x00007878, 0x00040000}, ++ {0x0000787c, 0xdb003012}, ++ {0x00007880, 0x04924914}, ++ {0x00007884, 0x21084210}, ++ {0x00007888, 0x001b6db0}, ++ {0x0000788c, 0x00376b63}, ++ {0x00007890, 0x06db6db6}, ++ {0x00007894, 0x006d8000}, ++ {0x00007898, 0x48100000}, ++ {0x0000789c, 0x00000000}, ++ {0x000078a0, 0x08000000}, ++ {0x000078a4, 0x0007ffd8}, ++ {0x000078a8, 0x0007ffd8}, ++ {0x000078ac, 0x001c0020}, ++ {0x000078b0, 0x000611eb}, ++ {0x000078b4, 0x40008080}, ++ {0x000078b8, 0x2a850160}, + }; + + static const u32 ar9287Modes_tx_gain_9287_1_0[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a }, +- { 0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c }, +- { 0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc }, +- { 0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4 }, +- { 0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc }, +- { 0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede }, +- { 0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e }, +- { 0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e }, +- { 0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e }, +- { 0x0000a780, 0x00000000, 0x00000000, 0x00000060, 0x00000060, 0x00000060 }, +- { 0x0000a784, 0x00000000, 0x00000000, 0x00004062, 0x00004062, 0x00004062 }, +- { 0x0000a788, 0x00000000, 0x00000000, 0x00008064, 0x00008064, 0x00008064 }, +- { 0x0000a78c, 0x00000000, 0x00000000, 0x0000c0a4, 0x0000c0a4, 0x0000c0a4 }, +- { 0x0000a790, 0x00000000, 0x00000000, 0x000100b0, 0x000100b0, 0x000100b0 }, +- { 0x0000a794, 0x00000000, 0x00000000, 0x000140b2, 0x000140b2, 0x000140b2 }, +- { 0x0000a798, 0x00000000, 0x00000000, 0x000180b4, 0x000180b4, 0x000180b4 }, +- { 0x0000a79c, 0x00000000, 0x00000000, 0x0001c0f4, 0x0001c0f4, 0x0001c0f4 }, +- { 0x0000a7a0, 0x00000000, 0x00000000, 0x00020134, 0x00020134, 0x00020134 }, +- { 0x0000a7a4, 0x00000000, 0x00000000, 0x000240fe, 0x000240fe, 0x000240fe }, +- { 0x0000a7a8, 0x00000000, 0x00000000, 0x0002813e, 0x0002813e, 0x0002813e }, +- { 0x0000a7ac, 0x00000000, 0x00000000, 0x0002c17e, 0x0002c17e, 0x0002c17e }, +- { 0x0000a7b0, 0x00000000, 0x00000000, 0x000301be, 0x000301be, 0x000301be }, +- { 0x0000a7b4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7b8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7bc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7c0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7c4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7c8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7cc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7d0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a7d4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, +- { 0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000 }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a}, ++ {0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c}, ++ {0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc}, ++ {0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4}, ++ {0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc}, ++ {0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede}, ++ {0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e}, ++ {0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e}, ++ {0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e}, ++ {0x0000a780, 0x00000000, 0x00000000, 0x00000060, 0x00000060, 0x00000060}, ++ {0x0000a784, 0x00000000, 0x00000000, 0x00004062, 0x00004062, 0x00004062}, ++ {0x0000a788, 0x00000000, 0x00000000, 0x00008064, 0x00008064, 0x00008064}, ++ {0x0000a78c, 0x00000000, 0x00000000, 0x0000c0a4, 0x0000c0a4, 0x0000c0a4}, ++ {0x0000a790, 0x00000000, 0x00000000, 0x000100b0, 0x000100b0, 0x000100b0}, ++ {0x0000a794, 0x00000000, 0x00000000, 0x000140b2, 0x000140b2, 0x000140b2}, ++ {0x0000a798, 0x00000000, 0x00000000, 0x000180b4, 0x000180b4, 0x000180b4}, ++ {0x0000a79c, 0x00000000, 0x00000000, 0x0001c0f4, 0x0001c0f4, 0x0001c0f4}, ++ {0x0000a7a0, 0x00000000, 0x00000000, 0x00020134, 0x00020134, 0x00020134}, ++ {0x0000a7a4, 0x00000000, 0x00000000, 0x000240fe, 0x000240fe, 0x000240fe}, ++ {0x0000a7a8, 0x00000000, 0x00000000, 0x0002813e, 0x0002813e, 0x0002813e}, ++ {0x0000a7ac, 0x00000000, 0x00000000, 0x0002c17e, 0x0002c17e, 0x0002c17e}, ++ {0x0000a7b0, 0x00000000, 0x00000000, 0x000301be, 0x000301be, 0x000301be}, ++ {0x0000a7b4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7b8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7bc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7c0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7c4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7c8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7cc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7d0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a7d4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, ++ {0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000}, + }; + +- + static const u32 ar9287Modes_rx_gain_9287_1_0[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, +- { 0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, +- { 0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, +- { 0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, +- { 0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, +- { 0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, +- { 0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, +- { 0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, +- { 0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, +- { 0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, +- { 0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, +- { 0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, +- { 0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, +- { 0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, +- { 0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, +- { 0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, +- { 0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, +- { 0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, +- { 0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, +- { 0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, +- { 0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, +- { 0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, +- { 0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, +- { 0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, +- { 0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, +- { 0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, +- { 0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, +- { 0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, +- { 0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, +- { 0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, +- { 0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, +- { 0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, +- { 0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, +- { 0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, +- { 0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, +- { 0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, +- { 0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, +- { 0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, +- { 0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, +- { 0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, +- { 0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, +- { 0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, +- { 0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, +- { 0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, +- { 0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, +- { 0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, +- { 0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, +- { 0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, +- { 0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, +- { 0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, +- { 0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, +- { 0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, +- { 0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, +- { 0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, +- { 0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, +- { 0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, +- { 0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, +- { 0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, +- { 0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, +- { 0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, +- { 0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, +- { 0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, +- { 0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, +- { 0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, +- { 0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, +- { 0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, +- { 0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, +- { 0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, +- { 0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, +- { 0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, +- { 0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, +- { 0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, +- { 0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, +- { 0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, +- { 0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, +- { 0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, +- { 0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, +- { 0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, +- { 0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, +- { 0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, +- { 0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, +- { 0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, +- { 0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, +- { 0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, +- { 0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, +- { 0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, +- { 0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, +- { 0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, +- { 0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, +- { 0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, +- { 0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, +- { 0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, +- { 0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, +- { 0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, +- { 0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, +- { 0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, +- { 0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, +- { 0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, +- { 0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, +- { 0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, +- { 0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, +- { 0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, +- { 0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, +- { 0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, +- { 0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, +- { 0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, +- { 0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, +- { 0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, +- { 0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, +- { 0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, +- { 0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, +- { 0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, +- { 0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, +- { 0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, +- { 0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, +- { 0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, +- { 0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, +- { 0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, +- { 0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, +- { 0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, +- { 0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, +- { 0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, +- { 0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, +- { 0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, +- { 0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, +- { 0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, +- { 0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, +- { 0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, +- { 0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, +- { 0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, +- { 0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, +- { 0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, +- { 0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, +- { 0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, +- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, +- { 0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, +- { 0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, +- { 0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, +- { 0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, +- { 0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, +- { 0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, +- { 0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, +- { 0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, +- { 0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, +- { 0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, +- { 0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, +- { 0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, +- { 0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, +- { 0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, +- { 0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, +- { 0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, +- { 0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, +- { 0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, +- { 0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, +- { 0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, +- { 0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, +- { 0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, +- { 0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, +- { 0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, +- { 0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, +- { 0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, +- { 0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, +- { 0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, +- { 0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, +- { 0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, +- { 0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, +- { 0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, +- { 0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, +- { 0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, +- { 0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, +- { 0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, +- { 0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, +- { 0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, +- { 0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, +- { 0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, +- { 0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, +- { 0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, +- { 0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, +- { 0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, +- { 0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, +- { 0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, +- { 0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, +- { 0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, +- { 0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, +- { 0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, +- { 0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, +- { 0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, +- { 0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, +- { 0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, +- { 0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, +- { 0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, +- { 0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, +- { 0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, +- { 0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, +- { 0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, +- { 0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, +- { 0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, +- { 0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, +- { 0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, +- { 0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, +- { 0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, +- { 0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, +- { 0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, +- { 0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, +- { 0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, +- { 0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, +- { 0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, +- { 0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, ++ {0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, ++ {0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, ++ {0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, ++ {0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, ++ {0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, ++ {0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, ++ {0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, ++ {0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, ++ {0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, ++ {0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, ++ {0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, ++ {0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, ++ {0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, ++ {0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, ++ {0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, ++ {0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, ++ {0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, ++ {0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, ++ {0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, ++ {0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, ++ {0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, ++ {0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, ++ {0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, ++ {0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, ++ {0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, ++ {0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, ++ {0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, ++ {0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, ++ {0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, ++ {0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, ++ {0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, ++ {0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, ++ {0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, ++ {0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, ++ {0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, ++ {0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, ++ {0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, ++ {0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, ++ {0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, ++ {0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, ++ {0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, ++ {0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, ++ {0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, ++ {0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, ++ {0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, ++ {0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, ++ {0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, ++ {0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, ++ {0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, ++ {0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, ++ {0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, ++ {0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, ++ {0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, ++ {0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, ++ {0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, ++ {0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, ++ {0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, ++ {0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, ++ {0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, ++ {0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, ++ {0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, ++ {0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, ++ {0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, ++ {0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, ++ {0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, ++ {0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, ++ {0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, ++ {0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, ++ {0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, ++ {0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, ++ {0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, ++ {0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, ++ {0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, ++ {0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, ++ {0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, ++ {0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, ++ {0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, ++ {0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, ++ {0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, ++ {0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, ++ {0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, ++ {0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, ++ {0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, ++ {0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, ++ {0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, ++ {0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, ++ {0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, ++ {0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, ++ {0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, ++ {0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, ++ {0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, ++ {0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, ++ {0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, ++ {0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, ++ {0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, ++ {0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, ++ {0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, ++ {0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, ++ {0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, ++ {0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, ++ {0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, ++ {0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, ++ {0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, ++ {0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, ++ {0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, ++ {0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, ++ {0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, ++ {0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, ++ {0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, ++ {0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, ++ {0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, ++ {0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, ++ {0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, ++ {0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, ++ {0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, ++ {0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, ++ {0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, ++ {0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, ++ {0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, ++ {0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, ++ {0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, ++ {0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, ++ {0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, ++ {0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, ++ {0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, ++ {0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, ++ {0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, ++ {0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, ++ {0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, ++ {0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, ++ {0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, ++ {0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, ++ {0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, ++ {0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, ++ {0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, ++ {0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, ++ {0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, ++ {0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, ++ {0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, ++ {0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, ++ {0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, ++ {0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, ++ {0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, ++ {0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, ++ {0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, ++ {0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, ++ {0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, ++ {0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, ++ {0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, ++ {0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, ++ {0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, ++ {0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, ++ {0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, ++ {0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, ++ {0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, ++ {0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, ++ {0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, ++ {0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, ++ {0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, ++ {0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, ++ {0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, ++ {0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, ++ {0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, ++ {0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, ++ {0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, ++ {0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, ++ {0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, ++ {0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, ++ {0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, ++ {0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, ++ {0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, ++ {0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, ++ {0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, ++ {0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, ++ {0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, ++ {0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, ++ {0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, ++ {0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, ++ {0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, ++ {0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, ++ {0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, ++ {0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, ++ {0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, ++ {0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, ++ {0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, ++ {0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, ++ {0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, ++ {0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, ++ {0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, ++ {0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, ++ {0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, ++ {0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, ++ {0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, ++ {0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, ++ {0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, ++ {0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, ++ {0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, ++ {0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, ++ {0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, ++ {0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, ++ {0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, ++ {0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, ++ {0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, ++ {0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, ++ {0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, ++ {0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, ++ {0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, ++ {0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, + }; + + static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_0[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffd }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffd}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + + static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_0[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffc }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffc}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + +-/* AR9287 Revision 11 */ +- + static const u32 ar9287Modes_9287_1_1[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, +- { 0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f }, +- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, +- { 0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a }, +- { 0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880 }, +- { 0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e }, +- { 0x00009828, 0x00000000, 0x00000000, 0x3a020001, 0x3a020001, 0x3a020001 }, +- { 0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e }, +- { 0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0 }, +- { 0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, +- { 0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, +- { 0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e }, +- { 0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18 }, +- { 0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, +- { 0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, +- { 0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010 }, +- { 0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, +- { 0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210 }, +- { 0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce }, +- { 0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c }, +- { 0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, +- { 0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444 }, +- { 0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000 }, +- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, +- { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, ++ {0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, ++ {0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f}, ++ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, ++ {0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a}, ++ {0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880}, ++ {0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e}, ++ {0x00009828, 0x00000000, 0x00000000, 0x3a020001, 0x3a020001, 0x3a020001}, ++ {0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e}, ++ {0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0}, ++ {0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2}, ++ {0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, ++ {0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e}, ++ {0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18}, ++ {0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, ++ {0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, ++ {0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010}, ++ {0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, ++ {0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, ++ {0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210}, ++ {0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce}, ++ {0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c}, ++ {0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, ++ {0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444}, ++ {0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000}, ++ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, ++ {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + }; + + static const u32 ar9287Common_9287_1_1[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020015 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00004024, 0x0000001f }, +- { 0x00004060, 0x00000000 }, +- { 0x00004064, 0x00000000 }, +- { 0x00007010, 0x00000033 }, +- { 0x00007020, 0x00000000 }, +- { 0x00007034, 0x00000002 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x40000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x00008070, 0x00000000 }, +- { 0x000080c0, 0x2a80001a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0xffffffff }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x18487320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c0, 0x00000000 }, +- { 0x000081c4, 0x00000000 }, +- { 0x000081d4, 0x00000000 }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008264, 0x88a00010 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x000000ff }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x0000829c, 0x00000000 }, +- { 0x00008300, 0x00000040 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000007 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00ff0000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x000107ff }, +- { 0x00008344, 0x01c81043 }, +- { 0x00008360, 0xffffffff }, +- { 0x00008364, 0xffffffff }, +- { 0x00008368, 0x00000000 }, +- { 0x00008370, 0x00000000 }, +- { 0x00008374, 0x000000ff }, +- { 0x00008378, 0x00000000 }, +- { 0x0000837c, 0x00000000 }, +- { 0x00008380, 0xffffffff }, +- { 0x00008384, 0xffffffff }, +- { 0x00008390, 0x0fffffff }, +- { 0x00008394, 0x0fffffff }, +- { 0x00008398, 0x00000000 }, +- { 0x0000839c, 0x00000000 }, +- { 0x000083a0, 0x00000000 }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xafe68e30 }, +- { 0x00009810, 0xfd14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x0000984c, 0x0040233c }, +- { 0x0000a84c, 0x0040233c }, +- { 0x00009854, 0x00000044 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x00009910, 0x10002310 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x04900000 }, +- { 0x0000a920, 0x04900000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009930, 0x00000000 }, +- { 0x0000a930, 0x00000000 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009948, 0x9280c00a }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5f3ca3de }, +- { 0x00009958, 0x0108ecff }, +- { 0x00009940, 0x14750604 }, +- { 0x0000c95c, 0x004b6a8e }, +- { 0x00009970, 0x990bb514 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x0c6f0000 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099b4, 0x00000820 }, +- { 0x000099c4, 0x06336f77 }, +- { 0x000099c8, 0x6af6532f }, +- { 0x000099cc, 0x08f186c8 }, +- { 0x000099d0, 0x00046384 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000000 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099f0, 0x00000000 }, +- { 0x000099fc, 0x00001042 }, +- { 0x0000a208, 0x803e4788 }, +- { 0x0000a210, 0x4080a333 }, +- { 0x0000a214, 0x40206c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x01834061 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x000003b5 }, +- { 0x0000a22c, 0x233f7180 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a23c, 0x13c889af }, +- { 0x0000a240, 0x38490a20 }, +- { 0x0000a244, 0x00000000 }, +- { 0x0000a248, 0xfffffffc }, +- { 0x0000a24c, 0x00000000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0cdbd380 }, +- { 0x0000a25c, 0x0f0f0f01 }, +- { 0x0000a260, 0xdfa91f01 }, +- { 0x0000a264, 0x00418a11 }, +- { 0x0000b264, 0x00418a11 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0e79e5c6 }, +- { 0x0000b26c, 0x0e79e5c6 }, +- { 0x0000d270, 0x00820820 }, +- { 0x0000a278, 0x1ce739ce }, +- { 0x0000a27c, 0x050701ce }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a394, 0x1ce739ce }, +- { 0x0000a398, 0x000001ce }, +- { 0x0000b398, 0x000001ce }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3c8, 0x00000246 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3dc, 0x1ce739ce }, +- { 0x0000a3e0, 0x000001ce }, +- { 0x0000a3e4, 0x00000000 }, +- { 0x0000a3e8, 0x18c43433 }, +- { 0x0000a3ec, 0x00f70081 }, +- { 0x0000a3f0, 0x01036a1e }, +- { 0x0000a3f4, 0x00000000 }, +- { 0x0000b3f4, 0x00000000 }, +- { 0x0000a7d8, 0x000003f1 }, +- { 0x00007800, 0x00000800 }, +- { 0x00007804, 0x6c35ffd2 }, +- { 0x00007808, 0x6db6c000 }, +- { 0x0000780c, 0x6db6cb30 }, +- { 0x00007810, 0x6db6cb6c }, +- { 0x00007814, 0x0501e200 }, +- { 0x00007818, 0x0094128d }, +- { 0x0000781c, 0x976ee392 }, +- { 0x00007820, 0xf75ff6fc }, +- { 0x00007824, 0x00040000 }, +- { 0x00007828, 0xdb003012 }, +- { 0x0000782c, 0x04924914 }, +- { 0x00007830, 0x21084210 }, +- { 0x00007834, 0x00140000 }, +- { 0x00007838, 0x0e4548d8 }, +- { 0x0000783c, 0x54214514 }, +- { 0x00007840, 0x02025830 }, +- { 0x00007844, 0x71c0d388 }, +- { 0x00007848, 0x934934a8 }, +- { 0x00007850, 0x00000000 }, +- { 0x00007854, 0x00000800 }, +- { 0x00007858, 0x6c35ffd2 }, +- { 0x0000785c, 0x6db6c000 }, +- { 0x00007860, 0x6db6cb30 }, +- { 0x00007864, 0x6db6cb6c }, +- { 0x00007868, 0x0501e200 }, +- { 0x0000786c, 0x0094128d }, +- { 0x00007870, 0x976ee392 }, +- { 0x00007874, 0xf75ff6fc }, +- { 0x00007878, 0x00040000 }, +- { 0x0000787c, 0xdb003012 }, +- { 0x00007880, 0x04924914 }, +- { 0x00007884, 0x21084210 }, +- { 0x00007888, 0x001b6db0 }, +- { 0x0000788c, 0x00376b63 }, +- { 0x00007890, 0x06db6db6 }, +- { 0x00007894, 0x006d8000 }, +- { 0x00007898, 0x48100000 }, +- { 0x0000789c, 0x00000000 }, +- { 0x000078a0, 0x08000000 }, +- { 0x000078a4, 0x0007ffd8 }, +- { 0x000078a8, 0x0007ffd8 }, +- { 0x000078ac, 0x001c0020 }, +- { 0x000078b0, 0x00060aeb }, +- { 0x000078b4, 0x40008080 }, +- { 0x000078b8, 0x2a850160 }, +-}; +- +-/* +- * For Japanese regulatory requirements, 2484 MHz requires the following three +- * registers be programmed differently from the channel between 2412 and +- * 2472 MHz. +- */ ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020015}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00004024, 0x0000001f}, ++ {0x00004060, 0x00000000}, ++ {0x00004064, 0x00000000}, ++ {0x00007010, 0x00000033}, ++ {0x00007020, 0x00000000}, ++ {0x00007034, 0x00000002}, ++ {0x00007038, 0x000004c2}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x40000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x00008070, 0x00000000}, ++ {0x000080c0, 0x2a80001a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0xffffffff}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x18487320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c0, 0x00000000}, ++ {0x000081c4, 0x00000000}, ++ {0x000081d4, 0x00000000}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008264, 0x88a00010}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x000000ff}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x0000829c, 0x00000000}, ++ {0x00008300, 0x00000040}, ++ {0x00008314, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000007}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00ff0000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x000107ff}, ++ {0x00008344, 0x01c81043}, ++ {0x00008360, 0xffffffff}, ++ {0x00008364, 0xffffffff}, ++ {0x00008368, 0x00000000}, ++ {0x00008370, 0x00000000}, ++ {0x00008374, 0x000000ff}, ++ {0x00008378, 0x00000000}, ++ {0x0000837c, 0x00000000}, ++ {0x00008380, 0xffffffff}, ++ {0x00008384, 0xffffffff}, ++ {0x00008390, 0x0fffffff}, ++ {0x00008394, 0x0fffffff}, ++ {0x00008398, 0x00000000}, ++ {0x0000839c, 0x00000000}, ++ {0x000083a0, 0x00000000}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xafe68e30}, ++ {0x00009810, 0xfd14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x0000984c, 0x0040233c}, ++ {0x0000a84c, 0x0040233c}, ++ {0x00009854, 0x00000044}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x00009910, 0x10002310}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x04900000}, ++ {0x0000a920, 0x04900000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009930, 0x00000000}, ++ {0x0000a930, 0x00000000}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009948, 0x9280c00a}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5f3ca3de}, ++ {0x00009958, 0x0108ecff}, ++ {0x00009940, 0x14750604}, ++ {0x0000c95c, 0x004b6a8e}, ++ {0x00009970, 0x990bb514}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x0c6f0000}, ++ {0x000099b0, 0x03051000}, ++ {0x000099b4, 0x00000820}, ++ {0x000099c4, 0x06336f77}, ++ {0x000099c8, 0x6af6532f}, ++ {0x000099cc, 0x08f186c8}, ++ {0x000099d0, 0x00046384}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000000}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099f0, 0x00000000}, ++ {0x000099fc, 0x00001042}, ++ {0x0000a208, 0x803e4788}, ++ {0x0000a210, 0x4080a333}, ++ {0x0000a214, 0x40206c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x01834061}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x000003b5}, ++ {0x0000a22c, 0x233f7180}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a23c, 0x13c889af}, ++ {0x0000a240, 0x38490a20}, ++ {0x0000a244, 0x00000000}, ++ {0x0000a248, 0xfffffffc}, ++ {0x0000a24c, 0x00000000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0cdbd380}, ++ {0x0000a25c, 0x0f0f0f01}, ++ {0x0000a260, 0xdfa91f01}, ++ {0x0000a264, 0x00418a11}, ++ {0x0000b264, 0x00418a11}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0e79e5c6}, ++ {0x0000b26c, 0x0e79e5c6}, ++ {0x0000d270, 0x00820820}, ++ {0x0000a278, 0x1ce739ce}, ++ {0x0000a27c, 0x050701ce}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a394, 0x1ce739ce}, ++ {0x0000a398, 0x000001ce}, ++ {0x0000b398, 0x000001ce}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3c8, 0x00000246}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3dc, 0x1ce739ce}, ++ {0x0000a3e0, 0x000001ce}, ++ {0x0000a3e4, 0x00000000}, ++ {0x0000a3e8, 0x18c43433}, ++ {0x0000a3ec, 0x00f70081}, ++ {0x0000a3f0, 0x01036a1e}, ++ {0x0000a3f4, 0x00000000}, ++ {0x0000b3f4, 0x00000000}, ++ {0x0000a7d8, 0x000003f1}, ++ {0x00007800, 0x00000800}, ++ {0x00007804, 0x6c35ffd2}, ++ {0x00007808, 0x6db6c000}, ++ {0x0000780c, 0x6db6cb30}, ++ {0x00007810, 0x6db6cb6c}, ++ {0x00007814, 0x0501e200}, ++ {0x00007818, 0x0094128d}, ++ {0x0000781c, 0x976ee392}, ++ {0x00007820, 0xf75ff6fc}, ++ {0x00007824, 0x00040000}, ++ {0x00007828, 0xdb003012}, ++ {0x0000782c, 0x04924914}, ++ {0x00007830, 0x21084210}, ++ {0x00007834, 0x00140000}, ++ {0x00007838, 0x0e4548d8}, ++ {0x0000783c, 0x54214514}, ++ {0x00007840, 0x02025830}, ++ {0x00007844, 0x71c0d388}, ++ {0x00007848, 0x934934a8}, ++ {0x00007850, 0x00000000}, ++ {0x00007854, 0x00000800}, ++ {0x00007858, 0x6c35ffd2}, ++ {0x0000785c, 0x6db6c000}, ++ {0x00007860, 0x6db6cb30}, ++ {0x00007864, 0x6db6cb6c}, ++ {0x00007868, 0x0501e200}, ++ {0x0000786c, 0x0094128d}, ++ {0x00007870, 0x976ee392}, ++ {0x00007874, 0xf75ff6fc}, ++ {0x00007878, 0x00040000}, ++ {0x0000787c, 0xdb003012}, ++ {0x00007880, 0x04924914}, ++ {0x00007884, 0x21084210}, ++ {0x00007888, 0x001b6db0}, ++ {0x0000788c, 0x00376b63}, ++ {0x00007890, 0x06db6db6}, ++ {0x00007894, 0x006d8000}, ++ {0x00007898, 0x48100000}, ++ {0x0000789c, 0x00000000}, ++ {0x000078a0, 0x08000000}, ++ {0x000078a4, 0x0007ffd8}, ++ {0x000078a8, 0x0007ffd8}, ++ {0x000078ac, 0x001c0020}, ++ {0x000078b0, 0x00060aeb}, ++ {0x000078b4, 0x40008080}, ++ {0x000078b8, 0x2a850160}, ++}; ++ + static const u32 ar9287Common_normal_cck_fir_coeff_9287_1_1[][2] = { +- { 0x0000a1f4, 0x00fffeff }, +- { 0x0000a1f8, 0x00f5f9ff }, +- { 0x0000a1fc, 0xb79f6427 }, ++ /* Addr allmodes */ ++ {0x0000a1f4, 0x00fffeff}, ++ {0x0000a1f8, 0x00f5f9ff}, ++ {0x0000a1fc, 0xb79f6427}, + }; + + static const u32 ar9287Common_japan_2484_cck_fir_coeff_9287_1_1[][2] = { +- { 0x0000a1f4, 0x00000000 }, +- { 0x0000a1f8, 0xefff0301 }, +- { 0x0000a1fc, 0xca9228ee }, ++ /* Addr allmodes */ ++ {0x0000a1f4, 0x00000000}, ++ {0x0000a1f8, 0xefff0301}, ++ {0x0000a1fc, 0xca9228ee}, + }; + + static const u32 ar9287Modes_tx_gain_9287_1_1[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a }, +- { 0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a }, +- { 0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c }, +- { 0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc }, +- { 0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4 }, +- { 0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc }, +- { 0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede }, +- { 0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e }, +- { 0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e }, +- { 0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e }, +- { 0x0000a780, 0x00000000, 0x00000000, 0x00000062, 0x00000062, 0x00000062 }, +- { 0x0000a784, 0x00000000, 0x00000000, 0x00004064, 0x00004064, 0x00004064 }, +- { 0x0000a788, 0x00000000, 0x00000000, 0x000080a4, 0x000080a4, 0x000080a4 }, +- { 0x0000a78c, 0x00000000, 0x00000000, 0x0000c0aa, 0x0000c0aa, 0x0000c0aa }, +- { 0x0000a790, 0x00000000, 0x00000000, 0x000100ac, 0x000100ac, 0x000100ac }, +- { 0x0000a794, 0x00000000, 0x00000000, 0x000140b4, 0x000140b4, 0x000140b4 }, +- { 0x0000a798, 0x00000000, 0x00000000, 0x000180f4, 0x000180f4, 0x000180f4 }, +- { 0x0000a79c, 0x00000000, 0x00000000, 0x0001c134, 0x0001c134, 0x0001c134 }, +- { 0x0000a7a0, 0x00000000, 0x00000000, 0x00020174, 0x00020174, 0x00020174 }, +- { 0x0000a7a4, 0x00000000, 0x00000000, 0x0002417c, 0x0002417c, 0x0002417c }, +- { 0x0000a7a8, 0x00000000, 0x00000000, 0x0002817e, 0x0002817e, 0x0002817e }, +- { 0x0000a7ac, 0x00000000, 0x00000000, 0x0002c1be, 0x0002c1be, 0x0002c1be }, +- { 0x0000a7b0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7b4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7b8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7bc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7c0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7c4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7c8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7cc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7d0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a7d4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, +- { 0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000 }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a}, ++ {0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a}, ++ {0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c}, ++ {0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc}, ++ {0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4}, ++ {0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc}, ++ {0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede}, ++ {0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e}, ++ {0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e}, ++ {0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e}, ++ {0x0000a780, 0x00000000, 0x00000000, 0x00000062, 0x00000062, 0x00000062}, ++ {0x0000a784, 0x00000000, 0x00000000, 0x00004064, 0x00004064, 0x00004064}, ++ {0x0000a788, 0x00000000, 0x00000000, 0x000080a4, 0x000080a4, 0x000080a4}, ++ {0x0000a78c, 0x00000000, 0x00000000, 0x0000c0aa, 0x0000c0aa, 0x0000c0aa}, ++ {0x0000a790, 0x00000000, 0x00000000, 0x000100ac, 0x000100ac, 0x000100ac}, ++ {0x0000a794, 0x00000000, 0x00000000, 0x000140b4, 0x000140b4, 0x000140b4}, ++ {0x0000a798, 0x00000000, 0x00000000, 0x000180f4, 0x000180f4, 0x000180f4}, ++ {0x0000a79c, 0x00000000, 0x00000000, 0x0001c134, 0x0001c134, 0x0001c134}, ++ {0x0000a7a0, 0x00000000, 0x00000000, 0x00020174, 0x00020174, 0x00020174}, ++ {0x0000a7a4, 0x00000000, 0x00000000, 0x0002417c, 0x0002417c, 0x0002417c}, ++ {0x0000a7a8, 0x00000000, 0x00000000, 0x0002817e, 0x0002817e, 0x0002817e}, ++ {0x0000a7ac, 0x00000000, 0x00000000, 0x0002c1be, 0x0002c1be, 0x0002c1be}, ++ {0x0000a7b0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7b4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7b8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7bc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7c0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7c4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7c8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7cc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7d0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a7d4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, ++ {0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000}, + }; + + static const u32 ar9287Modes_rx_gain_9287_1_1[][6] = { +- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ +- { 0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, +- { 0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, +- { 0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, +- { 0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, +- { 0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, +- { 0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, +- { 0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, +- { 0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, +- { 0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, +- { 0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, +- { 0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, +- { 0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, +- { 0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, +- { 0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, +- { 0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, +- { 0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, +- { 0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, +- { 0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, +- { 0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, +- { 0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, +- { 0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, +- { 0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, +- { 0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, +- { 0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, +- { 0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, +- { 0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, +- { 0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, +- { 0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, +- { 0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, +- { 0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, +- { 0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, +- { 0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, +- { 0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, +- { 0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, +- { 0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, +- { 0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, +- { 0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, +- { 0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, +- { 0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, +- { 0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, +- { 0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, +- { 0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, +- { 0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, +- { 0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, +- { 0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, +- { 0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, +- { 0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, +- { 0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, +- { 0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, +- { 0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, +- { 0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, +- { 0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, +- { 0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, +- { 0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, +- { 0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, +- { 0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, +- { 0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, +- { 0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, +- { 0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, +- { 0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, +- { 0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, +- { 0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, +- { 0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, +- { 0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, +- { 0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, +- { 0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, +- { 0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, +- { 0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, +- { 0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, +- { 0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, +- { 0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, +- { 0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, +- { 0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, +- { 0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, +- { 0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, +- { 0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, +- { 0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, +- { 0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, +- { 0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, +- { 0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, +- { 0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, +- { 0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, +- { 0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, +- { 0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, +- { 0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, +- { 0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, +- { 0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, +- { 0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, +- { 0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, +- { 0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, +- { 0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, +- { 0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, +- { 0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, +- { 0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, +- { 0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, +- { 0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, +- { 0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, +- { 0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, +- { 0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, +- { 0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, +- { 0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, +- { 0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, +- { 0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, +- { 0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, +- { 0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, +- { 0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, +- { 0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, +- { 0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, +- { 0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, +- { 0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, +- { 0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, +- { 0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, +- { 0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, +- { 0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, +- { 0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, +- { 0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, +- { 0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, +- { 0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, +- { 0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, +- { 0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, +- { 0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, +- { 0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, +- { 0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, +- { 0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, +- { 0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, +- { 0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, +- { 0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, +- { 0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, +- { 0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, +- { 0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, +- { 0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, +- { 0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, +- { 0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, +- { 0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, +- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, +- { 0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, +- { 0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, +- { 0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, +- { 0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, +- { 0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, +- { 0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, +- { 0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, +- { 0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, +- { 0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, +- { 0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, +- { 0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, +- { 0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, +- { 0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, +- { 0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, +- { 0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, +- { 0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, +- { 0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, +- { 0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, +- { 0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, +- { 0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, +- { 0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, +- { 0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, +- { 0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, +- { 0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, +- { 0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, +- { 0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, +- { 0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, +- { 0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, +- { 0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, +- { 0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, +- { 0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, +- { 0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, +- { 0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, +- { 0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, +- { 0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, +- { 0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, +- { 0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, +- { 0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, +- { 0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, +- { 0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, +- { 0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, +- { 0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, +- { 0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, +- { 0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, +- { 0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, +- { 0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, +- { 0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, +- { 0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, +- { 0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, +- { 0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, +- { 0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, +- { 0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, +- { 0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, +- { 0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, +- { 0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, +- { 0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, +- { 0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, +- { 0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, +- { 0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, +- { 0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, +- { 0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, +- { 0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, +- { 0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, +- { 0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, +- { 0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, +- { 0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, +- { 0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, +- { 0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, +- { 0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, +- { 0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, +- { 0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, +- { 0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, +- { 0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, +- { 0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, ++ {0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, ++ {0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, ++ {0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, ++ {0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, ++ {0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, ++ {0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, ++ {0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, ++ {0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, ++ {0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, ++ {0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, ++ {0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, ++ {0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, ++ {0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, ++ {0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, ++ {0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, ++ {0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, ++ {0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, ++ {0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, ++ {0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, ++ {0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, ++ {0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, ++ {0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, ++ {0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, ++ {0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, ++ {0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, ++ {0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, ++ {0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, ++ {0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, ++ {0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, ++ {0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, ++ {0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, ++ {0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, ++ {0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, ++ {0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, ++ {0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, ++ {0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, ++ {0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, ++ {0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, ++ {0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, ++ {0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, ++ {0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, ++ {0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, ++ {0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, ++ {0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, ++ {0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, ++ {0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, ++ {0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, ++ {0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, ++ {0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, ++ {0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, ++ {0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, ++ {0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, ++ {0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, ++ {0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, ++ {0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, ++ {0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, ++ {0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, ++ {0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, ++ {0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, ++ {0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, ++ {0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, ++ {0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, ++ {0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, ++ {0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, ++ {0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, ++ {0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, ++ {0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, ++ {0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, ++ {0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, ++ {0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, ++ {0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, ++ {0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, ++ {0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, ++ {0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, ++ {0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, ++ {0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, ++ {0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, ++ {0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, ++ {0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, ++ {0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, ++ {0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, ++ {0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, ++ {0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, ++ {0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, ++ {0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, ++ {0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, ++ {0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, ++ {0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, ++ {0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, ++ {0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, ++ {0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, ++ {0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, ++ {0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, ++ {0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, ++ {0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, ++ {0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, ++ {0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, ++ {0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, ++ {0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, ++ {0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, ++ {0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, ++ {0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, ++ {0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, ++ {0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, ++ {0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, ++ {0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, ++ {0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, ++ {0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, ++ {0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, ++ {0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, ++ {0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, ++ {0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, ++ {0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, ++ {0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, ++ {0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, ++ {0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, ++ {0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, ++ {0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, ++ {0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, ++ {0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, ++ {0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, ++ {0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, ++ {0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, ++ {0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, ++ {0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, ++ {0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, ++ {0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, ++ {0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, ++ {0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, ++ {0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, ++ {0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, ++ {0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, ++ {0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, ++ {0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, ++ {0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, ++ {0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, ++ {0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, ++ {0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, ++ {0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, ++ {0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, ++ {0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, ++ {0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, ++ {0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, ++ {0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, ++ {0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, ++ {0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, ++ {0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, ++ {0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, ++ {0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, ++ {0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, ++ {0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, ++ {0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, ++ {0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, ++ {0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, ++ {0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, ++ {0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, ++ {0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, ++ {0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, ++ {0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, ++ {0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, ++ {0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, ++ {0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, ++ {0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, ++ {0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, ++ {0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, ++ {0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, ++ {0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, ++ {0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, ++ {0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, ++ {0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, ++ {0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, ++ {0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, ++ {0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, ++ {0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, ++ {0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, ++ {0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, ++ {0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, ++ {0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, ++ {0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, ++ {0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, ++ {0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, ++ {0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, ++ {0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, ++ {0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, ++ {0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, ++ {0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, ++ {0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, ++ {0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, ++ {0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, ++ {0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, ++ {0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, ++ {0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, ++ {0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, ++ {0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, ++ {0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, ++ {0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, ++ {0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, ++ {0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, ++ {0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, ++ {0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, ++ {0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, ++ {0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, ++ {0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, ++ {0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, ++ {0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, ++ {0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, ++ {0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, ++ {0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, ++ {0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, + }; + + static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_1[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffd }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffd}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + + static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_1[][2] = { +- {0x00004040, 0x9248fd00 }, +- {0x00004040, 0x24924924 }, +- {0x00004040, 0xa8000019 }, +- {0x00004040, 0x13160820 }, +- {0x00004040, 0xe5980560 }, +- {0x00004040, 0xc01dcffc }, +- {0x00004040, 0x1aaabe41 }, +- {0x00004040, 0xbe105554 }, +- {0x00004040, 0x00043007 }, +- {0x00004044, 0x00000000 }, ++ /* Addr allmodes */ ++ {0x00004040, 0x9248fd00}, ++ {0x00004040, 0x24924924}, ++ {0x00004040, 0xa8000019}, ++ {0x00004040, 0x13160820}, ++ {0x00004040, 0xe5980560}, ++ {0x00004040, 0xc01dcffc}, ++ {0x00004040, 0x1aaabe41}, ++ {0x00004040, 0xbe105554}, ++ {0x00004040, 0x00043007}, ++ {0x00004044, 0x00000000}, + }; + +- +-/* AR9271 initialization values automaticaly created: 03/31/10 */ + static const u32 ar9271Modes_9271[][6] = { +- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, +- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, +- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, +- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, +- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, +- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, +- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, +- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, +- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, +- { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, +- { 0x00009828, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001 }, +- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, +- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, +- { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, +- { 0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0 }, +- { 0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, +- { 0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, +- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, +- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, +- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, +- { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18 }, +- { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, +- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, +- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009910, 0x30002310, 0x30002310, 0x30002310, 0x30002310, 0x30002310 }, +- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, +- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, +- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, +- { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010 }, +- { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c }, +- { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, +- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, +- { 0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f }, +- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, +- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, +- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, +- { 0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, +- { 0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, +- { 0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, +- { 0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, +- { 0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, +- { 0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, +- { 0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, +- { 0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, +- { 0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, +- { 0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, +- { 0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, +- { 0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, +- { 0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, +- { 0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, +- { 0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, +- { 0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, +- { 0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, +- { 0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, +- { 0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, +- { 0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, +- { 0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, +- { 0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, +- { 0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, +- { 0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, +- { 0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, +- { 0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, +- { 0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, +- { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, +- { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, +- { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, +- { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, +- { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, +- { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, +- { 0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, +- { 0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, +- { 0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, +- { 0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, +- { 0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, +- { 0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, +- { 0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, +- { 0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, +- { 0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, +- { 0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, +- { 0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, +- { 0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, +- { 0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, +- { 0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, +- { 0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, +- { 0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, +- { 0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, +- { 0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, +- { 0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, +- { 0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, +- { 0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, +- { 0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, +- { 0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, +- { 0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, +- { 0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, +- { 0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, +- { 0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, +- { 0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, +- { 0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, +- { 0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, +- { 0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, +- { 0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, +- { 0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, +- { 0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, +- { 0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, +- { 0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, +- { 0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, +- { 0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, +- { 0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, +- { 0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, +- { 0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, +- { 0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, +- { 0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, +- { 0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, +- { 0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, +- { 0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, +- { 0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, +- { 0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, +- { 0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, +- { 0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, +- { 0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, +- { 0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, +- { 0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, +- { 0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, +- { 0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, +- { 0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, +- { 0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, +- { 0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, +- { 0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, +- { 0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, +- { 0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, +- { 0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, +- { 0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, +- { 0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, +- { 0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, +- { 0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, +- { 0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, +- { 0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, +- { 0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, +- { 0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, +- { 0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, +- { 0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, +- { 0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, +- { 0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, +- { 0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, +- { 0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, +- { 0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, +- { 0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, +- { 0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, +- { 0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, +- { 0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, +- { 0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, +- { 0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, +- { 0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, +- { 0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, +- { 0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, +- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, +- { 0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, +- { 0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, +- { 0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, +- { 0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, +- { 0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, +- { 0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, +- { 0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, +- { 0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, +- { 0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, +- { 0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, +- { 0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, +- { 0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, +- { 0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, +- { 0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, +- { 0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, +- { 0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, +- { 0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, +- { 0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, +- { 0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, +- { 0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, +- { 0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, +- { 0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, +- { 0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, +- { 0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, +- { 0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, +- { 0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, +- { 0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, +- { 0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, +- { 0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, +- { 0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, +- { 0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, +- { 0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, +- { 0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, +- { 0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, +- { 0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, +- { 0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, +- { 0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, +- { 0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, +- { 0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, +- { 0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, +- { 0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, +- { 0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, +- { 0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, +- { 0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, +- { 0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, +- { 0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, +- { 0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, +- { 0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, +- { 0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, +- { 0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, +- { 0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, +- { 0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, +- { 0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, +- { 0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, +- { 0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, +- { 0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, +- { 0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, +- { 0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, +- { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, +- { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, +- { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, +- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, +- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, +- { 0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000 }, +- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, ++ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, ++ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, ++ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, ++ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, ++ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, ++ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, ++ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, ++ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, ++ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, ++ {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e}, ++ {0x00009828, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001}, ++ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, ++ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, ++ {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e}, ++ {0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0}, ++ {0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, ++ {0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, ++ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, ++ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, ++ {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e}, ++ {0x00009860, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18}, ++ {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, ++ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009910, 0x30002310, 0x30002310, 0x30002310, 0x30002310, 0x30002310}, ++ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, ++ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, ++ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, ++ {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010}, ++ {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c}, ++ {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, ++ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, ++ {0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f}, ++ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, ++ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, ++ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, ++ {0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, ++ {0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, ++ {0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, ++ {0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, ++ {0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, ++ {0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, ++ {0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, ++ {0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, ++ {0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, ++ {0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, ++ {0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, ++ {0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, ++ {0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, ++ {0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, ++ {0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, ++ {0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, ++ {0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, ++ {0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, ++ {0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, ++ {0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, ++ {0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, ++ {0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, ++ {0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, ++ {0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, ++ {0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, ++ {0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, ++ {0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, ++ {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, ++ {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, ++ {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, ++ {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, ++ {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, ++ {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, ++ {0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, ++ {0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, ++ {0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, ++ {0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, ++ {0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, ++ {0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, ++ {0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, ++ {0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, ++ {0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, ++ {0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, ++ {0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, ++ {0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, ++ {0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, ++ {0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, ++ {0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, ++ {0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, ++ {0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, ++ {0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, ++ {0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, ++ {0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, ++ {0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, ++ {0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, ++ {0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, ++ {0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, ++ {0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, ++ {0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, ++ {0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, ++ {0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, ++ {0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, ++ {0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, ++ {0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, ++ {0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, ++ {0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, ++ {0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, ++ {0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, ++ {0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, ++ {0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, ++ {0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, ++ {0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, ++ {0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, ++ {0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, ++ {0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, ++ {0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, ++ {0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, ++ {0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, ++ {0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, ++ {0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, ++ {0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, ++ {0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, ++ {0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, ++ {0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, ++ {0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, ++ {0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, ++ {0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, ++ {0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, ++ {0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, ++ {0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, ++ {0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, ++ {0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, ++ {0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, ++ {0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, ++ {0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, ++ {0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, ++ {0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, ++ {0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, ++ {0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, ++ {0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, ++ {0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, ++ {0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, ++ {0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, ++ {0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, ++ {0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, ++ {0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, ++ {0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, ++ {0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, ++ {0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, ++ {0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, ++ {0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, ++ {0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, ++ {0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, ++ {0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, ++ {0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, ++ {0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, ++ {0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, ++ {0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, ++ {0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, ++ {0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, ++ {0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, ++ {0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, ++ {0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, ++ {0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, ++ {0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, ++ {0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, ++ {0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, ++ {0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, ++ {0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, ++ {0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, ++ {0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, ++ {0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, ++ {0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, ++ {0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, ++ {0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, ++ {0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, ++ {0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, ++ {0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, ++ {0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, ++ {0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, ++ {0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, ++ {0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, ++ {0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, ++ {0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, ++ {0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, ++ {0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, ++ {0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, ++ {0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, ++ {0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, ++ {0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, ++ {0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, ++ {0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, ++ {0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, ++ {0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, ++ {0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, ++ {0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, ++ {0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, ++ {0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, ++ {0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, ++ {0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, ++ {0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, ++ {0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, ++ {0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, ++ {0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, ++ {0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, ++ {0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, ++ {0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, ++ {0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, ++ {0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, ++ {0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, ++ {0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, ++ {0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, ++ {0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, ++ {0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, ++ {0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, ++ {0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, ++ {0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, ++ {0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, ++ {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004}, ++ {0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, ++ {0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, ++ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, ++ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, ++ {0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000}, ++ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, + }; + + static const u32 ar9271Common_9271[][2] = { +- { 0x0000000c, 0x00000000 }, +- { 0x00000030, 0x00020045 }, +- { 0x00000034, 0x00000005 }, +- { 0x00000040, 0x00000000 }, +- { 0x00000044, 0x00000008 }, +- { 0x00000048, 0x00000008 }, +- { 0x0000004c, 0x00000010 }, +- { 0x00000050, 0x00000000 }, +- { 0x00000054, 0x0000001f }, +- { 0x00000800, 0x00000000 }, +- { 0x00000804, 0x00000000 }, +- { 0x00000808, 0x00000000 }, +- { 0x0000080c, 0x00000000 }, +- { 0x00000810, 0x00000000 }, +- { 0x00000814, 0x00000000 }, +- { 0x00000818, 0x00000000 }, +- { 0x0000081c, 0x00000000 }, +- { 0x00000820, 0x00000000 }, +- { 0x00000824, 0x00000000 }, +- { 0x00001040, 0x002ffc0f }, +- { 0x00001044, 0x002ffc0f }, +- { 0x00001048, 0x002ffc0f }, +- { 0x0000104c, 0x002ffc0f }, +- { 0x00001050, 0x002ffc0f }, +- { 0x00001054, 0x002ffc0f }, +- { 0x00001058, 0x002ffc0f }, +- { 0x0000105c, 0x002ffc0f }, +- { 0x00001060, 0x002ffc0f }, +- { 0x00001064, 0x002ffc0f }, +- { 0x00001230, 0x00000000 }, +- { 0x00001270, 0x00000000 }, +- { 0x00001038, 0x00000000 }, +- { 0x00001078, 0x00000000 }, +- { 0x000010b8, 0x00000000 }, +- { 0x000010f8, 0x00000000 }, +- { 0x00001138, 0x00000000 }, +- { 0x00001178, 0x00000000 }, +- { 0x000011b8, 0x00000000 }, +- { 0x000011f8, 0x00000000 }, +- { 0x00001238, 0x00000000 }, +- { 0x00001278, 0x00000000 }, +- { 0x000012b8, 0x00000000 }, +- { 0x000012f8, 0x00000000 }, +- { 0x00001338, 0x00000000 }, +- { 0x00001378, 0x00000000 }, +- { 0x000013b8, 0x00000000 }, +- { 0x000013f8, 0x00000000 }, +- { 0x00001438, 0x00000000 }, +- { 0x00001478, 0x00000000 }, +- { 0x000014b8, 0x00000000 }, +- { 0x000014f8, 0x00000000 }, +- { 0x00001538, 0x00000000 }, +- { 0x00001578, 0x00000000 }, +- { 0x000015b8, 0x00000000 }, +- { 0x000015f8, 0x00000000 }, +- { 0x00001638, 0x00000000 }, +- { 0x00001678, 0x00000000 }, +- { 0x000016b8, 0x00000000 }, +- { 0x000016f8, 0x00000000 }, +- { 0x00001738, 0x00000000 }, +- { 0x00001778, 0x00000000 }, +- { 0x000017b8, 0x00000000 }, +- { 0x000017f8, 0x00000000 }, +- { 0x0000103c, 0x00000000 }, +- { 0x0000107c, 0x00000000 }, +- { 0x000010bc, 0x00000000 }, +- { 0x000010fc, 0x00000000 }, +- { 0x0000113c, 0x00000000 }, +- { 0x0000117c, 0x00000000 }, +- { 0x000011bc, 0x00000000 }, +- { 0x000011fc, 0x00000000 }, +- { 0x0000123c, 0x00000000 }, +- { 0x0000127c, 0x00000000 }, +- { 0x000012bc, 0x00000000 }, +- { 0x000012fc, 0x00000000 }, +- { 0x0000133c, 0x00000000 }, +- { 0x0000137c, 0x00000000 }, +- { 0x000013bc, 0x00000000 }, +- { 0x000013fc, 0x00000000 }, +- { 0x0000143c, 0x00000000 }, +- { 0x0000147c, 0x00000000 }, +- { 0x00004030, 0x00000002 }, +- { 0x0000403c, 0x00000002 }, +- { 0x00004024, 0x0000001f }, +- { 0x00004060, 0x00000000 }, +- { 0x00004064, 0x00000000 }, +- { 0x00008004, 0x00000000 }, +- { 0x00008008, 0x00000000 }, +- { 0x0000800c, 0x00000000 }, +- { 0x00008018, 0x00000700 }, +- { 0x00008020, 0x00000000 }, +- { 0x00008038, 0x00000000 }, +- { 0x0000803c, 0x00000000 }, +- { 0x00008048, 0x00000000 }, +- { 0x00008054, 0x00000000 }, +- { 0x00008058, 0x00000000 }, +- { 0x0000805c, 0x000fc78f }, +- { 0x00008060, 0x0000000f }, +- { 0x00008064, 0x00000000 }, +- { 0x00008070, 0x00000000 }, +- { 0x000080b0, 0x00000000 }, +- { 0x000080b4, 0x00000000 }, +- { 0x000080b8, 0x00000000 }, +- { 0x000080bc, 0x00000000 }, +- { 0x000080c0, 0x2a80001a }, +- { 0x000080c4, 0x05dc01e0 }, +- { 0x000080c8, 0x1f402710 }, +- { 0x000080cc, 0x01f40000 }, +- { 0x000080d0, 0x00001e00 }, +- { 0x000080d4, 0x00000000 }, +- { 0x000080d8, 0x00400000 }, +- { 0x000080e0, 0xffffffff }, +- { 0x000080e4, 0x0000ffff }, +- { 0x000080e8, 0x003f3f3f }, +- { 0x000080ec, 0x00000000 }, +- { 0x000080f0, 0x00000000 }, +- { 0x000080f4, 0x00000000 }, +- { 0x000080f8, 0x00000000 }, +- { 0x000080fc, 0x00020000 }, +- { 0x00008100, 0x00020000 }, +- { 0x00008104, 0x00000001 }, +- { 0x00008108, 0x00000052 }, +- { 0x0000810c, 0x00000000 }, +- { 0x00008110, 0x00000168 }, +- { 0x00008118, 0x000100aa }, +- { 0x0000811c, 0x00003210 }, +- { 0x00008120, 0x08f04810 }, +- { 0x00008124, 0x00000000 }, +- { 0x00008128, 0x00000000 }, +- { 0x0000812c, 0x00000000 }, +- { 0x00008130, 0x00000000 }, +- { 0x00008134, 0x00000000 }, +- { 0x00008138, 0x00000000 }, +- { 0x0000813c, 0x00000000 }, +- { 0x00008144, 0xffffffff }, +- { 0x00008168, 0x00000000 }, +- { 0x0000816c, 0x00000000 }, +- { 0x00008170, 0x32143320 }, +- { 0x00008174, 0xfaa4fa50 }, +- { 0x00008178, 0x00000100 }, +- { 0x0000817c, 0x00000000 }, +- { 0x000081c0, 0x00000000 }, +- { 0x000081d0, 0x0000320a }, +- { 0x000081ec, 0x00000000 }, +- { 0x000081f0, 0x00000000 }, +- { 0x000081f4, 0x00000000 }, +- { 0x000081f8, 0x00000000 }, +- { 0x000081fc, 0x00000000 }, +- { 0x00008200, 0x00000000 }, +- { 0x00008204, 0x00000000 }, +- { 0x00008208, 0x00000000 }, +- { 0x0000820c, 0x00000000 }, +- { 0x00008210, 0x00000000 }, +- { 0x00008214, 0x00000000 }, +- { 0x00008218, 0x00000000 }, +- { 0x0000821c, 0x00000000 }, +- { 0x00008220, 0x00000000 }, +- { 0x00008224, 0x00000000 }, +- { 0x00008228, 0x00000000 }, +- { 0x0000822c, 0x00000000 }, +- { 0x00008230, 0x00000000 }, +- { 0x00008234, 0x00000000 }, +- { 0x00008238, 0x00000000 }, +- { 0x0000823c, 0x00000000 }, +- { 0x00008240, 0x00100000 }, +- { 0x00008244, 0x0010f400 }, +- { 0x00008248, 0x00000100 }, +- { 0x0000824c, 0x0001e800 }, +- { 0x00008250, 0x00000000 }, +- { 0x00008254, 0x00000000 }, +- { 0x00008258, 0x00000000 }, +- { 0x0000825c, 0x400000ff }, +- { 0x00008260, 0x00080922 }, +- { 0x00008264, 0x88a00010 }, +- { 0x00008270, 0x00000000 }, +- { 0x00008274, 0x40000000 }, +- { 0x00008278, 0x003e4180 }, +- { 0x0000827c, 0x00000000 }, +- { 0x00008284, 0x0000002c }, +- { 0x00008288, 0x0000002c }, +- { 0x0000828c, 0x00000000 }, +- { 0x00008294, 0x00000000 }, +- { 0x00008298, 0x00000000 }, +- { 0x0000829c, 0x00000000 }, +- { 0x00008300, 0x00000040 }, +- { 0x00008314, 0x00000000 }, +- { 0x00008328, 0x00000000 }, +- { 0x0000832c, 0x00000001 }, +- { 0x00008330, 0x00000302 }, +- { 0x00008334, 0x00000e00 }, +- { 0x00008338, 0x00ff0000 }, +- { 0x0000833c, 0x00000000 }, +- { 0x00008340, 0x00010380 }, +- { 0x00008344, 0x00581043 }, +- { 0x00007010, 0x00000030 }, +- { 0x00007034, 0x00000002 }, +- { 0x00007038, 0x000004c2 }, +- { 0x00007800, 0x00140000 }, +- { 0x00007804, 0x0e4548d8 }, +- { 0x00007808, 0x54214514 }, +- { 0x0000780c, 0x02025820 }, +- { 0x00007810, 0x71c0d388 }, +- { 0x00007814, 0x924934a8 }, +- { 0x0000781c, 0x00000000 }, +- { 0x00007828, 0x66964300 }, +- { 0x0000782c, 0x8db6d961 }, +- { 0x00007830, 0x8db6d96c }, +- { 0x00007834, 0x6140008b }, +- { 0x0000783c, 0x72ee0a72 }, +- { 0x00007840, 0xbbfffffc }, +- { 0x00007844, 0x000c0db6 }, +- { 0x00007848, 0x6db6246f }, +- { 0x0000784c, 0x6d9b66db }, +- { 0x00007850, 0x6d8c6dba }, +- { 0x00007854, 0x00040000 }, +- { 0x00007858, 0xdb003012 }, +- { 0x0000785c, 0x04924914 }, +- { 0x00007860, 0x21084210 }, +- { 0x00007864, 0xf7d7ffde }, +- { 0x00007868, 0xc2034080 }, +- { 0x00007870, 0x10142c00 }, +- { 0x00009808, 0x00000000 }, +- { 0x0000980c, 0xafe68e30 }, +- { 0x00009810, 0xfd14e000 }, +- { 0x00009814, 0x9c0a9f6b }, +- { 0x0000981c, 0x00000000 }, +- { 0x0000982c, 0x0000a000 }, +- { 0x00009830, 0x00000000 }, +- { 0x0000983c, 0x00200400 }, +- { 0x0000984c, 0x0040233c }, +- { 0x00009854, 0x00000044 }, +- { 0x00009900, 0x00000000 }, +- { 0x00009904, 0x00000000 }, +- { 0x00009908, 0x00000000 }, +- { 0x0000990c, 0x00000000 }, +- { 0x0000991c, 0x10000fff }, +- { 0x00009920, 0x04900000 }, +- { 0x00009928, 0x00000001 }, +- { 0x0000992c, 0x00000004 }, +- { 0x00009934, 0x1e1f2022 }, +- { 0x00009938, 0x0a0b0c0d }, +- { 0x0000993c, 0x00000000 }, +- { 0x00009940, 0x14750604 }, +- { 0x00009948, 0x9280c00a }, +- { 0x0000994c, 0x00020028 }, +- { 0x00009954, 0x5f3ca3de }, +- { 0x00009958, 0x0108ecff }, +- { 0x00009968, 0x000003ce }, +- { 0x00009970, 0x192bb514 }, +- { 0x00009974, 0x00000000 }, +- { 0x00009978, 0x00000001 }, +- { 0x0000997c, 0x00000000 }, +- { 0x00009980, 0x00000000 }, +- { 0x00009984, 0x00000000 }, +- { 0x00009988, 0x00000000 }, +- { 0x0000998c, 0x00000000 }, +- { 0x00009990, 0x00000000 }, +- { 0x00009994, 0x00000000 }, +- { 0x00009998, 0x00000000 }, +- { 0x0000999c, 0x00000000 }, +- { 0x000099a0, 0x00000000 }, +- { 0x000099a4, 0x00000001 }, +- { 0x000099a8, 0x201fff00 }, +- { 0x000099ac, 0x2def0400 }, +- { 0x000099b0, 0x03051000 }, +- { 0x000099b4, 0x00000820 }, +- { 0x000099dc, 0x00000000 }, +- { 0x000099e0, 0x00000000 }, +- { 0x000099e4, 0xaaaaaaaa }, +- { 0x000099e8, 0x3c466478 }, +- { 0x000099ec, 0x0cc80caa }, +- { 0x000099f0, 0x00000000 }, +- { 0x0000a208, 0x803e68c8 }, +- { 0x0000a210, 0x4080a333 }, +- { 0x0000a214, 0x00206c10 }, +- { 0x0000a218, 0x009c4060 }, +- { 0x0000a220, 0x01834061 }, +- { 0x0000a224, 0x00000400 }, +- { 0x0000a228, 0x000003b5 }, +- { 0x0000a22c, 0x00000000 }, +- { 0x0000a234, 0x20202020 }, +- { 0x0000a238, 0x20202020 }, +- { 0x0000a244, 0x00000000 }, +- { 0x0000a248, 0xfffffffc }, +- { 0x0000a24c, 0x00000000 }, +- { 0x0000a254, 0x00000000 }, +- { 0x0000a258, 0x0ccb5380 }, +- { 0x0000a25c, 0x15151501 }, +- { 0x0000a260, 0xdfa90f01 }, +- { 0x0000a268, 0x00000000 }, +- { 0x0000a26c, 0x0ebae9e6 }, +- { 0x0000a388, 0x0c000000 }, +- { 0x0000a38c, 0x20202020 }, +- { 0x0000a390, 0x20202020 }, +- { 0x0000a39c, 0x00000001 }, +- { 0x0000a3a0, 0x00000000 }, +- { 0x0000a3a4, 0x00000000 }, +- { 0x0000a3a8, 0x00000000 }, +- { 0x0000a3ac, 0x00000000 }, +- { 0x0000a3b0, 0x00000000 }, +- { 0x0000a3b4, 0x00000000 }, +- { 0x0000a3b8, 0x00000000 }, +- { 0x0000a3bc, 0x00000000 }, +- { 0x0000a3c0, 0x00000000 }, +- { 0x0000a3c4, 0x00000000 }, +- { 0x0000a3cc, 0x20202020 }, +- { 0x0000a3d0, 0x20202020 }, +- { 0x0000a3d4, 0x20202020 }, +- { 0x0000a3e4, 0x00000000 }, +- { 0x0000a3e8, 0x18c43433 }, +- { 0x0000a3ec, 0x00f70081 }, +- { 0x0000a3f0, 0x01036a2f }, +- { 0x0000a3f4, 0x00000000 }, +- { 0x0000d270, 0x0d820820 }, +- { 0x0000d35c, 0x07ffffef }, +- { 0x0000d360, 0x0fffffe7 }, +- { 0x0000d364, 0x17ffffe5 }, +- { 0x0000d368, 0x1fffffe4 }, +- { 0x0000d36c, 0x37ffffe3 }, +- { 0x0000d370, 0x3fffffe3 }, +- { 0x0000d374, 0x57ffffe3 }, +- { 0x0000d378, 0x5fffffe2 }, +- { 0x0000d37c, 0x7fffffe2 }, +- { 0x0000d380, 0x7f3c7bba }, +- { 0x0000d384, 0xf3307ff0 }, ++ /* Addr allmodes */ ++ {0x0000000c, 0x00000000}, ++ {0x00000030, 0x00020045}, ++ {0x00000034, 0x00000005}, ++ {0x00000040, 0x00000000}, ++ {0x00000044, 0x00000008}, ++ {0x00000048, 0x00000008}, ++ {0x0000004c, 0x00000010}, ++ {0x00000050, 0x00000000}, ++ {0x00000054, 0x0000001f}, ++ {0x00000800, 0x00000000}, ++ {0x00000804, 0x00000000}, ++ {0x00000808, 0x00000000}, ++ {0x0000080c, 0x00000000}, ++ {0x00000810, 0x00000000}, ++ {0x00000814, 0x00000000}, ++ {0x00000818, 0x00000000}, ++ {0x0000081c, 0x00000000}, ++ {0x00000820, 0x00000000}, ++ {0x00000824, 0x00000000}, ++ {0x00001040, 0x002ffc0f}, ++ {0x00001044, 0x002ffc0f}, ++ {0x00001048, 0x002ffc0f}, ++ {0x0000104c, 0x002ffc0f}, ++ {0x00001050, 0x002ffc0f}, ++ {0x00001054, 0x002ffc0f}, ++ {0x00001058, 0x002ffc0f}, ++ {0x0000105c, 0x002ffc0f}, ++ {0x00001060, 0x002ffc0f}, ++ {0x00001064, 0x002ffc0f}, ++ {0x00001230, 0x00000000}, ++ {0x00001270, 0x00000000}, ++ {0x00001038, 0x00000000}, ++ {0x00001078, 0x00000000}, ++ {0x000010b8, 0x00000000}, ++ {0x000010f8, 0x00000000}, ++ {0x00001138, 0x00000000}, ++ {0x00001178, 0x00000000}, ++ {0x000011b8, 0x00000000}, ++ {0x000011f8, 0x00000000}, ++ {0x00001238, 0x00000000}, ++ {0x00001278, 0x00000000}, ++ {0x000012b8, 0x00000000}, ++ {0x000012f8, 0x00000000}, ++ {0x00001338, 0x00000000}, ++ {0x00001378, 0x00000000}, ++ {0x000013b8, 0x00000000}, ++ {0x000013f8, 0x00000000}, ++ {0x00001438, 0x00000000}, ++ {0x00001478, 0x00000000}, ++ {0x000014b8, 0x00000000}, ++ {0x000014f8, 0x00000000}, ++ {0x00001538, 0x00000000}, ++ {0x00001578, 0x00000000}, ++ {0x000015b8, 0x00000000}, ++ {0x000015f8, 0x00000000}, ++ {0x00001638, 0x00000000}, ++ {0x00001678, 0x00000000}, ++ {0x000016b8, 0x00000000}, ++ {0x000016f8, 0x00000000}, ++ {0x00001738, 0x00000000}, ++ {0x00001778, 0x00000000}, ++ {0x000017b8, 0x00000000}, ++ {0x000017f8, 0x00000000}, ++ {0x0000103c, 0x00000000}, ++ {0x0000107c, 0x00000000}, ++ {0x000010bc, 0x00000000}, ++ {0x000010fc, 0x00000000}, ++ {0x0000113c, 0x00000000}, ++ {0x0000117c, 0x00000000}, ++ {0x000011bc, 0x00000000}, ++ {0x000011fc, 0x00000000}, ++ {0x0000123c, 0x00000000}, ++ {0x0000127c, 0x00000000}, ++ {0x000012bc, 0x00000000}, ++ {0x000012fc, 0x00000000}, ++ {0x0000133c, 0x00000000}, ++ {0x0000137c, 0x00000000}, ++ {0x000013bc, 0x00000000}, ++ {0x000013fc, 0x00000000}, ++ {0x0000143c, 0x00000000}, ++ {0x0000147c, 0x00000000}, ++ {0x00004030, 0x00000002}, ++ {0x0000403c, 0x00000002}, ++ {0x00004024, 0x0000001f}, ++ {0x00004060, 0x00000000}, ++ {0x00004064, 0x00000000}, ++ {0x00008004, 0x00000000}, ++ {0x00008008, 0x00000000}, ++ {0x0000800c, 0x00000000}, ++ {0x00008018, 0x00000700}, ++ {0x00008020, 0x00000000}, ++ {0x00008038, 0x00000000}, ++ {0x0000803c, 0x00000000}, ++ {0x00008048, 0x00000000}, ++ {0x00008054, 0x00000000}, ++ {0x00008058, 0x00000000}, ++ {0x0000805c, 0x000fc78f}, ++ {0x00008060, 0x0000000f}, ++ {0x00008064, 0x00000000}, ++ {0x00008070, 0x00000000}, ++ {0x000080b0, 0x00000000}, ++ {0x000080b4, 0x00000000}, ++ {0x000080b8, 0x00000000}, ++ {0x000080bc, 0x00000000}, ++ {0x000080c0, 0x2a80001a}, ++ {0x000080c4, 0x05dc01e0}, ++ {0x000080c8, 0x1f402710}, ++ {0x000080cc, 0x01f40000}, ++ {0x000080d0, 0x00001e00}, ++ {0x000080d4, 0x00000000}, ++ {0x000080d8, 0x00400000}, ++ {0x000080e0, 0xffffffff}, ++ {0x000080e4, 0x0000ffff}, ++ {0x000080e8, 0x003f3f3f}, ++ {0x000080ec, 0x00000000}, ++ {0x000080f0, 0x00000000}, ++ {0x000080f4, 0x00000000}, ++ {0x000080f8, 0x00000000}, ++ {0x000080fc, 0x00020000}, ++ {0x00008100, 0x00020000}, ++ {0x00008104, 0x00000001}, ++ {0x00008108, 0x00000052}, ++ {0x0000810c, 0x00000000}, ++ {0x00008110, 0x00000168}, ++ {0x00008118, 0x000100aa}, ++ {0x0000811c, 0x00003210}, ++ {0x00008120, 0x08f04810}, ++ {0x00008124, 0x00000000}, ++ {0x00008128, 0x00000000}, ++ {0x0000812c, 0x00000000}, ++ {0x00008130, 0x00000000}, ++ {0x00008134, 0x00000000}, ++ {0x00008138, 0x00000000}, ++ {0x0000813c, 0x00000000}, ++ {0x00008144, 0xffffffff}, ++ {0x00008168, 0x00000000}, ++ {0x0000816c, 0x00000000}, ++ {0x00008170, 0x32143320}, ++ {0x00008174, 0xfaa4fa50}, ++ {0x00008178, 0x00000100}, ++ {0x0000817c, 0x00000000}, ++ {0x000081c0, 0x00000000}, ++ {0x000081d0, 0x0000320a}, ++ {0x000081ec, 0x00000000}, ++ {0x000081f0, 0x00000000}, ++ {0x000081f4, 0x00000000}, ++ {0x000081f8, 0x00000000}, ++ {0x000081fc, 0x00000000}, ++ {0x00008200, 0x00000000}, ++ {0x00008204, 0x00000000}, ++ {0x00008208, 0x00000000}, ++ {0x0000820c, 0x00000000}, ++ {0x00008210, 0x00000000}, ++ {0x00008214, 0x00000000}, ++ {0x00008218, 0x00000000}, ++ {0x0000821c, 0x00000000}, ++ {0x00008220, 0x00000000}, ++ {0x00008224, 0x00000000}, ++ {0x00008228, 0x00000000}, ++ {0x0000822c, 0x00000000}, ++ {0x00008230, 0x00000000}, ++ {0x00008234, 0x00000000}, ++ {0x00008238, 0x00000000}, ++ {0x0000823c, 0x00000000}, ++ {0x00008240, 0x00100000}, ++ {0x00008244, 0x0010f400}, ++ {0x00008248, 0x00000100}, ++ {0x0000824c, 0x0001e800}, ++ {0x00008250, 0x00000000}, ++ {0x00008254, 0x00000000}, ++ {0x00008258, 0x00000000}, ++ {0x0000825c, 0x400000ff}, ++ {0x00008260, 0x00080922}, ++ {0x00008264, 0x88a00010}, ++ {0x00008270, 0x00000000}, ++ {0x00008274, 0x40000000}, ++ {0x00008278, 0x003e4180}, ++ {0x0000827c, 0x00000000}, ++ {0x00008284, 0x0000002c}, ++ {0x00008288, 0x0000002c}, ++ {0x0000828c, 0x00000000}, ++ {0x00008294, 0x00000000}, ++ {0x00008298, 0x00000000}, ++ {0x0000829c, 0x00000000}, ++ {0x00008300, 0x00000040}, ++ {0x00008314, 0x00000000}, ++ {0x00008328, 0x00000000}, ++ {0x0000832c, 0x00000001}, ++ {0x00008330, 0x00000302}, ++ {0x00008334, 0x00000e00}, ++ {0x00008338, 0x00ff0000}, ++ {0x0000833c, 0x00000000}, ++ {0x00008340, 0x00010380}, ++ {0x00008344, 0x00581043}, ++ {0x00007010, 0x00000030}, ++ {0x00007034, 0x00000002}, ++ {0x00007038, 0x000004c2}, ++ {0x00007800, 0x00140000}, ++ {0x00007804, 0x0e4548d8}, ++ {0x00007808, 0x54214514}, ++ {0x0000780c, 0x02025820}, ++ {0x00007810, 0x71c0d388}, ++ {0x00007814, 0x924934a8}, ++ {0x0000781c, 0x00000000}, ++ {0x00007828, 0x66964300}, ++ {0x0000782c, 0x8db6d961}, ++ {0x00007830, 0x8db6d96c}, ++ {0x00007834, 0x6140008b}, ++ {0x0000783c, 0x72ee0a72}, ++ {0x00007840, 0xbbfffffc}, ++ {0x00007844, 0x000c0db6}, ++ {0x00007848, 0x6db6246f}, ++ {0x0000784c, 0x6d9b66db}, ++ {0x00007850, 0x6d8c6dba}, ++ {0x00007854, 0x00040000}, ++ {0x00007858, 0xdb003012}, ++ {0x0000785c, 0x04924914}, ++ {0x00007860, 0x21084210}, ++ {0x00007864, 0xf7d7ffde}, ++ {0x00007868, 0xc2034080}, ++ {0x00007870, 0x10142c00}, ++ {0x00009808, 0x00000000}, ++ {0x0000980c, 0xafe68e30}, ++ {0x00009810, 0xfd14e000}, ++ {0x00009814, 0x9c0a9f6b}, ++ {0x0000981c, 0x00000000}, ++ {0x0000982c, 0x0000a000}, ++ {0x00009830, 0x00000000}, ++ {0x0000983c, 0x00200400}, ++ {0x0000984c, 0x0040233c}, ++ {0x00009854, 0x00000044}, ++ {0x00009900, 0x00000000}, ++ {0x00009904, 0x00000000}, ++ {0x00009908, 0x00000000}, ++ {0x0000990c, 0x00000000}, ++ {0x0000991c, 0x10000fff}, ++ {0x00009920, 0x04900000}, ++ {0x00009928, 0x00000001}, ++ {0x0000992c, 0x00000004}, ++ {0x00009934, 0x1e1f2022}, ++ {0x00009938, 0x0a0b0c0d}, ++ {0x0000993c, 0x00000000}, ++ {0x00009940, 0x14750604}, ++ {0x00009948, 0x9280c00a}, ++ {0x0000994c, 0x00020028}, ++ {0x00009954, 0x5f3ca3de}, ++ {0x00009958, 0x0108ecff}, ++ {0x00009968, 0x000003ce}, ++ {0x00009970, 0x192bb514}, ++ {0x00009974, 0x00000000}, ++ {0x00009978, 0x00000001}, ++ {0x0000997c, 0x00000000}, ++ {0x00009980, 0x00000000}, ++ {0x00009984, 0x00000000}, ++ {0x00009988, 0x00000000}, ++ {0x0000998c, 0x00000000}, ++ {0x00009990, 0x00000000}, ++ {0x00009994, 0x00000000}, ++ {0x00009998, 0x00000000}, ++ {0x0000999c, 0x00000000}, ++ {0x000099a0, 0x00000000}, ++ {0x000099a4, 0x00000001}, ++ {0x000099a8, 0x201fff00}, ++ {0x000099ac, 0x2def0400}, ++ {0x000099b0, 0x03051000}, ++ {0x000099b4, 0x00000820}, ++ {0x000099dc, 0x00000000}, ++ {0x000099e0, 0x00000000}, ++ {0x000099e4, 0xaaaaaaaa}, ++ {0x000099e8, 0x3c466478}, ++ {0x000099ec, 0x0cc80caa}, ++ {0x000099f0, 0x00000000}, ++ {0x0000a208, 0x803e68c8}, ++ {0x0000a210, 0x4080a333}, ++ {0x0000a214, 0x00206c10}, ++ {0x0000a218, 0x009c4060}, ++ {0x0000a220, 0x01834061}, ++ {0x0000a224, 0x00000400}, ++ {0x0000a228, 0x000003b5}, ++ {0x0000a22c, 0x00000000}, ++ {0x0000a234, 0x20202020}, ++ {0x0000a238, 0x20202020}, ++ {0x0000a244, 0x00000000}, ++ {0x0000a248, 0xfffffffc}, ++ {0x0000a24c, 0x00000000}, ++ {0x0000a254, 0x00000000}, ++ {0x0000a258, 0x0ccb5380}, ++ {0x0000a25c, 0x15151501}, ++ {0x0000a260, 0xdfa90f01}, ++ {0x0000a268, 0x00000000}, ++ {0x0000a26c, 0x0ebae9e6}, ++ {0x0000a388, 0x0c000000}, ++ {0x0000a38c, 0x20202020}, ++ {0x0000a390, 0x20202020}, ++ {0x0000a39c, 0x00000001}, ++ {0x0000a3a0, 0x00000000}, ++ {0x0000a3a4, 0x00000000}, ++ {0x0000a3a8, 0x00000000}, ++ {0x0000a3ac, 0x00000000}, ++ {0x0000a3b0, 0x00000000}, ++ {0x0000a3b4, 0x00000000}, ++ {0x0000a3b8, 0x00000000}, ++ {0x0000a3bc, 0x00000000}, ++ {0x0000a3c0, 0x00000000}, ++ {0x0000a3c4, 0x00000000}, ++ {0x0000a3cc, 0x20202020}, ++ {0x0000a3d0, 0x20202020}, ++ {0x0000a3d4, 0x20202020}, ++ {0x0000a3e4, 0x00000000}, ++ {0x0000a3e8, 0x18c43433}, ++ {0x0000a3ec, 0x00f70081}, ++ {0x0000a3f0, 0x01036a2f}, ++ {0x0000a3f4, 0x00000000}, ++ {0x0000d270, 0x0d820820}, ++ {0x0000d35c, 0x07ffffef}, ++ {0x0000d360, 0x0fffffe7}, ++ {0x0000d364, 0x17ffffe5}, ++ {0x0000d368, 0x1fffffe4}, ++ {0x0000d36c, 0x37ffffe3}, ++ {0x0000d370, 0x3fffffe3}, ++ {0x0000d374, 0x57ffffe3}, ++ {0x0000d378, 0x5fffffe2}, ++ {0x0000d37c, 0x7fffffe2}, ++ {0x0000d380, 0x7f3c7bba}, ++ {0x0000d384, 0xf3307ff0}, + }; + + static const u32 ar9271Common_normal_cck_fir_coeff_9271[][2] = { +- { 0x0000a1f4, 0x00fffeff }, +- { 0x0000a1f8, 0x00f5f9ff }, +- { 0x0000a1fc, 0xb79f6427 }, ++ /* Addr allmodes */ ++ {0x0000a1f4, 0x00fffeff}, ++ {0x0000a1f8, 0x00f5f9ff}, ++ {0x0000a1fc, 0xb79f6427}, + }; + + static const u32 ar9271Common_japan_2484_cck_fir_coeff_9271[][2] = { +- { 0x0000a1f4, 0x00000000 }, +- { 0x0000a1f8, 0xefff0301 }, +- { 0x0000a1fc, 0xca9228ee }, ++ /* Addr allmodes */ ++ {0x0000a1f4, 0x00000000}, ++ {0x0000a1f8, 0xefff0301}, ++ {0x0000a1fc, 0xca9228ee}, + }; + + static const u32 ar9271Modes_9271_1_0_only[][6] = { +- { 0x00009910, 0x30002311, 0x30002311, 0x30002311, 0x30002311, 0x30002311 }, +- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, ++ {0x00009910, 0x30002311, 0x30002311, 0x30002311, 0x30002311, 0x30002311}, ++ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, + }; + + static const u32 ar9271Modes_9271_ANI_reg[][6] = { +- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, +- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, +- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, +- { 0x0000986c, 0x06903881, 0x06903881, 0x06903881, 0x06903881, 0x06903881 }, +- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, +- { 0x0000a208, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8 }, +- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, +- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, ++ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, ++ {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e}, ++ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, ++ {0x0000986c, 0x06903881, 0x06903881, 0x06903881, 0x06903881, 0x06903881}, ++ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, ++ {0x0000a208, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8}, ++ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, ++ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, + }; + + static const u32 ar9271Modes_normal_power_tx_gain_9271[][6] = { +- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x0001e610, 0x0001e610, 0x00000000 }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0002d6d0, 0x0002d6d0, 0x00000000 }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x00039758, 0x00039758, 0x00000000 }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x0003b759, 0x0003b759, 0x00000000 }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x0003d75a, 0x0003d75a, 0x00000000 }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x0004175c, 0x0004175c, 0x00000000 }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x0004575e, 0x0004575e, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0004979f, 0x0004979f, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x0004d7df, 0x0004d7df, 0x00000000 }, +- { 0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000 }, +- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, +- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, +- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x00007838, 0x00000029, 0x00000029, 0x00000029, 0x00000029, 0x00000029 }, +- { 0x00007824, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff }, +- { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, +- { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, +- { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a218652, 0x0a218652, 0x0a22a652 }, +- { 0x0000a278, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, +- { 0x0000a27c, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd }, +- { 0x0000a394, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, +- { 0x0000a398, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd }, +- { 0x0000a3dc, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, +- { 0x0000a3e0, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x0001e610, 0x0001e610, 0x00000000}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0002d6d0, 0x0002d6d0, 0x00000000}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x00039758, 0x00039758, 0x00000000}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x0003b759, 0x0003b759, 0x00000000}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x0003d75a, 0x0003d75a, 0x00000000}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x0004175c, 0x0004175c, 0x00000000}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x0004575e, 0x0004575e, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0004979f, 0x0004979f, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x0004d7df, 0x0004d7df, 0x00000000}, ++ {0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000}, ++ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, ++ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, ++ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x00007838, 0x00000029, 0x00000029, 0x00000029, 0x00000029, 0x00000029}, ++ {0x00007824, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff}, ++ {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4}, ++ {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04}, ++ {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a218652, 0x0a218652, 0x0a22a652}, ++ {0x0000a278, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd}, ++ {0x0000a27c, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd}, ++ {0x0000a394, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd}, ++ {0x0000a398, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd}, ++ {0x0000a3dc, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd}, ++ {0x0000a3e0, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd}, + }; + + static const u32 ar9271Modes_high_power_tx_gain_9271[][6] = { +- { 0x0000a300, 0x00000000, 0x00000000, 0x00010000, 0x00010000, 0x00000000 }, +- { 0x0000a304, 0x00000000, 0x00000000, 0x00016200, 0x00016200, 0x00000000 }, +- { 0x0000a308, 0x00000000, 0x00000000, 0x00018201, 0x00018201, 0x00000000 }, +- { 0x0000a30c, 0x00000000, 0x00000000, 0x0001b240, 0x0001b240, 0x00000000 }, +- { 0x0000a310, 0x00000000, 0x00000000, 0x0001d241, 0x0001d241, 0x00000000 }, +- { 0x0000a314, 0x00000000, 0x00000000, 0x0001f600, 0x0001f600, 0x00000000 }, +- { 0x0000a318, 0x00000000, 0x00000000, 0x00022800, 0x00022800, 0x00000000 }, +- { 0x0000a31c, 0x00000000, 0x00000000, 0x00026802, 0x00026802, 0x00000000 }, +- { 0x0000a320, 0x00000000, 0x00000000, 0x0002b805, 0x0002b805, 0x00000000 }, +- { 0x0000a324, 0x00000000, 0x00000000, 0x0002ea41, 0x0002ea41, 0x00000000 }, +- { 0x0000a328, 0x00000000, 0x00000000, 0x00038b00, 0x00038b00, 0x00000000 }, +- { 0x0000a32c, 0x00000000, 0x00000000, 0x0003ab40, 0x0003ab40, 0x00000000 }, +- { 0x0000a330, 0x00000000, 0x00000000, 0x0003cd80, 0x0003cd80, 0x00000000 }, +- { 0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000 }, +- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, +- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, +- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, +- { 0x00007838, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b }, +- { 0x00007824, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff }, +- { 0x0000786c, 0x08609eb6, 0x08609eb6, 0x08609eba, 0x08609eba, 0x08609eb6 }, +- { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, +- { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a214652, 0x0a214652, 0x0a22a652 }, +- { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, +- { 0x0000a27c, 0x05018063, 0x05038063, 0x05018063, 0x05018063, 0x05018063 }, +- { 0x0000a394, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63 }, +- { 0x0000a398, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063 }, +- { 0x0000a3dc, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63 }, +- { 0x0000a3e0, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063 }, ++ {0x0000a300, 0x00000000, 0x00000000, 0x00010000, 0x00010000, 0x00000000}, ++ {0x0000a304, 0x00000000, 0x00000000, 0x00016200, 0x00016200, 0x00000000}, ++ {0x0000a308, 0x00000000, 0x00000000, 0x00018201, 0x00018201, 0x00000000}, ++ {0x0000a30c, 0x00000000, 0x00000000, 0x0001b240, 0x0001b240, 0x00000000}, ++ {0x0000a310, 0x00000000, 0x00000000, 0x0001d241, 0x0001d241, 0x00000000}, ++ {0x0000a314, 0x00000000, 0x00000000, 0x0001f600, 0x0001f600, 0x00000000}, ++ {0x0000a318, 0x00000000, 0x00000000, 0x00022800, 0x00022800, 0x00000000}, ++ {0x0000a31c, 0x00000000, 0x00000000, 0x00026802, 0x00026802, 0x00000000}, ++ {0x0000a320, 0x00000000, 0x00000000, 0x0002b805, 0x0002b805, 0x00000000}, ++ {0x0000a324, 0x00000000, 0x00000000, 0x0002ea41, 0x0002ea41, 0x00000000}, ++ {0x0000a328, 0x00000000, 0x00000000, 0x00038b00, 0x00038b00, 0x00000000}, ++ {0x0000a32c, 0x00000000, 0x00000000, 0x0003ab40, 0x0003ab40, 0x00000000}, ++ {0x0000a330, 0x00000000, 0x00000000, 0x0003cd80, 0x0003cd80, 0x00000000}, ++ {0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000}, ++ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, ++ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, ++ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, ++ {0x00007838, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b}, ++ {0x00007824, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff}, ++ {0x0000786c, 0x08609eb6, 0x08609eb6, 0x08609eba, 0x08609eba, 0x08609eb6}, ++ {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00}, ++ {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a214652, 0x0a214652, 0x0a22a652}, ++ {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, ++ {0x0000a27c, 0x05018063, 0x05038063, 0x05018063, 0x05018063, 0x05018063}, ++ {0x0000a394, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63}, ++ {0x0000a398, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063}, ++ {0x0000a3dc, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63}, ++ {0x0000a3e0, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063}, + }; + +-#endif /* INITVALS_9002_10_H */ diff --git a/package/mac80211/patches/522-initval_updates.patch b/package/mac80211/patches/522-initval_updates.patch new file mode 100644 index 000000000..708b8150d --- /dev/null +++ b/package/mac80211/patches/522-initval_updates.patch @@ -0,0 +1,376 @@ +--- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h +@@ -21,6 +21,8 @@ static const u32 ar5416Modes_9100[][6] = + {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, + {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, + {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, ++ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, ++ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, + {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, + {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, + {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, +@@ -31,17 +33,17 @@ static const u32 ar5416Modes_9100[][6] = + {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, + {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, + {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, +- {0x00009850, 0x6d48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6d48b0e2, 0x6d48b0e2}, +- {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec86d2e, 0x7ec84d2e, 0x7ec82d2e}, +- {0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e}, ++ {0x00009850, 0x6c48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6c48b0e2, 0x6c48b0e2}, ++ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, ++ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, + {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, + {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, + {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, + {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, +- {0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0}, ++ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, + {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, +- {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a11, 0xd00a8a0d, 0xd00a8a0d}, +- {0x00009940, 0x00754604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204}, ++ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, ++ {0x00009940, 0x00750604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204}, + {0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020}, + {0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e}, + {0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff}, +@@ -52,7 +54,7 @@ static const u32 ar5416Modes_9100[][6] = + {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00}, + {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, + {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, +- {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, ++ {0x000099c8, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329}, + {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, + {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, + {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, +@@ -395,12 +397,12 @@ static const u32 ar5416Common_9100[][2] + {0x0000a22c, 0x00000000}, + {0x0000a234, 0x20202020}, + {0x0000a238, 0x20202020}, +- {0x0000a23c, 0x13c889ae}, ++ {0x0000a23c, 0x13c889af}, + {0x0000a240, 0x38490a20}, + {0x0000a244, 0x00007bb6}, + {0x0000a248, 0x0fff3ffc}, + {0x0000a24c, 0x00000001}, +- {0x0000a250, 0x0000a000}, ++ {0x0000a250, 0x0000e000}, + {0x0000a254, 0x00000000}, + {0x0000a258, 0x0cc75380}, + {0x0000a25c, 0x0f0f0f01}, +@@ -671,6 +673,8 @@ static const u32 ar5416Modes_9160[][6] = + {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, + {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, + {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, ++ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, ++ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, + {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, + {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, + {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, +@@ -681,11 +685,11 @@ static const u32 ar5416Modes_9160[][6] = + {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, + {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, + {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, +- {0x00009850, 0x6c48b4e2, 0x6c48b4e2, 0x6c48b0e2, 0x6c48b0e2, 0x6c48b0e2}, ++ {0x00009850, 0x6c48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6c48b0e2, 0x6c48b0e2}, + {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, +- {0x0000985c, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e}, ++ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, + {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, +- {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, ++ {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, + {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, + {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, + {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, +@@ -697,10 +701,10 @@ static const u32 ar5416Modes_9160[][6] = + {0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, + {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120}, + {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce}, +- {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00}, ++ {0x000099bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00}, + {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, + {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, +- {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, ++ {0x000099c8, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329}, + {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, + {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, + {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, +@@ -851,7 +855,6 @@ static const u32 ar5416Common_9160[][2] + {0x00008110, 0x00000168}, + {0x00008118, 0x000100aa}, + {0x0000811c, 0x00003210}, +- {0x00008120, 0x08f04800}, + {0x00008124, 0x00000000}, + {0x00008128, 0x00000000}, + {0x0000812c, 0x00000000}, +@@ -867,7 +870,6 @@ static const u32 ar5416Common_9160[][2] + {0x00008178, 0x00000100}, + {0x0000817c, 0x00000000}, + {0x000081c4, 0x00000000}, +- {0x000081d0, 0x00003210}, + {0x000081ec, 0x00000000}, + {0x000081f0, 0x00000000}, + {0x000081f4, 0x00000000}, +@@ -898,6 +900,7 @@ static const u32 ar5416Common_9160[][2] + {0x00008258, 0x00000000}, + {0x0000825c, 0x400000ff}, + {0x00008260, 0x00080922}, ++ {0x00008264, 0x88a00010}, + {0x00008270, 0x00000000}, + {0x00008274, 0x40000000}, + {0x00008278, 0x003e4180}, +@@ -1058,9 +1061,9 @@ static const u32 ar5416Common_9160[][2] + {0x0000a25c, 0x0f0f0f01}, + {0x0000a260, 0xdfa91f01}, + {0x0000a268, 0x00000001}, +- {0x0000a26c, 0x0ebae9c6}, +- {0x0000b26c, 0x0ebae9c6}, +- {0x0000c26c, 0x0ebae9c6}, ++ {0x0000a26c, 0x0e79e5c6}, ++ {0x0000b26c, 0x0e79e5c6}, ++ {0x0000c26c, 0x0e79e5c6}, + {0x0000d270, 0x00820820}, + {0x0000a278, 0x1ce739ce}, + {0x0000a27c, 0x050701ce}, +--- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h +@@ -600,12 +600,6 @@ static const u32 ar9280Modes_9280_2[][6] + {0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c}, + {0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00}, + {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, +- {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, +- {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, +- {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, +- {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, +- {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, +- {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444}, + {0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, + {0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, +@@ -842,7 +836,7 @@ static const u32 ar9280Common_9280_2[][2 + {0x00009958, 0x2108ecff}, + {0x00009940, 0x14750604}, + {0x0000c95c, 0x004b6a8e}, +- {0x00009970, 0x190fb515}, ++ {0x00009970, 0x190fb514}, + {0x00009974, 0x00000000}, + {0x00009978, 0x00000001}, + {0x0000997c, 0x00000000}, +@@ -860,6 +854,12 @@ static const u32 ar9280Common_9280_2[][2 + {0x000099ac, 0x006f0000}, + {0x000099b0, 0x03051000}, + {0x000099b4, 0x00000820}, ++ {0x000099c4, 0x06336f77}, ++ {0x000099c8, 0x6af6532f}, ++ {0x000099cc, 0x08f186c8}, ++ {0x000099d0, 0x00046384}, ++ {0x000099d4, 0x00000000}, ++ {0x000099d8, 0x00000000}, + {0x000099dc, 0x00000000}, + {0x000099e0, 0x00000000}, + {0x000099e4, 0xaaaaaaaa}, +@@ -924,7 +924,6 @@ static const u32 ar9280Common_9280_2[][2 + {0x0000a3e0, 0x000001ce}, + {0x0000a3e4, 0x00000000}, + {0x0000a3e8, 0x18c43433}, +- {0x0000a3ec, 0x00f70081}, + {0x00007800, 0x00040000}, + {0x00007804, 0xdb005012}, + {0x00007808, 0x04924914}, +@@ -1025,95 +1024,95 @@ static const u32 ar9280Modes_backoff_23d + {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, + {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, + {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10}, +- {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b14, 0x00008b14, 0x00008b14}, +- {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b01, 0x00008b01, 0x00008b01}, +- {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b05, 0x00008b05, 0x00008b05}, +- {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b09, 0x00008b09, 0x00008b09}, +- {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b0d, 0x00008b0d, 0x00008b0d}, +- {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b11, 0x00008b11, 0x00008b11}, +- {0x00009adc, 0x0000b390, 0x0000b390, 0x00008b15, 0x00008b15, 0x00008b15}, +- {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008b02, 0x00008b02, 0x00008b02}, +- {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008b06, 0x00008b06, 0x00008b06}, +- {0x00009ae8, 0x0000b780, 0x0000b780, 0x00008b0a, 0x00008b0a, 0x00008b0a}, +- {0x00009aec, 0x0000b784, 0x0000b784, 0x00008b0e, 0x00008b0e, 0x00008b0e}, +- {0x00009af0, 0x0000b788, 0x0000b788, 0x00008b12, 0x00008b12, 0x00008b12}, +- {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008b16, 0x00008b16, 0x00008b16}, +- {0x00009af8, 0x0000b790, 0x0000b790, 0x00008b03, 0x00008b03, 0x00008b03}, +- {0x00009afc, 0x0000b794, 0x0000b794, 0x00008b07, 0x00008b07, 0x00008b07}, +- {0x00009b00, 0x0000b798, 0x0000b798, 0x00008b0b, 0x00008b0b, 0x00008b0b}, +- {0x00009b04, 0x0000d784, 0x0000d784, 0x00008b0f, 0x00008b0f, 0x00008b0f}, +- {0x00009b08, 0x0000d788, 0x0000d788, 0x00008b13, 0x00008b13, 0x00008b13}, +- {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008b17, 0x00008b17, 0x00008b17}, +- {0x00009b10, 0x0000d790, 0x0000d790, 0x00008b23, 0x00008b23, 0x00008b23}, +- {0x00009b14, 0x0000f780, 0x0000f780, 0x00008b27, 0x00008b27, 0x00008b27}, +- {0x00009b18, 0x0000f784, 0x0000f784, 0x00008b2b, 0x00008b2b, 0x00008b2b}, +- {0x00009b1c, 0x0000f788, 0x0000f788, 0x00008b2f, 0x00008b2f, 0x00008b2f}, +- {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008b33, 0x00008b33, 0x00008b33}, +- {0x00009b24, 0x0000f790, 0x0000f790, 0x00008b37, 0x00008b37, 0x00008b37}, +- {0x00009b28, 0x0000f794, 0x0000f794, 0x00008b43, 0x00008b43, 0x00008b43}, +- {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008b47, 0x00008b47, 0x00008b47}, +- {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008b4b, 0x00008b4b, 0x00008b4b}, +- {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008b4f, 0x00008b4f, 0x00008b4f}, +- {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008b53, 0x00008b53, 0x00008b53}, +- {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008b57, 0x00008b57, 0x00008b57}, +- {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, +- {0x00009848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, +- {0x0000a848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, ++ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b80, 0x00008b80, 0x00008b80}, ++ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b84, 0x00008b84, 0x00008b84}, ++ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b88, 0x00008b88, 0x00008b88}, ++ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b8c, 0x00008b8c, 0x00008b8c}, ++ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b90, 0x00008b90, 0x00008b90}, ++ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b94, 0x00008b94, 0x00008b94}, ++ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008b98, 0x00008b98, 0x00008b98}, ++ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008ba4, 0x00008ba4, 0x00008ba4}, ++ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008ba8, 0x00008ba8, 0x00008ba8}, ++ {0x00009ae8, 0x0000b780, 0x0000b780, 0x00008bac, 0x00008bac, 0x00008bac}, ++ {0x00009aec, 0x0000b784, 0x0000b784, 0x00008bb0, 0x00008bb0, 0x00008bb0}, ++ {0x00009af0, 0x0000b788, 0x0000b788, 0x00008bb4, 0x00008bb4, 0x00008bb4}, ++ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008ba1, 0x00008ba1, 0x00008ba1}, ++ {0x00009af8, 0x0000b790, 0x0000b790, 0x00008ba5, 0x00008ba5, 0x00008ba5}, ++ {0x00009afc, 0x0000b794, 0x0000b794, 0x00008ba9, 0x00008ba9, 0x00008ba9}, ++ {0x00009b00, 0x0000b798, 0x0000b798, 0x00008bad, 0x00008bad, 0x00008bad}, ++ {0x00009b04, 0x0000d784, 0x0000d784, 0x00008bb1, 0x00008bb1, 0x00008bb1}, ++ {0x00009b08, 0x0000d788, 0x0000d788, 0x00008bb5, 0x00008bb5, 0x00008bb5}, ++ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008ba2, 0x00008ba2, 0x00008ba2}, ++ {0x00009b10, 0x0000d790, 0x0000d790, 0x00008ba6, 0x00008ba6, 0x00008ba6}, ++ {0x00009b14, 0x0000f780, 0x0000f780, 0x00008baa, 0x00008baa, 0x00008baa}, ++ {0x00009b18, 0x0000f784, 0x0000f784, 0x00008bae, 0x00008bae, 0x00008bae}, ++ {0x00009b1c, 0x0000f788, 0x0000f788, 0x00008bb2, 0x00008bb2, 0x00008bb2}, ++ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008bb6, 0x00008bb6, 0x00008bb6}, ++ {0x00009b24, 0x0000f790, 0x0000f790, 0x00008ba3, 0x00008ba3, 0x00008ba3}, ++ {0x00009b28, 0x0000f794, 0x0000f794, 0x00008ba7, 0x00008ba7, 0x00008ba7}, ++ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008bab, 0x00008bab, 0x00008bab}, ++ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008baf, 0x00008baf, 0x00008baf}, ++ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008bb3, 0x00008bb3, 0x00008bb3}, ++ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008bb7, 0x00008bb7, 0x00008bb7}, ++ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008bc3, 0x00008bc3, 0x00008bc3}, ++ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008bc7, 0x00008bc7, 0x00008bc7}, ++ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008bcb, 0x00008bcb, 0x00008bcb}, ++ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008bcf, 0x00008bcf, 0x00008bcf}, ++ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008bd3, 0x00008bd3, 0x00008bd3}, ++ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008bd7, 0x00008bd7, 0x00008bd7}, ++ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, ++ {0x00009848, 0x00001066, 0x00001066, 0x00001055, 0x00001055, 0x00001055}, ++ {0x0000a848, 0x00001066, 0x00001066, 0x00001055, 0x00001055, 0x00001055}, + }; + + static const u32 ar9280Modes_original_rxgain_9280_2[][6] = { +- {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, +- {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, +- {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, +- {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, +- {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, ++ {0x00009a00, 0x00008184, 0x00008184, 0x00008000, 0x00008000, 0x00008000}, ++ {0x00009a04, 0x00008188, 0x00008188, 0x00008000, 0x00008000, 0x00008000}, ++ {0x00009a08, 0x0000818c, 0x0000818c, 0x00008000, 0x00008000, 0x00008000}, ++ {0x00009a0c, 0x00008190, 0x00008190, 0x00008000, 0x00008000, 0x00008000}, ++ {0x00009a10, 0x00008194, 0x00008194, 0x00008000, 0x00008000, 0x00008000}, + {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, + {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, + {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, +@@ -1399,6 +1398,7 @@ static const u32 ar9280Modes_high_power_ + {0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5}, + {0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54}, + {0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5}, ++ {0x0000a3ec, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081}, + {0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, + {0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, + {0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000}, +@@ -1432,6 +1432,7 @@ static const u32 ar9280Modes_original_tx + {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a}, + {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9}, + {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42}, ++ {0x0000a3ec, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081}, + {0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, + {0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, + {0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000}, diff --git a/package/mac80211/patches/530-ath9k_nf_sanitize.patch b/package/mac80211/patches/530-ath9k_nf_sanitize.patch new file mode 100644 index 000000000..191daeab2 --- /dev/null +++ b/package/mac80211/patches/530-ath9k_nf_sanitize.patch @@ -0,0 +1,406 @@ +--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c +@@ -1678,6 +1678,15 @@ static void ar5008_hw_ani_cache_ini_regs + aniState->cycleCount = 0; + } + ++static void ar5008_hw_set_nf_limits(struct ath_hw *ah) ++{ ++ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_2GHZ; ++ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_2GHZ; ++ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_5416_2GHZ; ++ ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_5GHZ; ++ ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_5GHZ; ++ ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_5416_5GHZ; ++} + + void ar5008_hw_attach_phy_ops(struct ath_hw *ah) + { +@@ -1715,4 +1724,6 @@ void ar5008_hw_attach_phy_ops(struct ath + priv_ops->compute_pll_control = ar9160_hw_compute_pll_control; + else + priv_ops->compute_pll_control = ar5008_hw_compute_pll_control; ++ ++ ar5008_hw_set_nf_limits(ah); + } +--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c +@@ -481,9 +481,6 @@ static void ar9002_hw_do_getnf(struct at + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ctl] [chain 0] is %d\n", nf); + +- if (AR_SREV_9271(ah) && (nf >= -114)) +- nf = -116; +- + nfarray[0] = nf; + + if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { +@@ -503,9 +500,6 @@ static void ar9002_hw_do_getnf(struct at + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ext] [chain 0] is %d\n", nf); + +- if (AR_SREV_9271(ah) && (nf >= -114)) +- nf = -116; +- + nfarray[3] = nf; + + if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { +@@ -520,6 +514,30 @@ static void ar9002_hw_do_getnf(struct at + } + } + ++static void ar9002_hw_set_nf_limits(struct ath_hw *ah) ++{ ++ if (AR_SREV_9285(ah)) { ++ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9285_2GHZ; ++ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9285_2GHZ; ++ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9285_2GHZ; ++ } else if (AR_SREV_9287(ah)) { ++ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9287_2GHZ; ++ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9287_2GHZ; ++ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9287_2GHZ; ++ } else if (AR_SREV_9271(ah)) { ++ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9271_2GHZ; ++ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9271_2GHZ; ++ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9271_2GHZ; ++ } else { ++ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9280_2GHZ; ++ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9280_2GHZ; ++ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9280_2GHZ; ++ ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_9280_5GHZ; ++ ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_9280_5GHZ; ++ ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_9280_5GHZ; ++ } ++} ++ + void ar9002_hw_attach_phy_ops(struct ath_hw *ah) + { + struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); +@@ -532,4 +550,6 @@ void ar9002_hw_attach_phy_ops(struct ath + priv_ops->olc_init = ar9002_olc_init; + priv_ops->compute_pll_control = ar9002_hw_compute_pll_control; + priv_ops->do_getnf = ar9002_hw_do_getnf; ++ ++ ar9002_hw_set_nf_limits(ah); + } +--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.h ++++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.h +@@ -576,4 +576,30 @@ + #define AR_PHY_CH2_EXT_MINCCA_PWR 0xFF800000 + #define AR_PHY_CH2_EXT_MINCCA_PWR_S 23 + ++#define AR_PHY_CCA_NOM_VAL_5416_2GHZ -90 ++#define AR_PHY_CCA_NOM_VAL_5416_5GHZ -100 ++#define AR_PHY_CCA_MIN_GOOD_VAL_5416_2GHZ -100 ++#define AR_PHY_CCA_MIN_GOOD_VAL_5416_5GHZ -110 ++#define AR_PHY_CCA_MAX_GOOD_VAL_5416_2GHZ -80 ++#define AR_PHY_CCA_MAX_GOOD_VAL_5416_5GHZ -90 ++ ++#define AR_PHY_CCA_NOM_VAL_9280_2GHZ -112 ++#define AR_PHY_CCA_NOM_VAL_9280_5GHZ -112 ++#define AR_PHY_CCA_MIN_GOOD_VAL_9280_2GHZ -127 ++#define AR_PHY_CCA_MIN_GOOD_VAL_9280_5GHZ -122 ++#define AR_PHY_CCA_MAX_GOOD_VAL_9280_2GHZ -97 ++#define AR_PHY_CCA_MAX_GOOD_VAL_9280_5GHZ -102 ++ ++#define AR_PHY_CCA_NOM_VAL_9285_2GHZ -118 ++#define AR_PHY_CCA_MIN_GOOD_VAL_9285_2GHZ -127 ++#define AR_PHY_CCA_MAX_GOOD_VAL_9285_2GHZ -108 ++ ++#define AR_PHY_CCA_NOM_VAL_9271_2GHZ -118 ++#define AR_PHY_CCA_MIN_GOOD_VAL_9271_2GHZ -127 ++#define AR_PHY_CCA_MAX_GOOD_VAL_9271_2GHZ -116 ++ ++#define AR_PHY_CCA_NOM_VAL_9287_2GHZ -120 ++#define AR_PHY_CCA_MIN_GOOD_VAL_9287_2GHZ -127 ++#define AR_PHY_CCA_MAX_GOOD_VAL_9287_2GHZ -110 ++ + #endif +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -1015,52 +1015,6 @@ static bool ar9003_hw_ani_control(struct + return true; + } + +-static void ar9003_hw_nf_sanitize_2g(struct ath_hw *ah, s16 *nf) +-{ +- struct ath_common *common = ath9k_hw_common(ah); +- +- if (*nf > ah->nf_2g_max) { +- ath_print(common, ATH_DBG_CALIBRATE, +- "2 GHz NF (%d) > MAX (%d), " +- "correcting to MAX", +- *nf, ah->nf_2g_max); +- *nf = ah->nf_2g_max; +- } else if (*nf < ah->nf_2g_min) { +- ath_print(common, ATH_DBG_CALIBRATE, +- "2 GHz NF (%d) < MIN (%d), " +- "correcting to MIN", +- *nf, ah->nf_2g_min); +- *nf = ah->nf_2g_min; +- } +-} +- +-static void ar9003_hw_nf_sanitize_5g(struct ath_hw *ah, s16 *nf) +-{ +- struct ath_common *common = ath9k_hw_common(ah); +- +- if (*nf > ah->nf_5g_max) { +- ath_print(common, ATH_DBG_CALIBRATE, +- "5 GHz NF (%d) > MAX (%d), " +- "correcting to MAX", +- *nf, ah->nf_5g_max); +- *nf = ah->nf_5g_max; +- } else if (*nf < ah->nf_5g_min) { +- ath_print(common, ATH_DBG_CALIBRATE, +- "5 GHz NF (%d) < MIN (%d), " +- "correcting to MIN", +- *nf, ah->nf_5g_min); +- *nf = ah->nf_5g_min; +- } +-} +- +-static void ar9003_hw_nf_sanitize(struct ath_hw *ah, s16 *nf) +-{ +- if (IS_CHAN_2GHZ(ah->curchan)) +- ar9003_hw_nf_sanitize_2g(ah, nf); +- else +- ar9003_hw_nf_sanitize_5g(ah, nf); +-} +- + static void ar9003_hw_do_getnf(struct ath_hw *ah, + int16_t nfarray[NUM_NF_READINGS]) + { +@@ -1070,7 +1024,6 @@ static void ar9003_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_CCA_0), AR_PHY_MINCCA_PWR); + if (nf & 0x100) + nf = 0 - ((nf ^ 0x1ff) + 1); +- ar9003_hw_nf_sanitize(ah, &nf); + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ctl] [chain 0] is %d\n", nf); + nfarray[0] = nf; +@@ -1078,7 +1031,6 @@ static void ar9003_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_CCA_1), AR_PHY_CH1_MINCCA_PWR); + if (nf & 0x100) + nf = 0 - ((nf ^ 0x1ff) + 1); +- ar9003_hw_nf_sanitize(ah, &nf); + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ctl] [chain 1] is %d\n", nf); + nfarray[1] = nf; +@@ -1086,7 +1038,6 @@ static void ar9003_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); + if (nf & 0x100) + nf = 0 - ((nf ^ 0x1ff) + 1); +- ar9003_hw_nf_sanitize(ah, &nf); + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ctl] [chain 2] is %d\n", nf); + nfarray[2] = nf; +@@ -1094,7 +1045,6 @@ static void ar9003_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); + if (nf & 0x100) + nf = 0 - ((nf ^ 0x1ff) + 1); +- ar9003_hw_nf_sanitize(ah, &nf); + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ext] [chain 0] is %d\n", nf); + nfarray[3] = nf; +@@ -1102,7 +1052,6 @@ static void ar9003_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_1), AR_PHY_CH1_EXT_MINCCA_PWR); + if (nf & 0x100) + nf = 0 - ((nf ^ 0x1ff) + 1); +- ar9003_hw_nf_sanitize(ah, &nf); + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ext] [chain 1] is %d\n", nf); + nfarray[4] = nf; +@@ -1110,18 +1059,19 @@ static void ar9003_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_2), AR_PHY_CH2_EXT_MINCCA_PWR); + if (nf & 0x100) + nf = 0 - ((nf ^ 0x1ff) + 1); +- ar9003_hw_nf_sanitize(ah, &nf); + ath_print(common, ATH_DBG_CALIBRATE, + "NF calibrated [ext] [chain 2] is %d\n", nf); + nfarray[5] = nf; + } + +-void ar9003_hw_set_nf_limits(struct ath_hw *ah) ++static void ar9003_hw_set_nf_limits(struct ath_hw *ah) + { +- ah->nf_2g_max = AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ; +- ah->nf_2g_min = AR_PHY_CCA_MIN_GOOD_VAL_9300_2GHZ; +- ah->nf_5g_max = AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ; +- ah->nf_5g_min = AR_PHY_CCA_MIN_GOOD_VAL_9300_5GHZ; ++ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ; ++ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_2GHZ; ++ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9300_2GHZ; ++ ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ; ++ ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_5GHZ; ++ ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_9300_5GHZ; + } + + /* +@@ -1309,6 +1259,8 @@ void ar9003_hw_attach_phy_ops(struct ath + priv_ops->do_getnf = ar9003_hw_do_getnf; + priv_ops->loadnf = ar9003_hw_loadnf; + priv_ops->ani_cache_ini_regs = ar9003_hw_ani_cache_ini_regs; ++ ++ ar9003_hw_set_nf_limits(ah); + } + + void ar9003_hw_bb_watchdog_config(struct ath_hw *ah) +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -74,13 +74,8 @@ static void ath9k_hw_update_nfcal_hist_b + h[i].currIndex = 0; + + if (h[i].invalidNFcount > 0) { +- if (nfarray[i] < AR_PHY_CCA_MIN_BAD_VALUE || +- nfarray[i] > AR_PHY_CCA_MAX_HIGH_VALUE) { +- h[i].invalidNFcount = ATH9K_NF_CAL_HIST_MAX; +- } else { +- h[i].invalidNFcount--; +- h[i].privNF = nfarray[i]; +- } ++ h[i].invalidNFcount--; ++ h[i].privNF = nfarray[i]; + } else { + h[i].privNF = + ath9k_hw_get_nf_hist_mid(h[i].nfCalBuffer); +@@ -172,6 +167,35 @@ void ath9k_hw_start_nfcal(struct ath_hw + REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); + } + ++static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf) ++{ ++ struct ath_common *common = ath9k_hw_common(ah); ++ struct ath_nf_limits *limit; ++ int i; ++ ++ if (IS_CHAN_2GHZ(ah->curchan)) ++ limit = &ah->nf_2g; ++ else ++ limit = &ah->nf_5g; ++ ++ for (i = 0; i < NUM_NF_READINGS; i++) { ++ if (!nf[i]) ++ continue; ++ ++ if (nf[i] > limit->max) { ++ ath_print(common, ATH_DBG_CALIBRATE, ++ "NF[%d] (%d) > MAX (%d), correcting to MAX", ++ i, nf[i], limit->max); ++ nf[i] = limit->max; ++ } else if (nf[i] < limit->min) { ++ ath_print(common, ATH_DBG_CALIBRATE, ++ "NF[%d] (%d) < MIN (%d), correcting to NOM", ++ i, nf[i], limit->min); ++ nf[i] = limit->nominal; ++ } ++ } ++} ++ + int16_t ath9k_hw_getnf(struct ath_hw *ah, + struct ath9k_channel *chan) + { +@@ -190,6 +214,7 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah + return chan->rawNoiseFloor; + } else { + ath9k_hw_do_getnf(ah, nfarray); ++ ath9k_hw_nf_sanitize(ah, nfarray); + nf = nfarray[0]; + if (ath9k_hw_get_nf_thresh(ah, c->band, &nfThresh) + && nf > nfThresh) { +@@ -211,25 +236,21 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah + + void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah) + { ++ struct ath_nf_limits *limit; + int i, j; +- s16 noise_floor; + +- if (AR_SREV_9280(ah)) +- noise_floor = AR_PHY_CCA_MAX_AR9280_GOOD_VALUE; +- else if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) +- noise_floor = AR_PHY_CCA_MAX_AR9285_GOOD_VALUE; +- else if (AR_SREV_9287(ah)) +- noise_floor = AR_PHY_CCA_MAX_AR9287_GOOD_VALUE; ++ if (!ah->curchan || IS_CHAN_2GHZ(ah->curchan)) ++ limit = &ah->nf_2g; + else +- noise_floor = AR_PHY_CCA_MAX_AR5416_GOOD_VALUE; ++ limit = &ah->nf_5g; + + for (i = 0; i < NUM_NF_READINGS; i++) { + ah->nfCalHist[i].currIndex = 0; +- ah->nfCalHist[i].privNF = noise_floor; ++ ah->nfCalHist[i].privNF = limit->nominal; + ah->nfCalHist[i].invalidNFcount = + AR_PHY_CCA_FILTERWINDOW_LENGTH; + for (j = 0; j < ATH9K_NF_CAL_HIST_MAX; j++) { +- ah->nfCalHist[i].nfCalBuffer[j] = noise_floor; ++ ah->nfCalHist[i].nfCalBuffer[j] = limit->nominal; + } + } + } +--- a/drivers/net/wireless/ath/ath9k/calib.h ++++ b/drivers/net/wireless/ath/ath9k/calib.h +@@ -19,12 +19,6 @@ + + #include "hw.h" + +-#define AR_PHY_CCA_MAX_AR5416_GOOD_VALUE -85 +-#define AR_PHY_CCA_MAX_AR9280_GOOD_VALUE -112 +-#define AR_PHY_CCA_MAX_AR9285_GOOD_VALUE -118 +-#define AR_PHY_CCA_MAX_AR9287_GOOD_VALUE -118 +-#define AR_PHY_CCA_MAX_HIGH_VALUE -62 +-#define AR_PHY_CCA_MIN_BAD_VALUE -140 + #define AR_PHY_CCA_FILTERWINDOW_LENGTH_INIT 3 + #define AR_PHY_CCA_FILTERWINDOW_LENGTH 5 + +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -621,9 +621,6 @@ static int __ath9k_hw_init(struct ath_hw + else + ah->tx_trig_level = (AR_FTRIG_512B >> AR_FTRIG_S); + +- if (AR_SREV_9300_20_OR_LATER(ah)) +- ar9003_hw_set_nf_limits(ah); +- + ath9k_init_nfcal_hist_buffer(ah); + ah->bb_watchdog_timeout_ms = 25; + +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -630,6 +630,12 @@ struct ath_hw_ops { + void (*ani_monitor)(struct ath_hw *ah, struct ath9k_channel *chan); + }; + ++struct ath_nf_limits { ++ s16 max; ++ s16 min; ++ s16 nominal; ++}; ++ + struct ath_hw { + struct ieee80211_hw *hw; + struct ath_common common; +@@ -651,10 +657,9 @@ struct ath_hw { + bool is_pciexpress; + bool need_an_top2_fixup; + u16 tx_trig_level; +- s16 nf_2g_max; +- s16 nf_2g_min; +- s16 nf_5g_max; +- s16 nf_5g_min; ++ ++ struct ath_nf_limits nf_2g; ++ struct ath_nf_limits nf_5g; + u16 rfsilent; + u32 rfkill_gpio; + u32 rfkill_polarity; +@@ -945,7 +950,6 @@ void ar9002_hw_enable_wep_aggregation(st + * Code specific to AR9003, we stuff these here to avoid callbacks + * for older families + */ +-void ar9003_hw_set_nf_limits(struct ath_hw *ah); + void ar9003_hw_bb_watchdog_config(struct ath_hw *ah); + void ar9003_hw_bb_watchdog_read(struct ath_hw *ah); + void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah); diff --git a/package/mac80211/patches/531-ath9k_nf_cleanup.patch b/package/mac80211/patches/531-ath9k_nf_cleanup.patch new file mode 100644 index 000000000..f74e4f676 --- /dev/null +++ b/package/mac80211/patches/531-ath9k_nf_cleanup.patch @@ -0,0 +1,207 @@ +--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c +@@ -1497,50 +1497,25 @@ static bool ar5008_hw_ani_control_new(st + static void ar5008_hw_do_getnf(struct ath_hw *ah, + int16_t nfarray[NUM_NF_READINGS]) + { +- struct ath_common *common = ath9k_hw_common(ah); + int16_t nf; + + nf = MS(REG_READ(ah, AR_PHY_CCA), AR_PHY_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 0] is %d\n", nf); +- nfarray[0] = nf; ++ nfarray[0] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR_PHY_CH1_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 1] is %d\n", nf); +- nfarray[1] = nf; ++ nfarray[1] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 2] is %d\n", nf); +- nfarray[2] = nf; ++ nfarray[2] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 0] is %d\n", nf); +- nfarray[3] = nf; ++ nfarray[3] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR_PHY_CH1_EXT_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 1] is %d\n", nf); +- nfarray[4] = nf; ++ nfarray[4] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA), AR_PHY_CH2_EXT_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 2] is %d\n", nf); +- nfarray[5] = nf; ++ nfarray[5] = sign_extend(nf, 9); + } + + static void ar5008_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) +--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c +@@ -471,47 +471,22 @@ static u32 ar9002_hw_compute_pll_control + static void ar9002_hw_do_getnf(struct ath_hw *ah, + int16_t nfarray[NUM_NF_READINGS]) + { +- struct ath_common *common = ath9k_hw_common(ah); + int16_t nf; + + nf = MS(REG_READ(ah, AR_PHY_CCA), AR9280_PHY_MINCCA_PWR); +- +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 0] is %d\n", nf); +- +- nfarray[0] = nf; +- +- if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { +- nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), +- AR9280_PHY_CH1_MINCCA_PWR); +- +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 1] is %d\n", nf); +- nfarray[1] = nf; +- } ++ nfarray[0] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 0] is %d\n", nf); +- +- nfarray[3] = nf; +- +- if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { +- nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), +- AR9280_PHY_CH1_EXT_MINCCA_PWR); +- +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 1] is %d\n", nf); +- nfarray[4] = nf; +- } ++ nfarray[3] = sign_extend(nf, 9); ++ ++ if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) ++ return; ++ ++ nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR9280_PHY_CH1_MINCCA_PWR); ++ nfarray[1] = sign_extend(nf, 9); ++ ++ nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR); ++ nfarray[4] = sign_extend(nf, 9); + } + + static void ar9002_hw_set_nf_limits(struct ath_hw *ah) +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -182,6 +182,10 @@ static void ath9k_hw_nf_sanitize(struct + if (!nf[i]) + continue; + ++ ath_print(common, ATH_DBG_CALIBRATE, ++ "NF calibrated [%s] [chain %d] is %d\n", ++ (i > 3 ? "ext" : "ctl"), i % 3, nf[i]); ++ + if (nf[i] > limit->max) { + ath_print(common, ATH_DBG_CALIBRATE, + "NF[%d] (%d) > MAX (%d), correcting to MAX", +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -853,6 +853,12 @@ static inline struct ath_hw_ops *ath9k_h + return &ah->ops; + } + ++static inline int sign_extend(int val, const int nbits) ++{ ++ int order = BIT(nbits-1); ++ return (val ^ order) - order; ++} ++ + /* Initialization, Detach, Reset */ + const char *ath9k_hw_probe(u16 vendorid, u16 devid); + void ath9k_hw_deinit(struct ath_hw *ah); +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -1018,50 +1018,25 @@ static bool ar9003_hw_ani_control(struct + static void ar9003_hw_do_getnf(struct ath_hw *ah, + int16_t nfarray[NUM_NF_READINGS]) + { +- struct ath_common *common = ath9k_hw_common(ah); + int16_t nf; + + nf = MS(REG_READ(ah, AR_PHY_CCA_0), AR_PHY_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 0] is %d\n", nf); +- nfarray[0] = nf; ++ nfarray[0] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_CCA_1), AR_PHY_CH1_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 1] is %d\n", nf); +- nfarray[1] = nf; ++ nfarray[1] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ctl] [chain 2] is %d\n", nf); +- nfarray[2] = nf; ++ nfarray[2] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 0] is %d\n", nf); +- nfarray[3] = nf; ++ nfarray[3] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_1), AR_PHY_CH1_EXT_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 1] is %d\n", nf); +- nfarray[4] = nf; ++ nfarray[4] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_2), AR_PHY_CH2_EXT_MINCCA_PWR); +- if (nf & 0x100) +- nf = 0 - ((nf ^ 0x1ff) + 1); +- ath_print(common, ATH_DBG_CALIBRATE, +- "NF calibrated [ext] [chain 2] is %d\n", nf); +- nfarray[5] = nf; ++ nfarray[5] = sign_extend(nf, 9); + } + + static void ar9003_hw_set_nf_limits(struct ath_hw *ah) diff --git a/package/mac80211/patches/540-ath9k_hang_check.patch b/package/mac80211/patches/540-ath9k_hang_check.patch new file mode 100644 index 000000000..85e03bc98 --- /dev/null +++ b/package/mac80211/patches/540-ath9k_hang_check.patch @@ -0,0 +1,90 @@ +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -428,6 +428,7 @@ int ath_beaconq_config(struct ath_softc + + #define ATH_PAPRD_TIMEOUT 100 /* msecs */ + ++void ath_hw_check(struct work_struct *work); + void ath_paprd_calibrate(struct work_struct *work); + void ath_ani_calibrate(unsigned long data); + +@@ -563,6 +564,7 @@ struct ath_softc { + spinlock_t sc_pm_lock; + struct mutex mutex; + struct work_struct paprd_work; ++ struct work_struct hw_check_work; + struct completion paprd_complete; + + u32 intrstatus; +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -516,6 +516,25 @@ static void ath_node_detach(struct ath_s + ath_tx_node_cleanup(sc, an); + } + ++void ath_hw_check(struct work_struct *work) ++{ ++ struct ath_softc *sc = container_of(work, struct ath_softc, hw_check_work); ++ int i; ++ ++ ath9k_ps_wakeup(sc); ++ ++ for (i = 0; i < 3; i++) { ++ if (ath9k_hw_check_alive(sc->sc_ah)) ++ goto out; ++ ++ msleep(1); ++ } ++ ath_reset(sc, false); ++ ++out: ++ ath9k_ps_restore(sc); ++} ++ + void ath9k_tasklet(unsigned long data) + { + struct ath_softc *sc = (struct ath_softc *)data; +@@ -527,13 +546,15 @@ void ath9k_tasklet(unsigned long data) + + ath9k_ps_wakeup(sc); + +- if ((status & ATH9K_INT_FATAL) || +- !ath9k_hw_check_alive(ah)) { ++ if (status & ATH9K_INT_FATAL) { + ath_reset(sc, false); + ath9k_ps_restore(sc); + return; + } + ++ if (!ath9k_hw_check_alive(ah)) ++ ieee80211_queue_work(sc->hw, &sc->hw_check_work); ++ + if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) + rxmask = (ATH9K_INT_RXHP | ATH9K_INT_RXLP | ATH9K_INT_RXEOL | + ATH9K_INT_RXORN); +@@ -1254,6 +1275,7 @@ static void ath9k_stop(struct ieee80211_ + + cancel_delayed_work_sync(&sc->tx_complete_work); + cancel_work_sync(&sc->paprd_work); ++ cancel_work_sync(&sc->hw_check_work); + + if (!sc->num_sec_wiphy) { + cancel_delayed_work_sync(&sc->wiphy_work); +@@ -1977,6 +1999,7 @@ static void ath9k_sw_scan_start(struct i + sc->sc_flags |= SC_OP_SCANNING; + del_timer_sync(&common->ani.timer); + cancel_work_sync(&sc->paprd_work); ++ cancel_work_sync(&sc->hw_check_work); + cancel_delayed_work_sync(&sc->tx_complete_work); + mutex_unlock(&sc->mutex); + } +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -751,6 +751,7 @@ int ath9k_init_device(u16 devid, struct + goto error_world; + } + ++ INIT_WORK(&sc->hw_check_work, ath_hw_check); + INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); + INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work); + INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work); diff --git a/package/mac80211/patches/750-set_pci_mwi.patch b/package/mac80211/patches/750-set_pci_mwi.patch new file mode 100644 index 000000000..feb5d477a --- /dev/null +++ b/package/mac80211/patches/750-set_pci_mwi.patch @@ -0,0 +1,13 @@ +--- a/drivers/net/wireless/rt2x00/rt2x00pci.c ++++ b/drivers/net/wireless/rt2x00/rt2x00pci.c +@@ -327,8 +327,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ + + pci_set_master(pci_dev); + ++#ifdef CONFIG_PCI_SET_MWI + if (pci_set_mwi(pci_dev)) + ERROR_PROBE("MWI not available.\n"); ++#endif + + if (dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(32))) { + ERROR_PROBE("PCI DMA not supported.\n"); From be1b70d4b621506bee4cf7a1ab07ce9716716812 Mon Sep 17 00:00:00 2001 From: nbd Date: Fri, 2 Jul 2010 12:47:25 +0000 Subject: [PATCH 48/90] mac80211: backport ath9k wep fix from r22046 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22047 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/550-ath9k_fix_wep_adhoc_crash.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch diff --git a/package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch b/package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch new file mode 100644 index 000000000..a71db0440 --- /dev/null +++ b/package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch @@ -0,0 +1,13 @@ +--- a/drivers/net/wireless/ath/ath9k/common.c ++++ b/drivers/net/wireless/ath/ath9k/common.c +@@ -319,6 +319,10 @@ int ath9k_cmn_key_config(struct ath_comm + idx = ath_reserve_key_cache_slot(common, key->alg); + break; + case NL80211_IFTYPE_ADHOC: ++ if (!sta) { ++ idx = key->keyidx; ++ break; ++ } + memcpy(gmac, sta->addr, ETH_ALEN); + gmac[0] |= 0x01; + mac = gmac; From c56ed47f65d15e972d7c75ba4633984bb669ad3e Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 3 Jul 2010 07:29:27 +0000 Subject: [PATCH 49/90] backfire: generic: rtl8366: enable VLAN ingress filtering (backport of r22044) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22049 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c | 8 ++++++++ target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index c006f73de..420a5523c 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -70,6 +70,8 @@ #define RTL8366RB_PHY_NO_OFFSET 9 #define RTL8366RB_PHY_NO_MASK (0x1f << 9) +#define RTL8366RB_VLAN_INGRESS_CTRL2_REG 0x037f + /* LED control registers */ #define RTL8366RB_LED_BLINKRATE_REG 0x0430 #define RTL8366RB_LED_BLINKRATE_BIT 0 @@ -288,6 +290,12 @@ static int rtl8366rb_hw_init(struct rtl8366_smi *smi) /* disable auto ageing for all ports */ REG_WR(smi, RTL8366RB_SSCR1, RTL8366RB_PORT_ALL); + /* + * discard VLAN tagged packets if the port is not a member of + * the VLAN with which the packets is associated. + */ + REG_WR(smi, RTL8366RB_VLAN_INGRESS_CTRL2_REG, RTL8366RB_PORT_ALL); + /* don't drop packets whose DA has not been learned */ REG_RMW(smi, RTL8366RB_SSCR2, RTL8366RB_SSCR2_DROP_UNKNOWN_DA, 0); diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 91030ac48..45da8fd8e 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -112,6 +112,7 @@ #define RTL8366S_VLAN_MEMCONF_BASE 0x0016 +#define RTL8366S_VLAN_MEMBERINGRESS_REG 0x0379 #define RTL8366S_PORT_LINK_STATUS_BASE 0x0060 #define RTL8366S_PORT_STATUS_SPEED_MASK 0x0003 @@ -299,6 +300,12 @@ static int rtl8366s_hw_init(struct rtl8366_smi *smi) /* disable auto ageing for all ports */ REG_WR(smi, RTL8366S_SSCR1, RTL8366S_PORT_ALL); + /* + * discard VLAN tagged packets if the port is not a member of + * the VLAN with which the packets is associated. + */ + REG_WR(smi, RTL8366S_VLAN_MEMBERINGRESS_REG, RTL8366S_PORT_ALL); + /* don't drop packets whose DA has not been learned */ REG_RMW(smi, RTL8366S_SSCR2, RTL8366S_SSCR2_DROP_UNKNOWN_DA, 0); From 55952707957f32403c6d4bbccd1eb25388af9fb1 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 3 Jul 2010 11:10:19 +0000 Subject: [PATCH 50/90] [backfire] backport r22040 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22051 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch b/target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch index c2d747348..be37b6e9d 100644 --- a/target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch +++ b/target/linux/au1000/patches-2.6.32/005-mtx1_fix_pci.patch @@ -1,7 +1,4 @@ - - -diff --git a/arch/mips/alchemy/mtx-1/board_setup.c -b/arch/mips/alchemy/mtx-1/board_setup.c +diff --git a/arch/mips/alchemy/mtx-1/board_setup.c b/arch/mips/alchemy/mtx-1/board_setup.c index 45b61c9..17140ac 100644 --- a/arch/mips/alchemy/mtx-1/board_setup.c +++ b/arch/mips/alchemy/mtx-1/board_setup.c From 3b5ec501f5b1e70443fbb356b181ec167af5a9c4 Mon Sep 17 00:00:00 2001 From: nbd Date: Sun, 4 Jul 2010 02:20:05 +0000 Subject: [PATCH 51/90] ar71xx: merge ethernet driver fixes from r22054, r22055 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22056 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c index 8d61294be..54a6005b5 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c @@ -435,6 +435,12 @@ static void ag71xx_dma_reset(struct ag71xx *ag) ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0); ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0); + /* + * give the hardware some time to really stop all rx/tx activity + * clearing the descriptors too early causes random memory corruption + */ + mdelay(1); + /* clear descriptor addresses */ ag71xx_wr(ag, AG71XX_REG_TX_DESC, 0); ag71xx_wr(ag, AG71XX_REG_RX_DESC, 0); @@ -554,6 +560,8 @@ static int ag71xx_open(struct net_device *dev) if (ret) goto err; + ag71xx_hw_init(ag); + napi_enable(&ag->napi); netif_carrier_off(dev); From 654a44e57bf0bef74a7f19787ff7ed960064c2f8 Mon Sep 17 00:00:00 2001 From: nbd Date: Sun, 4 Jul 2010 15:36:46 +0000 Subject: [PATCH 52/90] [backfire] backport mini_fo fixes from r22057 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22059 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../217-mini_fo_dentry_check.patch | 48 +++++++++++++++++++ .../217-mini_fo_dentry_check.patch | 48 +++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 target/linux/generic-2.6/patches-2.6.30/217-mini_fo_dentry_check.patch create mode 100644 target/linux/generic-2.6/patches-2.6.32/217-mini_fo_dentry_check.patch diff --git a/target/linux/generic-2.6/patches-2.6.30/217-mini_fo_dentry_check.patch b/target/linux/generic-2.6/patches-2.6.30/217-mini_fo_dentry_check.patch new file mode 100644 index 000000000..cf53e4826 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.30/217-mini_fo_dentry_check.patch @@ -0,0 +1,48 @@ +--- a/fs/mini_fo/meta.c ++++ b/fs/mini_fo/meta.c +@@ -48,6 +48,9 @@ int meta_build_lists(dentry_t *dentry) + dtohd2(dentry), + strlen(META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ goto out_ok; ++ + if(!meta_dentry->d_inode) { + dput(meta_dentry); + goto out_ok; +@@ -433,6 +436,8 @@ int meta_write_d_entry(dentry_t *dentry, + meta_dentry = lookup_one_len(META_FILENAME, + dtohd2(dentry), strlen (META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + /* We need to create a META-file */ + if(!meta_dentry->d_inode) { +@@ -538,6 +543,8 @@ int meta_write_r_entry(dentry_t *dentry, + dtohd2(dentry), + strlen (META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + if(!meta_dentry->d_inode) { + /* We need to create a META-file */ +@@ -656,6 +663,8 @@ int meta_sync_d_list(dentry_t *dentry, i + dtohd2(dentry), + strlen(META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + if(!meta_dentry->d_inode) { + /* We need to create a META-file */ +@@ -803,6 +812,8 @@ int meta_sync_r_list(dentry_t *dentry, i + dtohd2(dentry), + strlen(META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + if(!meta_dentry->d_inode) { + /* We need to create a META-file */ diff --git a/target/linux/generic-2.6/patches-2.6.32/217-mini_fo_dentry_check.patch b/target/linux/generic-2.6/patches-2.6.32/217-mini_fo_dentry_check.patch new file mode 100644 index 000000000..cf53e4826 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.32/217-mini_fo_dentry_check.patch @@ -0,0 +1,48 @@ +--- a/fs/mini_fo/meta.c ++++ b/fs/mini_fo/meta.c +@@ -48,6 +48,9 @@ int meta_build_lists(dentry_t *dentry) + dtohd2(dentry), + strlen(META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ goto out_ok; ++ + if(!meta_dentry->d_inode) { + dput(meta_dentry); + goto out_ok; +@@ -433,6 +436,8 @@ int meta_write_d_entry(dentry_t *dentry, + meta_dentry = lookup_one_len(META_FILENAME, + dtohd2(dentry), strlen (META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + /* We need to create a META-file */ + if(!meta_dentry->d_inode) { +@@ -538,6 +543,8 @@ int meta_write_r_entry(dentry_t *dentry, + dtohd2(dentry), + strlen (META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + if(!meta_dentry->d_inode) { + /* We need to create a META-file */ +@@ -656,6 +663,8 @@ int meta_sync_d_list(dentry_t *dentry, i + dtohd2(dentry), + strlen(META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + if(!meta_dentry->d_inode) { + /* We need to create a META-file */ +@@ -803,6 +812,8 @@ int meta_sync_r_list(dentry_t *dentry, i + dtohd2(dentry), + strlen(META_FILENAME)); + mutex_unlock(&dtohd2(dentry)->d_inode->i_mutex); ++ if (IS_ERR(meta_dentry)) ++ return PTR_ERR(meta_dentry); + + if(!meta_dentry->d_inode) { + /* We need to create a META-file */ From 4eb07384d9123b2494e7be5e46695cdd2dd5a510 Mon Sep 17 00:00:00 2001 From: nbd Date: Sun, 4 Jul 2010 15:46:20 +0000 Subject: [PATCH 53/90] [backfire] backport grub fixes from trunk git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22060 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/grub/Makefile | 21 ++++++++ .../patches/100-add_configure_macros.patch | 11 +++++ .../patches/110-remove_configure_errors.patch | 38 +++++++++++++++ package/grub/patches/200-darwin_fixes.patch | 48 +++++++++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 package/grub/patches/100-add_configure_macros.patch create mode 100644 package/grub/patches/110-remove_configure_errors.patch create mode 100644 package/grub/patches/200-darwin_fixes.patch diff --git a/package/grub/Makefile b/package/grub/Makefile index 221269ba4..5fd2a2308 100644 --- a/package/grub/Makefile +++ b/package/grub/Makefile @@ -44,6 +44,11 @@ CONFIGURE_ARGS += $(MY_CONFIGURE_ARGS) CONFIGURE_VARS += $(MY_CONFIGURE_VARS) +ifeq ($(HOST_OS),Darwin) + HOST_CFLAGS += $(call host-cc-option,-m32) + HOST_CFLAGS += $(call host-cc-option,-fnested-functions) +endif + HOST_CFLAGS += $(call host-cc-option,-fno-stack-protector) HOST_CFLAGS += $(call host-cc-option,-U_FORTIFY_SOURCE) @@ -53,6 +58,22 @@ HOST_CONFIGURE_ARGS += $(MY_CONFIGURE_ARGS) \ HOST_CONFIGURE_VARS += $(MY_CONFIGURE_VARS) +define Host/Configure + (cd $(HOST_BUILD_DIR); aclocal && autoconf && automake) + $(call Host/Configure/Default) +endef + +ifeq ($(HOST_OS),Darwin) + define Host/Compile + $(MAKE) -C $(HOST_BUILD_DIR)/lib + $(MAKE) -C $(HOST_BUILD_DIR)/stage2 libgrub.a + $(MAKE) -C $(HOST_BUILD_DIR)/grub + endef + define Host/Install + $(MAKE) -C $(HOST_BUILD_DIR)/grub install + endef +endif + define Build/InstallDev $(INSTALL_DIR) $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/grub $(1)/usr/lib/ diff --git a/package/grub/patches/100-add_configure_macros.patch b/package/grub/patches/100-add_configure_macros.patch new file mode 100644 index 000000000..476f778bc --- /dev/null +++ b/package/grub/patches/100-add_configure_macros.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -56,6 +56,8 @@ fi + + AC_CHECK_TOOL(CC, gcc) + AC_PROG_CC ++AM_PROG_CC_C_O ++AM_PROG_AS + # We need this for older versions of Autoconf. + _AM_DEPENDENCIES(CC) + diff --git a/package/grub/patches/110-remove_configure_errors.patch b/package/grub/patches/110-remove_configure_errors.patch new file mode 100644 index 000000000..f090aa975 --- /dev/null +++ b/package/grub/patches/110-remove_configure_errors.patch @@ -0,0 +1,38 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -177,26 +177,22 @@ grub_ASM_ABSOLUTE_WITHOUT_ASTERISK + + grub_CHECK_START_SYMBOL + grub_CHECK_USCORE_START_SYMBOL +-if test "x$grub_cv_check_start_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_start_symbol" != "xyes"; then +- AC_MSG_ERROR([Neither start nor _start is defined]) +-fi + + grub_CHECK_USCORE_USCORE_BSS_START_SYMBOL + grub_CHECK_USCORE_EDATA_SYMBOL + grub_CHECK_EDATA_SYMBOL +-if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_edata_symbol" != "xyes" \ +- -a "x$grub_cv_check_edata_symbol" != "xyes"; then +- AC_MSG_ERROR([None of __bss_start, _edata, edata defined]) +-fi ++# if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" != "xyes" \ ++# -a "x$grub_cv_check_uscore_edata_symbol" != "xyes" \ ++# -a "x$grub_cv_check_edata_symbol" != "xyes"; then ++# AC_MSG_ERROR([None of __bss_start, _edata, edata defined]) ++# fi + + grub_CHECK_END_SYMBOL + grub_CHECK_USCORE_END_SYMBOL +-if test "x$grub_cv_check_end_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_end_symbol" != "xyes"; then +- AC_MSG_ERROR([Neither end nor _end is defined]) +-fi ++#if test "x$grub_cv_check_end_symbol" != "xyes" \ ++# -a "x$grub_cv_check_uscore_end_symbol" != "xyes"; then ++# AC_MSG_ERROR([Neither end nor _end is defined]) ++#fi + + # Check for curses libraries. + AC_ARG_WITH(curses, diff --git a/package/grub/patches/200-darwin_fixes.patch b/package/grub/patches/200-darwin_fixes.patch new file mode 100644 index 000000000..c5c55a918 --- /dev/null +++ b/package/grub/patches/200-darwin_fixes.patch @@ -0,0 +1,48 @@ +--- a/stage2/asm.S ++++ b/stage2/asm.S +@@ -95,14 +95,16 @@ VARIABLE(stage2_id) + VARIABLE(force_lba) + .byte 0 + VARIABLE(version_string) +- .string VERSION ++ .ascii VERSION ++ .byte 0 + VARIABLE(config_file) + #ifndef STAGE1_5 +- .string "/boot/grub/menu.lst" ++ .ascii "/boot/grub/menu.lst" + #else /* STAGE1_5 */ + .long 0xffffffff +- .string "/boot/grub/stage2" ++ .ascii "/boot/grub/stage2" + #endif /* STAGE1_5 */ ++ .byte 0 + + /* + * Leave some breathing room for the config file name. +@@ -762,7 +764,9 @@ ENTRY(chain_stage1) + call EXT_C(prot_to_real) + .code16 + +-#ifdef ABSOLUTE_WITHOUT_ASTERISK ++#ifdef __APPLE__ ++ DATA32 ADDR32 ljmp offset ++#elif defined(ABSOLUTE_WITHOUT_ASTERISK) + DATA32 ADDR32 ljmp (offset) + #else + DATA32 ADDR32 ljmp *(offset) +--- a/stage2/char_io.c ++++ b/stage2/char_io.c +@@ -1345,5 +1345,12 @@ grub_strcpy (char *dest, const char *src + #ifndef GRUB_UTIL + # undef memcpy + /* GCC emits references to memcpy() for struct copies etc. */ ++#ifdef __APPLE__ ++void *memcpy (void *dest, const void *src, int n) ++{ ++ return grub_memmove(dest, src, n); ++} ++#else + void *memcpy (void *dest, const void *src, int n) __attribute__ ((alias ("grub_memmove"))); + #endif ++#endif From 28aadec5f7ffd87861b3c1857d9ea0dccd6b239e Mon Sep 17 00:00:00 2001 From: nbd Date: Tue, 6 Jul 2010 12:42:00 +0000 Subject: [PATCH 54/90] [backfire] ar71xx: backport ethernet regression fix from r22075 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22076 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c index 54a6005b5..92d92b0b6 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c @@ -554,13 +554,15 @@ static void ag71xx_hw_stop(struct ag71xx *ag) static int ag71xx_open(struct net_device *dev) { struct ag71xx *ag = netdev_priv(dev); + struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); int ret; ret = ag71xx_rings_init(ag); if (ret) goto err; - ag71xx_hw_init(ag); + if (pdata->is_ar724x) + ag71xx_hw_init(ag); napi_enable(&ag->napi); From b50614e1f726d6c1901bae7678a7e3bf5691cc8b Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 7 Jul 2010 17:06:27 +0000 Subject: [PATCH 55/90] [backfire] backport mac80211 fixes from trunk git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22089 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/Makefile | 4 +- .../patches/030-backport_93c86_eeprom.patch | 11 + .../408-ath9k_tweak_rx_intr_mitigation.patch | 2 +- ...-add-wndr3700-antenna-initialization.patch | 2 +- .../410-ath9k-wndr3700-led-pin-fix.patch | 2 +- .../patches/510-ar9100_tsf_preserve.patch | 39 - .../patches/510-ath9k_aggr_buffer_leak.patch | 68 + .../511-ath9k_completion_buffer_leak.patch | 21 + .../mac80211/patches/520-initval_rename.patch | 59 - .../patches/521-initval_format_changes.patch | 14200 ---------------- .../patches/522-initval_updates.patch | 376 - .../patches/530-ath9k_nf_sanitize.patch | 406 - .../patches/531-ath9k_nf_cleanup.patch | 207 - .../patches/540-ath9k_hang_check.patch | 90 - .../550-ath9k_fix_wep_adhoc_crash.patch | 13 - ...e-pci-code-if-CONFIG_PCI-not-defined.patch | 4 +- .../601-rt2x00-fix-hang-on-ifdown.patch | 7 +- .../mac80211/patches/750-set_pci_mwi.patch | 2 +- 18 files changed, 109 insertions(+), 15404 deletions(-) create mode 100644 package/mac80211/patches/030-backport_93c86_eeprom.patch delete mode 100644 package/mac80211/patches/510-ar9100_tsf_preserve.patch create mode 100644 package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch create mode 100644 package/mac80211/patches/511-ath9k_completion_buffer_leak.patch delete mode 100644 package/mac80211/patches/520-initval_rename.patch delete mode 100644 package/mac80211/patches/521-initval_format_changes.patch delete mode 100644 package/mac80211/patches/522-initval_updates.patch delete mode 100644 package/mac80211/patches/530-ath9k_nf_sanitize.patch delete mode 100644 package/mac80211/patches/531-ath9k_nf_cleanup.patch delete mode 100644 package/mac80211/patches/540-ath9k_hang_check.patch delete mode 100644 package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 4d2ef0ede..71ce17add 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=2010-06-28 +PKG_VERSION:=2010-07-06 PKG_RELEASE:=1 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources # http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \ # http://wireless.kernel.org/download/compat-wireless-2.6 -PKG_MD5SUM:=10100e68991ed0749ee52cfc1704966b +PKG_MD5SUM:=e669e4c2ed4f0cc9a6a28e941d766eac PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) diff --git a/package/mac80211/patches/030-backport_93c86_eeprom.patch b/package/mac80211/patches/030-backport_93c86_eeprom.patch new file mode 100644 index 000000000..d76f39ed9 --- /dev/null +++ b/package/mac80211/patches/030-backport_93c86_eeprom.patch @@ -0,0 +1,11 @@ +--- a/include/linux/compat-2.6.36.h ++++ b/include/linux/compat-2.6.36.h +@@ -8,6 +8,8 @@ + #define kparam_block_sysfs_write(a) + #define kparam_unblock_sysfs_write(a) + ++#define PCI_EEPROM_WIDTH_93C86 8 ++ + #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)) */ + + #endif /* LINUX_26_36_COMPAT_H */ diff --git a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch index c280f3cf6..c9add27c9 100644 --- a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch +++ b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1407,7 +1407,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1416,7 +1416,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st if (ah->config.rx_intr_mitigation) { REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500); diff --git a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch index ed7d34883..6d275f81e 100644 --- a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch +++ b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch @@ -54,7 +54,7 @@ ath9k_reg_notifier); --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -594,6 +594,8 @@ struct ath_softc { +@@ -596,6 +596,8 @@ struct ath_softc { int beacon_interval; diff --git a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch index 2544bbf47..d6d2634c1 100644 --- a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch +++ b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch @@ -13,7 +13,7 @@ sc->sc_ah->led_pin = ATH_LED_PIN_DEF; --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -466,6 +466,7 @@ void ath9k_btcoex_timer_pause(struct ath +@@ -467,6 +467,7 @@ void ath9k_btcoex_timer_pause(struct ath #define ATH_LED_PIN_DEF 1 #define ATH_LED_PIN_9287 8 diff --git a/package/mac80211/patches/510-ar9100_tsf_preserve.patch b/package/mac80211/patches/510-ar9100_tsf_preserve.patch deleted file mode 100644 index 3af78dabb..000000000 --- a/package/mac80211/patches/510-ar9100_tsf_preserve.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1280,7 +1280,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st - macStaId1 = REG_READ(ah, AR_STA_ID1) & AR_STA_ID1_BASE_RATE_11B; - - /* For chips on which RTC reset is done, save TSF before it gets cleared */ -- if (AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) -+ if (AR_SREV_9100(ah) || -+ (AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL))) - tsf = ath9k_hw_gettsf64(ah); - - saveLedState = REG_READ(ah, AR_CFG_LED) & -@@ -1312,7 +1313,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st - } - - /* Restore TSF */ -- if (tsf && AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) -+ if (tsf) - ath9k_hw_settsf64(ah, tsf); - - if (AR_SREV_9280_10_OR_LATER(ah)) -@@ -1325,6 +1326,17 @@ int ath9k_hw_reset(struct ath_hw *ah, st - if (r) - return r; - -+ /* -+ * Some AR91xx SoC devices frequently fail to accept TSF writes -+ * right after the chip reset. When that happens, write a new -+ * value after the initvals have been applied, with an offset -+ * based on measured time differences -+ */ -+ if (AR_SREV_9100(ah) && (ath9k_hw_gettsf64(ah) < tsf)) { -+ tsf += 1500; -+ ath9k_hw_settsf64(ah, tsf); -+ } -+ - /* Setup MFP options for CCMP */ - if (AR_SREV_9280_20_OR_LATER(ah)) { - /* Mask Retry(b11), PwrMgt(b12), MoreData(b13) to 0 in mgmt diff --git a/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch b/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch new file mode 100644 index 000000000..aa1f033fa --- /dev/null +++ b/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch @@ -0,0 +1,68 @@ +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -2430,37 +2430,37 @@ void ath_tx_node_init(struct ath_softc * + + void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an) + { +- int i; +- struct ath_atx_ac *ac, *ac_tmp; +- struct ath_atx_tid *tid, *tid_tmp; ++ struct ath_atx_ac *ac; ++ struct ath_atx_tid *tid; + struct ath_txq *txq; ++ int i, tidno; + +- for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { +- if (ATH_TXQ_SETUP(sc, i)) { +- txq = &sc->tx.txq[i]; +- +- spin_lock_bh(&txq->axq_lock); +- +- list_for_each_entry_safe(ac, +- ac_tmp, &txq->axq_acq, list) { +- tid = list_first_entry(&ac->tid_q, +- struct ath_atx_tid, list); +- if (tid && tid->an != an) +- continue; +- list_del(&ac->list); +- ac->sched = false; +- +- list_for_each_entry_safe(tid, +- tid_tmp, &ac->tid_q, list) { +- list_del(&tid->list); +- tid->sched = false; +- ath_tid_drain(sc, txq, tid); +- tid->state &= ~AGGR_ADDBA_COMPLETE; +- tid->state &= ~AGGR_CLEANUP; +- } +- } ++ for (tidno = 0, tid = &an->tid[tidno]; ++ tidno < WME_NUM_TID; tidno++, tid++) { ++ i = tid->ac->qnum; + +- spin_unlock_bh(&txq->axq_lock); ++ if (!ATH_TXQ_SETUP(sc, i)) ++ continue; ++ ++ txq = &sc->tx.txq[i]; ++ ac = tid->ac; ++ ++ spin_lock_bh(&txq->axq_lock); ++ ++ if (tid->sched) { ++ list_del(&tid->list); ++ tid->sched = false; + } ++ ++ if (ac->sched) { ++ list_del(&ac->list); ++ tid->ac->sched = false; ++ } ++ ++ ath_tid_drain(sc, txq, tid); ++ tid->state &= ~AGGR_ADDBA_COMPLETE; ++ tid->state &= ~AGGR_CLEANUP; ++ ++ spin_unlock_bh(&txq->axq_lock); + } + } diff --git a/package/mac80211/patches/511-ath9k_completion_buffer_leak.patch b/package/mac80211/patches/511-ath9k_completion_buffer_leak.patch new file mode 100644 index 000000000..709e2846c --- /dev/null +++ b/package/mac80211/patches/511-ath9k_completion_buffer_leak.patch @@ -0,0 +1,21 @@ +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -329,6 +329,7 @@ static void ath_tx_complete_aggr(struct + int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0; + bool rc_update = true; + struct ieee80211_tx_rate rates[4]; ++ unsigned long flags; + + skb = bf->bf_mpdu; + hdr = (struct ieee80211_hdr *)skb->data; +@@ -344,6 +345,10 @@ static void ath_tx_complete_aggr(struct + sta = ieee80211_find_sta_by_hw(hw, hdr->addr1); + if (!sta) { + rcu_read_unlock(); ++ ++ spin_lock_irqsave(&sc->tx.txbuflock, flags); ++ list_splice_tail_init(bf_q, &sc->tx.txbuf); ++ spin_unlock_irqrestore(&sc->tx.txbuflock, flags); + return; + } + diff --git a/package/mac80211/patches/520-initval_rename.patch b/package/mac80211/patches/520-initval_rename.patch deleted file mode 100644 index 0a2760d3c..000000000 --- a/package/mac80211/patches/520-initval_rename.patch +++ /dev/null @@ -1,59 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h -@@ -1217,7 +1217,7 @@ static const u32 ar5416Addac_9160[][2] = - {0x000098cc, 0x00000000 }, - }; - --static const u32 ar5416Addac_91601_1[][2] = { -+static const u32 ar5416Addac_9160_1_1[][2] = { - {0x0000989c, 0x00000000 }, - {0x0000989c, 0x00000000 }, - {0x0000989c, 0x00000000 }, ---- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c -@@ -179,8 +179,8 @@ static void ar9002_hw_init_mode_regs(str - ARRAY_SIZE(ar5416Bank7_9160), 2); - if (AR_SREV_9160_11(ah)) { - INIT_INI_ARRAY(&ah->iniAddac, -- ar5416Addac_91601_1, -- ARRAY_SIZE(ar5416Addac_91601_1), 2); -+ ar5416Addac_9160_1_1, -+ ARRAY_SIZE(ar5416Addac_9160_1_1), 2); - } else { - INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac_9160, - ARRAY_SIZE(ar5416Addac_9160), 2); -@@ -239,12 +239,12 @@ void ar9002_hw_cck_chan14_spread(struct - { - if (AR_SREV_9287_11_OR_LATER(ah)) { - INIT_INI_ARRAY(&ah->iniCckfirNormal, -- ar9287Common_normal_cck_fir_coeff_92871_1, -- ARRAY_SIZE(ar9287Common_normal_cck_fir_coeff_92871_1), -+ ar9287Common_normal_cck_fir_coeff_9287_1_1, -+ ARRAY_SIZE(ar9287Common_normal_cck_fir_coeff_9287_1_1), - 2); - INIT_INI_ARRAY(&ah->iniCckfirJapan2484, -- ar9287Common_japan_2484_cck_fir_coeff_92871_1, -- ARRAY_SIZE(ar9287Common_japan_2484_cck_fir_coeff_92871_1), -+ ar9287Common_japan_2484_cck_fir_coeff_9287_1_1, -+ ARRAY_SIZE(ar9287Common_japan_2484_cck_fir_coeff_9287_1_1), - 2); - } - } ---- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h -@@ -4142,13 +4142,13 @@ static const u32 ar9287Common_9287_1_1[] - * registers be programmed differently from the channel between 2412 and - * 2472 MHz. - */ --static const u32 ar9287Common_normal_cck_fir_coeff_92871_1[][2] = { -+static const u32 ar9287Common_normal_cck_fir_coeff_9287_1_1[][2] = { - { 0x0000a1f4, 0x00fffeff }, - { 0x0000a1f8, 0x00f5f9ff }, - { 0x0000a1fc, 0xb79f6427 }, - }; - --static const u32 ar9287Common_japan_2484_cck_fir_coeff_92871_1[][2] = { -+static const u32 ar9287Common_japan_2484_cck_fir_coeff_9287_1_1[][2] = { - { 0x0000a1f4, 0x00000000 }, - { 0x0000a1f8, 0xefff0301 }, - { 0x0000a1fc, 0xca9228ee }, diff --git a/package/mac80211/patches/521-initval_format_changes.patch b/package/mac80211/patches/521-initval_format_changes.patch deleted file mode 100644 index 49bd62c6e..000000000 --- a/package/mac80211/patches/521-initval_format_changes.patch +++ /dev/null @@ -1,14200 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar5008_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar5008_initvals.h -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2008-2009 Atheros Communications Inc. -+ * Copyright (c) 2010 Atheros Communications Inc. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above -@@ -14,729 +14,660 @@ - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - --#ifndef INITVALS_AR5008_H --#define INITVALS_AR5008_H -- - static const u32 ar5416Modes[][6] = { -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, -- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, -- { 0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0 }, -- { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x00009850, 0x6c48b4e0, 0x6d48b4e0, 0x6d48b0de, 0x6c48b0de, 0x6c48b0de }, -- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, -- { 0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e }, -- { 0x00009860, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18 }, -- { 0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190 }, -- { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, -- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000134 }, -- { 0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b }, -- { 0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020 }, -- { 0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, -- { 0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, -- { 0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, -- { 0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120 }, -- { 0x000099bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00 }, -- { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, -- { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, -- { 0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, -- { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, -- { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, -- { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, -- { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, -- { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, -- { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, -- { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, -- { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, -- { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, -- { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, -- { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, -+ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, -+ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0}, -+ {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x00009850, 0x6c48b4e0, 0x6d48b4e0, 0x6d48b0de, 0x6c48b0de, 0x6c48b0de}, -+ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, -+ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, -+ {0x00009860, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18}, -+ {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190}, -+ {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, -+ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000134}, -+ {0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b}, -+ {0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020}, -+ {0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80}, -+ {0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80}, -+ {0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80}, -+ {0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120}, -+ {0x000099bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00}, -+ {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880}, -+ {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788}, -+ {0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa}, -+ {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000}, -+ {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402}, -+ {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06}, -+ {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b}, -+ {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b}, -+ {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a}, -+ {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf}, -+ {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f}, -+ {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f}, -+ {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f}, -+ {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - }; - - static const u32 ar5416Common[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020015 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00007010, 0x00000000 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x40000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x000080c0, 0x2a82301a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0xffffffff }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c4, 0x00000000 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008264, 0x88000010 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x00008300, 0x00000000 }, -- { 0x00008304, 0x00000000 }, -- { 0x00008308, 0x00000000 }, -- { 0x0000830c, 0x00000000 }, -- { 0x00008310, 0x00000000 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008318, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000007 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00070000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x000107ff }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xad848e19 }, -- { 0x00009810, 0x7d14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x00009840, 0x206a002e }, -- { 0x0000984c, 0x1284233c }, -- { 0x00009854, 0x00000859 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x05100000 }, -- { 0x0000a920, 0x05100000 }, -- { 0x0000b920, 0x05100000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009948, 0x9280b212 }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5d50e188 }, -- { 0x00009958, 0x00081fff }, -- { 0x0000c95c, 0x004b6a8e }, -- { 0x0000c968, 0x000003ce }, -- { 0x00009970, 0x190fb515 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x001fff00 }, -- { 0x000099ac, 0x00000000 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000200 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x000000aa }, -- { 0x000099fc, 0x00001042 }, -- { 0x00009b00, 0x00000000 }, -- { 0x00009b04, 0x00000001 }, -- { 0x00009b08, 0x00000002 }, -- { 0x00009b0c, 0x00000003 }, -- { 0x00009b10, 0x00000004 }, -- { 0x00009b14, 0x00000005 }, -- { 0x00009b18, 0x00000008 }, -- { 0x00009b1c, 0x00000009 }, -- { 0x00009b20, 0x0000000a }, -- { 0x00009b24, 0x0000000b }, -- { 0x00009b28, 0x0000000c }, -- { 0x00009b2c, 0x0000000d }, -- { 0x00009b30, 0x00000010 }, -- { 0x00009b34, 0x00000011 }, -- { 0x00009b38, 0x00000012 }, -- { 0x00009b3c, 0x00000013 }, -- { 0x00009b40, 0x00000014 }, -- { 0x00009b44, 0x00000015 }, -- { 0x00009b48, 0x00000018 }, -- { 0x00009b4c, 0x00000019 }, -- { 0x00009b50, 0x0000001a }, -- { 0x00009b54, 0x0000001b }, -- { 0x00009b58, 0x0000001c }, -- { 0x00009b5c, 0x0000001d }, -- { 0x00009b60, 0x00000020 }, -- { 0x00009b64, 0x00000021 }, -- { 0x00009b68, 0x00000022 }, -- { 0x00009b6c, 0x00000023 }, -- { 0x00009b70, 0x00000024 }, -- { 0x00009b74, 0x00000025 }, -- { 0x00009b78, 0x00000028 }, -- { 0x00009b7c, 0x00000029 }, -- { 0x00009b80, 0x0000002a }, -- { 0x00009b84, 0x0000002b }, -- { 0x00009b88, 0x0000002c }, -- { 0x00009b8c, 0x0000002d }, -- { 0x00009b90, 0x00000030 }, -- { 0x00009b94, 0x00000031 }, -- { 0x00009b98, 0x00000032 }, -- { 0x00009b9c, 0x00000033 }, -- { 0x00009ba0, 0x00000034 }, -- { 0x00009ba4, 0x00000035 }, -- { 0x00009ba8, 0x00000035 }, -- { 0x00009bac, 0x00000035 }, -- { 0x00009bb0, 0x00000035 }, -- { 0x00009bb4, 0x00000035 }, -- { 0x00009bb8, 0x00000035 }, -- { 0x00009bbc, 0x00000035 }, -- { 0x00009bc0, 0x00000035 }, -- { 0x00009bc4, 0x00000035 }, -- { 0x00009bc8, 0x00000035 }, -- { 0x00009bcc, 0x00000035 }, -- { 0x00009bd0, 0x00000035 }, -- { 0x00009bd4, 0x00000035 }, -- { 0x00009bd8, 0x00000035 }, -- { 0x00009bdc, 0x00000035 }, -- { 0x00009be0, 0x00000035 }, -- { 0x00009be4, 0x00000035 }, -- { 0x00009be8, 0x00000035 }, -- { 0x00009bec, 0x00000035 }, -- { 0x00009bf0, 0x00000035 }, -- { 0x00009bf4, 0x00000035 }, -- { 0x00009bf8, 0x00000010 }, -- { 0x00009bfc, 0x0000001a }, -- { 0x0000a210, 0x40806333 }, -- { 0x0000a214, 0x00106c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x018830c6 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x00000bb5 }, -- { 0x0000a22c, 0x00000011 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a23c, 0x13c889af }, -- { 0x0000a240, 0x38490a20 }, -- { 0x0000a244, 0x00007bb6 }, -- { 0x0000a248, 0x0fff3ffc }, -- { 0x0000a24c, 0x00000001 }, -- { 0x0000a250, 0x0000a000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0cc75380 }, -- { 0x0000a25c, 0x0f0f0f01 }, -- { 0x0000a260, 0xdfa91f01 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0e79e5c6 }, -- { 0x0000b26c, 0x0e79e5c6 }, -- { 0x0000c26c, 0x0e79e5c6 }, -- { 0x0000d270, 0x00820820 }, -- { 0x0000a278, 0x1ce739ce }, -- { 0x0000a27c, 0x051701ce }, -- { 0x0000a338, 0x00000000 }, -- { 0x0000a33c, 0x00000000 }, -- { 0x0000a340, 0x00000000 }, -- { 0x0000a344, 0x00000000 }, -- { 0x0000a348, 0x3fffffff }, -- { 0x0000a34c, 0x3fffffff }, -- { 0x0000a350, 0x3fffffff }, -- { 0x0000a354, 0x0003ffff }, -- { 0x0000a358, 0x79a8aa1f }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x08000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x1ce739ce }, -- { 0x0000a398, 0x000001ce }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3c8, 0x00000246 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x1ce739ce }, -- { 0x0000a3e0, 0x000001ce }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020015}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00007010, 0x00000000}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x40000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x000080c0, 0x2a82301a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c4, 0x00000000}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x88000010}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x00008300, 0x00000000}, -+ {0x00008304, 0x00000000}, -+ {0x00008308, 0x00000000}, -+ {0x0000830c, 0x00000000}, -+ {0x00008310, 0x00000000}, -+ {0x00008314, 0x00000000}, -+ {0x00008318, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00070000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x000107ff}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xad848e19}, -+ {0x00009810, 0x7d14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x00009840, 0x206a002e}, -+ {0x0000984c, 0x1284233c}, -+ {0x00009854, 0x00000859}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x05100000}, -+ {0x0000a920, 0x05100000}, -+ {0x0000b920, 0x05100000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009948, 0x9280b212}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5d50e188}, -+ {0x00009958, 0x00081fff}, -+ {0x0000c95c, 0x004b6a8e}, -+ {0x0000c968, 0x000003ce}, -+ {0x00009970, 0x190fb515}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x001fff00}, -+ {0x000099ac, 0x00000000}, -+ {0x000099b0, 0x03051000}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000200}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x000000aa}, -+ {0x000099fc, 0x00001042}, -+ {0x00009b00, 0x00000000}, -+ {0x00009b04, 0x00000001}, -+ {0x00009b08, 0x00000002}, -+ {0x00009b0c, 0x00000003}, -+ {0x00009b10, 0x00000004}, -+ {0x00009b14, 0x00000005}, -+ {0x00009b18, 0x00000008}, -+ {0x00009b1c, 0x00000009}, -+ {0x00009b20, 0x0000000a}, -+ {0x00009b24, 0x0000000b}, -+ {0x00009b28, 0x0000000c}, -+ {0x00009b2c, 0x0000000d}, -+ {0x00009b30, 0x00000010}, -+ {0x00009b34, 0x00000011}, -+ {0x00009b38, 0x00000012}, -+ {0x00009b3c, 0x00000013}, -+ {0x00009b40, 0x00000014}, -+ {0x00009b44, 0x00000015}, -+ {0x00009b48, 0x00000018}, -+ {0x00009b4c, 0x00000019}, -+ {0x00009b50, 0x0000001a}, -+ {0x00009b54, 0x0000001b}, -+ {0x00009b58, 0x0000001c}, -+ {0x00009b5c, 0x0000001d}, -+ {0x00009b60, 0x00000020}, -+ {0x00009b64, 0x00000021}, -+ {0x00009b68, 0x00000022}, -+ {0x00009b6c, 0x00000023}, -+ {0x00009b70, 0x00000024}, -+ {0x00009b74, 0x00000025}, -+ {0x00009b78, 0x00000028}, -+ {0x00009b7c, 0x00000029}, -+ {0x00009b80, 0x0000002a}, -+ {0x00009b84, 0x0000002b}, -+ {0x00009b88, 0x0000002c}, -+ {0x00009b8c, 0x0000002d}, -+ {0x00009b90, 0x00000030}, -+ {0x00009b94, 0x00000031}, -+ {0x00009b98, 0x00000032}, -+ {0x00009b9c, 0x00000033}, -+ {0x00009ba0, 0x00000034}, -+ {0x00009ba4, 0x00000035}, -+ {0x00009ba8, 0x00000035}, -+ {0x00009bac, 0x00000035}, -+ {0x00009bb0, 0x00000035}, -+ {0x00009bb4, 0x00000035}, -+ {0x00009bb8, 0x00000035}, -+ {0x00009bbc, 0x00000035}, -+ {0x00009bc0, 0x00000035}, -+ {0x00009bc4, 0x00000035}, -+ {0x00009bc8, 0x00000035}, -+ {0x00009bcc, 0x00000035}, -+ {0x00009bd0, 0x00000035}, -+ {0x00009bd4, 0x00000035}, -+ {0x00009bd8, 0x00000035}, -+ {0x00009bdc, 0x00000035}, -+ {0x00009be0, 0x00000035}, -+ {0x00009be4, 0x00000035}, -+ {0x00009be8, 0x00000035}, -+ {0x00009bec, 0x00000035}, -+ {0x00009bf0, 0x00000035}, -+ {0x00009bf4, 0x00000035}, -+ {0x00009bf8, 0x00000010}, -+ {0x00009bfc, 0x0000001a}, -+ {0x0000a210, 0x40806333}, -+ {0x0000a214, 0x00106c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x018830c6}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x00000bb5}, -+ {0x0000a22c, 0x00000011}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a23c, 0x13c889af}, -+ {0x0000a240, 0x38490a20}, -+ {0x0000a244, 0x00007bb6}, -+ {0x0000a248, 0x0fff3ffc}, -+ {0x0000a24c, 0x00000001}, -+ {0x0000a250, 0x0000a000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0cc75380}, -+ {0x0000a25c, 0x0f0f0f01}, -+ {0x0000a260, 0xdfa91f01}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0e79e5c6}, -+ {0x0000b26c, 0x0e79e5c6}, -+ {0x0000c26c, 0x0e79e5c6}, -+ {0x0000d270, 0x00820820}, -+ {0x0000a278, 0x1ce739ce}, -+ {0x0000a27c, 0x051701ce}, -+ {0x0000a338, 0x00000000}, -+ {0x0000a33c, 0x00000000}, -+ {0x0000a340, 0x00000000}, -+ {0x0000a344, 0x00000000}, -+ {0x0000a348, 0x3fffffff}, -+ {0x0000a34c, 0x3fffffff}, -+ {0x0000a350, 0x3fffffff}, -+ {0x0000a354, 0x0003ffff}, -+ {0x0000a358, 0x79a8aa1f}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x08000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x1ce739ce}, -+ {0x0000a398, 0x000001ce}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3c8, 0x00000246}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x1ce739ce}, -+ {0x0000a3e0, 0x000001ce}, - }; - - static const u32 ar5416Bank0[][2] = { -- { 0x000098b0, 0x1e5795e5 }, -- { 0x000098e0, 0x02008020 }, -+ /* Addr allmodes */ -+ {0x000098b0, 0x1e5795e5}, -+ {0x000098e0, 0x02008020}, - }; - - static const u32 ar5416BB_RfGain[][3] = { -- { 0x00009a00, 0x00000000, 0x00000000 }, -- { 0x00009a04, 0x00000040, 0x00000040 }, -- { 0x00009a08, 0x00000080, 0x00000080 }, -- { 0x00009a0c, 0x000001a1, 0x00000141 }, -- { 0x00009a10, 0x000001e1, 0x00000181 }, -- { 0x00009a14, 0x00000021, 0x000001c1 }, -- { 0x00009a18, 0x00000061, 0x00000001 }, -- { 0x00009a1c, 0x00000168, 0x00000041 }, -- { 0x00009a20, 0x000001a8, 0x000001a8 }, -- { 0x00009a24, 0x000001e8, 0x000001e8 }, -- { 0x00009a28, 0x00000028, 0x00000028 }, -- { 0x00009a2c, 0x00000068, 0x00000068 }, -- { 0x00009a30, 0x00000189, 0x000000a8 }, -- { 0x00009a34, 0x000001c9, 0x00000169 }, -- { 0x00009a38, 0x00000009, 0x000001a9 }, -- { 0x00009a3c, 0x00000049, 0x000001e9 }, -- { 0x00009a40, 0x00000089, 0x00000029 }, -- { 0x00009a44, 0x00000170, 0x00000069 }, -- { 0x00009a48, 0x000001b0, 0x00000190 }, -- { 0x00009a4c, 0x000001f0, 0x000001d0 }, -- { 0x00009a50, 0x00000030, 0x00000010 }, -- { 0x00009a54, 0x00000070, 0x00000050 }, -- { 0x00009a58, 0x00000191, 0x00000090 }, -- { 0x00009a5c, 0x000001d1, 0x00000151 }, -- { 0x00009a60, 0x00000011, 0x00000191 }, -- { 0x00009a64, 0x00000051, 0x000001d1 }, -- { 0x00009a68, 0x00000091, 0x00000011 }, -- { 0x00009a6c, 0x000001b8, 0x00000051 }, -- { 0x00009a70, 0x000001f8, 0x00000198 }, -- { 0x00009a74, 0x00000038, 0x000001d8 }, -- { 0x00009a78, 0x00000078, 0x00000018 }, -- { 0x00009a7c, 0x00000199, 0x00000058 }, -- { 0x00009a80, 0x000001d9, 0x00000098 }, -- { 0x00009a84, 0x00000019, 0x00000159 }, -- { 0x00009a88, 0x00000059, 0x00000199 }, -- { 0x00009a8c, 0x00000099, 0x000001d9 }, -- { 0x00009a90, 0x000000d9, 0x00000019 }, -- { 0x00009a94, 0x000000f9, 0x00000059 }, -- { 0x00009a98, 0x000000f9, 0x00000099 }, -- { 0x00009a9c, 0x000000f9, 0x000000d9 }, -- { 0x00009aa0, 0x000000f9, 0x000000f9 }, -- { 0x00009aa4, 0x000000f9, 0x000000f9 }, -- { 0x00009aa8, 0x000000f9, 0x000000f9 }, -- { 0x00009aac, 0x000000f9, 0x000000f9 }, -- { 0x00009ab0, 0x000000f9, 0x000000f9 }, -- { 0x00009ab4, 0x000000f9, 0x000000f9 }, -- { 0x00009ab8, 0x000000f9, 0x000000f9 }, -- { 0x00009abc, 0x000000f9, 0x000000f9 }, -- { 0x00009ac0, 0x000000f9, 0x000000f9 }, -- { 0x00009ac4, 0x000000f9, 0x000000f9 }, -- { 0x00009ac8, 0x000000f9, 0x000000f9 }, -- { 0x00009acc, 0x000000f9, 0x000000f9 }, -- { 0x00009ad0, 0x000000f9, 0x000000f9 }, -- { 0x00009ad4, 0x000000f9, 0x000000f9 }, -- { 0x00009ad8, 0x000000f9, 0x000000f9 }, -- { 0x00009adc, 0x000000f9, 0x000000f9 }, -- { 0x00009ae0, 0x000000f9, 0x000000f9 }, -- { 0x00009ae4, 0x000000f9, 0x000000f9 }, -- { 0x00009ae8, 0x000000f9, 0x000000f9 }, -- { 0x00009aec, 0x000000f9, 0x000000f9 }, -- { 0x00009af0, 0x000000f9, 0x000000f9 }, -- { 0x00009af4, 0x000000f9, 0x000000f9 }, -- { 0x00009af8, 0x000000f9, 0x000000f9 }, -- { 0x00009afc, 0x000000f9, 0x000000f9 }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x00009a00, 0x00000000, 0x00000000}, -+ {0x00009a04, 0x00000040, 0x00000040}, -+ {0x00009a08, 0x00000080, 0x00000080}, -+ {0x00009a0c, 0x000001a1, 0x00000141}, -+ {0x00009a10, 0x000001e1, 0x00000181}, -+ {0x00009a14, 0x00000021, 0x000001c1}, -+ {0x00009a18, 0x00000061, 0x00000001}, -+ {0x00009a1c, 0x00000168, 0x00000041}, -+ {0x00009a20, 0x000001a8, 0x000001a8}, -+ {0x00009a24, 0x000001e8, 0x000001e8}, -+ {0x00009a28, 0x00000028, 0x00000028}, -+ {0x00009a2c, 0x00000068, 0x00000068}, -+ {0x00009a30, 0x00000189, 0x000000a8}, -+ {0x00009a34, 0x000001c9, 0x00000169}, -+ {0x00009a38, 0x00000009, 0x000001a9}, -+ {0x00009a3c, 0x00000049, 0x000001e9}, -+ {0x00009a40, 0x00000089, 0x00000029}, -+ {0x00009a44, 0x00000170, 0x00000069}, -+ {0x00009a48, 0x000001b0, 0x00000190}, -+ {0x00009a4c, 0x000001f0, 0x000001d0}, -+ {0x00009a50, 0x00000030, 0x00000010}, -+ {0x00009a54, 0x00000070, 0x00000050}, -+ {0x00009a58, 0x00000191, 0x00000090}, -+ {0x00009a5c, 0x000001d1, 0x00000151}, -+ {0x00009a60, 0x00000011, 0x00000191}, -+ {0x00009a64, 0x00000051, 0x000001d1}, -+ {0x00009a68, 0x00000091, 0x00000011}, -+ {0x00009a6c, 0x000001b8, 0x00000051}, -+ {0x00009a70, 0x000001f8, 0x00000198}, -+ {0x00009a74, 0x00000038, 0x000001d8}, -+ {0x00009a78, 0x00000078, 0x00000018}, -+ {0x00009a7c, 0x00000199, 0x00000058}, -+ {0x00009a80, 0x000001d9, 0x00000098}, -+ {0x00009a84, 0x00000019, 0x00000159}, -+ {0x00009a88, 0x00000059, 0x00000199}, -+ {0x00009a8c, 0x00000099, 0x000001d9}, -+ {0x00009a90, 0x000000d9, 0x00000019}, -+ {0x00009a94, 0x000000f9, 0x00000059}, -+ {0x00009a98, 0x000000f9, 0x00000099}, -+ {0x00009a9c, 0x000000f9, 0x000000d9}, -+ {0x00009aa0, 0x000000f9, 0x000000f9}, -+ {0x00009aa4, 0x000000f9, 0x000000f9}, -+ {0x00009aa8, 0x000000f9, 0x000000f9}, -+ {0x00009aac, 0x000000f9, 0x000000f9}, -+ {0x00009ab0, 0x000000f9, 0x000000f9}, -+ {0x00009ab4, 0x000000f9, 0x000000f9}, -+ {0x00009ab8, 0x000000f9, 0x000000f9}, -+ {0x00009abc, 0x000000f9, 0x000000f9}, -+ {0x00009ac0, 0x000000f9, 0x000000f9}, -+ {0x00009ac4, 0x000000f9, 0x000000f9}, -+ {0x00009ac8, 0x000000f9, 0x000000f9}, -+ {0x00009acc, 0x000000f9, 0x000000f9}, -+ {0x00009ad0, 0x000000f9, 0x000000f9}, -+ {0x00009ad4, 0x000000f9, 0x000000f9}, -+ {0x00009ad8, 0x000000f9, 0x000000f9}, -+ {0x00009adc, 0x000000f9, 0x000000f9}, -+ {0x00009ae0, 0x000000f9, 0x000000f9}, -+ {0x00009ae4, 0x000000f9, 0x000000f9}, -+ {0x00009ae8, 0x000000f9, 0x000000f9}, -+ {0x00009aec, 0x000000f9, 0x000000f9}, -+ {0x00009af0, 0x000000f9, 0x000000f9}, -+ {0x00009af4, 0x000000f9, 0x000000f9}, -+ {0x00009af8, 0x000000f9, 0x000000f9}, -+ {0x00009afc, 0x000000f9, 0x000000f9}, - }; - - static const u32 ar5416Bank1[][2] = { -- { 0x000098b0, 0x02108421 }, -- { 0x000098ec, 0x00000008 }, -+ /* Addr allmodes */ -+ {0x000098b0, 0x02108421}, -+ {0x000098ec, 0x00000008}, - }; - - static const u32 ar5416Bank2[][2] = { -- { 0x000098b0, 0x0e73ff17 }, -- { 0x000098e0, 0x00000420 }, -+ /* Addr allmodes */ -+ {0x000098b0, 0x0e73ff17}, -+ {0x000098e0, 0x00000420}, - }; - - static const u32 ar5416Bank3[][3] = { -- { 0x000098f0, 0x01400018, 0x01c00018 }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x000098f0, 0x01400018, 0x01c00018}, - }; - - static const u32 ar5416Bank6[][3] = { -- -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00e00000, 0x00e00000 }, -- { 0x0000989c, 0x005e0000, 0x005e0000 }, -- { 0x0000989c, 0x00120000, 0x00120000 }, -- { 0x0000989c, 0x00620000, 0x00620000 }, -- { 0x0000989c, 0x00020000, 0x00020000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, -- { 0x0000989c, 0x005f0000, 0x005f0000 }, -- { 0x0000989c, 0x00870000, 0x00870000 }, -- { 0x0000989c, 0x00f90000, 0x00f90000 }, -- { 0x0000989c, 0x007b0000, 0x007b0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00f50000, 0x00f50000 }, -- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, -- { 0x0000989c, 0x00110000, 0x00110000 }, -- { 0x0000989c, 0x006100a8, 0x006100a8 }, -- { 0x0000989c, 0x004210a2, 0x004210a2 }, -- { 0x0000989c, 0x0014008f, 0x0014008f }, -- { 0x0000989c, 0x00c40003, 0x00c40003 }, -- { 0x0000989c, 0x003000f2, 0x003000f2 }, -- { 0x0000989c, 0x00440016, 0x00440016 }, -- { 0x0000989c, 0x00410040, 0x00410040 }, -- { 0x0000989c, 0x0001805e, 0x0001805e }, -- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, -- { 0x0000989c, 0x000000f1, 0x000000f1 }, -- { 0x0000989c, 0x00002081, 0x00002081 }, -- { 0x0000989c, 0x000000d4, 0x000000d4 }, -- { 0x000098d0, 0x0000000f, 0x0010000f }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00e00000, 0x00e00000}, -+ {0x0000989c, 0x005e0000, 0x005e0000}, -+ {0x0000989c, 0x00120000, 0x00120000}, -+ {0x0000989c, 0x00620000, 0x00620000}, -+ {0x0000989c, 0x00020000, 0x00020000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x40ff0000, 0x40ff0000}, -+ {0x0000989c, 0x005f0000, 0x005f0000}, -+ {0x0000989c, 0x00870000, 0x00870000}, -+ {0x0000989c, 0x00f90000, 0x00f90000}, -+ {0x0000989c, 0x007b0000, 0x007b0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00f50000, 0x00f50000}, -+ {0x0000989c, 0x00dc0000, 0x00dc0000}, -+ {0x0000989c, 0x00110000, 0x00110000}, -+ {0x0000989c, 0x006100a8, 0x006100a8}, -+ {0x0000989c, 0x004210a2, 0x004210a2}, -+ {0x0000989c, 0x0014008f, 0x0014008f}, -+ {0x0000989c, 0x00c40003, 0x00c40003}, -+ {0x0000989c, 0x003000f2, 0x003000f2}, -+ {0x0000989c, 0x00440016, 0x00440016}, -+ {0x0000989c, 0x00410040, 0x00410040}, -+ {0x0000989c, 0x0001805e, 0x0001805e}, -+ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, -+ {0x0000989c, 0x000000f1, 0x000000f1}, -+ {0x0000989c, 0x00002081, 0x00002081}, -+ {0x0000989c, 0x000000d4, 0x000000d4}, -+ {0x000098d0, 0x0000000f, 0x0010000f}, - }; - - static const u32 ar5416Bank6TPC[][3] = { -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00e00000, 0x00e00000 }, -- { 0x0000989c, 0x005e0000, 0x005e0000 }, -- { 0x0000989c, 0x00120000, 0x00120000 }, -- { 0x0000989c, 0x00620000, 0x00620000 }, -- { 0x0000989c, 0x00020000, 0x00020000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, -- { 0x0000989c, 0x005f0000, 0x005f0000 }, -- { 0x0000989c, 0x00870000, 0x00870000 }, -- { 0x0000989c, 0x00f90000, 0x00f90000 }, -- { 0x0000989c, 0x007b0000, 0x007b0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00f50000, 0x00f50000 }, -- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, -- { 0x0000989c, 0x00110000, 0x00110000 }, -- { 0x0000989c, 0x006100a8, 0x006100a8 }, -- { 0x0000989c, 0x00423022, 0x00423022 }, -- { 0x0000989c, 0x201400df, 0x201400df }, -- { 0x0000989c, 0x00c40002, 0x00c40002 }, -- { 0x0000989c, 0x003000f2, 0x003000f2 }, -- { 0x0000989c, 0x00440016, 0x00440016 }, -- { 0x0000989c, 0x00410040, 0x00410040 }, -- { 0x0000989c, 0x0001805e, 0x0001805e }, -- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, -- { 0x0000989c, 0x000000e1, 0x000000e1 }, -- { 0x0000989c, 0x00007081, 0x00007081 }, -- { 0x0000989c, 0x000000d4, 0x000000d4 }, -- { 0x000098d0, 0x0000000f, 0x0010000f }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00e00000, 0x00e00000}, -+ {0x0000989c, 0x005e0000, 0x005e0000}, -+ {0x0000989c, 0x00120000, 0x00120000}, -+ {0x0000989c, 0x00620000, 0x00620000}, -+ {0x0000989c, 0x00020000, 0x00020000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x40ff0000, 0x40ff0000}, -+ {0x0000989c, 0x005f0000, 0x005f0000}, -+ {0x0000989c, 0x00870000, 0x00870000}, -+ {0x0000989c, 0x00f90000, 0x00f90000}, -+ {0x0000989c, 0x007b0000, 0x007b0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00f50000, 0x00f50000}, -+ {0x0000989c, 0x00dc0000, 0x00dc0000}, -+ {0x0000989c, 0x00110000, 0x00110000}, -+ {0x0000989c, 0x006100a8, 0x006100a8}, -+ {0x0000989c, 0x00423022, 0x00423022}, -+ {0x0000989c, 0x201400df, 0x201400df}, -+ {0x0000989c, 0x00c40002, 0x00c40002}, -+ {0x0000989c, 0x003000f2, 0x003000f2}, -+ {0x0000989c, 0x00440016, 0x00440016}, -+ {0x0000989c, 0x00410040, 0x00410040}, -+ {0x0000989c, 0x0001805e, 0x0001805e}, -+ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, -+ {0x0000989c, 0x000000e1, 0x000000e1}, -+ {0x0000989c, 0x00007081, 0x00007081}, -+ {0x0000989c, 0x000000d4, 0x000000d4}, -+ {0x000098d0, 0x0000000f, 0x0010000f}, - }; - - static const u32 ar5416Bank7[][2] = { -- { 0x0000989c, 0x00000500 }, -- { 0x0000989c, 0x00000800 }, -- { 0x000098cc, 0x0000000e }, -+ /* Addr allmodes */ -+ {0x0000989c, 0x00000500}, -+ {0x0000989c, 0x00000800}, -+ {0x000098cc, 0x0000000e}, - }; - - static const u32 ar5416Addac[][2] = { -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000003 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x0000000c }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000030 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000060 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000058 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x000098cc, 0x00000000 }, --}; -- --static const u32 ar5416Modes_9100[][6] = { -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, -- { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x00009850, 0x6d48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6d48b0e2, 0x6d48b0e2 }, -- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec86d2e, 0x7ec84d2e, 0x7ec82d2e }, -- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e }, -- { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, -- { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0 }, -- { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, -- { 0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a11, 0xd00a8a0d, 0xd00a8a0d }, -- { 0x00009940, 0x00754604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204 }, -- { 0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020 }, -- { 0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e }, -- { 0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff }, --#ifdef TB243 -- { 0x00009960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 }, -- { 0x0000a960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 }, -- { 0x0000b960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 }, -- { 0x00009964, 0x00000000, 0x00000000, 0x00002210, 0x00002210, 0x00001120 }, --#else -- { 0x00009960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 }, -- { 0x0000a960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 }, -- { 0x0000b960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 }, -- { 0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120 }, --#endif -- { 0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00 }, -- { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, -- { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, -- { 0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, -- { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, -- { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, -- { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, -- { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, -- { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, -- { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, -- { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, -- { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, -- { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, -- { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, -- { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000003}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x0000000c}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000030}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000060}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000058}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x000098cc, 0x00000000}, - }; - --#endif /* INITVALS_AR5008_H */ ---- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h -@@ -1,1254 +1,1354 @@ -+/* -+ * Copyright (c) 2010 Atheros Communications Inc. -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+static const u32 ar5416Modes_9100[][6] = { -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0}, -+ {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x00009850, 0x6d48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6d48b0e2, 0x6d48b0e2}, -+ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec86d2e, 0x7ec84d2e, 0x7ec82d2e}, -+ {0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e}, -+ {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, -+ {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, -+ {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, -+ {0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a11, 0xd00a8a0d, 0xd00a8a0d}, -+ {0x00009940, 0x00754604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204}, -+ {0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020}, -+ {0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e}, -+ {0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff}, -+ {0x00009960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0}, -+ {0x0000a960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0}, -+ {0x0000b960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0}, -+ {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120}, -+ {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00}, -+ {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880}, -+ {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788}, -+ {0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa}, -+ {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000}, -+ {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402}, -+ {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06}, -+ {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b}, -+ {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b}, -+ {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a}, -+ {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf}, -+ {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f}, -+ {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f}, -+ {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f}, -+ {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+}; - - static const u32 ar5416Common_9100[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020015 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00020010, 0x00000003 }, -- { 0x00020038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x40000000 }, -- { 0x00008054, 0x00004000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x000080c0, 0x2a82301a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008120, 0x08f04800 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0x00000000 }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c4, 0x00000000 }, -- { 0x000081d0, 0x00003210 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x00008300, 0x00000000 }, -- { 0x00008304, 0x00000000 }, -- { 0x00008308, 0x00000000 }, -- { 0x0000830c, 0x00000000 }, -- { 0x00008310, 0x00000000 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008318, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000007 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00000000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x000107ff }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xad848e19 }, -- { 0x00009810, 0x7d14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x00009840, 0x206a01ae }, -- { 0x0000984c, 0x1284233c }, -- { 0x00009854, 0x00000859 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x05100000 }, -- { 0x0000a920, 0x05100000 }, -- { 0x0000b920, 0x05100000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009948, 0x9280b212 }, -- { 0x0000994c, 0x00020028 }, -- { 0x0000c95c, 0x004b6a8e }, -- { 0x0000c968, 0x000003ce }, -- { 0x00009970, 0x190fb515 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x006f0000 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000200 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099fc, 0x00001042 }, -- { 0x00009b00, 0x00000000 }, -- { 0x00009b04, 0x00000001 }, -- { 0x00009b08, 0x00000002 }, -- { 0x00009b0c, 0x00000003 }, -- { 0x00009b10, 0x00000004 }, -- { 0x00009b14, 0x00000005 }, -- { 0x00009b18, 0x00000008 }, -- { 0x00009b1c, 0x00000009 }, -- { 0x00009b20, 0x0000000a }, -- { 0x00009b24, 0x0000000b }, -- { 0x00009b28, 0x0000000c }, -- { 0x00009b2c, 0x0000000d }, -- { 0x00009b30, 0x00000010 }, -- { 0x00009b34, 0x00000011 }, -- { 0x00009b38, 0x00000012 }, -- { 0x00009b3c, 0x00000013 }, -- { 0x00009b40, 0x00000014 }, -- { 0x00009b44, 0x00000015 }, -- { 0x00009b48, 0x00000018 }, -- { 0x00009b4c, 0x00000019 }, -- { 0x00009b50, 0x0000001a }, -- { 0x00009b54, 0x0000001b }, -- { 0x00009b58, 0x0000001c }, -- { 0x00009b5c, 0x0000001d }, -- { 0x00009b60, 0x00000020 }, -- { 0x00009b64, 0x00000021 }, -- { 0x00009b68, 0x00000022 }, -- { 0x00009b6c, 0x00000023 }, -- { 0x00009b70, 0x00000024 }, -- { 0x00009b74, 0x00000025 }, -- { 0x00009b78, 0x00000028 }, -- { 0x00009b7c, 0x00000029 }, -- { 0x00009b80, 0x0000002a }, -- { 0x00009b84, 0x0000002b }, -- { 0x00009b88, 0x0000002c }, -- { 0x00009b8c, 0x0000002d }, -- { 0x00009b90, 0x00000030 }, -- { 0x00009b94, 0x00000031 }, -- { 0x00009b98, 0x00000032 }, -- { 0x00009b9c, 0x00000033 }, -- { 0x00009ba0, 0x00000034 }, -- { 0x00009ba4, 0x00000035 }, -- { 0x00009ba8, 0x00000035 }, -- { 0x00009bac, 0x00000035 }, -- { 0x00009bb0, 0x00000035 }, -- { 0x00009bb4, 0x00000035 }, -- { 0x00009bb8, 0x00000035 }, -- { 0x00009bbc, 0x00000035 }, -- { 0x00009bc0, 0x00000035 }, -- { 0x00009bc4, 0x00000035 }, -- { 0x00009bc8, 0x00000035 }, -- { 0x00009bcc, 0x00000035 }, -- { 0x00009bd0, 0x00000035 }, -- { 0x00009bd4, 0x00000035 }, -- { 0x00009bd8, 0x00000035 }, -- { 0x00009bdc, 0x00000035 }, -- { 0x00009be0, 0x00000035 }, -- { 0x00009be4, 0x00000035 }, -- { 0x00009be8, 0x00000035 }, -- { 0x00009bec, 0x00000035 }, -- { 0x00009bf0, 0x00000035 }, -- { 0x00009bf4, 0x00000035 }, -- { 0x00009bf8, 0x00000010 }, -- { 0x00009bfc, 0x0000001a }, -- { 0x0000a210, 0x40806333 }, -- { 0x0000a214, 0x00106c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x018830c6 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x001a0bb5 }, -- { 0x0000a22c, 0x00000000 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a23c, 0x13c889ae }, -- { 0x0000a240, 0x38490a20 }, -- { 0x0000a244, 0x00007bb6 }, -- { 0x0000a248, 0x0fff3ffc }, -- { 0x0000a24c, 0x00000001 }, -- { 0x0000a250, 0x0000a000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0cc75380 }, -- { 0x0000a25c, 0x0f0f0f01 }, -- { 0x0000a260, 0xdfa91f01 }, -- { 0x0000a268, 0x00000001 }, -- { 0x0000a26c, 0x0ebae9c6 }, -- { 0x0000b26c, 0x0ebae9c6 }, -- { 0x0000c26c, 0x0ebae9c6 }, -- { 0x0000d270, 0x00820820 }, -- { 0x0000a278, 0x1ce739ce }, -- { 0x0000a27c, 0x050701ce }, -- { 0x0000a338, 0x00000000 }, -- { 0x0000a33c, 0x00000000 }, -- { 0x0000a340, 0x00000000 }, -- { 0x0000a344, 0x00000000 }, -- { 0x0000a348, 0x3fffffff }, -- { 0x0000a34c, 0x3fffffff }, -- { 0x0000a350, 0x3fffffff }, -- { 0x0000a354, 0x0003ffff }, -- { 0x0000a358, 0x79a8aa33 }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x1ce739ce }, -- { 0x0000a398, 0x000001ce }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3c8, 0x00000246 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x1ce739ce }, -- { 0x0000a3e0, 0x000001ce }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020015}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00020010, 0x00000003}, -+ {0x00020038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x40000000}, -+ {0x00008054, 0x00004000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x000080c0, 0x2a82301a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008120, 0x08f04800}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0x00000000}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c4, 0x00000000}, -+ {0x000081d0, 0x00003210}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x00008300, 0x00000000}, -+ {0x00008304, 0x00000000}, -+ {0x00008308, 0x00000000}, -+ {0x0000830c, 0x00000000}, -+ {0x00008310, 0x00000000}, -+ {0x00008314, 0x00000000}, -+ {0x00008318, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00000000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x000107ff}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xad848e19}, -+ {0x00009810, 0x7d14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x00009840, 0x206a01ae}, -+ {0x0000984c, 0x1284233c}, -+ {0x00009854, 0x00000859}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x05100000}, -+ {0x0000a920, 0x05100000}, -+ {0x0000b920, 0x05100000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009948, 0x9280b212}, -+ {0x0000994c, 0x00020028}, -+ {0x0000c95c, 0x004b6a8e}, -+ {0x0000c968, 0x000003ce}, -+ {0x00009970, 0x190fb515}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x006f0000}, -+ {0x000099b0, 0x03051000}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000200}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099fc, 0x00001042}, -+ {0x00009b00, 0x00000000}, -+ {0x00009b04, 0x00000001}, -+ {0x00009b08, 0x00000002}, -+ {0x00009b0c, 0x00000003}, -+ {0x00009b10, 0x00000004}, -+ {0x00009b14, 0x00000005}, -+ {0x00009b18, 0x00000008}, -+ {0x00009b1c, 0x00000009}, -+ {0x00009b20, 0x0000000a}, -+ {0x00009b24, 0x0000000b}, -+ {0x00009b28, 0x0000000c}, -+ {0x00009b2c, 0x0000000d}, -+ {0x00009b30, 0x00000010}, -+ {0x00009b34, 0x00000011}, -+ {0x00009b38, 0x00000012}, -+ {0x00009b3c, 0x00000013}, -+ {0x00009b40, 0x00000014}, -+ {0x00009b44, 0x00000015}, -+ {0x00009b48, 0x00000018}, -+ {0x00009b4c, 0x00000019}, -+ {0x00009b50, 0x0000001a}, -+ {0x00009b54, 0x0000001b}, -+ {0x00009b58, 0x0000001c}, -+ {0x00009b5c, 0x0000001d}, -+ {0x00009b60, 0x00000020}, -+ {0x00009b64, 0x00000021}, -+ {0x00009b68, 0x00000022}, -+ {0x00009b6c, 0x00000023}, -+ {0x00009b70, 0x00000024}, -+ {0x00009b74, 0x00000025}, -+ {0x00009b78, 0x00000028}, -+ {0x00009b7c, 0x00000029}, -+ {0x00009b80, 0x0000002a}, -+ {0x00009b84, 0x0000002b}, -+ {0x00009b88, 0x0000002c}, -+ {0x00009b8c, 0x0000002d}, -+ {0x00009b90, 0x00000030}, -+ {0x00009b94, 0x00000031}, -+ {0x00009b98, 0x00000032}, -+ {0x00009b9c, 0x00000033}, -+ {0x00009ba0, 0x00000034}, -+ {0x00009ba4, 0x00000035}, -+ {0x00009ba8, 0x00000035}, -+ {0x00009bac, 0x00000035}, -+ {0x00009bb0, 0x00000035}, -+ {0x00009bb4, 0x00000035}, -+ {0x00009bb8, 0x00000035}, -+ {0x00009bbc, 0x00000035}, -+ {0x00009bc0, 0x00000035}, -+ {0x00009bc4, 0x00000035}, -+ {0x00009bc8, 0x00000035}, -+ {0x00009bcc, 0x00000035}, -+ {0x00009bd0, 0x00000035}, -+ {0x00009bd4, 0x00000035}, -+ {0x00009bd8, 0x00000035}, -+ {0x00009bdc, 0x00000035}, -+ {0x00009be0, 0x00000035}, -+ {0x00009be4, 0x00000035}, -+ {0x00009be8, 0x00000035}, -+ {0x00009bec, 0x00000035}, -+ {0x00009bf0, 0x00000035}, -+ {0x00009bf4, 0x00000035}, -+ {0x00009bf8, 0x00000010}, -+ {0x00009bfc, 0x0000001a}, -+ {0x0000a210, 0x40806333}, -+ {0x0000a214, 0x00106c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x018830c6}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x001a0bb5}, -+ {0x0000a22c, 0x00000000}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a23c, 0x13c889ae}, -+ {0x0000a240, 0x38490a20}, -+ {0x0000a244, 0x00007bb6}, -+ {0x0000a248, 0x0fff3ffc}, -+ {0x0000a24c, 0x00000001}, -+ {0x0000a250, 0x0000a000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0cc75380}, -+ {0x0000a25c, 0x0f0f0f01}, -+ {0x0000a260, 0xdfa91f01}, -+ {0x0000a268, 0x00000001}, -+ {0x0000a26c, 0x0ebae9c6}, -+ {0x0000b26c, 0x0ebae9c6}, -+ {0x0000c26c, 0x0ebae9c6}, -+ {0x0000d270, 0x00820820}, -+ {0x0000a278, 0x1ce739ce}, -+ {0x0000a27c, 0x050701ce}, -+ {0x0000a338, 0x00000000}, -+ {0x0000a33c, 0x00000000}, -+ {0x0000a340, 0x00000000}, -+ {0x0000a344, 0x00000000}, -+ {0x0000a348, 0x3fffffff}, -+ {0x0000a34c, 0x3fffffff}, -+ {0x0000a350, 0x3fffffff}, -+ {0x0000a354, 0x0003ffff}, -+ {0x0000a358, 0x79a8aa33}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x1ce739ce}, -+ {0x0000a398, 0x000001ce}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3c8, 0x00000246}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x1ce739ce}, -+ {0x0000a3e0, 0x000001ce}, - }; - - static const u32 ar5416Bank0_9100[][2] = { -- { 0x000098b0, 0x1e5795e5 }, -- { 0x000098e0, 0x02008020 }, -+ /* Addr allmodes */ -+ {0x000098b0, 0x1e5795e5}, -+ {0x000098e0, 0x02008020}, - }; - - static const u32 ar5416BB_RfGain_9100[][3] = { -- { 0x00009a00, 0x00000000, 0x00000000 }, -- { 0x00009a04, 0x00000040, 0x00000040 }, -- { 0x00009a08, 0x00000080, 0x00000080 }, -- { 0x00009a0c, 0x000001a1, 0x00000141 }, -- { 0x00009a10, 0x000001e1, 0x00000181 }, -- { 0x00009a14, 0x00000021, 0x000001c1 }, -- { 0x00009a18, 0x00000061, 0x00000001 }, -- { 0x00009a1c, 0x00000168, 0x00000041 }, -- { 0x00009a20, 0x000001a8, 0x000001a8 }, -- { 0x00009a24, 0x000001e8, 0x000001e8 }, -- { 0x00009a28, 0x00000028, 0x00000028 }, -- { 0x00009a2c, 0x00000068, 0x00000068 }, -- { 0x00009a30, 0x00000189, 0x000000a8 }, -- { 0x00009a34, 0x000001c9, 0x00000169 }, -- { 0x00009a38, 0x00000009, 0x000001a9 }, -- { 0x00009a3c, 0x00000049, 0x000001e9 }, -- { 0x00009a40, 0x00000089, 0x00000029 }, -- { 0x00009a44, 0x00000170, 0x00000069 }, -- { 0x00009a48, 0x000001b0, 0x00000190 }, -- { 0x00009a4c, 0x000001f0, 0x000001d0 }, -- { 0x00009a50, 0x00000030, 0x00000010 }, -- { 0x00009a54, 0x00000070, 0x00000050 }, -- { 0x00009a58, 0x00000191, 0x00000090 }, -- { 0x00009a5c, 0x000001d1, 0x00000151 }, -- { 0x00009a60, 0x00000011, 0x00000191 }, -- { 0x00009a64, 0x00000051, 0x000001d1 }, -- { 0x00009a68, 0x00000091, 0x00000011 }, -- { 0x00009a6c, 0x000001b8, 0x00000051 }, -- { 0x00009a70, 0x000001f8, 0x00000198 }, -- { 0x00009a74, 0x00000038, 0x000001d8 }, -- { 0x00009a78, 0x00000078, 0x00000018 }, -- { 0x00009a7c, 0x00000199, 0x00000058 }, -- { 0x00009a80, 0x000001d9, 0x00000098 }, -- { 0x00009a84, 0x00000019, 0x00000159 }, -- { 0x00009a88, 0x00000059, 0x00000199 }, -- { 0x00009a8c, 0x00000099, 0x000001d9 }, -- { 0x00009a90, 0x000000d9, 0x00000019 }, -- { 0x00009a94, 0x000000f9, 0x00000059 }, -- { 0x00009a98, 0x000000f9, 0x00000099 }, -- { 0x00009a9c, 0x000000f9, 0x000000d9 }, -- { 0x00009aa0, 0x000000f9, 0x000000f9 }, -- { 0x00009aa4, 0x000000f9, 0x000000f9 }, -- { 0x00009aa8, 0x000000f9, 0x000000f9 }, -- { 0x00009aac, 0x000000f9, 0x000000f9 }, -- { 0x00009ab0, 0x000000f9, 0x000000f9 }, -- { 0x00009ab4, 0x000000f9, 0x000000f9 }, -- { 0x00009ab8, 0x000000f9, 0x000000f9 }, -- { 0x00009abc, 0x000000f9, 0x000000f9 }, -- { 0x00009ac0, 0x000000f9, 0x000000f9 }, -- { 0x00009ac4, 0x000000f9, 0x000000f9 }, -- { 0x00009ac8, 0x000000f9, 0x000000f9 }, -- { 0x00009acc, 0x000000f9, 0x000000f9 }, -- { 0x00009ad0, 0x000000f9, 0x000000f9 }, -- { 0x00009ad4, 0x000000f9, 0x000000f9 }, -- { 0x00009ad8, 0x000000f9, 0x000000f9 }, -- { 0x00009adc, 0x000000f9, 0x000000f9 }, -- { 0x00009ae0, 0x000000f9, 0x000000f9 }, -- { 0x00009ae4, 0x000000f9, 0x000000f9 }, -- { 0x00009ae8, 0x000000f9, 0x000000f9 }, -- { 0x00009aec, 0x000000f9, 0x000000f9 }, -- { 0x00009af0, 0x000000f9, 0x000000f9 }, -- { 0x00009af4, 0x000000f9, 0x000000f9 }, -- { 0x00009af8, 0x000000f9, 0x000000f9 }, -- { 0x00009afc, 0x000000f9, 0x000000f9 }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x00009a00, 0x00000000, 0x00000000}, -+ {0x00009a04, 0x00000040, 0x00000040}, -+ {0x00009a08, 0x00000080, 0x00000080}, -+ {0x00009a0c, 0x000001a1, 0x00000141}, -+ {0x00009a10, 0x000001e1, 0x00000181}, -+ {0x00009a14, 0x00000021, 0x000001c1}, -+ {0x00009a18, 0x00000061, 0x00000001}, -+ {0x00009a1c, 0x00000168, 0x00000041}, -+ {0x00009a20, 0x000001a8, 0x000001a8}, -+ {0x00009a24, 0x000001e8, 0x000001e8}, -+ {0x00009a28, 0x00000028, 0x00000028}, -+ {0x00009a2c, 0x00000068, 0x00000068}, -+ {0x00009a30, 0x00000189, 0x000000a8}, -+ {0x00009a34, 0x000001c9, 0x00000169}, -+ {0x00009a38, 0x00000009, 0x000001a9}, -+ {0x00009a3c, 0x00000049, 0x000001e9}, -+ {0x00009a40, 0x00000089, 0x00000029}, -+ {0x00009a44, 0x00000170, 0x00000069}, -+ {0x00009a48, 0x000001b0, 0x00000190}, -+ {0x00009a4c, 0x000001f0, 0x000001d0}, -+ {0x00009a50, 0x00000030, 0x00000010}, -+ {0x00009a54, 0x00000070, 0x00000050}, -+ {0x00009a58, 0x00000191, 0x00000090}, -+ {0x00009a5c, 0x000001d1, 0x00000151}, -+ {0x00009a60, 0x00000011, 0x00000191}, -+ {0x00009a64, 0x00000051, 0x000001d1}, -+ {0x00009a68, 0x00000091, 0x00000011}, -+ {0x00009a6c, 0x000001b8, 0x00000051}, -+ {0x00009a70, 0x000001f8, 0x00000198}, -+ {0x00009a74, 0x00000038, 0x000001d8}, -+ {0x00009a78, 0x00000078, 0x00000018}, -+ {0x00009a7c, 0x00000199, 0x00000058}, -+ {0x00009a80, 0x000001d9, 0x00000098}, -+ {0x00009a84, 0x00000019, 0x00000159}, -+ {0x00009a88, 0x00000059, 0x00000199}, -+ {0x00009a8c, 0x00000099, 0x000001d9}, -+ {0x00009a90, 0x000000d9, 0x00000019}, -+ {0x00009a94, 0x000000f9, 0x00000059}, -+ {0x00009a98, 0x000000f9, 0x00000099}, -+ {0x00009a9c, 0x000000f9, 0x000000d9}, -+ {0x00009aa0, 0x000000f9, 0x000000f9}, -+ {0x00009aa4, 0x000000f9, 0x000000f9}, -+ {0x00009aa8, 0x000000f9, 0x000000f9}, -+ {0x00009aac, 0x000000f9, 0x000000f9}, -+ {0x00009ab0, 0x000000f9, 0x000000f9}, -+ {0x00009ab4, 0x000000f9, 0x000000f9}, -+ {0x00009ab8, 0x000000f9, 0x000000f9}, -+ {0x00009abc, 0x000000f9, 0x000000f9}, -+ {0x00009ac0, 0x000000f9, 0x000000f9}, -+ {0x00009ac4, 0x000000f9, 0x000000f9}, -+ {0x00009ac8, 0x000000f9, 0x000000f9}, -+ {0x00009acc, 0x000000f9, 0x000000f9}, -+ {0x00009ad0, 0x000000f9, 0x000000f9}, -+ {0x00009ad4, 0x000000f9, 0x000000f9}, -+ {0x00009ad8, 0x000000f9, 0x000000f9}, -+ {0x00009adc, 0x000000f9, 0x000000f9}, -+ {0x00009ae0, 0x000000f9, 0x000000f9}, -+ {0x00009ae4, 0x000000f9, 0x000000f9}, -+ {0x00009ae8, 0x000000f9, 0x000000f9}, -+ {0x00009aec, 0x000000f9, 0x000000f9}, -+ {0x00009af0, 0x000000f9, 0x000000f9}, -+ {0x00009af4, 0x000000f9, 0x000000f9}, -+ {0x00009af8, 0x000000f9, 0x000000f9}, -+ {0x00009afc, 0x000000f9, 0x000000f9}, - }; - - static const u32 ar5416Bank1_9100[][2] = { -- { 0x000098b0, 0x02108421}, -- { 0x000098ec, 0x00000008}, -+ /* Addr allmodes */ -+ {0x000098b0, 0x02108421}, -+ {0x000098ec, 0x00000008}, - }; - - static const u32 ar5416Bank2_9100[][2] = { -- { 0x000098b0, 0x0e73ff17}, -- { 0x000098e0, 0x00000420}, -+ /* Addr allmodes */ -+ {0x000098b0, 0x0e73ff17}, -+ {0x000098e0, 0x00000420}, - }; - - static const u32 ar5416Bank3_9100[][3] = { -- { 0x000098f0, 0x01400018, 0x01c00018 }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x000098f0, 0x01400018, 0x01c00018}, - }; - - static const u32 ar5416Bank6_9100[][3] = { -- -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00e00000, 0x00e00000 }, -- { 0x0000989c, 0x005e0000, 0x005e0000 }, -- { 0x0000989c, 0x00120000, 0x00120000 }, -- { 0x0000989c, 0x00620000, 0x00620000 }, -- { 0x0000989c, 0x00020000, 0x00020000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x005f0000, 0x005f0000 }, -- { 0x0000989c, 0x00870000, 0x00870000 }, -- { 0x0000989c, 0x00f90000, 0x00f90000 }, -- { 0x0000989c, 0x007b0000, 0x007b0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00f50000, 0x00f50000 }, -- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, -- { 0x0000989c, 0x00110000, 0x00110000 }, -- { 0x0000989c, 0x006100a8, 0x006100a8 }, -- { 0x0000989c, 0x004210a2, 0x004210a2 }, -- { 0x0000989c, 0x0014000f, 0x0014000f }, -- { 0x0000989c, 0x00c40002, 0x00c40002 }, -- { 0x0000989c, 0x003000f2, 0x003000f2 }, -- { 0x0000989c, 0x00440016, 0x00440016 }, -- { 0x0000989c, 0x00410040, 0x00410040 }, -- { 0x0000989c, 0x000180d6, 0x000180d6 }, -- { 0x0000989c, 0x0000c0aa, 0x0000c0aa }, -- { 0x0000989c, 0x000000b1, 0x000000b1 }, -- { 0x0000989c, 0x00002000, 0x00002000 }, -- { 0x0000989c, 0x000000d4, 0x000000d4 }, -- { 0x000098d0, 0x0000000f, 0x0010000f }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00e00000, 0x00e00000}, -+ {0x0000989c, 0x005e0000, 0x005e0000}, -+ {0x0000989c, 0x00120000, 0x00120000}, -+ {0x0000989c, 0x00620000, 0x00620000}, -+ {0x0000989c, 0x00020000, 0x00020000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x005f0000, 0x005f0000}, -+ {0x0000989c, 0x00870000, 0x00870000}, -+ {0x0000989c, 0x00f90000, 0x00f90000}, -+ {0x0000989c, 0x007b0000, 0x007b0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00f50000, 0x00f50000}, -+ {0x0000989c, 0x00dc0000, 0x00dc0000}, -+ {0x0000989c, 0x00110000, 0x00110000}, -+ {0x0000989c, 0x006100a8, 0x006100a8}, -+ {0x0000989c, 0x004210a2, 0x004210a2}, -+ {0x0000989c, 0x0014000f, 0x0014000f}, -+ {0x0000989c, 0x00c40002, 0x00c40002}, -+ {0x0000989c, 0x003000f2, 0x003000f2}, -+ {0x0000989c, 0x00440016, 0x00440016}, -+ {0x0000989c, 0x00410040, 0x00410040}, -+ {0x0000989c, 0x000180d6, 0x000180d6}, -+ {0x0000989c, 0x0000c0aa, 0x0000c0aa}, -+ {0x0000989c, 0x000000b1, 0x000000b1}, -+ {0x0000989c, 0x00002000, 0x00002000}, -+ {0x0000989c, 0x000000d4, 0x000000d4}, -+ {0x000098d0, 0x0000000f, 0x0010000f}, - }; - -- - static const u32 ar5416Bank6TPC_9100[][3] = { -- -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00e00000, 0x00e00000 }, -- { 0x0000989c, 0x005e0000, 0x005e0000 }, -- { 0x0000989c, 0x00120000, 0x00120000 }, -- { 0x0000989c, 0x00620000, 0x00620000 }, -- { 0x0000989c, 0x00020000, 0x00020000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, -- { 0x0000989c, 0x005f0000, 0x005f0000 }, -- { 0x0000989c, 0x00870000, 0x00870000 }, -- { 0x0000989c, 0x00f90000, 0x00f90000 }, -- { 0x0000989c, 0x007b0000, 0x007b0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00f50000, 0x00f50000 }, -- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, -- { 0x0000989c, 0x00110000, 0x00110000 }, -- { 0x0000989c, 0x006100a8, 0x006100a8 }, -- { 0x0000989c, 0x00423022, 0x00423022 }, -- { 0x0000989c, 0x2014008f, 0x2014008f }, -- { 0x0000989c, 0x00c40002, 0x00c40002 }, -- { 0x0000989c, 0x003000f2, 0x003000f2 }, -- { 0x0000989c, 0x00440016, 0x00440016 }, -- { 0x0000989c, 0x00410040, 0x00410040 }, -- { 0x0000989c, 0x0001805e, 0x0001805e }, -- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, -- { 0x0000989c, 0x000000e1, 0x000000e1 }, -- { 0x0000989c, 0x00007080, 0x00007080 }, -- { 0x0000989c, 0x000000d4, 0x000000d4 }, -- { 0x000098d0, 0x0000000f, 0x0010000f }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00e00000, 0x00e00000}, -+ {0x0000989c, 0x005e0000, 0x005e0000}, -+ {0x0000989c, 0x00120000, 0x00120000}, -+ {0x0000989c, 0x00620000, 0x00620000}, -+ {0x0000989c, 0x00020000, 0x00020000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x40ff0000, 0x40ff0000}, -+ {0x0000989c, 0x005f0000, 0x005f0000}, -+ {0x0000989c, 0x00870000, 0x00870000}, -+ {0x0000989c, 0x00f90000, 0x00f90000}, -+ {0x0000989c, 0x007b0000, 0x007b0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00f50000, 0x00f50000}, -+ {0x0000989c, 0x00dc0000, 0x00dc0000}, -+ {0x0000989c, 0x00110000, 0x00110000}, -+ {0x0000989c, 0x006100a8, 0x006100a8}, -+ {0x0000989c, 0x00423022, 0x00423022}, -+ {0x0000989c, 0x2014008f, 0x2014008f}, -+ {0x0000989c, 0x00c40002, 0x00c40002}, -+ {0x0000989c, 0x003000f2, 0x003000f2}, -+ {0x0000989c, 0x00440016, 0x00440016}, -+ {0x0000989c, 0x00410040, 0x00410040}, -+ {0x0000989c, 0x0001805e, 0x0001805e}, -+ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, -+ {0x0000989c, 0x000000e1, 0x000000e1}, -+ {0x0000989c, 0x00007080, 0x00007080}, -+ {0x0000989c, 0x000000d4, 0x000000d4}, -+ {0x000098d0, 0x0000000f, 0x0010000f}, - }; - - static const u32 ar5416Bank7_9100[][2] = { -- { 0x0000989c, 0x00000500 }, -- { 0x0000989c, 0x00000800 }, -- { 0x000098cc, 0x0000000e }, -+ /* Addr allmodes */ -+ {0x0000989c, 0x00000500}, -+ {0x0000989c, 0x00000800}, -+ {0x000098cc, 0x0000000e}, - }; - - static const u32 ar5416Addac_9100[][2] = { -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000010 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x000000c0 }, -- {0x0000989c, 0x00000015 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x000098cc, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000010}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x000000c0}, -+ {0x0000989c, 0x00000015}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x000098cc, 0x00000000}, - }; - - static const u32 ar5416Modes_9160[][6] = { -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, -- { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, -- { 0x00009850, 0x6c48b4e2, 0x6c48b4e2, 0x6c48b0e2, 0x6c48b0e2, 0x6c48b0e2 }, -- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, -- { 0x0000985c, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e }, -- { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, -- { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0 }, -- { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, -- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, -- { 0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020 }, -- { 0x00009960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, -- { 0x0000a960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, -- { 0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, -- { 0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120 }, -- { 0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce }, -- { 0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00 }, -- { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, -- { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, -- { 0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, -- { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, -- { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, -- { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, -- { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, -- { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, -- { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, -- { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, -- { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, -- { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, -- { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, -- { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0}, -+ {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -+ {0x00009850, 0x6c48b4e2, 0x6c48b4e2, 0x6c48b0e2, 0x6c48b0e2, 0x6c48b0e2}, -+ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, -+ {0x0000985c, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e}, -+ {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, -+ {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, -+ {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, -+ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, -+ {0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020}, -+ {0x00009960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, -+ {0x0000a960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, -+ {0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, -+ {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120}, -+ {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce}, -+ {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00}, -+ {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880}, -+ {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788}, -+ {0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa}, -+ {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000}, -+ {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402}, -+ {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06}, -+ {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b}, -+ {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b}, -+ {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a}, -+ {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf}, -+ {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f}, -+ {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f}, -+ {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f}, -+ {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - }; - - static const u32 ar5416Common_9160[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020015 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00007010, 0x00000020 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x40000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x000080c0, 0x2a82301a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008120, 0x08f04800 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0xffffffff }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c4, 0x00000000 }, -- { 0x000081d0, 0x00003210 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x00008300, 0x00000000 }, -- { 0x00008304, 0x00000000 }, -- { 0x00008308, 0x00000000 }, -- { 0x0000830c, 0x00000000 }, -- { 0x00008310, 0x00000000 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008318, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000007 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00ff0000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x000107ff }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xad848e19 }, -- { 0x00009810, 0x7d14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x00009840, 0x206a01ae }, -- { 0x0000984c, 0x1284233c }, -- { 0x00009854, 0x00000859 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x05100000 }, -- { 0x0000a920, 0x05100000 }, -- { 0x0000b920, 0x05100000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009948, 0x9280b212 }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5f3ca3de }, -- { 0x00009958, 0x2108ecff }, -- { 0x00009940, 0x00750604 }, -- { 0x0000c95c, 0x004b6a8e }, -- { 0x00009970, 0x190fb515 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x006f0000 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000200 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099fc, 0x00001042 }, -- { 0x00009b00, 0x00000000 }, -- { 0x00009b04, 0x00000001 }, -- { 0x00009b08, 0x00000002 }, -- { 0x00009b0c, 0x00000003 }, -- { 0x00009b10, 0x00000004 }, -- { 0x00009b14, 0x00000005 }, -- { 0x00009b18, 0x00000008 }, -- { 0x00009b1c, 0x00000009 }, -- { 0x00009b20, 0x0000000a }, -- { 0x00009b24, 0x0000000b }, -- { 0x00009b28, 0x0000000c }, -- { 0x00009b2c, 0x0000000d }, -- { 0x00009b30, 0x00000010 }, -- { 0x00009b34, 0x00000011 }, -- { 0x00009b38, 0x00000012 }, -- { 0x00009b3c, 0x00000013 }, -- { 0x00009b40, 0x00000014 }, -- { 0x00009b44, 0x00000015 }, -- { 0x00009b48, 0x00000018 }, -- { 0x00009b4c, 0x00000019 }, -- { 0x00009b50, 0x0000001a }, -- { 0x00009b54, 0x0000001b }, -- { 0x00009b58, 0x0000001c }, -- { 0x00009b5c, 0x0000001d }, -- { 0x00009b60, 0x00000020 }, -- { 0x00009b64, 0x00000021 }, -- { 0x00009b68, 0x00000022 }, -- { 0x00009b6c, 0x00000023 }, -- { 0x00009b70, 0x00000024 }, -- { 0x00009b74, 0x00000025 }, -- { 0x00009b78, 0x00000028 }, -- { 0x00009b7c, 0x00000029 }, -- { 0x00009b80, 0x0000002a }, -- { 0x00009b84, 0x0000002b }, -- { 0x00009b88, 0x0000002c }, -- { 0x00009b8c, 0x0000002d }, -- { 0x00009b90, 0x00000030 }, -- { 0x00009b94, 0x00000031 }, -- { 0x00009b98, 0x00000032 }, -- { 0x00009b9c, 0x00000033 }, -- { 0x00009ba0, 0x00000034 }, -- { 0x00009ba4, 0x00000035 }, -- { 0x00009ba8, 0x00000035 }, -- { 0x00009bac, 0x00000035 }, -- { 0x00009bb0, 0x00000035 }, -- { 0x00009bb4, 0x00000035 }, -- { 0x00009bb8, 0x00000035 }, -- { 0x00009bbc, 0x00000035 }, -- { 0x00009bc0, 0x00000035 }, -- { 0x00009bc4, 0x00000035 }, -- { 0x00009bc8, 0x00000035 }, -- { 0x00009bcc, 0x00000035 }, -- { 0x00009bd0, 0x00000035 }, -- { 0x00009bd4, 0x00000035 }, -- { 0x00009bd8, 0x00000035 }, -- { 0x00009bdc, 0x00000035 }, -- { 0x00009be0, 0x00000035 }, -- { 0x00009be4, 0x00000035 }, -- { 0x00009be8, 0x00000035 }, -- { 0x00009bec, 0x00000035 }, -- { 0x00009bf0, 0x00000035 }, -- { 0x00009bf4, 0x00000035 }, -- { 0x00009bf8, 0x00000010 }, -- { 0x00009bfc, 0x0000001a }, -- { 0x0000a210, 0x40806333 }, -- { 0x0000a214, 0x00106c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x018830c6 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x001a0bb5 }, -- { 0x0000a22c, 0x00000000 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a23c, 0x13c889af }, -- { 0x0000a240, 0x38490a20 }, -- { 0x0000a244, 0x00007bb6 }, -- { 0x0000a248, 0x0fff3ffc }, -- { 0x0000a24c, 0x00000001 }, -- { 0x0000a250, 0x0000e000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0cc75380 }, -- { 0x0000a25c, 0x0f0f0f01 }, -- { 0x0000a260, 0xdfa91f01 }, -- { 0x0000a268, 0x00000001 }, -- { 0x0000a26c, 0x0ebae9c6 }, -- { 0x0000b26c, 0x0ebae9c6 }, -- { 0x0000c26c, 0x0ebae9c6 }, -- { 0x0000d270, 0x00820820 }, -- { 0x0000a278, 0x1ce739ce }, -- { 0x0000a27c, 0x050701ce }, -- { 0x0000a338, 0x00000000 }, -- { 0x0000a33c, 0x00000000 }, -- { 0x0000a340, 0x00000000 }, -- { 0x0000a344, 0x00000000 }, -- { 0x0000a348, 0x3fffffff }, -- { 0x0000a34c, 0x3fffffff }, -- { 0x0000a350, 0x3fffffff }, -- { 0x0000a354, 0x0003ffff }, -- { 0x0000a358, 0x79bfaa03 }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x1ce739ce }, -- { 0x0000a398, 0x000001ce }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3c8, 0x00000246 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x1ce739ce }, -- { 0x0000a3e0, 0x000001ce }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020015}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00007010, 0x00000020}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x40000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x000080c0, 0x2a82301a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008120, 0x08f04800}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c4, 0x00000000}, -+ {0x000081d0, 0x00003210}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x00008300, 0x00000000}, -+ {0x00008304, 0x00000000}, -+ {0x00008308, 0x00000000}, -+ {0x0000830c, 0x00000000}, -+ {0x00008310, 0x00000000}, -+ {0x00008314, 0x00000000}, -+ {0x00008318, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x000107ff}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xad848e19}, -+ {0x00009810, 0x7d14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x00009840, 0x206a01ae}, -+ {0x0000984c, 0x1284233c}, -+ {0x00009854, 0x00000859}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x05100000}, -+ {0x0000a920, 0x05100000}, -+ {0x0000b920, 0x05100000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009948, 0x9280b212}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5f3ca3de}, -+ {0x00009958, 0x2108ecff}, -+ {0x00009940, 0x00750604}, -+ {0x0000c95c, 0x004b6a8e}, -+ {0x00009970, 0x190fb515}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x006f0000}, -+ {0x000099b0, 0x03051000}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000200}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099fc, 0x00001042}, -+ {0x00009b00, 0x00000000}, -+ {0x00009b04, 0x00000001}, -+ {0x00009b08, 0x00000002}, -+ {0x00009b0c, 0x00000003}, -+ {0x00009b10, 0x00000004}, -+ {0x00009b14, 0x00000005}, -+ {0x00009b18, 0x00000008}, -+ {0x00009b1c, 0x00000009}, -+ {0x00009b20, 0x0000000a}, -+ {0x00009b24, 0x0000000b}, -+ {0x00009b28, 0x0000000c}, -+ {0x00009b2c, 0x0000000d}, -+ {0x00009b30, 0x00000010}, -+ {0x00009b34, 0x00000011}, -+ {0x00009b38, 0x00000012}, -+ {0x00009b3c, 0x00000013}, -+ {0x00009b40, 0x00000014}, -+ {0x00009b44, 0x00000015}, -+ {0x00009b48, 0x00000018}, -+ {0x00009b4c, 0x00000019}, -+ {0x00009b50, 0x0000001a}, -+ {0x00009b54, 0x0000001b}, -+ {0x00009b58, 0x0000001c}, -+ {0x00009b5c, 0x0000001d}, -+ {0x00009b60, 0x00000020}, -+ {0x00009b64, 0x00000021}, -+ {0x00009b68, 0x00000022}, -+ {0x00009b6c, 0x00000023}, -+ {0x00009b70, 0x00000024}, -+ {0x00009b74, 0x00000025}, -+ {0x00009b78, 0x00000028}, -+ {0x00009b7c, 0x00000029}, -+ {0x00009b80, 0x0000002a}, -+ {0x00009b84, 0x0000002b}, -+ {0x00009b88, 0x0000002c}, -+ {0x00009b8c, 0x0000002d}, -+ {0x00009b90, 0x00000030}, -+ {0x00009b94, 0x00000031}, -+ {0x00009b98, 0x00000032}, -+ {0x00009b9c, 0x00000033}, -+ {0x00009ba0, 0x00000034}, -+ {0x00009ba4, 0x00000035}, -+ {0x00009ba8, 0x00000035}, -+ {0x00009bac, 0x00000035}, -+ {0x00009bb0, 0x00000035}, -+ {0x00009bb4, 0x00000035}, -+ {0x00009bb8, 0x00000035}, -+ {0x00009bbc, 0x00000035}, -+ {0x00009bc0, 0x00000035}, -+ {0x00009bc4, 0x00000035}, -+ {0x00009bc8, 0x00000035}, -+ {0x00009bcc, 0x00000035}, -+ {0x00009bd0, 0x00000035}, -+ {0x00009bd4, 0x00000035}, -+ {0x00009bd8, 0x00000035}, -+ {0x00009bdc, 0x00000035}, -+ {0x00009be0, 0x00000035}, -+ {0x00009be4, 0x00000035}, -+ {0x00009be8, 0x00000035}, -+ {0x00009bec, 0x00000035}, -+ {0x00009bf0, 0x00000035}, -+ {0x00009bf4, 0x00000035}, -+ {0x00009bf8, 0x00000010}, -+ {0x00009bfc, 0x0000001a}, -+ {0x0000a210, 0x40806333}, -+ {0x0000a214, 0x00106c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x018830c6}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x001a0bb5}, -+ {0x0000a22c, 0x00000000}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a23c, 0x13c889af}, -+ {0x0000a240, 0x38490a20}, -+ {0x0000a244, 0x00007bb6}, -+ {0x0000a248, 0x0fff3ffc}, -+ {0x0000a24c, 0x00000001}, -+ {0x0000a250, 0x0000e000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0cc75380}, -+ {0x0000a25c, 0x0f0f0f01}, -+ {0x0000a260, 0xdfa91f01}, -+ {0x0000a268, 0x00000001}, -+ {0x0000a26c, 0x0ebae9c6}, -+ {0x0000b26c, 0x0ebae9c6}, -+ {0x0000c26c, 0x0ebae9c6}, -+ {0x0000d270, 0x00820820}, -+ {0x0000a278, 0x1ce739ce}, -+ {0x0000a27c, 0x050701ce}, -+ {0x0000a338, 0x00000000}, -+ {0x0000a33c, 0x00000000}, -+ {0x0000a340, 0x00000000}, -+ {0x0000a344, 0x00000000}, -+ {0x0000a348, 0x3fffffff}, -+ {0x0000a34c, 0x3fffffff}, -+ {0x0000a350, 0x3fffffff}, -+ {0x0000a354, 0x0003ffff}, -+ {0x0000a358, 0x79bfaa03}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x1ce739ce}, -+ {0x0000a398, 0x000001ce}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3c8, 0x00000246}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x1ce739ce}, -+ {0x0000a3e0, 0x000001ce}, - }; - - static const u32 ar5416Bank0_9160[][2] = { -- { 0x000098b0, 0x1e5795e5 }, -- { 0x000098e0, 0x02008020 }, -+ /* Addr allmodes */ -+ {0x000098b0, 0x1e5795e5}, -+ {0x000098e0, 0x02008020}, - }; - - static const u32 ar5416BB_RfGain_9160[][3] = { -- { 0x00009a00, 0x00000000, 0x00000000 }, -- { 0x00009a04, 0x00000040, 0x00000040 }, -- { 0x00009a08, 0x00000080, 0x00000080 }, -- { 0x00009a0c, 0x000001a1, 0x00000141 }, -- { 0x00009a10, 0x000001e1, 0x00000181 }, -- { 0x00009a14, 0x00000021, 0x000001c1 }, -- { 0x00009a18, 0x00000061, 0x00000001 }, -- { 0x00009a1c, 0x00000168, 0x00000041 }, -- { 0x00009a20, 0x000001a8, 0x000001a8 }, -- { 0x00009a24, 0x000001e8, 0x000001e8 }, -- { 0x00009a28, 0x00000028, 0x00000028 }, -- { 0x00009a2c, 0x00000068, 0x00000068 }, -- { 0x00009a30, 0x00000189, 0x000000a8 }, -- { 0x00009a34, 0x000001c9, 0x00000169 }, -- { 0x00009a38, 0x00000009, 0x000001a9 }, -- { 0x00009a3c, 0x00000049, 0x000001e9 }, -- { 0x00009a40, 0x00000089, 0x00000029 }, -- { 0x00009a44, 0x00000170, 0x00000069 }, -- { 0x00009a48, 0x000001b0, 0x00000190 }, -- { 0x00009a4c, 0x000001f0, 0x000001d0 }, -- { 0x00009a50, 0x00000030, 0x00000010 }, -- { 0x00009a54, 0x00000070, 0x00000050 }, -- { 0x00009a58, 0x00000191, 0x00000090 }, -- { 0x00009a5c, 0x000001d1, 0x00000151 }, -- { 0x00009a60, 0x00000011, 0x00000191 }, -- { 0x00009a64, 0x00000051, 0x000001d1 }, -- { 0x00009a68, 0x00000091, 0x00000011 }, -- { 0x00009a6c, 0x000001b8, 0x00000051 }, -- { 0x00009a70, 0x000001f8, 0x00000198 }, -- { 0x00009a74, 0x00000038, 0x000001d8 }, -- { 0x00009a78, 0x00000078, 0x00000018 }, -- { 0x00009a7c, 0x00000199, 0x00000058 }, -- { 0x00009a80, 0x000001d9, 0x00000098 }, -- { 0x00009a84, 0x00000019, 0x00000159 }, -- { 0x00009a88, 0x00000059, 0x00000199 }, -- { 0x00009a8c, 0x00000099, 0x000001d9 }, -- { 0x00009a90, 0x000000d9, 0x00000019 }, -- { 0x00009a94, 0x000000f9, 0x00000059 }, -- { 0x00009a98, 0x000000f9, 0x00000099 }, -- { 0x00009a9c, 0x000000f9, 0x000000d9 }, -- { 0x00009aa0, 0x000000f9, 0x000000f9 }, -- { 0x00009aa4, 0x000000f9, 0x000000f9 }, -- { 0x00009aa8, 0x000000f9, 0x000000f9 }, -- { 0x00009aac, 0x000000f9, 0x000000f9 }, -- { 0x00009ab0, 0x000000f9, 0x000000f9 }, -- { 0x00009ab4, 0x000000f9, 0x000000f9 }, -- { 0x00009ab8, 0x000000f9, 0x000000f9 }, -- { 0x00009abc, 0x000000f9, 0x000000f9 }, -- { 0x00009ac0, 0x000000f9, 0x000000f9 }, -- { 0x00009ac4, 0x000000f9, 0x000000f9 }, -- { 0x00009ac8, 0x000000f9, 0x000000f9 }, -- { 0x00009acc, 0x000000f9, 0x000000f9 }, -- { 0x00009ad0, 0x000000f9, 0x000000f9 }, -- { 0x00009ad4, 0x000000f9, 0x000000f9 }, -- { 0x00009ad8, 0x000000f9, 0x000000f9 }, -- { 0x00009adc, 0x000000f9, 0x000000f9 }, -- { 0x00009ae0, 0x000000f9, 0x000000f9 }, -- { 0x00009ae4, 0x000000f9, 0x000000f9 }, -- { 0x00009ae8, 0x000000f9, 0x000000f9 }, -- { 0x00009aec, 0x000000f9, 0x000000f9 }, -- { 0x00009af0, 0x000000f9, 0x000000f9 }, -- { 0x00009af4, 0x000000f9, 0x000000f9 }, -- { 0x00009af8, 0x000000f9, 0x000000f9 }, -- { 0x00009afc, 0x000000f9, 0x000000f9 }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x00009a00, 0x00000000, 0x00000000}, -+ {0x00009a04, 0x00000040, 0x00000040}, -+ {0x00009a08, 0x00000080, 0x00000080}, -+ {0x00009a0c, 0x000001a1, 0x00000141}, -+ {0x00009a10, 0x000001e1, 0x00000181}, -+ {0x00009a14, 0x00000021, 0x000001c1}, -+ {0x00009a18, 0x00000061, 0x00000001}, -+ {0x00009a1c, 0x00000168, 0x00000041}, -+ {0x00009a20, 0x000001a8, 0x000001a8}, -+ {0x00009a24, 0x000001e8, 0x000001e8}, -+ {0x00009a28, 0x00000028, 0x00000028}, -+ {0x00009a2c, 0x00000068, 0x00000068}, -+ {0x00009a30, 0x00000189, 0x000000a8}, -+ {0x00009a34, 0x000001c9, 0x00000169}, -+ {0x00009a38, 0x00000009, 0x000001a9}, -+ {0x00009a3c, 0x00000049, 0x000001e9}, -+ {0x00009a40, 0x00000089, 0x00000029}, -+ {0x00009a44, 0x00000170, 0x00000069}, -+ {0x00009a48, 0x000001b0, 0x00000190}, -+ {0x00009a4c, 0x000001f0, 0x000001d0}, -+ {0x00009a50, 0x00000030, 0x00000010}, -+ {0x00009a54, 0x00000070, 0x00000050}, -+ {0x00009a58, 0x00000191, 0x00000090}, -+ {0x00009a5c, 0x000001d1, 0x00000151}, -+ {0x00009a60, 0x00000011, 0x00000191}, -+ {0x00009a64, 0x00000051, 0x000001d1}, -+ {0x00009a68, 0x00000091, 0x00000011}, -+ {0x00009a6c, 0x000001b8, 0x00000051}, -+ {0x00009a70, 0x000001f8, 0x00000198}, -+ {0x00009a74, 0x00000038, 0x000001d8}, -+ {0x00009a78, 0x00000078, 0x00000018}, -+ {0x00009a7c, 0x00000199, 0x00000058}, -+ {0x00009a80, 0x000001d9, 0x00000098}, -+ {0x00009a84, 0x00000019, 0x00000159}, -+ {0x00009a88, 0x00000059, 0x00000199}, -+ {0x00009a8c, 0x00000099, 0x000001d9}, -+ {0x00009a90, 0x000000d9, 0x00000019}, -+ {0x00009a94, 0x000000f9, 0x00000059}, -+ {0x00009a98, 0x000000f9, 0x00000099}, -+ {0x00009a9c, 0x000000f9, 0x000000d9}, -+ {0x00009aa0, 0x000000f9, 0x000000f9}, -+ {0x00009aa4, 0x000000f9, 0x000000f9}, -+ {0x00009aa8, 0x000000f9, 0x000000f9}, -+ {0x00009aac, 0x000000f9, 0x000000f9}, -+ {0x00009ab0, 0x000000f9, 0x000000f9}, -+ {0x00009ab4, 0x000000f9, 0x000000f9}, -+ {0x00009ab8, 0x000000f9, 0x000000f9}, -+ {0x00009abc, 0x000000f9, 0x000000f9}, -+ {0x00009ac0, 0x000000f9, 0x000000f9}, -+ {0x00009ac4, 0x000000f9, 0x000000f9}, -+ {0x00009ac8, 0x000000f9, 0x000000f9}, -+ {0x00009acc, 0x000000f9, 0x000000f9}, -+ {0x00009ad0, 0x000000f9, 0x000000f9}, -+ {0x00009ad4, 0x000000f9, 0x000000f9}, -+ {0x00009ad8, 0x000000f9, 0x000000f9}, -+ {0x00009adc, 0x000000f9, 0x000000f9}, -+ {0x00009ae0, 0x000000f9, 0x000000f9}, -+ {0x00009ae4, 0x000000f9, 0x000000f9}, -+ {0x00009ae8, 0x000000f9, 0x000000f9}, -+ {0x00009aec, 0x000000f9, 0x000000f9}, -+ {0x00009af0, 0x000000f9, 0x000000f9}, -+ {0x00009af4, 0x000000f9, 0x000000f9}, -+ {0x00009af8, 0x000000f9, 0x000000f9}, -+ {0x00009afc, 0x000000f9, 0x000000f9}, - }; - - static const u32 ar5416Bank1_9160[][2] = { -- { 0x000098b0, 0x02108421 }, -- { 0x000098ec, 0x00000008 }, -+ /* Addr allmodes */ -+ {0x000098b0, 0x02108421}, -+ {0x000098ec, 0x00000008}, - }; - - static const u32 ar5416Bank2_9160[][2] = { -- { 0x000098b0, 0x0e73ff17 }, -- { 0x000098e0, 0x00000420 }, -+ /* Addr allmodes */ -+ {0x000098b0, 0x0e73ff17}, -+ {0x000098e0, 0x00000420}, - }; - - static const u32 ar5416Bank3_9160[][3] = { -- { 0x000098f0, 0x01400018, 0x01c00018 }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x000098f0, 0x01400018, 0x01c00018}, - }; - - static const u32 ar5416Bank6_9160[][3] = { -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00e00000, 0x00e00000 }, -- { 0x0000989c, 0x005e0000, 0x005e0000 }, -- { 0x0000989c, 0x00120000, 0x00120000 }, -- { 0x0000989c, 0x00620000, 0x00620000 }, -- { 0x0000989c, 0x00020000, 0x00020000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, -- { 0x0000989c, 0x005f0000, 0x005f0000 }, -- { 0x0000989c, 0x00870000, 0x00870000 }, -- { 0x0000989c, 0x00f90000, 0x00f90000 }, -- { 0x0000989c, 0x007b0000, 0x007b0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00f50000, 0x00f50000 }, -- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, -- { 0x0000989c, 0x00110000, 0x00110000 }, -- { 0x0000989c, 0x006100a8, 0x006100a8 }, -- { 0x0000989c, 0x004210a2, 0x004210a2 }, -- { 0x0000989c, 0x0014008f, 0x0014008f }, -- { 0x0000989c, 0x00c40003, 0x00c40003 }, -- { 0x0000989c, 0x003000f2, 0x003000f2 }, -- { 0x0000989c, 0x00440016, 0x00440016 }, -- { 0x0000989c, 0x00410040, 0x00410040 }, -- { 0x0000989c, 0x0001805e, 0x0001805e }, -- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, -- { 0x0000989c, 0x000000f1, 0x000000f1 }, -- { 0x0000989c, 0x00002081, 0x00002081 }, -- { 0x0000989c, 0x000000d4, 0x000000d4 }, -- { 0x000098d0, 0x0000000f, 0x0010000f }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00e00000, 0x00e00000}, -+ {0x0000989c, 0x005e0000, 0x005e0000}, -+ {0x0000989c, 0x00120000, 0x00120000}, -+ {0x0000989c, 0x00620000, 0x00620000}, -+ {0x0000989c, 0x00020000, 0x00020000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x40ff0000, 0x40ff0000}, -+ {0x0000989c, 0x005f0000, 0x005f0000}, -+ {0x0000989c, 0x00870000, 0x00870000}, -+ {0x0000989c, 0x00f90000, 0x00f90000}, -+ {0x0000989c, 0x007b0000, 0x007b0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00f50000, 0x00f50000}, -+ {0x0000989c, 0x00dc0000, 0x00dc0000}, -+ {0x0000989c, 0x00110000, 0x00110000}, -+ {0x0000989c, 0x006100a8, 0x006100a8}, -+ {0x0000989c, 0x004210a2, 0x004210a2}, -+ {0x0000989c, 0x0014008f, 0x0014008f}, -+ {0x0000989c, 0x00c40003, 0x00c40003}, -+ {0x0000989c, 0x003000f2, 0x003000f2}, -+ {0x0000989c, 0x00440016, 0x00440016}, -+ {0x0000989c, 0x00410040, 0x00410040}, -+ {0x0000989c, 0x0001805e, 0x0001805e}, -+ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, -+ {0x0000989c, 0x000000f1, 0x000000f1}, -+ {0x0000989c, 0x00002081, 0x00002081}, -+ {0x0000989c, 0x000000d4, 0x000000d4}, -+ {0x000098d0, 0x0000000f, 0x0010000f}, - }; - - static const u32 ar5416Bank6TPC_9160[][3] = { -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00000000, 0x00000000 }, -- { 0x0000989c, 0x00e00000, 0x00e00000 }, -- { 0x0000989c, 0x005e0000, 0x005e0000 }, -- { 0x0000989c, 0x00120000, 0x00120000 }, -- { 0x0000989c, 0x00620000, 0x00620000 }, -- { 0x0000989c, 0x00020000, 0x00020000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x40ff0000, 0x40ff0000 }, -- { 0x0000989c, 0x005f0000, 0x005f0000 }, -- { 0x0000989c, 0x00870000, 0x00870000 }, -- { 0x0000989c, 0x00f90000, 0x00f90000 }, -- { 0x0000989c, 0x007b0000, 0x007b0000 }, -- { 0x0000989c, 0x00ff0000, 0x00ff0000 }, -- { 0x0000989c, 0x00f50000, 0x00f50000 }, -- { 0x0000989c, 0x00dc0000, 0x00dc0000 }, -- { 0x0000989c, 0x00110000, 0x00110000 }, -- { 0x0000989c, 0x006100a8, 0x006100a8 }, -- { 0x0000989c, 0x00423022, 0x00423022 }, -- { 0x0000989c, 0x2014008f, 0x2014008f }, -- { 0x0000989c, 0x00c40002, 0x00c40002 }, -- { 0x0000989c, 0x003000f2, 0x003000f2 }, -- { 0x0000989c, 0x00440016, 0x00440016 }, -- { 0x0000989c, 0x00410040, 0x00410040 }, -- { 0x0000989c, 0x0001805e, 0x0001805e }, -- { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, -- { 0x0000989c, 0x000000e1, 0x000000e1 }, -- { 0x0000989c, 0x00007080, 0x00007080 }, -- { 0x0000989c, 0x000000d4, 0x000000d4 }, -- { 0x000098d0, 0x0000000f, 0x0010000f }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00000000, 0x00000000}, -+ {0x0000989c, 0x00e00000, 0x00e00000}, -+ {0x0000989c, 0x005e0000, 0x005e0000}, -+ {0x0000989c, 0x00120000, 0x00120000}, -+ {0x0000989c, 0x00620000, 0x00620000}, -+ {0x0000989c, 0x00020000, 0x00020000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x40ff0000, 0x40ff0000}, -+ {0x0000989c, 0x005f0000, 0x005f0000}, -+ {0x0000989c, 0x00870000, 0x00870000}, -+ {0x0000989c, 0x00f90000, 0x00f90000}, -+ {0x0000989c, 0x007b0000, 0x007b0000}, -+ {0x0000989c, 0x00ff0000, 0x00ff0000}, -+ {0x0000989c, 0x00f50000, 0x00f50000}, -+ {0x0000989c, 0x00dc0000, 0x00dc0000}, -+ {0x0000989c, 0x00110000, 0x00110000}, -+ {0x0000989c, 0x006100a8, 0x006100a8}, -+ {0x0000989c, 0x00423022, 0x00423022}, -+ {0x0000989c, 0x2014008f, 0x2014008f}, -+ {0x0000989c, 0x00c40002, 0x00c40002}, -+ {0x0000989c, 0x003000f2, 0x003000f2}, -+ {0x0000989c, 0x00440016, 0x00440016}, -+ {0x0000989c, 0x00410040, 0x00410040}, -+ {0x0000989c, 0x0001805e, 0x0001805e}, -+ {0x0000989c, 0x0000c0ab, 0x0000c0ab}, -+ {0x0000989c, 0x000000e1, 0x000000e1}, -+ {0x0000989c, 0x00007080, 0x00007080}, -+ {0x0000989c, 0x000000d4, 0x000000d4}, -+ {0x000098d0, 0x0000000f, 0x0010000f}, - }; - - static const u32 ar5416Bank7_9160[][2] = { -- { 0x0000989c, 0x00000500 }, -- { 0x0000989c, 0x00000800 }, -- { 0x000098cc, 0x0000000e }, -+ /* Addr allmodes */ -+ {0x0000989c, 0x00000500}, -+ {0x0000989c, 0x00000800}, -+ {0x000098cc, 0x0000000e}, - }; - - static const u32 ar5416Addac_9160[][2] = { -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x000000c0 }, -- {0x0000989c, 0x00000018 }, -- {0x0000989c, 0x00000004 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x000000c0 }, -- {0x0000989c, 0x00000019 }, -- {0x0000989c, 0x00000004 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000004 }, -- {0x0000989c, 0x00000003 }, -- {0x0000989c, 0x00000008 }, -- {0x0000989c, 0x00000000 }, -- {0x000098cc, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x000000c0}, -+ {0x0000989c, 0x00000018}, -+ {0x0000989c, 0x00000004}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x000000c0}, -+ {0x0000989c, 0x00000019}, -+ {0x0000989c, 0x00000004}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000004}, -+ {0x0000989c, 0x00000003}, -+ {0x0000989c, 0x00000008}, -+ {0x0000989c, 0x00000000}, -+ {0x000098cc, 0x00000000}, - }; - - static const u32 ar5416Addac_9160_1_1[][2] = { -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x000000c0 }, -- {0x0000989c, 0x00000018 }, -- {0x0000989c, 0x00000004 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x000000c0 }, -- {0x0000989c, 0x00000019 }, -- {0x0000989c, 0x00000004 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x0000989c, 0x00000000 }, -- {0x000098cc, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x000000c0}, -+ {0x0000989c, 0x00000018}, -+ {0x0000989c, 0x00000004}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x000000c0}, -+ {0x0000989c, 0x00000019}, -+ {0x0000989c, 0x00000004}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x0000989c, 0x00000000}, -+ {0x000098cc, 0x00000000}, - }; - ---- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h -@@ -14,5217 +14,5212 @@ - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - --#ifndef INITVALS_9002_10_H --#define INITVALS_9002_10_H -- - static const u32 ar9280Modes_9280[][6] = { -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801080, 0x08400840, 0x06e006e0 }, -- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0 }, -- { 0x00009848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563 }, -- { 0x0000a848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563 }, -- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, -- { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, -- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e }, -- { 0x00009860, 0x00049d18, 0x00049d18, 0x00049d20, 0x00049d20, 0x00049d18 }, -- { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190 }, -- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, -- { 0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010 }, -- { 0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210 }, -- { 0x0000c9b8, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a }, -- { 0x0000c9bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00009a00, 0x00008184, 0x00008184, 0x00000214, 0x00000214, 0x00000214 }, -- { 0x00009a04, 0x00008188, 0x00008188, 0x00000218, 0x00000218, 0x00000218 }, -- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000224, 0x00000224, 0x00000224 }, -- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000228, 0x00000228, 0x00000228 }, -- { 0x00009a10, 0x00008194, 0x00008194, 0x0000022c, 0x0000022c, 0x0000022c }, -- { 0x00009a14, 0x00008200, 0x00008200, 0x00000230, 0x00000230, 0x00000230 }, -- { 0x00009a18, 0x00008204, 0x00008204, 0x000002a4, 0x000002a4, 0x000002a4 }, -- { 0x00009a1c, 0x00008208, 0x00008208, 0x000002a8, 0x000002a8, 0x000002a8 }, -- { 0x00009a20, 0x0000820c, 0x0000820c, 0x000002ac, 0x000002ac, 0x000002ac }, -- { 0x00009a24, 0x00008210, 0x00008210, 0x000002b0, 0x000002b0, 0x000002b0 }, -- { 0x00009a28, 0x00008214, 0x00008214, 0x000002b4, 0x000002b4, 0x000002b4 }, -- { 0x00009a2c, 0x00008280, 0x00008280, 0x000002b8, 0x000002b8, 0x000002b8 }, -- { 0x00009a30, 0x00008284, 0x00008284, 0x00000390, 0x00000390, 0x00000390 }, -- { 0x00009a34, 0x00008288, 0x00008288, 0x00000394, 0x00000394, 0x00000394 }, -- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00000398, 0x00000398, 0x00000398 }, -- { 0x00009a3c, 0x00008290, 0x00008290, 0x00000334, 0x00000334, 0x00000334 }, -- { 0x00009a40, 0x00008300, 0x00008300, 0x00000338, 0x00000338, 0x00000338 }, -- { 0x00009a44, 0x00008304, 0x00008304, 0x000003ac, 0x000003ac, 0x000003ac }, -- { 0x00009a48, 0x00008308, 0x00008308, 0x000003b0, 0x000003b0, 0x000003b0 }, -- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x000003b4, 0x000003b4, 0x000003b4 }, -- { 0x00009a50, 0x00008310, 0x00008310, 0x000003b8, 0x000003b8, 0x000003b8 }, -- { 0x00009a54, 0x00008314, 0x00008314, 0x000003a5, 0x000003a5, 0x000003a5 }, -- { 0x00009a58, 0x00008380, 0x00008380, 0x000003a9, 0x000003a9, 0x000003a9 }, -- { 0x00009a5c, 0x00008384, 0x00008384, 0x000003ad, 0x000003ad, 0x000003ad }, -- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, -- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, -- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, -- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, -- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, -- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, -- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, -- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, -- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, -- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, -- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, -- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, -- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, -- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, -- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, -- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, -- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, -- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, -- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, -- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, -- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, -- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, -- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, -- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, -- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, -- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, -- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, -- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, -- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, -- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, -- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, -- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, -- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, -- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, -- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c }, -- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310 }, -- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384 }, -- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388 }, -- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324 }, -- { 0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704 }, -- { 0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4 }, -- { 0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8 }, -- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710 }, -- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714 }, -- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720 }, -- { 0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724 }, -- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728 }, -- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c }, -- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0 }, -- { 0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4 }, -- { 0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8 }, -- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0 }, -- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4 }, -- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8 }, -- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5 }, -- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9 }, -- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad }, -- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1 }, -- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5 }, -- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9 }, -- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5 }, -- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9 }, -- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1 }, -- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5 }, -- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9 }, -- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6 }, -- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca }, -- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce }, -- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2 }, -- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6 }, -- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3 }, -- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7 }, -- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb }, -- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf }, -- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7 }, -- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444 }, -- { 0x0000a208, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788 }, -- { 0x0000a20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019 }, -- { 0x0000b20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002 }, -- { 0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009 }, -- { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b }, -- { 0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012 }, -- { 0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048 }, -- { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a }, -- { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211 }, -- { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, -- { 0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b }, -- { 0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412 }, -- { 0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414 }, -- { 0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a }, -- { 0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649 }, -- { 0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b }, -- { 0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49 }, -- { 0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48 }, -- { 0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a }, -- { 0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88 }, -- { 0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a }, -- { 0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9 }, -- { 0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42 }, -- { 0x0000784c, 0x0e4f048c, 0x0e4f048c, 0x0e4d048c, 0x0e4d048c, 0x0e4d048c }, -- { 0x00007854, 0x12031828, 0x12031828, 0x12035828, 0x12035828, 0x12035828 }, -- { 0x00007870, 0x807ec400, 0x807ec400, 0x807ec000, 0x807ec000, 0x807ec000 }, -- { 0x0000788c, 0x00010000, 0x00010000, 0x00110000, 0x00110000, 0x00110000 }, -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801080, 0x08400840, 0x06e006e0}, -+ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0}, -+ {0x00009848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563}, -+ {0x0000a848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563}, -+ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, -+ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, -+ {0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e}, -+ {0x00009860, 0x00049d18, 0x00049d18, 0x00049d20, 0x00049d20, 0x00049d18}, -+ {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190}, -+ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, -+ {0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010}, -+ {0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, -+ {0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, -+ {0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210}, -+ {0x0000c9b8, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a}, -+ {0x0000c9bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009a00, 0x00008184, 0x00008184, 0x00000214, 0x00000214, 0x00000214}, -+ {0x00009a04, 0x00008188, 0x00008188, 0x00000218, 0x00000218, 0x00000218}, -+ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000224, 0x00000224, 0x00000224}, -+ {0x00009a0c, 0x00008190, 0x00008190, 0x00000228, 0x00000228, 0x00000228}, -+ {0x00009a10, 0x00008194, 0x00008194, 0x0000022c, 0x0000022c, 0x0000022c}, -+ {0x00009a14, 0x00008200, 0x00008200, 0x00000230, 0x00000230, 0x00000230}, -+ {0x00009a18, 0x00008204, 0x00008204, 0x000002a4, 0x000002a4, 0x000002a4}, -+ {0x00009a1c, 0x00008208, 0x00008208, 0x000002a8, 0x000002a8, 0x000002a8}, -+ {0x00009a20, 0x0000820c, 0x0000820c, 0x000002ac, 0x000002ac, 0x000002ac}, -+ {0x00009a24, 0x00008210, 0x00008210, 0x000002b0, 0x000002b0, 0x000002b0}, -+ {0x00009a28, 0x00008214, 0x00008214, 0x000002b4, 0x000002b4, 0x000002b4}, -+ {0x00009a2c, 0x00008280, 0x00008280, 0x000002b8, 0x000002b8, 0x000002b8}, -+ {0x00009a30, 0x00008284, 0x00008284, 0x00000390, 0x00000390, 0x00000390}, -+ {0x00009a34, 0x00008288, 0x00008288, 0x00000394, 0x00000394, 0x00000394}, -+ {0x00009a38, 0x0000828c, 0x0000828c, 0x00000398, 0x00000398, 0x00000398}, -+ {0x00009a3c, 0x00008290, 0x00008290, 0x00000334, 0x00000334, 0x00000334}, -+ {0x00009a40, 0x00008300, 0x00008300, 0x00000338, 0x00000338, 0x00000338}, -+ {0x00009a44, 0x00008304, 0x00008304, 0x000003ac, 0x000003ac, 0x000003ac}, -+ {0x00009a48, 0x00008308, 0x00008308, 0x000003b0, 0x000003b0, 0x000003b0}, -+ {0x00009a4c, 0x0000830c, 0x0000830c, 0x000003b4, 0x000003b4, 0x000003b4}, -+ {0x00009a50, 0x00008310, 0x00008310, 0x000003b8, 0x000003b8, 0x000003b8}, -+ {0x00009a54, 0x00008314, 0x00008314, 0x000003a5, 0x000003a5, 0x000003a5}, -+ {0x00009a58, 0x00008380, 0x00008380, 0x000003a9, 0x000003a9, 0x000003a9}, -+ {0x00009a5c, 0x00008384, 0x00008384, 0x000003ad, 0x000003ad, 0x000003ad}, -+ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, -+ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, -+ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, -+ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, -+ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, -+ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, -+ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, -+ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, -+ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, -+ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, -+ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, -+ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, -+ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, -+ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, -+ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, -+ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, -+ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, -+ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, -+ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, -+ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, -+ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, -+ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, -+ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, -+ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, -+ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80}, -+ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84}, -+ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88}, -+ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c}, -+ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90}, -+ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80}, -+ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84}, -+ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88}, -+ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c}, -+ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90}, -+ {0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c}, -+ {0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310}, -+ {0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384}, -+ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388}, -+ {0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324}, -+ {0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704}, -+ {0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4}, -+ {0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8}, -+ {0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710}, -+ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714}, -+ {0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720}, -+ {0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724}, -+ {0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728}, -+ {0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c}, -+ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0}, -+ {0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4}, -+ {0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8}, -+ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0}, -+ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4}, -+ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8}, -+ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5}, -+ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9}, -+ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad}, -+ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1}, -+ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5}, -+ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9}, -+ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5}, -+ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9}, -+ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1}, -+ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5}, -+ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9}, -+ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6}, -+ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca}, -+ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce}, -+ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2}, -+ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6}, -+ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3}, -+ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7}, -+ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb}, -+ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf}, -+ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7}, -+ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444}, -+ {0x0000a208, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788}, -+ {0x0000a20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019}, -+ {0x0000b20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652}, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002}, -+ {0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009}, -+ {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b}, -+ {0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012}, -+ {0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048}, -+ {0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a}, -+ {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211}, -+ {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213}, -+ {0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b}, -+ {0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412}, -+ {0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414}, -+ {0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a}, -+ {0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649}, -+ {0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b}, -+ {0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49}, -+ {0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48}, -+ {0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a}, -+ {0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88}, -+ {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a}, -+ {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9}, -+ {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42}, -+ {0x0000784c, 0x0e4f048c, 0x0e4f048c, 0x0e4d048c, 0x0e4d048c, 0x0e4d048c}, -+ {0x00007854, 0x12031828, 0x12031828, 0x12035828, 0x12035828, 0x12035828}, -+ {0x00007870, 0x807ec400, 0x807ec400, 0x807ec000, 0x807ec000, 0x807ec000}, -+ {0x0000788c, 0x00010000, 0x00010000, 0x00110000, 0x00110000, 0x00110000}, - }; - - static const u32 ar9280Common_9280[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020015 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00004024, 0x0000001f }, -- { 0x00007010, 0x00000033 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x40000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x00008070, 0x00000000 }, -- { 0x000080c0, 0x2a82301a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008120, 0x08f04800 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0x00000000 }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c4, 0x00000000 }, -- { 0x000081d0, 0x00003210 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x00008300, 0x00000000 }, -- { 0x00008304, 0x00000000 }, -- { 0x00008308, 0x00000000 }, -- { 0x0000830c, 0x00000000 }, -- { 0x00008310, 0x00000000 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008318, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000007 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00000000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x000107ff }, -- { 0x00008344, 0x00000000 }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xaf268e30 }, -- { 0x00009810, 0xfd14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x00009840, 0x206a01ae }, -- { 0x0000984c, 0x0040233c }, -- { 0x0000a84c, 0x0040233c }, -- { 0x00009854, 0x00000044 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x04900000 }, -- { 0x0000a920, 0x04900000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009948, 0x9280c00a }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0xe250a51e }, -- { 0x00009958, 0x3388ffff }, -- { 0x00009940, 0x00781204 }, -- { 0x0000c95c, 0x004b6a8e }, -- { 0x0000c968, 0x000003ce }, -- { 0x00009970, 0x190fb514 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x006f00c4 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099b4, 0x00000820 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000000 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099fc, 0x00001042 }, -- { 0x0000a210, 0x4080a333 }, -- { 0x0000a214, 0x40206c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x01834061 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x000003b5 }, -- { 0x0000a22c, 0x23277200 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a23c, 0x13c889af }, -- { 0x0000a240, 0x38490a20 }, -- { 0x0000a244, 0x00007bb6 }, -- { 0x0000a248, 0x0fff3ffc }, -- { 0x0000a24c, 0x00000001 }, -- { 0x0000a250, 0x001da000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0cdbd380 }, -- { 0x0000a25c, 0x0f0f0f01 }, -- { 0x0000a260, 0xdfa91f01 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0ebae9c6 }, -- { 0x0000b26c, 0x0ebae9c6 }, -- { 0x0000d270, 0x00820820 }, -- { 0x0000a278, 0x1ce739ce }, -- { 0x0000a27c, 0x050701ce }, -- { 0x0000a358, 0x7999aa0f }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x1ce739ce }, -- { 0x0000a398, 0x000001ce }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3c8, 0x00000246 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x1ce739ce }, -- { 0x0000a3e0, 0x000001ce }, -- { 0x0000a3e4, 0x00000000 }, -- { 0x0000a3e8, 0x18c43433 }, -- { 0x0000a3ec, 0x00f38081 }, -- { 0x00007800, 0x00040000 }, -- { 0x00007804, 0xdb005012 }, -- { 0x00007808, 0x04924914 }, -- { 0x0000780c, 0x21084210 }, -- { 0x00007810, 0x6d801300 }, -- { 0x00007814, 0x0019beff }, -- { 0x00007818, 0x07e40000 }, -- { 0x0000781c, 0x00492000 }, -- { 0x00007820, 0x92492480 }, -- { 0x00007824, 0x00040000 }, -- { 0x00007828, 0xdb005012 }, -- { 0x0000782c, 0x04924914 }, -- { 0x00007830, 0x21084210 }, -- { 0x00007834, 0x6d801300 }, -- { 0x00007838, 0x0019beff }, -- { 0x0000783c, 0x07e40000 }, -- { 0x00007840, 0x00492000 }, -- { 0x00007844, 0x92492480 }, -- { 0x00007848, 0x00120000 }, -- { 0x00007850, 0x54214514 }, -- { 0x00007858, 0x92592692 }, -- { 0x00007860, 0x52802000 }, -- { 0x00007864, 0x0a8e370e }, -- { 0x00007868, 0xc0102850 }, -- { 0x0000786c, 0x812d4000 }, -- { 0x00007874, 0x001b6db0 }, -- { 0x00007878, 0x00376b63 }, -- { 0x0000787c, 0x06db6db6 }, -- { 0x00007880, 0x006d8000 }, -- { 0x00007884, 0xffeffffe }, -- { 0x00007888, 0xffeffffe }, -- { 0x00007890, 0x00060aeb }, -- { 0x00007894, 0x5a108000 }, -- { 0x00007898, 0x2a850160 }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020015}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00004024, 0x0000001f}, -+ {0x00007010, 0x00000033}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x40000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x00008070, 0x00000000}, -+ {0x000080c0, 0x2a82301a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008120, 0x08f04800}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0x00000000}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c4, 0x00000000}, -+ {0x000081d0, 0x00003210}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x00008300, 0x00000000}, -+ {0x00008304, 0x00000000}, -+ {0x00008308, 0x00000000}, -+ {0x0000830c, 0x00000000}, -+ {0x00008310, 0x00000000}, -+ {0x00008314, 0x00000000}, -+ {0x00008318, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00000000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x000107ff}, -+ {0x00008344, 0x00000000}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xaf268e30}, -+ {0x00009810, 0xfd14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x00009840, 0x206a01ae}, -+ {0x0000984c, 0x0040233c}, -+ {0x0000a84c, 0x0040233c}, -+ {0x00009854, 0x00000044}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x04900000}, -+ {0x0000a920, 0x04900000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009948, 0x9280c00a}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0xe250a51e}, -+ {0x00009958, 0x3388ffff}, -+ {0x00009940, 0x00781204}, -+ {0x0000c95c, 0x004b6a8e}, -+ {0x0000c968, 0x000003ce}, -+ {0x00009970, 0x190fb514}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x006f00c4}, -+ {0x000099b0, 0x03051000}, -+ {0x000099b4, 0x00000820}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000000}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099fc, 0x00001042}, -+ {0x0000a210, 0x4080a333}, -+ {0x0000a214, 0x40206c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x01834061}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x000003b5}, -+ {0x0000a22c, 0x23277200}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a23c, 0x13c889af}, -+ {0x0000a240, 0x38490a20}, -+ {0x0000a244, 0x00007bb6}, -+ {0x0000a248, 0x0fff3ffc}, -+ {0x0000a24c, 0x00000001}, -+ {0x0000a250, 0x001da000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0cdbd380}, -+ {0x0000a25c, 0x0f0f0f01}, -+ {0x0000a260, 0xdfa91f01}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0ebae9c6}, -+ {0x0000b26c, 0x0ebae9c6}, -+ {0x0000d270, 0x00820820}, -+ {0x0000a278, 0x1ce739ce}, -+ {0x0000a27c, 0x050701ce}, -+ {0x0000a358, 0x7999aa0f}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x1ce739ce}, -+ {0x0000a398, 0x000001ce}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3c8, 0x00000246}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x1ce739ce}, -+ {0x0000a3e0, 0x000001ce}, -+ {0x0000a3e4, 0x00000000}, -+ {0x0000a3e8, 0x18c43433}, -+ {0x0000a3ec, 0x00f38081}, -+ {0x00007800, 0x00040000}, -+ {0x00007804, 0xdb005012}, -+ {0x00007808, 0x04924914}, -+ {0x0000780c, 0x21084210}, -+ {0x00007810, 0x6d801300}, -+ {0x00007814, 0x0019beff}, -+ {0x00007818, 0x07e40000}, -+ {0x0000781c, 0x00492000}, -+ {0x00007820, 0x92492480}, -+ {0x00007824, 0x00040000}, -+ {0x00007828, 0xdb005012}, -+ {0x0000782c, 0x04924914}, -+ {0x00007830, 0x21084210}, -+ {0x00007834, 0x6d801300}, -+ {0x00007838, 0x0019beff}, -+ {0x0000783c, 0x07e40000}, -+ {0x00007840, 0x00492000}, -+ {0x00007844, 0x92492480}, -+ {0x00007848, 0x00120000}, -+ {0x00007850, 0x54214514}, -+ {0x00007858, 0x92592692}, -+ {0x00007860, 0x52802000}, -+ {0x00007864, 0x0a8e370e}, -+ {0x00007868, 0xc0102850}, -+ {0x0000786c, 0x812d4000}, -+ {0x00007874, 0x001b6db0}, -+ {0x00007878, 0x00376b63}, -+ {0x0000787c, 0x06db6db6}, -+ {0x00007880, 0x006d8000}, -+ {0x00007884, 0xffeffffe}, -+ {0x00007888, 0xffeffffe}, -+ {0x00007890, 0x00060aeb}, -+ {0x00007894, 0x5a108000}, -+ {0x00007898, 0x2a850160}, - }; - --/* XXX 9280 2 */ - static const u32 ar9280Modes_9280_2[][6] = { -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, -- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, -- { 0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a }, -- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009840, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e, 0x206a012e }, -- { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, -- { 0x00009850, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, -- { 0x00009858, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, -- { 0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e }, -- { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, -- { 0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, -- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x0000000a, 0x00000014, 0x00000268, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8a0b, 0xd00a8a0b, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, -- { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010 }, -- { 0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210 }, -- { 0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce }, -- { 0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c }, -- { 0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444 }, -- { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019 }, -- { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a23c, 0x13c88000, 0x13c88000, 0x13c88001, 0x13c88000, 0x13c88000 }, -- { 0x0000a250, 0x001ff000, 0x001ff000, 0x0004a000, 0x0004a000, 0x0004a000 }, -- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, -- { 0x0000a388, 0x0c000000, 0x0c000000, 0x08000000, 0x0c000000, 0x0c000000 }, -- { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00007894, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000 }, -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, -+ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, -+ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, -+ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009840, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e, 0x206a012e}, -+ {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0}, -+ {0x00009850, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2}, -+ {0x00009858, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, -+ {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, -+ {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x0000000a, 0x00000014, 0x00000268, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8a0b, 0xd00a8a0b, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, -+ {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010}, -+ {0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, -+ {0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010}, -+ {0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210}, -+ {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce}, -+ {0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c}, -+ {0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444}, -+ {0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, -+ {0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a23c, 0x13c88000, 0x13c88000, 0x13c88001, 0x13c88000, 0x13c88000}, -+ {0x0000a250, 0x001ff000, 0x001ff000, 0x0004a000, 0x0004a000, 0x0004a000}, -+ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, -+ {0x0000a388, 0x0c000000, 0x0c000000, 0x08000000, 0x0c000000, 0x0c000000}, -+ {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00007894, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000}, - }; - - static const u32 ar9280Common_9280_2[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020015 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00004024, 0x0000001f }, -- { 0x00004060, 0x00000000 }, -- { 0x00004064, 0x00000000 }, -- { 0x00007010, 0x00000033 }, -- { 0x00007034, 0x00000002 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x40000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x00008070, 0x00000000 }, -- { 0x000080c0, 0x2a80001a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0xffffffff }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c0, 0x00000000 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008264, 0x88a00010 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x0000829c, 0x00000000 }, -- { 0x00008300, 0x00000040 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000007 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00ff0000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x000107ff }, -- { 0x00008344, 0x00481043 }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xafa68e30 }, -- { 0x00009810, 0xfd14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x0000984c, 0x0040233c }, -- { 0x0000a84c, 0x0040233c }, -- { 0x00009854, 0x00000044 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x00009910, 0x01002310 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x04900000 }, -- { 0x0000a920, 0x04900000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009948, 0x9280c00a }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5f3ca3de }, -- { 0x00009958, 0x2108ecff }, -- { 0x00009940, 0x14750604 }, -- { 0x0000c95c, 0x004b6a8e }, -- { 0x00009970, 0x190fb515 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x006f0000 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099b4, 0x00000820 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000000 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099f0, 0x00000000 }, -- { 0x000099fc, 0x00001042 }, -- { 0x0000a208, 0x803e4788 }, -- { 0x0000a210, 0x4080a333 }, -- { 0x0000a214, 0x40206c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x01834061 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x000003b5 }, -- { 0x0000a22c, 0x233f7180 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a240, 0x38490a20 }, -- { 0x0000a244, 0x00007bb6 }, -- { 0x0000a248, 0x0fff3ffc }, -- { 0x0000a24c, 0x00000000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0cdbd380 }, -- { 0x0000a25c, 0x0f0f0f01 }, -- { 0x0000a260, 0xdfa91f01 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0e79e5c6 }, -- { 0x0000b26c, 0x0e79e5c6 }, -- { 0x0000d270, 0x00820820 }, -- { 0x0000a278, 0x1ce739ce }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x1ce739ce }, -- { 0x0000a398, 0x000001ce }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3c8, 0x00000246 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x1ce739ce }, -- { 0x0000a3e0, 0x000001ce }, -- { 0x0000a3e4, 0x00000000 }, -- { 0x0000a3e8, 0x18c43433 }, -- { 0x0000a3ec, 0x00f70081 }, -- { 0x00007800, 0x00040000 }, -- { 0x00007804, 0xdb005012 }, -- { 0x00007808, 0x04924914 }, -- { 0x0000780c, 0x21084210 }, -- { 0x00007810, 0x6d801300 }, -- { 0x00007818, 0x07e41000 }, -- { 0x00007824, 0x00040000 }, -- { 0x00007828, 0xdb005012 }, -- { 0x0000782c, 0x04924914 }, -- { 0x00007830, 0x21084210 }, -- { 0x00007834, 0x6d801300 }, -- { 0x0000783c, 0x07e40000 }, -- { 0x00007848, 0x00100000 }, -- { 0x0000784c, 0x773f0567 }, -- { 0x00007850, 0x54214514 }, -- { 0x00007854, 0x12035828 }, -- { 0x00007858, 0x9259269a }, -- { 0x00007860, 0x52802000 }, -- { 0x00007864, 0x0a8e370e }, -- { 0x00007868, 0xc0102850 }, -- { 0x0000786c, 0x812d4000 }, -- { 0x00007870, 0x807ec400 }, -- { 0x00007874, 0x001b6db0 }, -- { 0x00007878, 0x00376b63 }, -- { 0x0000787c, 0x06db6db6 }, -- { 0x00007880, 0x006d8000 }, -- { 0x00007884, 0xffeffffe }, -- { 0x00007888, 0xffeffffe }, -- { 0x0000788c, 0x00010000 }, -- { 0x00007890, 0x02060aeb }, -- { 0x00007898, 0x2a850160 }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020015}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00004024, 0x0000001f}, -+ {0x00004060, 0x00000000}, -+ {0x00004064, 0x00000000}, -+ {0x00007010, 0x00000033}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x40000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x00008070, 0x00000000}, -+ {0x000080c0, 0x2a80001a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c0, 0x00000000}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x88a00010}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000040}, -+ {0x00008314, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x000107ff}, -+ {0x00008344, 0x00481043}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xafa68e30}, -+ {0x00009810, 0xfd14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x0000984c, 0x0040233c}, -+ {0x0000a84c, 0x0040233c}, -+ {0x00009854, 0x00000044}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x00009910, 0x01002310}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x04900000}, -+ {0x0000a920, 0x04900000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009948, 0x9280c00a}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5f3ca3de}, -+ {0x00009958, 0x2108ecff}, -+ {0x00009940, 0x14750604}, -+ {0x0000c95c, 0x004b6a8e}, -+ {0x00009970, 0x190fb515}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x006f0000}, -+ {0x000099b0, 0x03051000}, -+ {0x000099b4, 0x00000820}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000000}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099f0, 0x00000000}, -+ {0x000099fc, 0x00001042}, -+ {0x0000a208, 0x803e4788}, -+ {0x0000a210, 0x4080a333}, -+ {0x0000a214, 0x40206c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x01834061}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x000003b5}, -+ {0x0000a22c, 0x233f7180}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a240, 0x38490a20}, -+ {0x0000a244, 0x00007bb6}, -+ {0x0000a248, 0x0fff3ffc}, -+ {0x0000a24c, 0x00000000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0cdbd380}, -+ {0x0000a25c, 0x0f0f0f01}, -+ {0x0000a260, 0xdfa91f01}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0e79e5c6}, -+ {0x0000b26c, 0x0e79e5c6}, -+ {0x0000d270, 0x00820820}, -+ {0x0000a278, 0x1ce739ce}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x1ce739ce}, -+ {0x0000a398, 0x000001ce}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3c8, 0x00000246}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x1ce739ce}, -+ {0x0000a3e0, 0x000001ce}, -+ {0x0000a3e4, 0x00000000}, -+ {0x0000a3e8, 0x18c43433}, -+ {0x0000a3ec, 0x00f70081}, -+ {0x00007800, 0x00040000}, -+ {0x00007804, 0xdb005012}, -+ {0x00007808, 0x04924914}, -+ {0x0000780c, 0x21084210}, -+ {0x00007810, 0x6d801300}, -+ {0x00007818, 0x07e41000}, -+ {0x00007824, 0x00040000}, -+ {0x00007828, 0xdb005012}, -+ {0x0000782c, 0x04924914}, -+ {0x00007830, 0x21084210}, -+ {0x00007834, 0x6d801300}, -+ {0x0000783c, 0x07e40000}, -+ {0x00007848, 0x00100000}, -+ {0x0000784c, 0x773f0567}, -+ {0x00007850, 0x54214514}, -+ {0x00007854, 0x12035828}, -+ {0x00007858, 0x9259269a}, -+ {0x00007860, 0x52802000}, -+ {0x00007864, 0x0a8e370e}, -+ {0x00007868, 0xc0102850}, -+ {0x0000786c, 0x812d4000}, -+ {0x00007870, 0x807ec400}, -+ {0x00007874, 0x001b6db0}, -+ {0x00007878, 0x00376b63}, -+ {0x0000787c, 0x06db6db6}, -+ {0x00007880, 0x006d8000}, -+ {0x00007884, 0xffeffffe}, -+ {0x00007888, 0xffeffffe}, -+ {0x0000788c, 0x00010000}, -+ {0x00007890, 0x02060aeb}, -+ {0x00007898, 0x2a850160}, - }; - - static const u32 ar9280Modes_fast_clock_9280_2[][3] = { -- { 0x00001030, 0x00000268, 0x000004d0 }, -- { 0x00001070, 0x0000018c, 0x00000318 }, -- { 0x000010b0, 0x00000fd0, 0x00001fa0 }, -- { 0x00008014, 0x044c044c, 0x08980898 }, -- { 0x0000801c, 0x148ec02b, 0x148ec057 }, -- { 0x00008318, 0x000044c0, 0x00008980 }, -- { 0x00009820, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x01000f0f, 0x01000f0f }, -- { 0x00009828, 0x0b020001, 0x0b020001 }, -- { 0x00009834, 0x00000f0f, 0x00000f0f }, -- { 0x00009844, 0x03721821, 0x03721821 }, -- { 0x00009914, 0x00000898, 0x00001130 }, -- { 0x00009918, 0x0000000b, 0x00000016 }, -+ /* Addr 5G_HT20 5G_HT40 */ -+ {0x00001030, 0x00000268, 0x000004d0}, -+ {0x00001070, 0x0000018c, 0x00000318}, -+ {0x000010b0, 0x00000fd0, 0x00001fa0}, -+ {0x00008014, 0x044c044c, 0x08980898}, -+ {0x0000801c, 0x148ec02b, 0x148ec057}, -+ {0x00008318, 0x000044c0, 0x00008980}, -+ {0x00009820, 0x02020200, 0x02020200}, -+ {0x00009824, 0x01000f0f, 0x01000f0f}, -+ {0x00009828, 0x0b020001, 0x0b020001}, -+ {0x00009834, 0x00000f0f, 0x00000f0f}, -+ {0x00009844, 0x03721821, 0x03721821}, -+ {0x00009914, 0x00000898, 0x00001130}, -+ {0x00009918, 0x0000000b, 0x00000016}, - }; - - static const u32 ar9280Modes_backoff_23db_rxgain_9280_2[][6] = { -- { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, -- { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, -- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, -- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, -- { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, -- { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, -- { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, -- { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, -- { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, -- { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, -- { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, -- { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, -- { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, -- { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, -- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, -- { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, -- { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, -- { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, -- { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, -- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, -- { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, -- { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, -- { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, -- { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, -- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, -- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, -- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, -- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, -- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, -- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, -- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, -- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, -- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, -- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, -- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, -- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, -- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, -- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, -- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, -- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, -- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, -- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, -- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, -- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, -- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, -- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, -- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, -- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, -- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10 }, -- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b14, 0x00008b14, 0x00008b14 }, -- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b01, 0x00008b01, 0x00008b01 }, -- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b05, 0x00008b05, 0x00008b05 }, -- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b09, 0x00008b09, 0x00008b09 }, -- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b0d, 0x00008b0d, 0x00008b0d }, -- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b11, 0x00008b11, 0x00008b11 }, -- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008b15, 0x00008b15, 0x00008b15 }, -- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008b02, 0x00008b02, 0x00008b02 }, -- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008b06, 0x00008b06, 0x00008b06 }, -- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x00008b0a, 0x00008b0a, 0x00008b0a }, -- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00008b0e, 0x00008b0e, 0x00008b0e }, -- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00008b12, 0x00008b12, 0x00008b12 }, -- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008b16, 0x00008b16, 0x00008b16 }, -- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00008b03, 0x00008b03, 0x00008b03 }, -- { 0x00009afc, 0x0000b794, 0x0000b794, 0x00008b07, 0x00008b07, 0x00008b07 }, -- { 0x00009b00, 0x0000b798, 0x0000b798, 0x00008b0b, 0x00008b0b, 0x00008b0b }, -- { 0x00009b04, 0x0000d784, 0x0000d784, 0x00008b0f, 0x00008b0f, 0x00008b0f }, -- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00008b13, 0x00008b13, 0x00008b13 }, -- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008b17, 0x00008b17, 0x00008b17 }, -- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00008b23, 0x00008b23, 0x00008b23 }, -- { 0x00009b14, 0x0000f780, 0x0000f780, 0x00008b27, 0x00008b27, 0x00008b27 }, -- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00008b2b, 0x00008b2b, 0x00008b2b }, -- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x00008b2f, 0x00008b2f, 0x00008b2f }, -- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008b33, 0x00008b33, 0x00008b33 }, -- { 0x00009b24, 0x0000f790, 0x0000f790, 0x00008b37, 0x00008b37, 0x00008b37 }, -- { 0x00009b28, 0x0000f794, 0x0000f794, 0x00008b43, 0x00008b43, 0x00008b43 }, -- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008b47, 0x00008b47, 0x00008b47 }, -- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008b4b, 0x00008b4b, 0x00008b4b }, -- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008b4f, 0x00008b4f, 0x00008b4f }, -- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008b53, 0x00008b53, 0x00008b53 }, -- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008b57, 0x00008b57, 0x00008b57 }, -- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, -- { 0x00009848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050 }, -- { 0x0000a848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050 }, -+ {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, -+ {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, -+ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, -+ {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, -+ {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, -+ {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, -+ {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, -+ {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, -+ {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c}, -+ {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080}, -+ {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084}, -+ {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088}, -+ {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c}, -+ {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100}, -+ {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104}, -+ {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108}, -+ {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c}, -+ {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110}, -+ {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114}, -+ {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180}, -+ {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184}, -+ {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188}, -+ {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c}, -+ {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190}, -+ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, -+ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, -+ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, -+ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, -+ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, -+ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, -+ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, -+ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, -+ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, -+ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, -+ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, -+ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, -+ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, -+ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, -+ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, -+ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, -+ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, -+ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, -+ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, -+ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, -+ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, -+ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, -+ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, -+ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, -+ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10}, -+ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b14, 0x00008b14, 0x00008b14}, -+ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b01, 0x00008b01, 0x00008b01}, -+ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b05, 0x00008b05, 0x00008b05}, -+ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b09, 0x00008b09, 0x00008b09}, -+ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b0d, 0x00008b0d, 0x00008b0d}, -+ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b11, 0x00008b11, 0x00008b11}, -+ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008b15, 0x00008b15, 0x00008b15}, -+ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008b02, 0x00008b02, 0x00008b02}, -+ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008b06, 0x00008b06, 0x00008b06}, -+ {0x00009ae8, 0x0000b780, 0x0000b780, 0x00008b0a, 0x00008b0a, 0x00008b0a}, -+ {0x00009aec, 0x0000b784, 0x0000b784, 0x00008b0e, 0x00008b0e, 0x00008b0e}, -+ {0x00009af0, 0x0000b788, 0x0000b788, 0x00008b12, 0x00008b12, 0x00008b12}, -+ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008b16, 0x00008b16, 0x00008b16}, -+ {0x00009af8, 0x0000b790, 0x0000b790, 0x00008b03, 0x00008b03, 0x00008b03}, -+ {0x00009afc, 0x0000b794, 0x0000b794, 0x00008b07, 0x00008b07, 0x00008b07}, -+ {0x00009b00, 0x0000b798, 0x0000b798, 0x00008b0b, 0x00008b0b, 0x00008b0b}, -+ {0x00009b04, 0x0000d784, 0x0000d784, 0x00008b0f, 0x00008b0f, 0x00008b0f}, -+ {0x00009b08, 0x0000d788, 0x0000d788, 0x00008b13, 0x00008b13, 0x00008b13}, -+ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008b17, 0x00008b17, 0x00008b17}, -+ {0x00009b10, 0x0000d790, 0x0000d790, 0x00008b23, 0x00008b23, 0x00008b23}, -+ {0x00009b14, 0x0000f780, 0x0000f780, 0x00008b27, 0x00008b27, 0x00008b27}, -+ {0x00009b18, 0x0000f784, 0x0000f784, 0x00008b2b, 0x00008b2b, 0x00008b2b}, -+ {0x00009b1c, 0x0000f788, 0x0000f788, 0x00008b2f, 0x00008b2f, 0x00008b2f}, -+ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008b33, 0x00008b33, 0x00008b33}, -+ {0x00009b24, 0x0000f790, 0x0000f790, 0x00008b37, 0x00008b37, 0x00008b37}, -+ {0x00009b28, 0x0000f794, 0x0000f794, 0x00008b43, 0x00008b43, 0x00008b43}, -+ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008b47, 0x00008b47, 0x00008b47}, -+ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008b4b, 0x00008b4b, 0x00008b4b}, -+ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008b4f, 0x00008b4f, 0x00008b4f}, -+ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008b53, 0x00008b53, 0x00008b53}, -+ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008b57, 0x00008b57, 0x00008b57}, -+ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -+ {0x00009848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, -+ {0x0000a848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, - }; - - static const u32 ar9280Modes_original_rxgain_9280_2[][6] = { -- { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, -- { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, -- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, -- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, -- { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, -- { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, -- { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, -- { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, -- { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, -- { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, -- { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, -- { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, -- { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, -- { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, -- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, -- { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, -- { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, -- { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, -- { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, -- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, -- { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, -- { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, -- { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, -- { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, -- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, -- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, -- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, -- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, -- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, -- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, -- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, -- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, -- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, -- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, -- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, -- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, -- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, -- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, -- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, -- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, -- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, -- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, -- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, -- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, -- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, -- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, -- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, -- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, -- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, -- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, -- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, -- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, -- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, -- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, -- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, -- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, -- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, -- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, -- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c }, -- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310 }, -- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384 }, -- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388 }, -- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324 }, -- { 0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704 }, -- { 0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4 }, -- { 0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8 }, -- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710 }, -- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714 }, -- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720 }, -- { 0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724 }, -- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728 }, -- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c }, -- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0 }, -- { 0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4 }, -- { 0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8 }, -- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0 }, -- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4 }, -- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8 }, -- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5 }, -- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9 }, -- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad }, -- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1 }, -- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5 }, -- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9 }, -- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5 }, -- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9 }, -- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1 }, -- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5 }, -- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9 }, -- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6 }, -- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca }, -- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce }, -- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2 }, -- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6 }, -- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3 }, -- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7 }, -- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb }, -- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf }, -- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7 }, -- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, -- { 0x00009848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063 }, -- { 0x0000a848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063 }, -+ {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, -+ {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, -+ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, -+ {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, -+ {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, -+ {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, -+ {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, -+ {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, -+ {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c}, -+ {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080}, -+ {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084}, -+ {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088}, -+ {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c}, -+ {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100}, -+ {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104}, -+ {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108}, -+ {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c}, -+ {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110}, -+ {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114}, -+ {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180}, -+ {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184}, -+ {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188}, -+ {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c}, -+ {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190}, -+ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, -+ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, -+ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, -+ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, -+ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, -+ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, -+ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, -+ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, -+ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, -+ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, -+ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, -+ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, -+ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, -+ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, -+ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, -+ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, -+ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, -+ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, -+ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, -+ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, -+ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, -+ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, -+ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, -+ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, -+ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80}, -+ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84}, -+ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88}, -+ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c}, -+ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90}, -+ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80}, -+ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84}, -+ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88}, -+ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c}, -+ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90}, -+ {0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c}, -+ {0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310}, -+ {0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384}, -+ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388}, -+ {0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324}, -+ {0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704}, -+ {0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4}, -+ {0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8}, -+ {0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710}, -+ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714}, -+ {0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720}, -+ {0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724}, -+ {0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728}, -+ {0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c}, -+ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0}, -+ {0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4}, -+ {0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8}, -+ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0}, -+ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4}, -+ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8}, -+ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5}, -+ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9}, -+ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad}, -+ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1}, -+ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5}, -+ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9}, -+ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5}, -+ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9}, -+ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1}, -+ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5}, -+ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9}, -+ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6}, -+ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca}, -+ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce}, -+ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2}, -+ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6}, -+ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3}, -+ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7}, -+ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb}, -+ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf}, -+ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7}, -+ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db}, -+ {0x00009848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063}, -+ {0x0000a848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063}, - }; - - static const u32 ar9280Modes_backoff_13db_rxgain_9280_2[][6] = { -- { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, -- { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, -- { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, -- { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, -- { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, -- { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, -- { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, -- { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, -- { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, -- { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, -- { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, -- { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, -- { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, -- { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, -- { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, -- { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, -- { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, -- { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, -- { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, -- { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, -- { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, -- { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, -- { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, -- { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, -- { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, -- { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, -- { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, -- { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, -- { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, -- { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, -- { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, -- { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, -- { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, -- { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, -- { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, -- { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, -- { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, -- { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, -- { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, -- { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, -- { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, -- { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, -- { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, -- { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, -- { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, -- { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, -- { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, -- { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, -- { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, -- { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, -- { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, -- { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, -- { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, -- { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, -- { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, -- { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, -- { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, -- { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, -- { 0x00009ae8, 0x0000b780, 0x0000b780, 0x00009310, 0x00009310, 0x00009310 }, -- { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009314, 0x00009314, 0x00009314 }, -- { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009320, 0x00009320, 0x00009320 }, -- { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009324, 0x00009324, 0x00009324 }, -- { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009328, 0x00009328, 0x00009328 }, -- { 0x00009afc, 0x0000b794, 0x0000b794, 0x0000932c, 0x0000932c, 0x0000932c }, -- { 0x00009b00, 0x0000b798, 0x0000b798, 0x00009330, 0x00009330, 0x00009330 }, -- { 0x00009b04, 0x0000d784, 0x0000d784, 0x00009334, 0x00009334, 0x00009334 }, -- { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009321, 0x00009321, 0x00009321 }, -- { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009325, 0x00009325, 0x00009325 }, -- { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009329, 0x00009329, 0x00009329 }, -- { 0x00009b14, 0x0000f780, 0x0000f780, 0x0000932d, 0x0000932d, 0x0000932d }, -- { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009331, 0x00009331, 0x00009331 }, -- { 0x00009b1c, 0x0000f788, 0x0000f788, 0x00009335, 0x00009335, 0x00009335 }, -- { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x00009322, 0x00009322, 0x00009322 }, -- { 0x00009b24, 0x0000f790, 0x0000f790, 0x00009326, 0x00009326, 0x00009326 }, -- { 0x00009b28, 0x0000f794, 0x0000f794, 0x0000932a, 0x0000932a, 0x0000932a }, -- { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x0000932e, 0x0000932e, 0x0000932e }, -- { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00009332, 0x00009332, 0x00009332 }, -- { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00009336, 0x00009336, 0x00009336 }, -- { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00009323, 0x00009323, 0x00009323 }, -- { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00009327, 0x00009327, 0x00009327 }, -- { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x0000932b, 0x0000932b, 0x0000932b }, -- { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x0000932f, 0x0000932f, 0x0000932f }, -- { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00009333, 0x00009333, 0x00009333 }, -- { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00009337, 0x00009337, 0x00009337 }, -- { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00009343, 0x00009343, 0x00009343 }, -- { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00009347, 0x00009347, 0x00009347 }, -- { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x0000934b, 0x0000934b, 0x0000934b }, -- { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x0000934f, 0x0000934f, 0x0000934f }, -- { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00009353, 0x00009353, 0x00009353 }, -- { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00009357, 0x00009357, 0x00009357 }, -- { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, -- { 0x00009848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a }, -- { 0x0000a848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a }, -+ {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, -+ {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, -+ {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, -+ {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, -+ {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, -+ {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, -+ {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, -+ {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, -+ {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c}, -+ {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080}, -+ {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084}, -+ {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088}, -+ {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c}, -+ {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100}, -+ {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104}, -+ {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108}, -+ {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c}, -+ {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110}, -+ {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114}, -+ {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180}, -+ {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184}, -+ {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188}, -+ {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c}, -+ {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190}, -+ {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194}, -+ {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0}, -+ {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c}, -+ {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8}, -+ {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284}, -+ {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288}, -+ {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224}, -+ {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290}, -+ {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300}, -+ {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304}, -+ {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308}, -+ {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c}, -+ {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380}, -+ {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384}, -+ {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700}, -+ {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704}, -+ {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708}, -+ {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c}, -+ {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780}, -+ {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784}, -+ {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00}, -+ {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04}, -+ {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, -+ {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, -+ {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80}, -+ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84}, -+ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88}, -+ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c}, -+ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90}, -+ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80}, -+ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84}, -+ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88}, -+ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c}, -+ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90}, -+ {0x00009ae8, 0x0000b780, 0x0000b780, 0x00009310, 0x00009310, 0x00009310}, -+ {0x00009aec, 0x0000b784, 0x0000b784, 0x00009314, 0x00009314, 0x00009314}, -+ {0x00009af0, 0x0000b788, 0x0000b788, 0x00009320, 0x00009320, 0x00009320}, -+ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009324, 0x00009324, 0x00009324}, -+ {0x00009af8, 0x0000b790, 0x0000b790, 0x00009328, 0x00009328, 0x00009328}, -+ {0x00009afc, 0x0000b794, 0x0000b794, 0x0000932c, 0x0000932c, 0x0000932c}, -+ {0x00009b00, 0x0000b798, 0x0000b798, 0x00009330, 0x00009330, 0x00009330}, -+ {0x00009b04, 0x0000d784, 0x0000d784, 0x00009334, 0x00009334, 0x00009334}, -+ {0x00009b08, 0x0000d788, 0x0000d788, 0x00009321, 0x00009321, 0x00009321}, -+ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009325, 0x00009325, 0x00009325}, -+ {0x00009b10, 0x0000d790, 0x0000d790, 0x00009329, 0x00009329, 0x00009329}, -+ {0x00009b14, 0x0000f780, 0x0000f780, 0x0000932d, 0x0000932d, 0x0000932d}, -+ {0x00009b18, 0x0000f784, 0x0000f784, 0x00009331, 0x00009331, 0x00009331}, -+ {0x00009b1c, 0x0000f788, 0x0000f788, 0x00009335, 0x00009335, 0x00009335}, -+ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00009322, 0x00009322, 0x00009322}, -+ {0x00009b24, 0x0000f790, 0x0000f790, 0x00009326, 0x00009326, 0x00009326}, -+ {0x00009b28, 0x0000f794, 0x0000f794, 0x0000932a, 0x0000932a, 0x0000932a}, -+ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x0000932e, 0x0000932e, 0x0000932e}, -+ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00009332, 0x00009332, 0x00009332}, -+ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00009336, 0x00009336, 0x00009336}, -+ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00009323, 0x00009323, 0x00009323}, -+ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00009327, 0x00009327, 0x00009327}, -+ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x0000932b, 0x0000932b, 0x0000932b}, -+ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x0000932f, 0x0000932f, 0x0000932f}, -+ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00009333, 0x00009333, 0x00009333}, -+ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00009337, 0x00009337, 0x00009337}, -+ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00009343, 0x00009343, 0x00009343}, -+ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00009347, 0x00009347, 0x00009347}, -+ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x0000934b, 0x0000934b, 0x0000934b}, -+ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x0000934f, 0x0000934f, 0x0000934f}, -+ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00009353, 0x00009353, 0x00009353}, -+ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00009357, 0x00009357, 0x00009357}, -+ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b}, -+ {0x00009848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a}, -+ {0x0000a848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a}, - }; - - static const u32 ar9280Modes_high_power_tx_gain_9280_2[][6] = { -- { 0x0000a274, 0x0a19e652, 0x0a19e652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, -- { 0x0000a27c, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce }, -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00003002, 0x00003002, 0x00004002, 0x00004002, 0x00004002 }, -- { 0x0000a308, 0x00006004, 0x00006004, 0x00007008, 0x00007008, 0x00007008 }, -- { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000c010, 0x0000c010, 0x0000c010 }, -- { 0x0000a310, 0x0000e012, 0x0000e012, 0x00010012, 0x00010012, 0x00010012 }, -- { 0x0000a314, 0x00011014, 0x00011014, 0x00013014, 0x00013014, 0x00013014 }, -- { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001820a, 0x0001820a, 0x0001820a }, -- { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001b211, 0x0001b211, 0x0001b211 }, -- { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, -- { 0x0000a324, 0x00021092, 0x00021092, 0x00022411, 0x00022411, 0x00022411 }, -- { 0x0000a328, 0x0002510a, 0x0002510a, 0x00025413, 0x00025413, 0x00025413 }, -- { 0x0000a32c, 0x0002910c, 0x0002910c, 0x00029811, 0x00029811, 0x00029811 }, -- { 0x0000a330, 0x0002c18b, 0x0002c18b, 0x0002c813, 0x0002c813, 0x0002c813 }, -- { 0x0000a334, 0x0002f1cc, 0x0002f1cc, 0x00030a14, 0x00030a14, 0x00030a14 }, -- { 0x0000a338, 0x000321eb, 0x000321eb, 0x00035a50, 0x00035a50, 0x00035a50 }, -- { 0x0000a33c, 0x000341ec, 0x000341ec, 0x00039c4c, 0x00039c4c, 0x00039c4c }, -- { 0x0000a340, 0x000341ec, 0x000341ec, 0x0003de8a, 0x0003de8a, 0x0003de8a }, -- { 0x0000a344, 0x000341ec, 0x000341ec, 0x00042e92, 0x00042e92, 0x00042e92 }, -- { 0x0000a348, 0x000341ec, 0x000341ec, 0x00046ed2, 0x00046ed2, 0x00046ed2 }, -- { 0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5 }, -- { 0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54 }, -- { 0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5 }, -- { 0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff }, -- { 0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff }, -- { 0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000 }, -- { 0x00007840, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000 }, -- { 0x00007820, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480 }, -- { 0x00007844, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480 }, -+ {0x0000a274, 0x0a19e652, 0x0a19e652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652}, -+ {0x0000a27c, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce}, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00003002, 0x00003002, 0x00004002, 0x00004002, 0x00004002}, -+ {0x0000a308, 0x00006004, 0x00006004, 0x00007008, 0x00007008, 0x00007008}, -+ {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000c010, 0x0000c010, 0x0000c010}, -+ {0x0000a310, 0x0000e012, 0x0000e012, 0x00010012, 0x00010012, 0x00010012}, -+ {0x0000a314, 0x00011014, 0x00011014, 0x00013014, 0x00013014, 0x00013014}, -+ {0x0000a318, 0x0001504a, 0x0001504a, 0x0001820a, 0x0001820a, 0x0001820a}, -+ {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001b211, 0x0001b211, 0x0001b211}, -+ {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213}, -+ {0x0000a324, 0x00021092, 0x00021092, 0x00022411, 0x00022411, 0x00022411}, -+ {0x0000a328, 0x0002510a, 0x0002510a, 0x00025413, 0x00025413, 0x00025413}, -+ {0x0000a32c, 0x0002910c, 0x0002910c, 0x00029811, 0x00029811, 0x00029811}, -+ {0x0000a330, 0x0002c18b, 0x0002c18b, 0x0002c813, 0x0002c813, 0x0002c813}, -+ {0x0000a334, 0x0002f1cc, 0x0002f1cc, 0x00030a14, 0x00030a14, 0x00030a14}, -+ {0x0000a338, 0x000321eb, 0x000321eb, 0x00035a50, 0x00035a50, 0x00035a50}, -+ {0x0000a33c, 0x000341ec, 0x000341ec, 0x00039c4c, 0x00039c4c, 0x00039c4c}, -+ {0x0000a340, 0x000341ec, 0x000341ec, 0x0003de8a, 0x0003de8a, 0x0003de8a}, -+ {0x0000a344, 0x000341ec, 0x000341ec, 0x00042e92, 0x00042e92, 0x00042e92}, -+ {0x0000a348, 0x000341ec, 0x000341ec, 0x00046ed2, 0x00046ed2, 0x00046ed2}, -+ {0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5}, -+ {0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54}, -+ {0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5}, -+ {0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, -+ {0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, -+ {0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000}, -+ {0x00007840, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000}, -+ {0x00007820, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480}, -+ {0x00007844, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480}, - }; - - static const u32 ar9280Modes_original_tx_gain_9280_2[][6] = { -- { 0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, -- { 0x0000a27c, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce }, -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002 }, -- { 0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009 }, -- { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b }, -- { 0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012 }, -- { 0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048 }, -- { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a }, -- { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211 }, -- { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, -- { 0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b }, -- { 0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412 }, -- { 0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414 }, -- { 0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a }, -- { 0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649 }, -- { 0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b }, -- { 0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49 }, -- { 0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48 }, -- { 0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a }, -- { 0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88 }, -- { 0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a }, -- { 0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9 }, -- { 0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42 }, -- { 0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff }, -- { 0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff }, -- { 0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000 }, -- { 0x00007840, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000 }, -- { 0x00007820, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480 }, -- { 0x00007844, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480 }, -+ {0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652}, -+ {0x0000a27c, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce}, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002}, -+ {0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009}, -+ {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b}, -+ {0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012}, -+ {0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048}, -+ {0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a}, -+ {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211}, -+ {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213}, -+ {0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b}, -+ {0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412}, -+ {0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414}, -+ {0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a}, -+ {0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649}, -+ {0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b}, -+ {0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49}, -+ {0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48}, -+ {0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a}, -+ {0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88}, -+ {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a}, -+ {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9}, -+ {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42}, -+ {0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, -+ {0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, -+ {0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000}, -+ {0x00007840, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000}, -+ {0x00007820, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480}, -+ {0x00007844, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480}, - }; - - static const u32 ar9280PciePhy_clkreq_off_L1_9280[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffc }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffc}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - - static const u32 ar9280PciePhy_clkreq_always_on_L1_9280[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffd }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffd}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - --/* AR9285 Revsion 10*/ - static const u32 ar9285Modes_9285[][6] = { -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, -- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, -- { 0x00009844, 0x0372161e, 0x0372161e, 0x03720020, 0x03720020, 0x037216a0 }, -- { 0x00009848, 0x00001066, 0x00001066, 0x0000004e, 0x0000004e, 0x00001059 }, -- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, -- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, -- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3136605e, 0x3136605e, 0x3139605e }, -- { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18 }, -- { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, -- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, -- { 0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1020, 0xdfbc1020, 0xdfbc1010 }, -- { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099b8, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c }, -- { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00009a00, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000 }, -- { 0x00009a04, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000 }, -- { 0x00009a08, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000 }, -- { 0x00009a0c, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000 }, -- { 0x00009a10, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000 }, -- { 0x00009a14, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000 }, -- { 0x00009a18, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000 }, -- { 0x00009a1c, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, -- { 0x00009a20, 0x00000000, 0x00000000, 0x00068114, 0x00068114, 0x00000000 }, -- { 0x00009a24, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000 }, -- { 0x00009a28, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000 }, -- { 0x00009a2c, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000 }, -- { 0x00009a30, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000 }, -- { 0x00009a34, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000 }, -- { 0x00009a38, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000 }, -- { 0x00009a3c, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000 }, -- { 0x00009a40, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000 }, -- { 0x00009a44, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000 }, -- { 0x00009a48, 0x00000000, 0x00000000, 0x00068284, 0x00068284, 0x00000000 }, -- { 0x00009a4c, 0x00000000, 0x00000000, 0x00068288, 0x00068288, 0x00000000 }, -- { 0x00009a50, 0x00000000, 0x00000000, 0x00068220, 0x00068220, 0x00000000 }, -- { 0x00009a54, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000 }, -- { 0x00009a58, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000 }, -- { 0x00009a5c, 0x00000000, 0x00000000, 0x00068304, 0x00068304, 0x00000000 }, -- { 0x00009a60, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000 }, -- { 0x00009a64, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000 }, -- { 0x00009a68, 0x00000000, 0x00000000, 0x00068380, 0x00068380, 0x00000000 }, -- { 0x00009a6c, 0x00000000, 0x00000000, 0x00068384, 0x00068384, 0x00000000 }, -- { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, -- { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, -- { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, -- { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, -- { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, -- { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, -- { 0x00009a88, 0x00000000, 0x00000000, 0x00068b04, 0x00068b04, 0x00000000 }, -- { 0x00009a8c, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000 }, -- { 0x00009a90, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000 }, -- { 0x00009a94, 0x00000000, 0x00000000, 0x00068b0c, 0x00068b0c, 0x00000000 }, -- { 0x00009a98, 0x00000000, 0x00000000, 0x00068b80, 0x00068b80, 0x00000000 }, -- { 0x00009a9c, 0x00000000, 0x00000000, 0x00068b84, 0x00068b84, 0x00000000 }, -- { 0x00009aa0, 0x00000000, 0x00000000, 0x00068b88, 0x00068b88, 0x00000000 }, -- { 0x00009aa4, 0x00000000, 0x00000000, 0x00068b8c, 0x00068b8c, 0x00000000 }, -- { 0x00009aa8, 0x00000000, 0x00000000, 0x000b8b90, 0x000b8b90, 0x00000000 }, -- { 0x00009aac, 0x00000000, 0x00000000, 0x000b8f80, 0x000b8f80, 0x00000000 }, -- { 0x00009ab0, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, -- { 0x00009ab4, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000 }, -- { 0x00009ab8, 0x00000000, 0x00000000, 0x000b8f8c, 0x000b8f8c, 0x00000000 }, -- { 0x00009abc, 0x00000000, 0x00000000, 0x000b8f90, 0x000b8f90, 0x00000000 }, -- { 0x00009ac0, 0x00000000, 0x00000000, 0x000bb30c, 0x000bb30c, 0x00000000 }, -- { 0x00009ac4, 0x00000000, 0x00000000, 0x000bb310, 0x000bb310, 0x00000000 }, -- { 0x00009ac8, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000 }, -- { 0x00009acc, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000 }, -- { 0x00009ad0, 0x00000000, 0x00000000, 0x000bb324, 0x000bb324, 0x00000000 }, -- { 0x00009ad4, 0x00000000, 0x00000000, 0x000bb704, 0x000bb704, 0x00000000 }, -- { 0x00009ad8, 0x00000000, 0x00000000, 0x000f96a4, 0x000f96a4, 0x00000000 }, -- { 0x00009adc, 0x00000000, 0x00000000, 0x000f96a8, 0x000f96a8, 0x00000000 }, -- { 0x00009ae0, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000 }, -- { 0x00009ae4, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000 }, -- { 0x00009ae8, 0x00000000, 0x00000000, 0x000f9720, 0x000f9720, 0x00000000 }, -- { 0x00009aec, 0x00000000, 0x00000000, 0x000f9724, 0x000f9724, 0x00000000 }, -- { 0x00009af0, 0x00000000, 0x00000000, 0x000f9728, 0x000f9728, 0x00000000 }, -- { 0x00009af4, 0x00000000, 0x00000000, 0x000f972c, 0x000f972c, 0x00000000 }, -- { 0x00009af8, 0x00000000, 0x00000000, 0x000f97a0, 0x000f97a0, 0x00000000 }, -- { 0x00009afc, 0x00000000, 0x00000000, 0x000f97a4, 0x000f97a4, 0x00000000 }, -- { 0x00009b00, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000 }, -- { 0x00009b04, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000 }, -- { 0x00009b08, 0x00000000, 0x00000000, 0x000fb7b4, 0x000fb7b4, 0x00000000 }, -- { 0x00009b0c, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000 }, -- { 0x00009b10, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000 }, -- { 0x00009b14, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000 }, -- { 0x00009b18, 0x00000000, 0x00000000, 0x000fb7ad, 0x000fb7ad, 0x00000000 }, -- { 0x00009b1c, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000 }, -- { 0x00009b20, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000 }, -- { 0x00009b24, 0x00000000, 0x00000000, 0x000fb7b9, 0x000fb7b9, 0x00000000 }, -- { 0x00009b28, 0x00000000, 0x00000000, 0x000fb7c5, 0x000fb7c5, 0x00000000 }, -- { 0x00009b2c, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000 }, -- { 0x00009b30, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000 }, -- { 0x00009b34, 0x00000000, 0x00000000, 0x000fb7d5, 0x000fb7d5, 0x00000000 }, -- { 0x00009b38, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000 }, -- { 0x00009b3c, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000 }, -- { 0x00009b40, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000 }, -- { 0x00009b44, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000 }, -- { 0x00009b48, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000 }, -- { 0x00009b4c, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000 }, -- { 0x00009b50, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000 }, -- { 0x00009b54, 0x00000000, 0x00000000, 0x000fb7c7, 0x000fb7c7, 0x00000000 }, -- { 0x00009b58, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000 }, -- { 0x00009b5c, 0x00000000, 0x00000000, 0x000fb7cf, 0x000fb7cf, 0x00000000 }, -- { 0x00009b60, 0x00000000, 0x00000000, 0x000fb7d7, 0x000fb7d7, 0x00000000 }, -- { 0x00009b64, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b68, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b6c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b70, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b74, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b78, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b7c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b80, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b84, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b88, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b8c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b90, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b94, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b98, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009b9c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009ba0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009ba4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009ba8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bac, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bb0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bb4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bb8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bbc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bc0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bc4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bc8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bcc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bd0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bd4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bd8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bdc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009be0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009be4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009be8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bec, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bf0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bf4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bf8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x00009bfc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, -- { 0x0000aa00, 0x00000000, 0x00000000, 0x0006801c, 0x0006801c, 0x00000000 }, -- { 0x0000aa04, 0x00000000, 0x00000000, 0x00068080, 0x00068080, 0x00000000 }, -- { 0x0000aa08, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000 }, -- { 0x0000aa0c, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000 }, -- { 0x0000aa10, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000 }, -- { 0x0000aa14, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000 }, -- { 0x0000aa18, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000 }, -- { 0x0000aa1c, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000 }, -- { 0x0000aa20, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000 }, -- { 0x0000aa24, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, -- { 0x0000aa28, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, -- { 0x0000aa2c, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000 }, -- { 0x0000aa30, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000 }, -- { 0x0000aa34, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000 }, -- { 0x0000aa38, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000 }, -- { 0x0000aa3c, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000 }, -- { 0x0000aa40, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000 }, -- { 0x0000aa44, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000 }, -- { 0x0000aa48, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000 }, -- { 0x0000aa4c, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000 }, -- { 0x0000aa50, 0x00000000, 0x00000000, 0x000681ac, 0x000681ac, 0x00000000 }, -- { 0x0000aa54, 0x00000000, 0x00000000, 0x0006821c, 0x0006821c, 0x00000000 }, -- { 0x0000aa58, 0x00000000, 0x00000000, 0x00068224, 0x00068224, 0x00000000 }, -- { 0x0000aa5c, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000 }, -- { 0x0000aa60, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000 }, -- { 0x0000aa64, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000 }, -- { 0x0000aa68, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000 }, -- { 0x0000aa6c, 0x00000000, 0x00000000, 0x00068310, 0x00068310, 0x00000000 }, -- { 0x0000aa70, 0x00000000, 0x00000000, 0x00068788, 0x00068788, 0x00000000 }, -- { 0x0000aa74, 0x00000000, 0x00000000, 0x0006878c, 0x0006878c, 0x00000000 }, -- { 0x0000aa78, 0x00000000, 0x00000000, 0x00068790, 0x00068790, 0x00000000 }, -- { 0x0000aa7c, 0x00000000, 0x00000000, 0x00068794, 0x00068794, 0x00000000 }, -- { 0x0000aa80, 0x00000000, 0x00000000, 0x00068798, 0x00068798, 0x00000000 }, -- { 0x0000aa84, 0x00000000, 0x00000000, 0x0006879c, 0x0006879c, 0x00000000 }, -- { 0x0000aa88, 0x00000000, 0x00000000, 0x00068b89, 0x00068b89, 0x00000000 }, -- { 0x0000aa8c, 0x00000000, 0x00000000, 0x00068b8d, 0x00068b8d, 0x00000000 }, -- { 0x0000aa90, 0x00000000, 0x00000000, 0x00068b91, 0x00068b91, 0x00000000 }, -- { 0x0000aa94, 0x00000000, 0x00000000, 0x00068b95, 0x00068b95, 0x00000000 }, -- { 0x0000aa98, 0x00000000, 0x00000000, 0x00068b99, 0x00068b99, 0x00000000 }, -- { 0x0000aa9c, 0x00000000, 0x00000000, 0x00068ba5, 0x00068ba5, 0x00000000 }, -- { 0x0000aaa0, 0x00000000, 0x00000000, 0x00068ba9, 0x00068ba9, 0x00000000 }, -- { 0x0000aaa4, 0x00000000, 0x00000000, 0x00068bad, 0x00068bad, 0x00000000 }, -- { 0x0000aaa8, 0x00000000, 0x00000000, 0x000b8b0c, 0x000b8b0c, 0x00000000 }, -- { 0x0000aaac, 0x00000000, 0x00000000, 0x000b8f10, 0x000b8f10, 0x00000000 }, -- { 0x0000aab0, 0x00000000, 0x00000000, 0x000b8f14, 0x000b8f14, 0x00000000 }, -- { 0x0000aab4, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, -- { 0x0000aab8, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, -- { 0x0000aabc, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000 }, -- { 0x0000aac0, 0x00000000, 0x00000000, 0x000bb380, 0x000bb380, 0x00000000 }, -- { 0x0000aac4, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000 }, -- { 0x0000aac8, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000 }, -- { 0x0000aacc, 0x00000000, 0x00000000, 0x000bb38c, 0x000bb38c, 0x00000000 }, -- { 0x0000aad0, 0x00000000, 0x00000000, 0x000bb394, 0x000bb394, 0x00000000 }, -- { 0x0000aad4, 0x00000000, 0x00000000, 0x000bb798, 0x000bb798, 0x00000000 }, -- { 0x0000aad8, 0x00000000, 0x00000000, 0x000f970c, 0x000f970c, 0x00000000 }, -- { 0x0000aadc, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000 }, -- { 0x0000aae0, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000 }, -- { 0x0000aae4, 0x00000000, 0x00000000, 0x000f9718, 0x000f9718, 0x00000000 }, -- { 0x0000aae8, 0x00000000, 0x00000000, 0x000f9705, 0x000f9705, 0x00000000 }, -- { 0x0000aaec, 0x00000000, 0x00000000, 0x000f9709, 0x000f9709, 0x00000000 }, -- { 0x0000aaf0, 0x00000000, 0x00000000, 0x000f970d, 0x000f970d, 0x00000000 }, -- { 0x0000aaf4, 0x00000000, 0x00000000, 0x000f9711, 0x000f9711, 0x00000000 }, -- { 0x0000aaf8, 0x00000000, 0x00000000, 0x000f9715, 0x000f9715, 0x00000000 }, -- { 0x0000aafc, 0x00000000, 0x00000000, 0x000f9719, 0x000f9719, 0x00000000 }, -- { 0x0000ab00, 0x00000000, 0x00000000, 0x000fb7a4, 0x000fb7a4, 0x00000000 }, -- { 0x0000ab04, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000 }, -- { 0x0000ab08, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000 }, -- { 0x0000ab0c, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000 }, -- { 0x0000ab10, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000 }, -- { 0x0000ab14, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000 }, -- { 0x0000ab18, 0x00000000, 0x00000000, 0x000fb7bc, 0x000fb7bc, 0x00000000 }, -- { 0x0000ab1c, 0x00000000, 0x00000000, 0x000fb7a1, 0x000fb7a1, 0x00000000 }, -- { 0x0000ab20, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000 }, -- { 0x0000ab24, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000 }, -- { 0x0000ab28, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000 }, -- { 0x0000ab2c, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000 }, -- { 0x0000ab30, 0x00000000, 0x00000000, 0x000fb7bd, 0x000fb7bd, 0x00000000 }, -- { 0x0000ab34, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000 }, -- { 0x0000ab38, 0x00000000, 0x00000000, 0x000fb7cd, 0x000fb7cd, 0x00000000 }, -- { 0x0000ab3c, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000 }, -- { 0x0000ab40, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000 }, -- { 0x0000ab44, 0x00000000, 0x00000000, 0x000fb7c2, 0x000fb7c2, 0x00000000 }, -- { 0x0000ab48, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000 }, -- { 0x0000ab4c, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000 }, -- { 0x0000ab50, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000 }, -- { 0x0000ab54, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000 }, -- { 0x0000ab58, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000 }, -- { 0x0000ab5c, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000 }, -- { 0x0000ab60, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000 }, -- { 0x0000ab64, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab68, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab6c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab70, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab74, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab78, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab7c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab80, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab84, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab88, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab8c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab90, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab94, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab98, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000ab9c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000aba0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000aba4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000aba8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abac, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abb0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abb4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abb8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abbc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abc0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abc4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abc8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abcc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abd0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abd4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abd8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abdc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abe0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abe4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abe8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abec, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abf0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abf4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abf8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000abfc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, -- { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, -- { 0x0000a20c, 0x00000014, 0x00000014, 0x00000000, 0x00000000, 0x0001f000 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a250, 0x001ff000, 0x001ff000, 0x001ca000, 0x001ca000, 0x001da000 }, -- { 0x0000a274, 0x0a81c652, 0x0a81c652, 0x0a820652, 0x0a820652, 0x0a82a652 }, -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00007201, 0x00007201, 0x00000000 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00010408, 0x00010408, 0x00000000 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x0001860a, 0x0001860a, 0x00000000 }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x00020818, 0x00020818, 0x00000000 }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x00024858, 0x00024858, 0x00000000 }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x00026859, 0x00026859, 0x00000000 }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x0002985b, 0x0002985b, 0x00000000 }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x0002c89a, 0x0002c89a, 0x00000000 }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x0002e89b, 0x0002e89b, 0x00000000 }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x0003089c, 0x0003089c, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0003289d, 0x0003289d, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x0003489e, 0x0003489e, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x000388de, 0x000388de, 0x00000000 }, -- { 0x0000a338, 0x00000000, 0x00000000, 0x0003b91e, 0x0003b91e, 0x00000000 }, -- { 0x0000a33c, 0x00000000, 0x00000000, 0x0003d95e, 0x0003d95e, 0x00000000 }, -- { 0x0000a340, 0x00000000, 0x00000000, 0x000419df, 0x000419df, 0x00000000 }, -- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, -+ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e}, -+ {0x00009844, 0x0372161e, 0x0372161e, 0x03720020, 0x03720020, 0x037216a0}, -+ {0x00009848, 0x00001066, 0x00001066, 0x0000004e, 0x0000004e, 0x00001059}, -+ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, -+ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x0000985c, 0x3139605e, 0x3139605e, 0x3136605e, 0x3136605e, 0x3139605e}, -+ {0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18}, -+ {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, -+ {0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1020, 0xdfbc1020, 0xdfbc1010}, -+ {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099b8, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c}, -+ {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009a00, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000}, -+ {0x00009a04, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000}, -+ {0x00009a08, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000}, -+ {0x00009a0c, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000}, -+ {0x00009a10, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000}, -+ {0x00009a14, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000}, -+ {0x00009a18, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000}, -+ {0x00009a1c, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000}, -+ {0x00009a20, 0x00000000, 0x00000000, 0x00068114, 0x00068114, 0x00000000}, -+ {0x00009a24, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000}, -+ {0x00009a28, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000}, -+ {0x00009a2c, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000}, -+ {0x00009a30, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000}, -+ {0x00009a34, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000}, -+ {0x00009a38, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000}, -+ {0x00009a3c, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000}, -+ {0x00009a40, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000}, -+ {0x00009a44, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000}, -+ {0x00009a48, 0x00000000, 0x00000000, 0x00068284, 0x00068284, 0x00000000}, -+ {0x00009a4c, 0x00000000, 0x00000000, 0x00068288, 0x00068288, 0x00000000}, -+ {0x00009a50, 0x00000000, 0x00000000, 0x00068220, 0x00068220, 0x00000000}, -+ {0x00009a54, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000}, -+ {0x00009a58, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000}, -+ {0x00009a5c, 0x00000000, 0x00000000, 0x00068304, 0x00068304, 0x00000000}, -+ {0x00009a60, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000}, -+ {0x00009a64, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000}, -+ {0x00009a68, 0x00000000, 0x00000000, 0x00068380, 0x00068380, 0x00000000}, -+ {0x00009a6c, 0x00000000, 0x00000000, 0x00068384, 0x00068384, 0x00000000}, -+ {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, -+ {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, -+ {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, -+ {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, -+ {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, -+ {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, -+ {0x00009a88, 0x00000000, 0x00000000, 0x00068b04, 0x00068b04, 0x00000000}, -+ {0x00009a8c, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000}, -+ {0x00009a90, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000}, -+ {0x00009a94, 0x00000000, 0x00000000, 0x00068b0c, 0x00068b0c, 0x00000000}, -+ {0x00009a98, 0x00000000, 0x00000000, 0x00068b80, 0x00068b80, 0x00000000}, -+ {0x00009a9c, 0x00000000, 0x00000000, 0x00068b84, 0x00068b84, 0x00000000}, -+ {0x00009aa0, 0x00000000, 0x00000000, 0x00068b88, 0x00068b88, 0x00000000}, -+ {0x00009aa4, 0x00000000, 0x00000000, 0x00068b8c, 0x00068b8c, 0x00000000}, -+ {0x00009aa8, 0x00000000, 0x00000000, 0x000b8b90, 0x000b8b90, 0x00000000}, -+ {0x00009aac, 0x00000000, 0x00000000, 0x000b8f80, 0x000b8f80, 0x00000000}, -+ {0x00009ab0, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000}, -+ {0x00009ab4, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000}, -+ {0x00009ab8, 0x00000000, 0x00000000, 0x000b8f8c, 0x000b8f8c, 0x00000000}, -+ {0x00009abc, 0x00000000, 0x00000000, 0x000b8f90, 0x000b8f90, 0x00000000}, -+ {0x00009ac0, 0x00000000, 0x00000000, 0x000bb30c, 0x000bb30c, 0x00000000}, -+ {0x00009ac4, 0x00000000, 0x00000000, 0x000bb310, 0x000bb310, 0x00000000}, -+ {0x00009ac8, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000}, -+ {0x00009acc, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000}, -+ {0x00009ad0, 0x00000000, 0x00000000, 0x000bb324, 0x000bb324, 0x00000000}, -+ {0x00009ad4, 0x00000000, 0x00000000, 0x000bb704, 0x000bb704, 0x00000000}, -+ {0x00009ad8, 0x00000000, 0x00000000, 0x000f96a4, 0x000f96a4, 0x00000000}, -+ {0x00009adc, 0x00000000, 0x00000000, 0x000f96a8, 0x000f96a8, 0x00000000}, -+ {0x00009ae0, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000}, -+ {0x00009ae4, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000}, -+ {0x00009ae8, 0x00000000, 0x00000000, 0x000f9720, 0x000f9720, 0x00000000}, -+ {0x00009aec, 0x00000000, 0x00000000, 0x000f9724, 0x000f9724, 0x00000000}, -+ {0x00009af0, 0x00000000, 0x00000000, 0x000f9728, 0x000f9728, 0x00000000}, -+ {0x00009af4, 0x00000000, 0x00000000, 0x000f972c, 0x000f972c, 0x00000000}, -+ {0x00009af8, 0x00000000, 0x00000000, 0x000f97a0, 0x000f97a0, 0x00000000}, -+ {0x00009afc, 0x00000000, 0x00000000, 0x000f97a4, 0x000f97a4, 0x00000000}, -+ {0x00009b00, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000}, -+ {0x00009b04, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000}, -+ {0x00009b08, 0x00000000, 0x00000000, 0x000fb7b4, 0x000fb7b4, 0x00000000}, -+ {0x00009b0c, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000}, -+ {0x00009b10, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000}, -+ {0x00009b14, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000}, -+ {0x00009b18, 0x00000000, 0x00000000, 0x000fb7ad, 0x000fb7ad, 0x00000000}, -+ {0x00009b1c, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000}, -+ {0x00009b20, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000}, -+ {0x00009b24, 0x00000000, 0x00000000, 0x000fb7b9, 0x000fb7b9, 0x00000000}, -+ {0x00009b28, 0x00000000, 0x00000000, 0x000fb7c5, 0x000fb7c5, 0x00000000}, -+ {0x00009b2c, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000}, -+ {0x00009b30, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000}, -+ {0x00009b34, 0x00000000, 0x00000000, 0x000fb7d5, 0x000fb7d5, 0x00000000}, -+ {0x00009b38, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000}, -+ {0x00009b3c, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000}, -+ {0x00009b40, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000}, -+ {0x00009b44, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000}, -+ {0x00009b48, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000}, -+ {0x00009b4c, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000}, -+ {0x00009b50, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000}, -+ {0x00009b54, 0x00000000, 0x00000000, 0x000fb7c7, 0x000fb7c7, 0x00000000}, -+ {0x00009b58, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000}, -+ {0x00009b5c, 0x00000000, 0x00000000, 0x000fb7cf, 0x000fb7cf, 0x00000000}, -+ {0x00009b60, 0x00000000, 0x00000000, 0x000fb7d7, 0x000fb7d7, 0x00000000}, -+ {0x00009b64, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b68, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b6c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b70, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b74, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b78, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b7c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b80, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b84, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b88, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b8c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b90, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b94, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b98, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009b9c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009ba0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009ba4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009ba8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bac, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bb0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bb4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bb8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bbc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bc0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bc4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bc8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bcc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bd0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bd4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bd8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bdc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009be0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009be4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009be8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bec, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bf0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bf4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bf8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x00009bfc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000}, -+ {0x0000aa00, 0x00000000, 0x00000000, 0x0006801c, 0x0006801c, 0x00000000}, -+ {0x0000aa04, 0x00000000, 0x00000000, 0x00068080, 0x00068080, 0x00000000}, -+ {0x0000aa08, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000}, -+ {0x0000aa0c, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000}, -+ {0x0000aa10, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000}, -+ {0x0000aa14, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000}, -+ {0x0000aa18, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000}, -+ {0x0000aa1c, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000}, -+ {0x0000aa20, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000}, -+ {0x0000aa24, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000}, -+ {0x0000aa28, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000}, -+ {0x0000aa2c, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000}, -+ {0x0000aa30, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000}, -+ {0x0000aa34, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000}, -+ {0x0000aa38, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000}, -+ {0x0000aa3c, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000}, -+ {0x0000aa40, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000}, -+ {0x0000aa44, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000}, -+ {0x0000aa48, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000}, -+ {0x0000aa4c, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000}, -+ {0x0000aa50, 0x00000000, 0x00000000, 0x000681ac, 0x000681ac, 0x00000000}, -+ {0x0000aa54, 0x00000000, 0x00000000, 0x0006821c, 0x0006821c, 0x00000000}, -+ {0x0000aa58, 0x00000000, 0x00000000, 0x00068224, 0x00068224, 0x00000000}, -+ {0x0000aa5c, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000}, -+ {0x0000aa60, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000}, -+ {0x0000aa64, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000}, -+ {0x0000aa68, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000}, -+ {0x0000aa6c, 0x00000000, 0x00000000, 0x00068310, 0x00068310, 0x00000000}, -+ {0x0000aa70, 0x00000000, 0x00000000, 0x00068788, 0x00068788, 0x00000000}, -+ {0x0000aa74, 0x00000000, 0x00000000, 0x0006878c, 0x0006878c, 0x00000000}, -+ {0x0000aa78, 0x00000000, 0x00000000, 0x00068790, 0x00068790, 0x00000000}, -+ {0x0000aa7c, 0x00000000, 0x00000000, 0x00068794, 0x00068794, 0x00000000}, -+ {0x0000aa80, 0x00000000, 0x00000000, 0x00068798, 0x00068798, 0x00000000}, -+ {0x0000aa84, 0x00000000, 0x00000000, 0x0006879c, 0x0006879c, 0x00000000}, -+ {0x0000aa88, 0x00000000, 0x00000000, 0x00068b89, 0x00068b89, 0x00000000}, -+ {0x0000aa8c, 0x00000000, 0x00000000, 0x00068b8d, 0x00068b8d, 0x00000000}, -+ {0x0000aa90, 0x00000000, 0x00000000, 0x00068b91, 0x00068b91, 0x00000000}, -+ {0x0000aa94, 0x00000000, 0x00000000, 0x00068b95, 0x00068b95, 0x00000000}, -+ {0x0000aa98, 0x00000000, 0x00000000, 0x00068b99, 0x00068b99, 0x00000000}, -+ {0x0000aa9c, 0x00000000, 0x00000000, 0x00068ba5, 0x00068ba5, 0x00000000}, -+ {0x0000aaa0, 0x00000000, 0x00000000, 0x00068ba9, 0x00068ba9, 0x00000000}, -+ {0x0000aaa4, 0x00000000, 0x00000000, 0x00068bad, 0x00068bad, 0x00000000}, -+ {0x0000aaa8, 0x00000000, 0x00000000, 0x000b8b0c, 0x000b8b0c, 0x00000000}, -+ {0x0000aaac, 0x00000000, 0x00000000, 0x000b8f10, 0x000b8f10, 0x00000000}, -+ {0x0000aab0, 0x00000000, 0x00000000, 0x000b8f14, 0x000b8f14, 0x00000000}, -+ {0x0000aab4, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000}, -+ {0x0000aab8, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000}, -+ {0x0000aabc, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000}, -+ {0x0000aac0, 0x00000000, 0x00000000, 0x000bb380, 0x000bb380, 0x00000000}, -+ {0x0000aac4, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000}, -+ {0x0000aac8, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000}, -+ {0x0000aacc, 0x00000000, 0x00000000, 0x000bb38c, 0x000bb38c, 0x00000000}, -+ {0x0000aad0, 0x00000000, 0x00000000, 0x000bb394, 0x000bb394, 0x00000000}, -+ {0x0000aad4, 0x00000000, 0x00000000, 0x000bb798, 0x000bb798, 0x00000000}, -+ {0x0000aad8, 0x00000000, 0x00000000, 0x000f970c, 0x000f970c, 0x00000000}, -+ {0x0000aadc, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000}, -+ {0x0000aae0, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000}, -+ {0x0000aae4, 0x00000000, 0x00000000, 0x000f9718, 0x000f9718, 0x00000000}, -+ {0x0000aae8, 0x00000000, 0x00000000, 0x000f9705, 0x000f9705, 0x00000000}, -+ {0x0000aaec, 0x00000000, 0x00000000, 0x000f9709, 0x000f9709, 0x00000000}, -+ {0x0000aaf0, 0x00000000, 0x00000000, 0x000f970d, 0x000f970d, 0x00000000}, -+ {0x0000aaf4, 0x00000000, 0x00000000, 0x000f9711, 0x000f9711, 0x00000000}, -+ {0x0000aaf8, 0x00000000, 0x00000000, 0x000f9715, 0x000f9715, 0x00000000}, -+ {0x0000aafc, 0x00000000, 0x00000000, 0x000f9719, 0x000f9719, 0x00000000}, -+ {0x0000ab00, 0x00000000, 0x00000000, 0x000fb7a4, 0x000fb7a4, 0x00000000}, -+ {0x0000ab04, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000}, -+ {0x0000ab08, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000}, -+ {0x0000ab0c, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000}, -+ {0x0000ab10, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000}, -+ {0x0000ab14, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000}, -+ {0x0000ab18, 0x00000000, 0x00000000, 0x000fb7bc, 0x000fb7bc, 0x00000000}, -+ {0x0000ab1c, 0x00000000, 0x00000000, 0x000fb7a1, 0x000fb7a1, 0x00000000}, -+ {0x0000ab20, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000}, -+ {0x0000ab24, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000}, -+ {0x0000ab28, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000}, -+ {0x0000ab2c, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000}, -+ {0x0000ab30, 0x00000000, 0x00000000, 0x000fb7bd, 0x000fb7bd, 0x00000000}, -+ {0x0000ab34, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000}, -+ {0x0000ab38, 0x00000000, 0x00000000, 0x000fb7cd, 0x000fb7cd, 0x00000000}, -+ {0x0000ab3c, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000}, -+ {0x0000ab40, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000}, -+ {0x0000ab44, 0x00000000, 0x00000000, 0x000fb7c2, 0x000fb7c2, 0x00000000}, -+ {0x0000ab48, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000}, -+ {0x0000ab4c, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000}, -+ {0x0000ab50, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000}, -+ {0x0000ab54, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000}, -+ {0x0000ab58, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000}, -+ {0x0000ab5c, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000}, -+ {0x0000ab60, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000}, -+ {0x0000ab64, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab68, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab6c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab70, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab74, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab78, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab7c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab80, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab84, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab88, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab8c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab90, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab94, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab98, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000ab9c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000aba0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000aba4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000aba8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abac, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abb0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abb4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abb8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abbc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abc0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abc4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abc8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abcc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abd0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abd4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abd8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abdc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abe0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abe4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abe8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abec, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abf0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abf4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abf8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000abfc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000}, -+ {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004}, -+ {0x0000a20c, 0x00000014, 0x00000014, 0x00000000, 0x00000000, 0x0001f000}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a250, 0x001ff000, 0x001ff000, 0x001ca000, 0x001ca000, 0x001da000}, -+ {0x0000a274, 0x0a81c652, 0x0a81c652, 0x0a820652, 0x0a820652, 0x0a82a652}, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00007201, 0x00007201, 0x00000000}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00010408, 0x00010408, 0x00000000}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x0001860a, 0x0001860a, 0x00000000}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x00020818, 0x00020818, 0x00000000}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x00024858, 0x00024858, 0x00000000}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x00026859, 0x00026859, 0x00000000}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x0002985b, 0x0002985b, 0x00000000}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x0002c89a, 0x0002c89a, 0x00000000}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x0002e89b, 0x0002e89b, 0x00000000}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x0003089c, 0x0003089c, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0003289d, 0x0003289d, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x0003489e, 0x0003489e, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x000388de, 0x000388de, 0x00000000}, -+ {0x0000a338, 0x00000000, 0x00000000, 0x0003b91e, 0x0003b91e, 0x00000000}, -+ {0x0000a33c, 0x00000000, 0x00000000, 0x0003d95e, 0x0003d95e, 0x00000000}, -+ {0x0000a340, 0x00000000, 0x00000000, 0x000419df, 0x000419df, 0x00000000}, -+ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, - }; - - static const u32 ar9285Common_9285[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020045 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00004024, 0x0000001f }, -- { 0x00004060, 0x00000000 }, -- { 0x00004064, 0x00000000 }, -- { 0x00007010, 0x00000031 }, -- { 0x00007034, 0x00000002 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x00000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x00008070, 0x00000000 }, -- { 0x000080c0, 0x2a80001a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008120, 0x08f04800 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0x00000000 }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c0, 0x00000000 }, -- { 0x000081d0, 0x00003210 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008264, 0x88a00010 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x0000829c, 0x00000000 }, -- { 0x00008300, 0x00000040 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000001 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00000000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x00010380 }, -- { 0x00008344, 0x00481043 }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xafe68e30 }, -- { 0x00009810, 0xfd14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x0000984c, 0x0040233c }, -- { 0x00009854, 0x00000044 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x00009910, 0x01002310 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x04900000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009940, 0x14750604 }, -- { 0x00009948, 0x9280c00a }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5f3ca3de }, -- { 0x00009958, 0x2108ecff }, -- { 0x00009968, 0x000003ce }, -- { 0x00009970, 0x1927b515 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x2def0a00 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099b4, 0x00000820 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000000 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099f0, 0x00000000 }, -- { 0x0000a208, 0x803e6788 }, -- { 0x0000a210, 0x4080a333 }, -- { 0x0000a214, 0x00206c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x01834061 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x000003b5 }, -- { 0x0000a22c, 0x00000000 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a244, 0x00000000 }, -- { 0x0000a248, 0xfffffffc }, -- { 0x0000a24c, 0x00000000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0ccb5380 }, -- { 0x0000a25c, 0x15151501 }, -- { 0x0000a260, 0xdfa90f01 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0ebae9e6 }, -- { 0x0000d270, 0x0d820820 }, -- { 0x0000a278, 0x39ce739c }, -- { 0x0000a27c, 0x050e039c }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x39ce739c }, -- { 0x0000a398, 0x0000039c }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x39ce739c }, -- { 0x0000a3e0, 0x0000039c }, -- { 0x0000a3e4, 0x00000000 }, -- { 0x0000a3e8, 0x18c43433 }, -- { 0x0000a3ec, 0x00f70081 }, -- { 0x00007800, 0x00140000 }, -- { 0x00007804, 0x0e4548d8 }, -- { 0x00007808, 0x54214514 }, -- { 0x0000780c, 0x02025820 }, -- { 0x00007810, 0x71c0d388 }, -- { 0x00007814, 0x924934a8 }, -- { 0x0000781c, 0x00000000 }, -- { 0x00007820, 0x00000c04 }, -- { 0x00007824, 0x00d86fff }, -- { 0x00007828, 0x26d2491b }, -- { 0x0000782c, 0x6e36d97b }, -- { 0x00007830, 0xedb6d96c }, -- { 0x00007834, 0x71400086 }, -- { 0x00007838, 0xfac68800 }, -- { 0x0000783c, 0x0001fffe }, -- { 0x00007840, 0xffeb1a20 }, -- { 0x00007844, 0x000c0db6 }, -- { 0x00007848, 0x6db61b6f }, -- { 0x0000784c, 0x6d9b66db }, -- { 0x00007850, 0x6d8c6dba }, -- { 0x00007854, 0x00040000 }, -- { 0x00007858, 0xdb003012 }, -- { 0x0000785c, 0x04924914 }, -- { 0x00007860, 0x21084210 }, -- { 0x00007864, 0xf7d7ffde }, -- { 0x00007868, 0xc2034080 }, -- { 0x0000786c, 0x48609eb4 }, -- { 0x00007870, 0x10142c00 }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020045}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00004024, 0x0000001f}, -+ {0x00004060, 0x00000000}, -+ {0x00004064, 0x00000000}, -+ {0x00007010, 0x00000031}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x00000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x00008070, 0x00000000}, -+ {0x000080c0, 0x2a80001a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008120, 0x08f04800}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0x00000000}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c0, 0x00000000}, -+ {0x000081d0, 0x00003210}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x88a00010}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000040}, -+ {0x00008314, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000001}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00000000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x00010380}, -+ {0x00008344, 0x00481043}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xafe68e30}, -+ {0x00009810, 0xfd14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x0000984c, 0x0040233c}, -+ {0x00009854, 0x00000044}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x00009910, 0x01002310}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x04900000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009940, 0x14750604}, -+ {0x00009948, 0x9280c00a}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5f3ca3de}, -+ {0x00009958, 0x2108ecff}, -+ {0x00009968, 0x000003ce}, -+ {0x00009970, 0x1927b515}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x2def0a00}, -+ {0x000099b0, 0x03051000}, -+ {0x000099b4, 0x00000820}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000000}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099f0, 0x00000000}, -+ {0x0000a208, 0x803e6788}, -+ {0x0000a210, 0x4080a333}, -+ {0x0000a214, 0x00206c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x01834061}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x000003b5}, -+ {0x0000a22c, 0x00000000}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a244, 0x00000000}, -+ {0x0000a248, 0xfffffffc}, -+ {0x0000a24c, 0x00000000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0ccb5380}, -+ {0x0000a25c, 0x15151501}, -+ {0x0000a260, 0xdfa90f01}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0ebae9e6}, -+ {0x0000d270, 0x0d820820}, -+ {0x0000a278, 0x39ce739c}, -+ {0x0000a27c, 0x050e039c}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x39ce739c}, -+ {0x0000a398, 0x0000039c}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x39ce739c}, -+ {0x0000a3e0, 0x0000039c}, -+ {0x0000a3e4, 0x00000000}, -+ {0x0000a3e8, 0x18c43433}, -+ {0x0000a3ec, 0x00f70081}, -+ {0x00007800, 0x00140000}, -+ {0x00007804, 0x0e4548d8}, -+ {0x00007808, 0x54214514}, -+ {0x0000780c, 0x02025820}, -+ {0x00007810, 0x71c0d388}, -+ {0x00007814, 0x924934a8}, -+ {0x0000781c, 0x00000000}, -+ {0x00007820, 0x00000c04}, -+ {0x00007824, 0x00d86fff}, -+ {0x00007828, 0x26d2491b}, -+ {0x0000782c, 0x6e36d97b}, -+ {0x00007830, 0xedb6d96c}, -+ {0x00007834, 0x71400086}, -+ {0x00007838, 0xfac68800}, -+ {0x0000783c, 0x0001fffe}, -+ {0x00007840, 0xffeb1a20}, -+ {0x00007844, 0x000c0db6}, -+ {0x00007848, 0x6db61b6f}, -+ {0x0000784c, 0x6d9b66db}, -+ {0x00007850, 0x6d8c6dba}, -+ {0x00007854, 0x00040000}, -+ {0x00007858, 0xdb003012}, -+ {0x0000785c, 0x04924914}, -+ {0x00007860, 0x21084210}, -+ {0x00007864, 0xf7d7ffde}, -+ {0x00007868, 0xc2034080}, -+ {0x0000786c, 0x48609eb4}, -+ {0x00007870, 0x10142c00}, - }; - - static const u32 ar9285PciePhy_clkreq_always_on_L1_9285[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffd }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffd}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - - static const u32 ar9285PciePhy_clkreq_off_L1_9285[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffc }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffc}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - --/* AR9285 v1_2 PCI Register Writes. Created: 04/13/09 */ - static const u32 ar9285Modes_9285_1_2[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, -- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, -- { 0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0 }, -- { 0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, -- { 0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, -- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, -- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, -- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, -- { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18 }, -- { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, -- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, -- { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010 }, -- { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c }, -- { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, -- { 0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, -- { 0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, -- { 0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, -- { 0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, -- { 0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, -- { 0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, -- { 0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, -- { 0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, -- { 0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, -- { 0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, -- { 0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, -- { 0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, -- { 0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, -- { 0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, -- { 0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, -- { 0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, -- { 0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, -- { 0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, -- { 0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, -- { 0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, -- { 0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, -- { 0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, -- { 0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, -- { 0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, -- { 0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, -- { 0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, -- { 0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, -- { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, -- { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, -- { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, -- { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, -- { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, -- { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, -- { 0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, -- { 0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, -- { 0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, -- { 0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, -- { 0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, -- { 0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, -- { 0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, -- { 0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, -- { 0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, -- { 0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, -- { 0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, -- { 0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, -- { 0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, -- { 0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, -- { 0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, -- { 0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, -- { 0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, -- { 0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, -- { 0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, -- { 0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, -- { 0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, -- { 0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, -- { 0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, -- { 0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, -- { 0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, -- { 0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, -- { 0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, -- { 0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, -- { 0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, -- { 0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, -- { 0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, -- { 0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, -- { 0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, -- { 0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, -- { 0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, -- { 0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, -- { 0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, -- { 0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, -- { 0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, -- { 0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, -- { 0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, -- { 0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, -- { 0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, -- { 0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, -- { 0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, -- { 0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, -- { 0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, -- { 0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, -- { 0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, -- { 0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, -- { 0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, -- { 0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, -- { 0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, -- { 0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, -- { 0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, -- { 0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, -- { 0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, -- { 0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, -- { 0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, -- { 0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, -- { 0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, -- { 0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, -- { 0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, -- { 0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, -- { 0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, -- { 0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, -- { 0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, -- { 0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, -- { 0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, -- { 0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, -- { 0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, -- { 0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, -- { 0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, -- { 0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, -- { 0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, -- { 0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, -- { 0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, -- { 0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, -- { 0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, -- { 0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, -- { 0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, -- { 0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, -- { 0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, -- { 0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, -- { 0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, -- { 0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, -- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, -- { 0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, -- { 0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, -- { 0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, -- { 0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, -- { 0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, -- { 0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, -- { 0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, -- { 0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, -- { 0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, -- { 0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, -- { 0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, -- { 0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, -- { 0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, -- { 0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, -- { 0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, -- { 0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, -- { 0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, -- { 0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, -- { 0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, -- { 0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, -- { 0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, -- { 0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, -- { 0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, -- { 0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, -- { 0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, -- { 0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, -- { 0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, -- { 0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, -- { 0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, -- { 0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, -- { 0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, -- { 0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, -- { 0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, -- { 0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, -- { 0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, -- { 0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, -- { 0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, -- { 0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, -- { 0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, -- { 0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, -- { 0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, -- { 0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, -- { 0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, -- { 0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, -- { 0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, -- { 0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, -- { 0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, -- { 0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, -- { 0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, -- { 0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, -- { 0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, -- { 0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, -- { 0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, -- { 0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, -- { 0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, -- { 0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, -- { 0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, -- { 0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, -- { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, -- { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000 }, -- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, -+ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e}, -+ {0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0}, -+ {0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, -+ {0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, -+ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, -+ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e}, -+ {0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18}, -+ {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, -+ {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010}, -+ {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c}, -+ {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, -+ {0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, -+ {0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, -+ {0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, -+ {0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, -+ {0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, -+ {0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, -+ {0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, -+ {0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, -+ {0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, -+ {0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, -+ {0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, -+ {0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, -+ {0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, -+ {0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, -+ {0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, -+ {0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, -+ {0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, -+ {0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, -+ {0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, -+ {0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, -+ {0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, -+ {0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, -+ {0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, -+ {0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, -+ {0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, -+ {0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, -+ {0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, -+ {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, -+ {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, -+ {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, -+ {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, -+ {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, -+ {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, -+ {0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, -+ {0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, -+ {0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, -+ {0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, -+ {0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, -+ {0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, -+ {0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, -+ {0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, -+ {0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, -+ {0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, -+ {0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, -+ {0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, -+ {0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, -+ {0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, -+ {0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, -+ {0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, -+ {0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, -+ {0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, -+ {0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, -+ {0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, -+ {0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, -+ {0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, -+ {0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, -+ {0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, -+ {0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, -+ {0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, -+ {0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, -+ {0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, -+ {0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, -+ {0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, -+ {0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, -+ {0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, -+ {0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, -+ {0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, -+ {0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, -+ {0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, -+ {0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, -+ {0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, -+ {0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, -+ {0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, -+ {0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, -+ {0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, -+ {0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, -+ {0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, -+ {0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, -+ {0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, -+ {0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, -+ {0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, -+ {0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, -+ {0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, -+ {0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, -+ {0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, -+ {0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, -+ {0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, -+ {0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, -+ {0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, -+ {0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, -+ {0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, -+ {0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, -+ {0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, -+ {0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, -+ {0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, -+ {0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, -+ {0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, -+ {0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, -+ {0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, -+ {0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, -+ {0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, -+ {0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, -+ {0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, -+ {0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, -+ {0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, -+ {0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, -+ {0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, -+ {0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, -+ {0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, -+ {0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, -+ {0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, -+ {0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, -+ {0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, -+ {0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, -+ {0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, -+ {0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, -+ {0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, -+ {0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, -+ {0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, -+ {0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, -+ {0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, -+ {0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, -+ {0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, -+ {0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, -+ {0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, -+ {0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, -+ {0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, -+ {0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, -+ {0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, -+ {0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, -+ {0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, -+ {0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, -+ {0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, -+ {0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, -+ {0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, -+ {0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, -+ {0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, -+ {0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, -+ {0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, -+ {0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, -+ {0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, -+ {0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, -+ {0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, -+ {0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, -+ {0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, -+ {0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, -+ {0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, -+ {0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, -+ {0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, -+ {0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, -+ {0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, -+ {0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, -+ {0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, -+ {0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, -+ {0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, -+ {0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, -+ {0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, -+ {0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, -+ {0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, -+ {0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, -+ {0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, -+ {0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, -+ {0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, -+ {0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, -+ {0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, -+ {0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, -+ {0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, -+ {0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, -+ {0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, -+ {0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, -+ {0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, -+ {0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, -+ {0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, -+ {0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, -+ {0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, -+ {0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, -+ {0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, -+ {0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004}, -+ {0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, -+ {0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000}, -+ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, - }; - - static const u32 ar9285Common_9285_1_2[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020045 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00004024, 0x0000001f }, -- { 0x00004060, 0x00000000 }, -- { 0x00004064, 0x00000000 }, -- { 0x00007010, 0x00000031 }, -- { 0x00007034, 0x00000002 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x00000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x00008070, 0x00000000 }, -- { 0x000080c0, 0x2a80001a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008120, 0x08f04810 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0xffffffff }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c0, 0x00000000 }, -- { 0x000081d0, 0x0000320a }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008264, 0x88a00010 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x0000829c, 0x00000000 }, -- { 0x00008300, 0x00000040 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000001 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00ff0000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x00010380 }, -- { 0x00008344, 0x00481043 }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xafe68e30 }, -- { 0x00009810, 0xfd14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x0000984c, 0x0040233c }, -- { 0x00009854, 0x00000044 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x00009910, 0x01002310 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x04900000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009940, 0x14750604 }, -- { 0x00009948, 0x9280c00a }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5f3ca3de }, -- { 0x00009958, 0x2108ecff }, -- { 0x00009968, 0x000003ce }, -- { 0x00009970, 0x192bb514 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x2def0400 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099b4, 0x00000820 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000000 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099f0, 0x00000000 }, -- { 0x0000a208, 0x803e68c8 }, -- { 0x0000a210, 0x4080a333 }, -- { 0x0000a214, 0x00206c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x01834061 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x000003b5 }, -- { 0x0000a22c, 0x00000000 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a244, 0x00000000 }, -- { 0x0000a248, 0xfffffffc }, -- { 0x0000a24c, 0x00000000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0ccb5380 }, -- { 0x0000a25c, 0x15151501 }, -- { 0x0000a260, 0xdfa90f01 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0ebae9e6 }, -- { 0x0000d270, 0x0d820820 }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3e4, 0x00000000 }, -- { 0x0000a3e8, 0x18c43433 }, -- { 0x0000a3ec, 0x00f70081 }, -- { 0x00007800, 0x00140000 }, -- { 0x00007804, 0x0e4548d8 }, -- { 0x00007808, 0x54214514 }, -- { 0x0000780c, 0x02025830 }, -- { 0x00007810, 0x71c0d388 }, -- { 0x0000781c, 0x00000000 }, -- { 0x00007824, 0x00d86fff }, -- { 0x0000782c, 0x6e36d97b }, -- { 0x00007834, 0x71400087 }, -- { 0x00007844, 0x000c0db6 }, -- { 0x00007848, 0x6db6246f }, -- { 0x0000784c, 0x6d9b66db }, -- { 0x00007850, 0x6d8c6dba }, -- { 0x00007854, 0x00040000 }, -- { 0x00007858, 0xdb003012 }, -- { 0x0000785c, 0x04924914 }, -- { 0x00007860, 0x21084210 }, -- { 0x00007864, 0xf7d7ffde }, -- { 0x00007868, 0xc2034080 }, -- { 0x00007870, 0x10142c00 }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020045}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00004024, 0x0000001f}, -+ {0x00004060, 0x00000000}, -+ {0x00004064, 0x00000000}, -+ {0x00007010, 0x00000031}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x00000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x00008070, 0x00000000}, -+ {0x000080c0, 0x2a80001a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008120, 0x08f04810}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c0, 0x00000000}, -+ {0x000081d0, 0x0000320a}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x88a00010}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000040}, -+ {0x00008314, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000001}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x00010380}, -+ {0x00008344, 0x00481043}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xafe68e30}, -+ {0x00009810, 0xfd14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x0000984c, 0x0040233c}, -+ {0x00009854, 0x00000044}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x00009910, 0x01002310}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x04900000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009940, 0x14750604}, -+ {0x00009948, 0x9280c00a}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5f3ca3de}, -+ {0x00009958, 0x2108ecff}, -+ {0x00009968, 0x000003ce}, -+ {0x00009970, 0x192bb514}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x2def0400}, -+ {0x000099b0, 0x03051000}, -+ {0x000099b4, 0x00000820}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000000}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099f0, 0x00000000}, -+ {0x0000a208, 0x803e68c8}, -+ {0x0000a210, 0x4080a333}, -+ {0x0000a214, 0x00206c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x01834061}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x000003b5}, -+ {0x0000a22c, 0x00000000}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a244, 0x00000000}, -+ {0x0000a248, 0xfffffffc}, -+ {0x0000a24c, 0x00000000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0ccb5380}, -+ {0x0000a25c, 0x15151501}, -+ {0x0000a260, 0xdfa90f01}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0ebae9e6}, -+ {0x0000d270, 0x0d820820}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3e4, 0x00000000}, -+ {0x0000a3e8, 0x18c43433}, -+ {0x0000a3ec, 0x00f70081}, -+ {0x00007800, 0x00140000}, -+ {0x00007804, 0x0e4548d8}, -+ {0x00007808, 0x54214514}, -+ {0x0000780c, 0x02025830}, -+ {0x00007810, 0x71c0d388}, -+ {0x0000781c, 0x00000000}, -+ {0x00007824, 0x00d86fff}, -+ {0x0000782c, 0x6e36d97b}, -+ {0x00007834, 0x71400087}, -+ {0x00007844, 0x000c0db6}, -+ {0x00007848, 0x6db6246f}, -+ {0x0000784c, 0x6d9b66db}, -+ {0x00007850, 0x6d8c6dba}, -+ {0x00007854, 0x00040000}, -+ {0x00007858, 0xdb003012}, -+ {0x0000785c, 0x04924914}, -+ {0x00007860, 0x21084210}, -+ {0x00007864, 0xf7d7ffde}, -+ {0x00007868, 0xc2034080}, -+ {0x00007870, 0x10142c00}, - }; - - static const u32 ar9285Modes_high_power_tx_gain_9285_1_2[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000 }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000 }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000 }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000 }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000 }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000 }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000 }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000 }, -- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, -- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, -- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8 }, -- { 0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b }, -- { 0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e }, -- { 0x00007838, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803 }, -- { 0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe }, -- { 0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20 }, -- { 0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe }, -- { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652 }, -- { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, -- { 0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7 }, -- { 0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, -- { 0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, -- { 0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, -- { 0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000}, -+ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, -+ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, -+ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8}, -+ {0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b}, -+ {0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e}, -+ {0x00007838, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803}, -+ {0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe}, -+ {0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20}, -+ {0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe}, -+ {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652}, -+ {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, -+ {0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7}, -+ {0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, -+ {0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, -+ {0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, -+ {0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, - }; - - static const u32 ar9285Modes_original_tx_gain_9285_1_2[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000 }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000 }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000 }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000 }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000 }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000 }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000 }, -- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, -- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, -- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8 }, -- { 0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b }, -- { 0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e }, -- { 0x00007838, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801 }, -- { 0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe }, -- { 0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20 }, -- { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, -- { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, -- { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652 }, -- { 0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, -- { 0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c }, -- { 0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, -- { 0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, -- { 0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, -- { 0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000}, -+ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, -+ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, -+ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8}, -+ {0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b}, -+ {0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e}, -+ {0x00007838, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801}, -+ {0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe}, -+ {0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20}, -+ {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4}, -+ {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04}, -+ {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652}, -+ {0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, -+ {0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c}, -+ {0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, -+ {0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, -+ {0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, -+ {0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, - }; - - static const u32 ar9285Modes_XE2_0_normal_power[][6] = { -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000 }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000 }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000 }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000 }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000 }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000 }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000 }, -- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, -- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, -- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8 }, -- { 0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b }, -- { 0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6dbae }, -- { 0x00007838, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441 }, -- { 0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe }, -- { 0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c }, -- { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, -- { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, -- { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652 }, -- { 0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, -- { 0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c }, -- { 0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, -- { 0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, -- { 0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, -- { 0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000}, -+ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, -+ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, -+ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8}, -+ {0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b}, -+ {0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6dbae}, -+ {0x00007838, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441}, -+ {0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe}, -+ {0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c}, -+ {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4}, -+ {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04}, -+ {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652}, -+ {0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, -+ {0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c}, -+ {0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, -+ {0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, -+ {0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c}, -+ {0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c}, - }; - - static const u32 ar9285Modes_XE2_0_high_power[][6] = { -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000 }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000 }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000 }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000 }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000 }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000 }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000 }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000 }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000 }, -- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, -- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, -- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8 }, -- { 0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b }, -- { 0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e }, -- { 0x00007838, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443 }, -- { 0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe }, -- { 0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c }, -- { 0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe }, -- { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652 }, -- { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, -- { 0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7 }, -- { 0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, -- { 0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, -- { 0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, -- { 0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000}, -+ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, -+ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, -+ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8}, -+ {0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b}, -+ {0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e}, -+ {0x00007838, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443}, -+ {0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe}, -+ {0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c}, -+ {0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe}, -+ {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652}, -+ {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, -+ {0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7}, -+ {0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, -+ {0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, -+ {0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, -+ {0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, - }; - - static const u32 ar9285PciePhy_clkreq_always_on_L1_9285_1_2[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffd }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffd}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - - static const u32 ar9285PciePhy_clkreq_off_L1_9285_1_2[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffc }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffc}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - --/* AR9287 Revision 10 */ - static const u32 ar9287Modes_9287_1_0[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, -- { 0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f }, -- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, -- { 0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a }, -- { 0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880 }, -- { 0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e }, -- { 0x00009828, 0x00000000, 0x00000000, 0x0a020001, 0x0a020001, 0x0a020001 }, -- { 0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e }, -- { 0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0 }, -- { 0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, -- { 0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, -- { 0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e }, -- { 0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18 }, -- { 0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, -- { 0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, -- { 0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010 }, -- { 0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210 }, -- { 0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce }, -- { 0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c }, -- { 0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -- { 0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444 }, -- { 0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000 }, -- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, -- { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -+ {0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, -+ {0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f}, -+ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, -+ {0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a}, -+ {0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880}, -+ {0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e}, -+ {0x00009828, 0x00000000, 0x00000000, 0x0a020001, 0x0a020001, 0x0a020001}, -+ {0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e}, -+ {0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0}, -+ {0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2}, -+ {0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e}, -+ {0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18}, -+ {0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, -+ {0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010}, -+ {0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, -+ {0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, -+ {0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210}, -+ {0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce}, -+ {0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c}, -+ {0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444}, -+ {0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000}, -+ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, -+ {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - }; - - static const u32 ar9287Common_9287_1_0[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020015 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00004024, 0x0000001f }, -- { 0x00004060, 0x00000000 }, -- { 0x00004064, 0x00000000 }, -- { 0x00007010, 0x00000033 }, -- { 0x00007020, 0x00000000 }, -- { 0x00007034, 0x00000002 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x40000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x00008070, 0x00000000 }, -- { 0x000080c0, 0x2a80001a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0xffffffff }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x18487320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c0, 0x00000000 }, -- { 0x000081c4, 0x00000000 }, -- { 0x000081d4, 0x00000000 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008264, 0x88a00010 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x000000ff }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x0000829c, 0x00000000 }, -- { 0x00008300, 0x00000040 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000007 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00ff0000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x000107ff }, -- { 0x00008344, 0x01c81043 }, -- { 0x00008360, 0xffffffff }, -- { 0x00008364, 0xffffffff }, -- { 0x00008368, 0x00000000 }, -- { 0x00008370, 0x00000000 }, -- { 0x00008374, 0x000000ff }, -- { 0x00008378, 0x00000000 }, -- { 0x0000837c, 0x00000000 }, -- { 0x00008380, 0xffffffff }, -- { 0x00008384, 0xffffffff }, -- { 0x00008390, 0x0fffffff }, -- { 0x00008394, 0x0fffffff }, -- { 0x00008398, 0x00000000 }, -- { 0x0000839c, 0x00000000 }, -- { 0x000083a0, 0x00000000 }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xafe68e30 }, -- { 0x00009810, 0xfd14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x0000984c, 0x0040233c }, -- { 0x0000a84c, 0x0040233c }, -- { 0x00009854, 0x00000044 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x00009910, 0x10002310 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x04900000 }, -- { 0x0000a920, 0x04900000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009930, 0x00000000 }, -- { 0x0000a930, 0x00000000 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009948, 0x9280c00a }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5f3ca3de }, -- { 0x00009958, 0x0108ecff }, -- { 0x00009940, 0x14750604 }, -- { 0x0000c95c, 0x004b6a8e }, -- { 0x00009970, 0x990bb515 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x0c6f0000 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099b4, 0x00000820 }, -- { 0x000099c4, 0x06336f77 }, -- { 0x000099c8, 0x6af65329 }, -- { 0x000099cc, 0x08f186c8 }, -- { 0x000099d0, 0x00046384 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000000 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099f0, 0x00000000 }, -- { 0x000099fc, 0x00001042 }, -- { 0x0000a1f4, 0x00fffeff }, -- { 0x0000a1f8, 0x00f5f9ff }, -- { 0x0000a1fc, 0xb79f6427 }, -- { 0x0000a208, 0x803e4788 }, -- { 0x0000a210, 0x4080a333 }, -- { 0x0000a214, 0x40206c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x01834061 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x000003b5 }, -- { 0x0000a22c, 0x233f7180 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a23c, 0x13c889af }, -- { 0x0000a240, 0x38490a20 }, -- { 0x0000a244, 0x00000000 }, -- { 0x0000a248, 0xfffffffc }, -- { 0x0000a24c, 0x00000000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0cdbd380 }, -- { 0x0000a25c, 0x0f0f0f01 }, -- { 0x0000a260, 0xdfa91f01 }, -- { 0x0000a264, 0x00418a11 }, -- { 0x0000b264, 0x00418a11 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0e79e5c6 }, -- { 0x0000b26c, 0x0e79e5c6 }, -- { 0x0000d270, 0x00820820 }, -- { 0x0000a278, 0x1ce739ce }, -- { 0x0000a27c, 0x050701ce }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x1ce739ce }, -- { 0x0000a398, 0x000001ce }, -- { 0x0000b398, 0x000001ce }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3c8, 0x00000246 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x1ce739ce }, -- { 0x0000a3e0, 0x000001ce }, -- { 0x0000a3e4, 0x00000000 }, -- { 0x0000a3e8, 0x18c43433 }, -- { 0x0000a3ec, 0x00f70081 }, -- { 0x0000a3f0, 0x01036a1e }, -- { 0x0000a3f4, 0x00000000 }, -- { 0x0000b3f4, 0x00000000 }, -- { 0x0000a7d8, 0x00000001 }, -- { 0x00007800, 0x00000800 }, -- { 0x00007804, 0x6c35ffb0 }, -- { 0x00007808, 0x6db6c000 }, -- { 0x0000780c, 0x6db6cb30 }, -- { 0x00007810, 0x6db6cb6c }, -- { 0x00007814, 0x0501e200 }, -- { 0x00007818, 0x0094128d }, -- { 0x0000781c, 0x976ee392 }, -- { 0x00007820, 0xf75ff6fc }, -- { 0x00007824, 0x00040000 }, -- { 0x00007828, 0xdb003012 }, -- { 0x0000782c, 0x04924914 }, -- { 0x00007830, 0x21084210 }, -- { 0x00007834, 0x00140000 }, -- { 0x00007838, 0x0e4548d8 }, -- { 0x0000783c, 0x54214514 }, -- { 0x00007840, 0x02025820 }, -- { 0x00007844, 0x71c0d388 }, -- { 0x00007848, 0x934934a8 }, -- { 0x00007850, 0x00000000 }, -- { 0x00007854, 0x00000800 }, -- { 0x00007858, 0x6c35ffb0 }, -- { 0x0000785c, 0x6db6c000 }, -- { 0x00007860, 0x6db6cb2c }, -- { 0x00007864, 0x6db6cb6c }, -- { 0x00007868, 0x0501e200 }, -- { 0x0000786c, 0x0094128d }, -- { 0x00007870, 0x976ee392 }, -- { 0x00007874, 0xf75ff6fc }, -- { 0x00007878, 0x00040000 }, -- { 0x0000787c, 0xdb003012 }, -- { 0x00007880, 0x04924914 }, -- { 0x00007884, 0x21084210 }, -- { 0x00007888, 0x001b6db0 }, -- { 0x0000788c, 0x00376b63 }, -- { 0x00007890, 0x06db6db6 }, -- { 0x00007894, 0x006d8000 }, -- { 0x00007898, 0x48100000 }, -- { 0x0000789c, 0x00000000 }, -- { 0x000078a0, 0x08000000 }, -- { 0x000078a4, 0x0007ffd8 }, -- { 0x000078a8, 0x0007ffd8 }, -- { 0x000078ac, 0x001c0020 }, -- { 0x000078b0, 0x000611eb }, -- { 0x000078b4, 0x40008080 }, -- { 0x000078b8, 0x2a850160 }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020015}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00004024, 0x0000001f}, -+ {0x00004060, 0x00000000}, -+ {0x00004064, 0x00000000}, -+ {0x00007010, 0x00000033}, -+ {0x00007020, 0x00000000}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x40000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x00008070, 0x00000000}, -+ {0x000080c0, 0x2a80001a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x18487320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c0, 0x00000000}, -+ {0x000081c4, 0x00000000}, -+ {0x000081d4, 0x00000000}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x88a00010}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x000000ff}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000040}, -+ {0x00008314, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x000107ff}, -+ {0x00008344, 0x01c81043}, -+ {0x00008360, 0xffffffff}, -+ {0x00008364, 0xffffffff}, -+ {0x00008368, 0x00000000}, -+ {0x00008370, 0x00000000}, -+ {0x00008374, 0x000000ff}, -+ {0x00008378, 0x00000000}, -+ {0x0000837c, 0x00000000}, -+ {0x00008380, 0xffffffff}, -+ {0x00008384, 0xffffffff}, -+ {0x00008390, 0x0fffffff}, -+ {0x00008394, 0x0fffffff}, -+ {0x00008398, 0x00000000}, -+ {0x0000839c, 0x00000000}, -+ {0x000083a0, 0x00000000}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xafe68e30}, -+ {0x00009810, 0xfd14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x0000984c, 0x0040233c}, -+ {0x0000a84c, 0x0040233c}, -+ {0x00009854, 0x00000044}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x00009910, 0x10002310}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x04900000}, -+ {0x0000a920, 0x04900000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009930, 0x00000000}, -+ {0x0000a930, 0x00000000}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009948, 0x9280c00a}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5f3ca3de}, -+ {0x00009958, 0x0108ecff}, -+ {0x00009940, 0x14750604}, -+ {0x0000c95c, 0x004b6a8e}, -+ {0x00009970, 0x990bb515}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x0c6f0000}, -+ {0x000099b0, 0x03051000}, -+ {0x000099b4, 0x00000820}, -+ {0x000099c4, 0x06336f77}, -+ {0x000099c8, 0x6af65329}, -+ {0x000099cc, 0x08f186c8}, -+ {0x000099d0, 0x00046384}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000000}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099f0, 0x00000000}, -+ {0x000099fc, 0x00001042}, -+ {0x0000a1f4, 0x00fffeff}, -+ {0x0000a1f8, 0x00f5f9ff}, -+ {0x0000a1fc, 0xb79f6427}, -+ {0x0000a208, 0x803e4788}, -+ {0x0000a210, 0x4080a333}, -+ {0x0000a214, 0x40206c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x01834061}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x000003b5}, -+ {0x0000a22c, 0x233f7180}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a23c, 0x13c889af}, -+ {0x0000a240, 0x38490a20}, -+ {0x0000a244, 0x00000000}, -+ {0x0000a248, 0xfffffffc}, -+ {0x0000a24c, 0x00000000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0cdbd380}, -+ {0x0000a25c, 0x0f0f0f01}, -+ {0x0000a260, 0xdfa91f01}, -+ {0x0000a264, 0x00418a11}, -+ {0x0000b264, 0x00418a11}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0e79e5c6}, -+ {0x0000b26c, 0x0e79e5c6}, -+ {0x0000d270, 0x00820820}, -+ {0x0000a278, 0x1ce739ce}, -+ {0x0000a27c, 0x050701ce}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x1ce739ce}, -+ {0x0000a398, 0x000001ce}, -+ {0x0000b398, 0x000001ce}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3c8, 0x00000246}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x1ce739ce}, -+ {0x0000a3e0, 0x000001ce}, -+ {0x0000a3e4, 0x00000000}, -+ {0x0000a3e8, 0x18c43433}, -+ {0x0000a3ec, 0x00f70081}, -+ {0x0000a3f0, 0x01036a1e}, -+ {0x0000a3f4, 0x00000000}, -+ {0x0000b3f4, 0x00000000}, -+ {0x0000a7d8, 0x00000001}, -+ {0x00007800, 0x00000800}, -+ {0x00007804, 0x6c35ffb0}, -+ {0x00007808, 0x6db6c000}, -+ {0x0000780c, 0x6db6cb30}, -+ {0x00007810, 0x6db6cb6c}, -+ {0x00007814, 0x0501e200}, -+ {0x00007818, 0x0094128d}, -+ {0x0000781c, 0x976ee392}, -+ {0x00007820, 0xf75ff6fc}, -+ {0x00007824, 0x00040000}, -+ {0x00007828, 0xdb003012}, -+ {0x0000782c, 0x04924914}, -+ {0x00007830, 0x21084210}, -+ {0x00007834, 0x00140000}, -+ {0x00007838, 0x0e4548d8}, -+ {0x0000783c, 0x54214514}, -+ {0x00007840, 0x02025820}, -+ {0x00007844, 0x71c0d388}, -+ {0x00007848, 0x934934a8}, -+ {0x00007850, 0x00000000}, -+ {0x00007854, 0x00000800}, -+ {0x00007858, 0x6c35ffb0}, -+ {0x0000785c, 0x6db6c000}, -+ {0x00007860, 0x6db6cb2c}, -+ {0x00007864, 0x6db6cb6c}, -+ {0x00007868, 0x0501e200}, -+ {0x0000786c, 0x0094128d}, -+ {0x00007870, 0x976ee392}, -+ {0x00007874, 0xf75ff6fc}, -+ {0x00007878, 0x00040000}, -+ {0x0000787c, 0xdb003012}, -+ {0x00007880, 0x04924914}, -+ {0x00007884, 0x21084210}, -+ {0x00007888, 0x001b6db0}, -+ {0x0000788c, 0x00376b63}, -+ {0x00007890, 0x06db6db6}, -+ {0x00007894, 0x006d8000}, -+ {0x00007898, 0x48100000}, -+ {0x0000789c, 0x00000000}, -+ {0x000078a0, 0x08000000}, -+ {0x000078a4, 0x0007ffd8}, -+ {0x000078a8, 0x0007ffd8}, -+ {0x000078ac, 0x001c0020}, -+ {0x000078b0, 0x000611eb}, -+ {0x000078b4, 0x40008080}, -+ {0x000078b8, 0x2a850160}, - }; - - static const u32 ar9287Modes_tx_gain_9287_1_0[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a }, -- { 0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c }, -- { 0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc }, -- { 0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4 }, -- { 0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc }, -- { 0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede }, -- { 0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e }, -- { 0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e }, -- { 0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e }, -- { 0x0000a780, 0x00000000, 0x00000000, 0x00000060, 0x00000060, 0x00000060 }, -- { 0x0000a784, 0x00000000, 0x00000000, 0x00004062, 0x00004062, 0x00004062 }, -- { 0x0000a788, 0x00000000, 0x00000000, 0x00008064, 0x00008064, 0x00008064 }, -- { 0x0000a78c, 0x00000000, 0x00000000, 0x0000c0a4, 0x0000c0a4, 0x0000c0a4 }, -- { 0x0000a790, 0x00000000, 0x00000000, 0x000100b0, 0x000100b0, 0x000100b0 }, -- { 0x0000a794, 0x00000000, 0x00000000, 0x000140b2, 0x000140b2, 0x000140b2 }, -- { 0x0000a798, 0x00000000, 0x00000000, 0x000180b4, 0x000180b4, 0x000180b4 }, -- { 0x0000a79c, 0x00000000, 0x00000000, 0x0001c0f4, 0x0001c0f4, 0x0001c0f4 }, -- { 0x0000a7a0, 0x00000000, 0x00000000, 0x00020134, 0x00020134, 0x00020134 }, -- { 0x0000a7a4, 0x00000000, 0x00000000, 0x000240fe, 0x000240fe, 0x000240fe }, -- { 0x0000a7a8, 0x00000000, 0x00000000, 0x0002813e, 0x0002813e, 0x0002813e }, -- { 0x0000a7ac, 0x00000000, 0x00000000, 0x0002c17e, 0x0002c17e, 0x0002c17e }, -- { 0x0000a7b0, 0x00000000, 0x00000000, 0x000301be, 0x000301be, 0x000301be }, -- { 0x0000a7b4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7b8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7bc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7c0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7c4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7c8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7cc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7d0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a7d4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, -- { 0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000 }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a}, -+ {0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c}, -+ {0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc}, -+ {0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4}, -+ {0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc}, -+ {0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede}, -+ {0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e}, -+ {0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e}, -+ {0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e}, -+ {0x0000a780, 0x00000000, 0x00000000, 0x00000060, 0x00000060, 0x00000060}, -+ {0x0000a784, 0x00000000, 0x00000000, 0x00004062, 0x00004062, 0x00004062}, -+ {0x0000a788, 0x00000000, 0x00000000, 0x00008064, 0x00008064, 0x00008064}, -+ {0x0000a78c, 0x00000000, 0x00000000, 0x0000c0a4, 0x0000c0a4, 0x0000c0a4}, -+ {0x0000a790, 0x00000000, 0x00000000, 0x000100b0, 0x000100b0, 0x000100b0}, -+ {0x0000a794, 0x00000000, 0x00000000, 0x000140b2, 0x000140b2, 0x000140b2}, -+ {0x0000a798, 0x00000000, 0x00000000, 0x000180b4, 0x000180b4, 0x000180b4}, -+ {0x0000a79c, 0x00000000, 0x00000000, 0x0001c0f4, 0x0001c0f4, 0x0001c0f4}, -+ {0x0000a7a0, 0x00000000, 0x00000000, 0x00020134, 0x00020134, 0x00020134}, -+ {0x0000a7a4, 0x00000000, 0x00000000, 0x000240fe, 0x000240fe, 0x000240fe}, -+ {0x0000a7a8, 0x00000000, 0x00000000, 0x0002813e, 0x0002813e, 0x0002813e}, -+ {0x0000a7ac, 0x00000000, 0x00000000, 0x0002c17e, 0x0002c17e, 0x0002c17e}, -+ {0x0000a7b0, 0x00000000, 0x00000000, 0x000301be, 0x000301be, 0x000301be}, -+ {0x0000a7b4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7b8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7bc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7c0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7c4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7c8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7cc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7d0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a7d4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe}, -+ {0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000}, - }; - -- - static const u32 ar9287Modes_rx_gain_9287_1_0[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, -- { 0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, -- { 0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, -- { 0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, -- { 0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, -- { 0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, -- { 0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, -- { 0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, -- { 0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, -- { 0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, -- { 0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, -- { 0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, -- { 0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, -- { 0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, -- { 0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, -- { 0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, -- { 0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, -- { 0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, -- { 0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, -- { 0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, -- { 0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, -- { 0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, -- { 0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, -- { 0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, -- { 0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, -- { 0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, -- { 0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, -- { 0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, -- { 0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, -- { 0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, -- { 0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, -- { 0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, -- { 0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, -- { 0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, -- { 0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, -- { 0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, -- { 0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, -- { 0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, -- { 0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, -- { 0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, -- { 0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, -- { 0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, -- { 0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, -- { 0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, -- { 0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, -- { 0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, -- { 0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, -- { 0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, -- { 0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, -- { 0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, -- { 0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, -- { 0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, -- { 0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, -- { 0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, -- { 0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, -- { 0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, -- { 0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, -- { 0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, -- { 0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, -- { 0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, -- { 0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, -- { 0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, -- { 0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, -- { 0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, -- { 0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, -- { 0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, -- { 0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, -- { 0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, -- { 0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, -- { 0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, -- { 0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, -- { 0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, -- { 0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, -- { 0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, -- { 0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, -- { 0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, -- { 0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, -- { 0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, -- { 0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, -- { 0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, -- { 0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, -- { 0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, -- { 0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, -- { 0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, -- { 0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, -- { 0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, -- { 0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, -- { 0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, -- { 0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, -- { 0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, -- { 0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, -- { 0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, -- { 0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, -- { 0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, -- { 0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, -- { 0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, -- { 0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, -- { 0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, -- { 0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, -- { 0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, -- { 0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, -- { 0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, -- { 0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, -- { 0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, -- { 0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, -- { 0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, -- { 0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, -- { 0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, -- { 0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, -- { 0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, -- { 0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, -- { 0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, -- { 0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, -- { 0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, -- { 0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, -- { 0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, -- { 0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, -- { 0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, -- { 0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, -- { 0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, -- { 0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, -- { 0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, -- { 0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, -- { 0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, -- { 0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, -- { 0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, -- { 0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, -- { 0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, -- { 0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, -- { 0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, -- { 0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, -- { 0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, -- { 0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, -- { 0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, -- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, -- { 0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, -- { 0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, -- { 0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, -- { 0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, -- { 0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, -- { 0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, -- { 0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, -- { 0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, -- { 0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, -- { 0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, -- { 0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, -- { 0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, -- { 0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, -- { 0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, -- { 0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, -- { 0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, -- { 0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, -- { 0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, -- { 0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, -- { 0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, -- { 0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, -- { 0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, -- { 0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, -- { 0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, -- { 0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, -- { 0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, -- { 0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, -- { 0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, -- { 0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, -- { 0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, -- { 0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, -- { 0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, -- { 0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, -- { 0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, -- { 0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, -- { 0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, -- { 0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, -- { 0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, -- { 0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, -- { 0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, -- { 0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, -- { 0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, -- { 0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, -- { 0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, -- { 0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, -- { 0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, -- { 0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, -- { 0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, -- { 0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, -- { 0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, -- { 0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, -- { 0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, -- { 0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, -- { 0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, -- { 0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, -- { 0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, -- { 0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, -- { 0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, -- { 0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, -- { 0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, -- { 0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, -- { 0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, -- { 0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, -- { 0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, -- { 0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, -- { 0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, -- { 0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, -- { 0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, -- { 0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, -- { 0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, -- { 0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, -- { 0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, -- { 0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, -+ {0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, -+ {0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, -+ {0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, -+ {0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, -+ {0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, -+ {0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, -+ {0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, -+ {0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, -+ {0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, -+ {0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, -+ {0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, -+ {0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, -+ {0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, -+ {0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, -+ {0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, -+ {0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, -+ {0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, -+ {0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, -+ {0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, -+ {0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, -+ {0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, -+ {0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, -+ {0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, -+ {0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, -+ {0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, -+ {0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, -+ {0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, -+ {0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, -+ {0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, -+ {0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, -+ {0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, -+ {0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, -+ {0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, -+ {0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, -+ {0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, -+ {0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, -+ {0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, -+ {0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, -+ {0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, -+ {0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, -+ {0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, -+ {0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, -+ {0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, -+ {0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, -+ {0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, -+ {0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, -+ {0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, -+ {0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, -+ {0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, -+ {0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, -+ {0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, -+ {0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, -+ {0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, -+ {0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, -+ {0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, -+ {0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, -+ {0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, -+ {0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, -+ {0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, -+ {0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, -+ {0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, -+ {0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, -+ {0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, -+ {0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, -+ {0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, -+ {0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, -+ {0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, -+ {0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, -+ {0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, -+ {0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, -+ {0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, -+ {0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, -+ {0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, -+ {0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, -+ {0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, -+ {0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, -+ {0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, -+ {0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, -+ {0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, -+ {0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, -+ {0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, -+ {0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, -+ {0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, -+ {0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, -+ {0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, -+ {0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, -+ {0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, -+ {0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, -+ {0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, -+ {0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, -+ {0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, -+ {0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, -+ {0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, -+ {0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, -+ {0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, -+ {0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, -+ {0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, -+ {0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, -+ {0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, -+ {0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, -+ {0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, -+ {0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, -+ {0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, -+ {0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, -+ {0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, -+ {0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, -+ {0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, -+ {0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, -+ {0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, -+ {0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, -+ {0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, -+ {0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, -+ {0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, -+ {0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, -+ {0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, -+ {0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, -+ {0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, -+ {0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, -+ {0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, -+ {0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, -+ {0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, -+ {0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, -+ {0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, -+ {0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, -+ {0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, -+ {0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, -+ {0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, -+ {0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, -+ {0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, -+ {0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, -+ {0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, -+ {0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, -+ {0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, -+ {0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, -+ {0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, -+ {0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, -+ {0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, -+ {0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, -+ {0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, -+ {0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, -+ {0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, -+ {0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, -+ {0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, -+ {0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, -+ {0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, -+ {0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, -+ {0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, -+ {0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, -+ {0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, -+ {0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, -+ {0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, -+ {0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, -+ {0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, -+ {0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, -+ {0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, -+ {0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, -+ {0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, -+ {0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, -+ {0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, -+ {0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, -+ {0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, -+ {0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, -+ {0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, -+ {0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, -+ {0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, -+ {0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, -+ {0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, -+ {0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, -+ {0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, -+ {0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, -+ {0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, -+ {0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, -+ {0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, -+ {0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, -+ {0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, -+ {0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, -+ {0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, -+ {0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, -+ {0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, -+ {0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, -+ {0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, -+ {0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, -+ {0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, -+ {0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, -+ {0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, -+ {0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, -+ {0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, -+ {0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, -+ {0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, -+ {0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, -+ {0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, -+ {0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, -+ {0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, -+ {0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, -+ {0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, -+ {0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, -+ {0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, -+ {0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, -+ {0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, -+ {0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, -+ {0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, -+ {0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, -+ {0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, -+ {0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, -+ {0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, -+ {0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, -+ {0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, -+ {0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, - }; - - static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_0[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffd }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffd}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - - static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_0[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffc }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffc}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - --/* AR9287 Revision 11 */ -- - static const u32 ar9287Modes_9287_1_1[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, -- { 0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f }, -- { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, -- { 0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a }, -- { 0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880 }, -- { 0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e }, -- { 0x00009828, 0x00000000, 0x00000000, 0x3a020001, 0x3a020001, 0x3a020001 }, -- { 0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e }, -- { 0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0 }, -- { 0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, -- { 0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, -- { 0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e }, -- { 0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18 }, -- { 0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, -- { 0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, -- { 0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010 }, -- { 0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, -- { 0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210 }, -- { 0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce }, -- { 0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c }, -- { 0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -- { 0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444 }, -- { 0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000 }, -- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, -- { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -+ {0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, -+ {0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f}, -+ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, -+ {0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a}, -+ {0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880}, -+ {0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e}, -+ {0x00009828, 0x00000000, 0x00000000, 0x3a020001, 0x3a020001, 0x3a020001}, -+ {0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e}, -+ {0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0}, -+ {0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2}, -+ {0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e}, -+ {0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18}, -+ {0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, -+ {0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010}, -+ {0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, -+ {0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010}, -+ {0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210}, -+ {0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce}, -+ {0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c}, -+ {0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444}, -+ {0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000}, -+ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, -+ {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - }; - - static const u32 ar9287Common_9287_1_1[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020015 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00004024, 0x0000001f }, -- { 0x00004060, 0x00000000 }, -- { 0x00004064, 0x00000000 }, -- { 0x00007010, 0x00000033 }, -- { 0x00007020, 0x00000000 }, -- { 0x00007034, 0x00000002 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x40000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x00008070, 0x00000000 }, -- { 0x000080c0, 0x2a80001a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0xffffffff }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x18487320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c0, 0x00000000 }, -- { 0x000081c4, 0x00000000 }, -- { 0x000081d4, 0x00000000 }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008264, 0x88a00010 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x000000ff }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x0000829c, 0x00000000 }, -- { 0x00008300, 0x00000040 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000007 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00ff0000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x000107ff }, -- { 0x00008344, 0x01c81043 }, -- { 0x00008360, 0xffffffff }, -- { 0x00008364, 0xffffffff }, -- { 0x00008368, 0x00000000 }, -- { 0x00008370, 0x00000000 }, -- { 0x00008374, 0x000000ff }, -- { 0x00008378, 0x00000000 }, -- { 0x0000837c, 0x00000000 }, -- { 0x00008380, 0xffffffff }, -- { 0x00008384, 0xffffffff }, -- { 0x00008390, 0x0fffffff }, -- { 0x00008394, 0x0fffffff }, -- { 0x00008398, 0x00000000 }, -- { 0x0000839c, 0x00000000 }, -- { 0x000083a0, 0x00000000 }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xafe68e30 }, -- { 0x00009810, 0xfd14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x0000984c, 0x0040233c }, -- { 0x0000a84c, 0x0040233c }, -- { 0x00009854, 0x00000044 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x00009910, 0x10002310 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x04900000 }, -- { 0x0000a920, 0x04900000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009930, 0x00000000 }, -- { 0x0000a930, 0x00000000 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009948, 0x9280c00a }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5f3ca3de }, -- { 0x00009958, 0x0108ecff }, -- { 0x00009940, 0x14750604 }, -- { 0x0000c95c, 0x004b6a8e }, -- { 0x00009970, 0x990bb514 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x0c6f0000 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099b4, 0x00000820 }, -- { 0x000099c4, 0x06336f77 }, -- { 0x000099c8, 0x6af6532f }, -- { 0x000099cc, 0x08f186c8 }, -- { 0x000099d0, 0x00046384 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000000 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099f0, 0x00000000 }, -- { 0x000099fc, 0x00001042 }, -- { 0x0000a208, 0x803e4788 }, -- { 0x0000a210, 0x4080a333 }, -- { 0x0000a214, 0x40206c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x01834061 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x000003b5 }, -- { 0x0000a22c, 0x233f7180 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a23c, 0x13c889af }, -- { 0x0000a240, 0x38490a20 }, -- { 0x0000a244, 0x00000000 }, -- { 0x0000a248, 0xfffffffc }, -- { 0x0000a24c, 0x00000000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0cdbd380 }, -- { 0x0000a25c, 0x0f0f0f01 }, -- { 0x0000a260, 0xdfa91f01 }, -- { 0x0000a264, 0x00418a11 }, -- { 0x0000b264, 0x00418a11 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0e79e5c6 }, -- { 0x0000b26c, 0x0e79e5c6 }, -- { 0x0000d270, 0x00820820 }, -- { 0x0000a278, 0x1ce739ce }, -- { 0x0000a27c, 0x050701ce }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a394, 0x1ce739ce }, -- { 0x0000a398, 0x000001ce }, -- { 0x0000b398, 0x000001ce }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3c8, 0x00000246 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3dc, 0x1ce739ce }, -- { 0x0000a3e0, 0x000001ce }, -- { 0x0000a3e4, 0x00000000 }, -- { 0x0000a3e8, 0x18c43433 }, -- { 0x0000a3ec, 0x00f70081 }, -- { 0x0000a3f0, 0x01036a1e }, -- { 0x0000a3f4, 0x00000000 }, -- { 0x0000b3f4, 0x00000000 }, -- { 0x0000a7d8, 0x000003f1 }, -- { 0x00007800, 0x00000800 }, -- { 0x00007804, 0x6c35ffd2 }, -- { 0x00007808, 0x6db6c000 }, -- { 0x0000780c, 0x6db6cb30 }, -- { 0x00007810, 0x6db6cb6c }, -- { 0x00007814, 0x0501e200 }, -- { 0x00007818, 0x0094128d }, -- { 0x0000781c, 0x976ee392 }, -- { 0x00007820, 0xf75ff6fc }, -- { 0x00007824, 0x00040000 }, -- { 0x00007828, 0xdb003012 }, -- { 0x0000782c, 0x04924914 }, -- { 0x00007830, 0x21084210 }, -- { 0x00007834, 0x00140000 }, -- { 0x00007838, 0x0e4548d8 }, -- { 0x0000783c, 0x54214514 }, -- { 0x00007840, 0x02025830 }, -- { 0x00007844, 0x71c0d388 }, -- { 0x00007848, 0x934934a8 }, -- { 0x00007850, 0x00000000 }, -- { 0x00007854, 0x00000800 }, -- { 0x00007858, 0x6c35ffd2 }, -- { 0x0000785c, 0x6db6c000 }, -- { 0x00007860, 0x6db6cb30 }, -- { 0x00007864, 0x6db6cb6c }, -- { 0x00007868, 0x0501e200 }, -- { 0x0000786c, 0x0094128d }, -- { 0x00007870, 0x976ee392 }, -- { 0x00007874, 0xf75ff6fc }, -- { 0x00007878, 0x00040000 }, -- { 0x0000787c, 0xdb003012 }, -- { 0x00007880, 0x04924914 }, -- { 0x00007884, 0x21084210 }, -- { 0x00007888, 0x001b6db0 }, -- { 0x0000788c, 0x00376b63 }, -- { 0x00007890, 0x06db6db6 }, -- { 0x00007894, 0x006d8000 }, -- { 0x00007898, 0x48100000 }, -- { 0x0000789c, 0x00000000 }, -- { 0x000078a0, 0x08000000 }, -- { 0x000078a4, 0x0007ffd8 }, -- { 0x000078a8, 0x0007ffd8 }, -- { 0x000078ac, 0x001c0020 }, -- { 0x000078b0, 0x00060aeb }, -- { 0x000078b4, 0x40008080 }, -- { 0x000078b8, 0x2a850160 }, --}; -- --/* -- * For Japanese regulatory requirements, 2484 MHz requires the following three -- * registers be programmed differently from the channel between 2412 and -- * 2472 MHz. -- */ -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020015}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00004024, 0x0000001f}, -+ {0x00004060, 0x00000000}, -+ {0x00004064, 0x00000000}, -+ {0x00007010, 0x00000033}, -+ {0x00007020, 0x00000000}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x40000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x00008070, 0x00000000}, -+ {0x000080c0, 0x2a80001a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x18487320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c0, 0x00000000}, -+ {0x000081c4, 0x00000000}, -+ {0x000081d4, 0x00000000}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x88a00010}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x000000ff}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000040}, -+ {0x00008314, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000007}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x000107ff}, -+ {0x00008344, 0x01c81043}, -+ {0x00008360, 0xffffffff}, -+ {0x00008364, 0xffffffff}, -+ {0x00008368, 0x00000000}, -+ {0x00008370, 0x00000000}, -+ {0x00008374, 0x000000ff}, -+ {0x00008378, 0x00000000}, -+ {0x0000837c, 0x00000000}, -+ {0x00008380, 0xffffffff}, -+ {0x00008384, 0xffffffff}, -+ {0x00008390, 0x0fffffff}, -+ {0x00008394, 0x0fffffff}, -+ {0x00008398, 0x00000000}, -+ {0x0000839c, 0x00000000}, -+ {0x000083a0, 0x00000000}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xafe68e30}, -+ {0x00009810, 0xfd14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x0000984c, 0x0040233c}, -+ {0x0000a84c, 0x0040233c}, -+ {0x00009854, 0x00000044}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x00009910, 0x10002310}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x04900000}, -+ {0x0000a920, 0x04900000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009930, 0x00000000}, -+ {0x0000a930, 0x00000000}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009948, 0x9280c00a}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5f3ca3de}, -+ {0x00009958, 0x0108ecff}, -+ {0x00009940, 0x14750604}, -+ {0x0000c95c, 0x004b6a8e}, -+ {0x00009970, 0x990bb514}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x0c6f0000}, -+ {0x000099b0, 0x03051000}, -+ {0x000099b4, 0x00000820}, -+ {0x000099c4, 0x06336f77}, -+ {0x000099c8, 0x6af6532f}, -+ {0x000099cc, 0x08f186c8}, -+ {0x000099d0, 0x00046384}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000000}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099f0, 0x00000000}, -+ {0x000099fc, 0x00001042}, -+ {0x0000a208, 0x803e4788}, -+ {0x0000a210, 0x4080a333}, -+ {0x0000a214, 0x40206c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x01834061}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x000003b5}, -+ {0x0000a22c, 0x233f7180}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a23c, 0x13c889af}, -+ {0x0000a240, 0x38490a20}, -+ {0x0000a244, 0x00000000}, -+ {0x0000a248, 0xfffffffc}, -+ {0x0000a24c, 0x00000000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0cdbd380}, -+ {0x0000a25c, 0x0f0f0f01}, -+ {0x0000a260, 0xdfa91f01}, -+ {0x0000a264, 0x00418a11}, -+ {0x0000b264, 0x00418a11}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0e79e5c6}, -+ {0x0000b26c, 0x0e79e5c6}, -+ {0x0000d270, 0x00820820}, -+ {0x0000a278, 0x1ce739ce}, -+ {0x0000a27c, 0x050701ce}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a394, 0x1ce739ce}, -+ {0x0000a398, 0x000001ce}, -+ {0x0000b398, 0x000001ce}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3c8, 0x00000246}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3dc, 0x1ce739ce}, -+ {0x0000a3e0, 0x000001ce}, -+ {0x0000a3e4, 0x00000000}, -+ {0x0000a3e8, 0x18c43433}, -+ {0x0000a3ec, 0x00f70081}, -+ {0x0000a3f0, 0x01036a1e}, -+ {0x0000a3f4, 0x00000000}, -+ {0x0000b3f4, 0x00000000}, -+ {0x0000a7d8, 0x000003f1}, -+ {0x00007800, 0x00000800}, -+ {0x00007804, 0x6c35ffd2}, -+ {0x00007808, 0x6db6c000}, -+ {0x0000780c, 0x6db6cb30}, -+ {0x00007810, 0x6db6cb6c}, -+ {0x00007814, 0x0501e200}, -+ {0x00007818, 0x0094128d}, -+ {0x0000781c, 0x976ee392}, -+ {0x00007820, 0xf75ff6fc}, -+ {0x00007824, 0x00040000}, -+ {0x00007828, 0xdb003012}, -+ {0x0000782c, 0x04924914}, -+ {0x00007830, 0x21084210}, -+ {0x00007834, 0x00140000}, -+ {0x00007838, 0x0e4548d8}, -+ {0x0000783c, 0x54214514}, -+ {0x00007840, 0x02025830}, -+ {0x00007844, 0x71c0d388}, -+ {0x00007848, 0x934934a8}, -+ {0x00007850, 0x00000000}, -+ {0x00007854, 0x00000800}, -+ {0x00007858, 0x6c35ffd2}, -+ {0x0000785c, 0x6db6c000}, -+ {0x00007860, 0x6db6cb30}, -+ {0x00007864, 0x6db6cb6c}, -+ {0x00007868, 0x0501e200}, -+ {0x0000786c, 0x0094128d}, -+ {0x00007870, 0x976ee392}, -+ {0x00007874, 0xf75ff6fc}, -+ {0x00007878, 0x00040000}, -+ {0x0000787c, 0xdb003012}, -+ {0x00007880, 0x04924914}, -+ {0x00007884, 0x21084210}, -+ {0x00007888, 0x001b6db0}, -+ {0x0000788c, 0x00376b63}, -+ {0x00007890, 0x06db6db6}, -+ {0x00007894, 0x006d8000}, -+ {0x00007898, 0x48100000}, -+ {0x0000789c, 0x00000000}, -+ {0x000078a0, 0x08000000}, -+ {0x000078a4, 0x0007ffd8}, -+ {0x000078a8, 0x0007ffd8}, -+ {0x000078ac, 0x001c0020}, -+ {0x000078b0, 0x00060aeb}, -+ {0x000078b4, 0x40008080}, -+ {0x000078b8, 0x2a850160}, -+}; -+ - static const u32 ar9287Common_normal_cck_fir_coeff_9287_1_1[][2] = { -- { 0x0000a1f4, 0x00fffeff }, -- { 0x0000a1f8, 0x00f5f9ff }, -- { 0x0000a1fc, 0xb79f6427 }, -+ /* Addr allmodes */ -+ {0x0000a1f4, 0x00fffeff}, -+ {0x0000a1f8, 0x00f5f9ff}, -+ {0x0000a1fc, 0xb79f6427}, - }; - - static const u32 ar9287Common_japan_2484_cck_fir_coeff_9287_1_1[][2] = { -- { 0x0000a1f4, 0x00000000 }, -- { 0x0000a1f8, 0xefff0301 }, -- { 0x0000a1fc, 0xca9228ee }, -+ /* Addr allmodes */ -+ {0x0000a1f4, 0x00000000}, -+ {0x0000a1f8, 0xefff0301}, -+ {0x0000a1fc, 0xca9228ee}, - }; - - static const u32 ar9287Modes_tx_gain_9287_1_1[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a }, -- { 0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a }, -- { 0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c }, -- { 0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc }, -- { 0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4 }, -- { 0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc }, -- { 0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede }, -- { 0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e }, -- { 0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e }, -- { 0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e }, -- { 0x0000a780, 0x00000000, 0x00000000, 0x00000062, 0x00000062, 0x00000062 }, -- { 0x0000a784, 0x00000000, 0x00000000, 0x00004064, 0x00004064, 0x00004064 }, -- { 0x0000a788, 0x00000000, 0x00000000, 0x000080a4, 0x000080a4, 0x000080a4 }, -- { 0x0000a78c, 0x00000000, 0x00000000, 0x0000c0aa, 0x0000c0aa, 0x0000c0aa }, -- { 0x0000a790, 0x00000000, 0x00000000, 0x000100ac, 0x000100ac, 0x000100ac }, -- { 0x0000a794, 0x00000000, 0x00000000, 0x000140b4, 0x000140b4, 0x000140b4 }, -- { 0x0000a798, 0x00000000, 0x00000000, 0x000180f4, 0x000180f4, 0x000180f4 }, -- { 0x0000a79c, 0x00000000, 0x00000000, 0x0001c134, 0x0001c134, 0x0001c134 }, -- { 0x0000a7a0, 0x00000000, 0x00000000, 0x00020174, 0x00020174, 0x00020174 }, -- { 0x0000a7a4, 0x00000000, 0x00000000, 0x0002417c, 0x0002417c, 0x0002417c }, -- { 0x0000a7a8, 0x00000000, 0x00000000, 0x0002817e, 0x0002817e, 0x0002817e }, -- { 0x0000a7ac, 0x00000000, 0x00000000, 0x0002c1be, 0x0002c1be, 0x0002c1be }, -- { 0x0000a7b0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7b4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7b8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7bc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7c0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7c4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7c8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7cc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7d0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a7d4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, -- { 0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000 }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a}, -+ {0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a}, -+ {0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c}, -+ {0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc}, -+ {0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4}, -+ {0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc}, -+ {0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede}, -+ {0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e}, -+ {0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e}, -+ {0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e}, -+ {0x0000a780, 0x00000000, 0x00000000, 0x00000062, 0x00000062, 0x00000062}, -+ {0x0000a784, 0x00000000, 0x00000000, 0x00004064, 0x00004064, 0x00004064}, -+ {0x0000a788, 0x00000000, 0x00000000, 0x000080a4, 0x000080a4, 0x000080a4}, -+ {0x0000a78c, 0x00000000, 0x00000000, 0x0000c0aa, 0x0000c0aa, 0x0000c0aa}, -+ {0x0000a790, 0x00000000, 0x00000000, 0x000100ac, 0x000100ac, 0x000100ac}, -+ {0x0000a794, 0x00000000, 0x00000000, 0x000140b4, 0x000140b4, 0x000140b4}, -+ {0x0000a798, 0x00000000, 0x00000000, 0x000180f4, 0x000180f4, 0x000180f4}, -+ {0x0000a79c, 0x00000000, 0x00000000, 0x0001c134, 0x0001c134, 0x0001c134}, -+ {0x0000a7a0, 0x00000000, 0x00000000, 0x00020174, 0x00020174, 0x00020174}, -+ {0x0000a7a4, 0x00000000, 0x00000000, 0x0002417c, 0x0002417c, 0x0002417c}, -+ {0x0000a7a8, 0x00000000, 0x00000000, 0x0002817e, 0x0002817e, 0x0002817e}, -+ {0x0000a7ac, 0x00000000, 0x00000000, 0x0002c1be, 0x0002c1be, 0x0002c1be}, -+ {0x0000a7b0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7b4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7b8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7bc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7c0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7c4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7c8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7cc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7d0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a7d4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe}, -+ {0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000}, - }; - - static const u32 ar9287Modes_rx_gain_9287_1_1[][6] = { -- /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ -- { 0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, -- { 0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, -- { 0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, -- { 0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, -- { 0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, -- { 0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, -- { 0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, -- { 0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, -- { 0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, -- { 0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, -- { 0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, -- { 0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, -- { 0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, -- { 0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, -- { 0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, -- { 0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, -- { 0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, -- { 0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, -- { 0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, -- { 0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, -- { 0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, -- { 0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, -- { 0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, -- { 0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, -- { 0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, -- { 0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, -- { 0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, -- { 0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, -- { 0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, -- { 0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, -- { 0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, -- { 0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, -- { 0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, -- { 0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, -- { 0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, -- { 0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, -- { 0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, -- { 0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, -- { 0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, -- { 0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, -- { 0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, -- { 0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, -- { 0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, -- { 0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, -- { 0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, -- { 0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, -- { 0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, -- { 0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, -- { 0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, -- { 0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, -- { 0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, -- { 0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, -- { 0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, -- { 0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, -- { 0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, -- { 0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, -- { 0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, -- { 0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, -- { 0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, -- { 0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, -- { 0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, -- { 0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, -- { 0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, -- { 0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, -- { 0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, -- { 0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, -- { 0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, -- { 0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, -- { 0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, -- { 0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, -- { 0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, -- { 0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, -- { 0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, -- { 0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, -- { 0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, -- { 0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, -- { 0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, -- { 0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, -- { 0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, -- { 0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, -- { 0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, -- { 0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, -- { 0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, -- { 0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, -- { 0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, -- { 0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, -- { 0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, -- { 0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, -- { 0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, -- { 0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, -- { 0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, -- { 0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, -- { 0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, -- { 0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, -- { 0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, -- { 0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, -- { 0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, -- { 0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, -- { 0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, -- { 0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, -- { 0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, -- { 0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, -- { 0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, -- { 0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, -- { 0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, -- { 0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, -- { 0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, -- { 0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, -- { 0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, -- { 0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, -- { 0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, -- { 0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, -- { 0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, -- { 0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, -- { 0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, -- { 0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, -- { 0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, -- { 0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, -- { 0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, -- { 0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, -- { 0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, -- { 0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, -- { 0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, -- { 0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, -- { 0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, -- { 0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, -- { 0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, -- { 0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, -- { 0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, -- { 0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, -- { 0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, -- { 0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, -- { 0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, -- { 0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, -- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, -- { 0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, -- { 0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, -- { 0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, -- { 0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, -- { 0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, -- { 0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, -- { 0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, -- { 0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, -- { 0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, -- { 0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, -- { 0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, -- { 0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, -- { 0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, -- { 0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, -- { 0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, -- { 0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, -- { 0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, -- { 0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, -- { 0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, -- { 0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, -- { 0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, -- { 0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, -- { 0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, -- { 0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, -- { 0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, -- { 0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, -- { 0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, -- { 0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, -- { 0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, -- { 0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, -- { 0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, -- { 0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, -- { 0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, -- { 0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, -- { 0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, -- { 0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, -- { 0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, -- { 0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, -- { 0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, -- { 0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, -- { 0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, -- { 0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, -- { 0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, -- { 0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, -- { 0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, -- { 0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, -- { 0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, -- { 0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, -- { 0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, -- { 0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, -- { 0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, -- { 0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, -- { 0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, -- { 0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, -- { 0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, -- { 0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, -- { 0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, -- { 0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, -- { 0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, -- { 0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, -- { 0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, -- { 0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, -- { 0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, -- { 0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, -- { 0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, -- { 0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, -- { 0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, -- { 0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, -- { 0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, -- { 0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, -- { 0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, -- { 0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, -- { 0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, -- { 0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, -+ {0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, -+ {0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, -+ {0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, -+ {0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, -+ {0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, -+ {0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, -+ {0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, -+ {0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, -+ {0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, -+ {0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, -+ {0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, -+ {0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, -+ {0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, -+ {0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, -+ {0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, -+ {0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, -+ {0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, -+ {0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, -+ {0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, -+ {0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, -+ {0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, -+ {0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, -+ {0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, -+ {0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, -+ {0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, -+ {0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, -+ {0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, -+ {0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, -+ {0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, -+ {0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, -+ {0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, -+ {0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, -+ {0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, -+ {0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, -+ {0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, -+ {0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, -+ {0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, -+ {0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, -+ {0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, -+ {0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, -+ {0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, -+ {0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, -+ {0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, -+ {0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, -+ {0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, -+ {0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, -+ {0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, -+ {0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, -+ {0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, -+ {0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, -+ {0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, -+ {0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, -+ {0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, -+ {0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, -+ {0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, -+ {0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, -+ {0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, -+ {0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, -+ {0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, -+ {0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, -+ {0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, -+ {0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, -+ {0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, -+ {0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, -+ {0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, -+ {0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, -+ {0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, -+ {0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, -+ {0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, -+ {0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, -+ {0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, -+ {0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, -+ {0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, -+ {0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, -+ {0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, -+ {0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, -+ {0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, -+ {0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, -+ {0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, -+ {0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, -+ {0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, -+ {0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, -+ {0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, -+ {0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, -+ {0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, -+ {0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, -+ {0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, -+ {0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, -+ {0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, -+ {0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, -+ {0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, -+ {0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, -+ {0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, -+ {0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, -+ {0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, -+ {0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, -+ {0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, -+ {0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, -+ {0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, -+ {0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, -+ {0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, -+ {0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, -+ {0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, -+ {0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120}, -+ {0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124}, -+ {0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128}, -+ {0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c}, -+ {0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130}, -+ {0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194}, -+ {0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198}, -+ {0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c}, -+ {0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210}, -+ {0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284}, -+ {0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288}, -+ {0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c}, -+ {0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290}, -+ {0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294}, -+ {0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0}, -+ {0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4}, -+ {0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8}, -+ {0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac}, -+ {0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0}, -+ {0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4}, -+ {0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8}, -+ {0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4}, -+ {0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708}, -+ {0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c}, -+ {0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710}, -+ {0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04}, -+ {0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08}, -+ {0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c}, -+ {0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10}, -+ {0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14}, -+ {0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18}, -+ {0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c}, -+ {0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90}, -+ {0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94}, -+ {0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98}, -+ {0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4}, -+ {0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8}, -+ {0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04}, -+ {0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08}, -+ {0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c}, -+ {0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10}, -+ {0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14}, -+ {0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18}, -+ {0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c}, -+ {0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90}, -+ {0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18}, -+ {0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24}, -+ {0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28}, -+ {0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314}, -+ {0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318}, -+ {0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c}, -+ {0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390}, -+ {0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394}, -+ {0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398}, -+ {0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4}, -+ {0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8}, -+ {0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac}, -+ {0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0}, -+ {0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380}, -+ {0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384}, -+ {0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388}, -+ {0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710}, -+ {0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714}, -+ {0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718}, -+ {0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10}, -+ {0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14}, -+ {0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18}, -+ {0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c}, -+ {0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90}, -+ {0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94}, -+ {0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c}, -+ {0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90}, -+ {0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94}, -+ {0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0}, -+ {0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4}, -+ {0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8}, -+ {0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac}, -+ {0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0}, -+ {0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4}, -+ {0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1}, -+ {0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5}, -+ {0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9}, -+ {0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad}, -+ {0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1}, -+ {0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5}, -+ {0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9}, -+ {0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5}, -+ {0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9}, -+ {0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd}, -+ {0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1}, -+ {0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5}, -+ {0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2}, -+ {0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6}, -+ {0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca}, -+ {0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce}, -+ {0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2}, -+ {0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6}, -+ {0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda}, -+ {0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7}, -+ {0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb}, -+ {0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf}, -+ {0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3}, -+ {0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7}, -+ {0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb}, -+ {0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, -+ {0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067}, - }; - - static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_1[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffd }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffd}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - - static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_1[][2] = { -- {0x00004040, 0x9248fd00 }, -- {0x00004040, 0x24924924 }, -- {0x00004040, 0xa8000019 }, -- {0x00004040, 0x13160820 }, -- {0x00004040, 0xe5980560 }, -- {0x00004040, 0xc01dcffc }, -- {0x00004040, 0x1aaabe41 }, -- {0x00004040, 0xbe105554 }, -- {0x00004040, 0x00043007 }, -- {0x00004044, 0x00000000 }, -+ /* Addr allmodes */ -+ {0x00004040, 0x9248fd00}, -+ {0x00004040, 0x24924924}, -+ {0x00004040, 0xa8000019}, -+ {0x00004040, 0x13160820}, -+ {0x00004040, 0xe5980560}, -+ {0x00004040, 0xc01dcffc}, -+ {0x00004040, 0x1aaabe41}, -+ {0x00004040, 0xbe105554}, -+ {0x00004040, 0x00043007}, -+ {0x00004044, 0x00000000}, - }; - -- --/* AR9271 initialization values automaticaly created: 03/31/10 */ - static const u32 ar9271Modes_9271[][6] = { -- { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, -- { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, -- { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, -- { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, -- { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, -- { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, -- { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, -- { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, -- { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, -- { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, -- { 0x00009828, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001 }, -- { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, -- { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, -- { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, -- { 0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0 }, -- { 0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, -- { 0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, -- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, -- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, -- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, -- { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18 }, -- { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, -- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, -- { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009910, 0x30002310, 0x30002310, 0x30002310, 0x30002310, 0x30002310 }, -- { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, -- { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, -- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, -- { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010 }, -- { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c }, -- { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -- { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, -- { 0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f }, -- { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, -- { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, -- { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, -- { 0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, -- { 0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, -- { 0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, -- { 0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, -- { 0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, -- { 0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, -- { 0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, -- { 0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, -- { 0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, -- { 0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, -- { 0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, -- { 0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, -- { 0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, -- { 0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, -- { 0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, -- { 0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, -- { 0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, -- { 0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, -- { 0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, -- { 0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, -- { 0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, -- { 0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, -- { 0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, -- { 0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, -- { 0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, -- { 0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, -- { 0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, -- { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, -- { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, -- { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, -- { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, -- { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, -- { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, -- { 0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, -- { 0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, -- { 0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, -- { 0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, -- { 0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, -- { 0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, -- { 0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, -- { 0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, -- { 0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, -- { 0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, -- { 0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, -- { 0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, -- { 0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, -- { 0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, -- { 0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, -- { 0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, -- { 0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, -- { 0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, -- { 0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, -- { 0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, -- { 0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, -- { 0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, -- { 0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, -- { 0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, -- { 0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, -- { 0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, -- { 0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, -- { 0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, -- { 0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, -- { 0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, -- { 0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, -- { 0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, -- { 0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, -- { 0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, -- { 0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, -- { 0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, -- { 0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, -- { 0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, -- { 0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, -- { 0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, -- { 0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, -- { 0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, -- { 0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, -- { 0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, -- { 0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, -- { 0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, -- { 0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, -- { 0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, -- { 0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, -- { 0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, -- { 0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, -- { 0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, -- { 0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, -- { 0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, -- { 0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, -- { 0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, -- { 0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, -- { 0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, -- { 0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, -- { 0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, -- { 0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, -- { 0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, -- { 0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, -- { 0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, -- { 0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, -- { 0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, -- { 0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, -- { 0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, -- { 0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, -- { 0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, -- { 0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, -- { 0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, -- { 0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, -- { 0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, -- { 0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, -- { 0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, -- { 0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, -- { 0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, -- { 0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, -- { 0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, -- { 0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, -- { 0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, -- { 0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, -- { 0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, -- { 0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, -- { 0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, -- { 0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, -- { 0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, -- { 0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, -- { 0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, -- { 0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, -- { 0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, -- { 0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, -- { 0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, -- { 0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, -- { 0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, -- { 0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, -- { 0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, -- { 0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, -- { 0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, -- { 0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, -- { 0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, -- { 0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, -- { 0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, -- { 0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, -- { 0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, -- { 0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, -- { 0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, -- { 0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, -- { 0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, -- { 0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, -- { 0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, -- { 0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, -- { 0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, -- { 0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, -- { 0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, -- { 0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, -- { 0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, -- { 0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, -- { 0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, -- { 0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, -- { 0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, -- { 0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, -- { 0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, -- { 0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, -- { 0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, -- { 0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, -- { 0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, -- { 0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, -- { 0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, -- { 0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, -- { 0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, -- { 0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, -- { 0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, -- { 0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, -- { 0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, -- { 0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, -- { 0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, -- { 0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, -- { 0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, -- { 0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, -- { 0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, -- { 0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, -- { 0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, -- { 0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, -- { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, -- { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, -- { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, -- { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, -- { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, -- { 0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000 }, -- { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, -+ {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0}, -+ {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0}, -+ {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180}, -+ {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008}, -+ {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, -+ {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f}, -+ {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880}, -+ {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, -+ {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, -+ {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e}, -+ {0x00009828, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001}, -+ {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -+ {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007}, -+ {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e}, -+ {0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0}, -+ {0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, -+ {0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059}, -+ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, -+ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e}, -+ {0x00009860, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18}, -+ {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009910, 0x30002310, 0x30002310, 0x30002310, 0x30002310, 0x30002310}, -+ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, -+ {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, -+ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, -+ {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010}, -+ {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c}, -+ {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -+ {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -+ {0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f}, -+ {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -+ {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -+ {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, -+ {0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, -+ {0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, -+ {0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, -+ {0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, -+ {0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, -+ {0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, -+ {0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, -+ {0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, -+ {0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, -+ {0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, -+ {0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, -+ {0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, -+ {0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, -+ {0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, -+ {0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, -+ {0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, -+ {0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, -+ {0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, -+ {0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, -+ {0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, -+ {0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, -+ {0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, -+ {0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, -+ {0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, -+ {0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, -+ {0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, -+ {0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, -+ {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, -+ {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, -+ {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, -+ {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, -+ {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, -+ {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, -+ {0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, -+ {0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, -+ {0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, -+ {0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, -+ {0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, -+ {0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, -+ {0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, -+ {0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, -+ {0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, -+ {0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, -+ {0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, -+ {0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, -+ {0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, -+ {0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, -+ {0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, -+ {0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, -+ {0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, -+ {0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, -+ {0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, -+ {0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, -+ {0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, -+ {0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, -+ {0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, -+ {0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, -+ {0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, -+ {0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, -+ {0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, -+ {0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, -+ {0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, -+ {0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, -+ {0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, -+ {0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, -+ {0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, -+ {0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, -+ {0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, -+ {0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, -+ {0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, -+ {0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, -+ {0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, -+ {0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, -+ {0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, -+ {0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, -+ {0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, -+ {0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, -+ {0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, -+ {0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, -+ {0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, -+ {0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, -+ {0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, -+ {0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, -+ {0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, -+ {0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, -+ {0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, -+ {0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, -+ {0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, -+ {0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000}, -+ {0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000}, -+ {0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000}, -+ {0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000}, -+ {0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000}, -+ {0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000}, -+ {0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000}, -+ {0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000}, -+ {0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000}, -+ {0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000}, -+ {0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000}, -+ {0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000}, -+ {0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000}, -+ {0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000}, -+ {0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000}, -+ {0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000}, -+ {0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000}, -+ {0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000}, -+ {0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000}, -+ {0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000}, -+ {0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000}, -+ {0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000}, -+ {0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000}, -+ {0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000}, -+ {0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000}, -+ {0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000}, -+ {0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000}, -+ {0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000}, -+ {0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000}, -+ {0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000}, -+ {0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000}, -+ {0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000}, -+ {0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000}, -+ {0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000}, -+ {0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000}, -+ {0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000}, -+ {0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000}, -+ {0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000}, -+ {0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000}, -+ {0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000}, -+ {0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000}, -+ {0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000}, -+ {0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000}, -+ {0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000}, -+ {0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000}, -+ {0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000}, -+ {0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000}, -+ {0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000}, -+ {0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000}, -+ {0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000}, -+ {0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000}, -+ {0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000}, -+ {0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000}, -+ {0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000}, -+ {0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000}, -+ {0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000}, -+ {0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000}, -+ {0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000}, -+ {0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000}, -+ {0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000}, -+ {0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000}, -+ {0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000}, -+ {0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000}, -+ {0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000}, -+ {0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000}, -+ {0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000}, -+ {0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000}, -+ {0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000}, -+ {0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000}, -+ {0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000}, -+ {0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000}, -+ {0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000}, -+ {0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000}, -+ {0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000}, -+ {0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000}, -+ {0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000}, -+ {0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000}, -+ {0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000}, -+ {0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000}, -+ {0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000}, -+ {0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000}, -+ {0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000}, -+ {0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000}, -+ {0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000}, -+ {0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000}, -+ {0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000}, -+ {0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000}, -+ {0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000}, -+ {0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000}, -+ {0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000}, -+ {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004}, -+ {0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, -+ {0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000}, -+ {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a}, -+ {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000}, -+ {0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000}, -+ {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e}, - }; - - static const u32 ar9271Common_9271[][2] = { -- { 0x0000000c, 0x00000000 }, -- { 0x00000030, 0x00020045 }, -- { 0x00000034, 0x00000005 }, -- { 0x00000040, 0x00000000 }, -- { 0x00000044, 0x00000008 }, -- { 0x00000048, 0x00000008 }, -- { 0x0000004c, 0x00000010 }, -- { 0x00000050, 0x00000000 }, -- { 0x00000054, 0x0000001f }, -- { 0x00000800, 0x00000000 }, -- { 0x00000804, 0x00000000 }, -- { 0x00000808, 0x00000000 }, -- { 0x0000080c, 0x00000000 }, -- { 0x00000810, 0x00000000 }, -- { 0x00000814, 0x00000000 }, -- { 0x00000818, 0x00000000 }, -- { 0x0000081c, 0x00000000 }, -- { 0x00000820, 0x00000000 }, -- { 0x00000824, 0x00000000 }, -- { 0x00001040, 0x002ffc0f }, -- { 0x00001044, 0x002ffc0f }, -- { 0x00001048, 0x002ffc0f }, -- { 0x0000104c, 0x002ffc0f }, -- { 0x00001050, 0x002ffc0f }, -- { 0x00001054, 0x002ffc0f }, -- { 0x00001058, 0x002ffc0f }, -- { 0x0000105c, 0x002ffc0f }, -- { 0x00001060, 0x002ffc0f }, -- { 0x00001064, 0x002ffc0f }, -- { 0x00001230, 0x00000000 }, -- { 0x00001270, 0x00000000 }, -- { 0x00001038, 0x00000000 }, -- { 0x00001078, 0x00000000 }, -- { 0x000010b8, 0x00000000 }, -- { 0x000010f8, 0x00000000 }, -- { 0x00001138, 0x00000000 }, -- { 0x00001178, 0x00000000 }, -- { 0x000011b8, 0x00000000 }, -- { 0x000011f8, 0x00000000 }, -- { 0x00001238, 0x00000000 }, -- { 0x00001278, 0x00000000 }, -- { 0x000012b8, 0x00000000 }, -- { 0x000012f8, 0x00000000 }, -- { 0x00001338, 0x00000000 }, -- { 0x00001378, 0x00000000 }, -- { 0x000013b8, 0x00000000 }, -- { 0x000013f8, 0x00000000 }, -- { 0x00001438, 0x00000000 }, -- { 0x00001478, 0x00000000 }, -- { 0x000014b8, 0x00000000 }, -- { 0x000014f8, 0x00000000 }, -- { 0x00001538, 0x00000000 }, -- { 0x00001578, 0x00000000 }, -- { 0x000015b8, 0x00000000 }, -- { 0x000015f8, 0x00000000 }, -- { 0x00001638, 0x00000000 }, -- { 0x00001678, 0x00000000 }, -- { 0x000016b8, 0x00000000 }, -- { 0x000016f8, 0x00000000 }, -- { 0x00001738, 0x00000000 }, -- { 0x00001778, 0x00000000 }, -- { 0x000017b8, 0x00000000 }, -- { 0x000017f8, 0x00000000 }, -- { 0x0000103c, 0x00000000 }, -- { 0x0000107c, 0x00000000 }, -- { 0x000010bc, 0x00000000 }, -- { 0x000010fc, 0x00000000 }, -- { 0x0000113c, 0x00000000 }, -- { 0x0000117c, 0x00000000 }, -- { 0x000011bc, 0x00000000 }, -- { 0x000011fc, 0x00000000 }, -- { 0x0000123c, 0x00000000 }, -- { 0x0000127c, 0x00000000 }, -- { 0x000012bc, 0x00000000 }, -- { 0x000012fc, 0x00000000 }, -- { 0x0000133c, 0x00000000 }, -- { 0x0000137c, 0x00000000 }, -- { 0x000013bc, 0x00000000 }, -- { 0x000013fc, 0x00000000 }, -- { 0x0000143c, 0x00000000 }, -- { 0x0000147c, 0x00000000 }, -- { 0x00004030, 0x00000002 }, -- { 0x0000403c, 0x00000002 }, -- { 0x00004024, 0x0000001f }, -- { 0x00004060, 0x00000000 }, -- { 0x00004064, 0x00000000 }, -- { 0x00008004, 0x00000000 }, -- { 0x00008008, 0x00000000 }, -- { 0x0000800c, 0x00000000 }, -- { 0x00008018, 0x00000700 }, -- { 0x00008020, 0x00000000 }, -- { 0x00008038, 0x00000000 }, -- { 0x0000803c, 0x00000000 }, -- { 0x00008048, 0x00000000 }, -- { 0x00008054, 0x00000000 }, -- { 0x00008058, 0x00000000 }, -- { 0x0000805c, 0x000fc78f }, -- { 0x00008060, 0x0000000f }, -- { 0x00008064, 0x00000000 }, -- { 0x00008070, 0x00000000 }, -- { 0x000080b0, 0x00000000 }, -- { 0x000080b4, 0x00000000 }, -- { 0x000080b8, 0x00000000 }, -- { 0x000080bc, 0x00000000 }, -- { 0x000080c0, 0x2a80001a }, -- { 0x000080c4, 0x05dc01e0 }, -- { 0x000080c8, 0x1f402710 }, -- { 0x000080cc, 0x01f40000 }, -- { 0x000080d0, 0x00001e00 }, -- { 0x000080d4, 0x00000000 }, -- { 0x000080d8, 0x00400000 }, -- { 0x000080e0, 0xffffffff }, -- { 0x000080e4, 0x0000ffff }, -- { 0x000080e8, 0x003f3f3f }, -- { 0x000080ec, 0x00000000 }, -- { 0x000080f0, 0x00000000 }, -- { 0x000080f4, 0x00000000 }, -- { 0x000080f8, 0x00000000 }, -- { 0x000080fc, 0x00020000 }, -- { 0x00008100, 0x00020000 }, -- { 0x00008104, 0x00000001 }, -- { 0x00008108, 0x00000052 }, -- { 0x0000810c, 0x00000000 }, -- { 0x00008110, 0x00000168 }, -- { 0x00008118, 0x000100aa }, -- { 0x0000811c, 0x00003210 }, -- { 0x00008120, 0x08f04810 }, -- { 0x00008124, 0x00000000 }, -- { 0x00008128, 0x00000000 }, -- { 0x0000812c, 0x00000000 }, -- { 0x00008130, 0x00000000 }, -- { 0x00008134, 0x00000000 }, -- { 0x00008138, 0x00000000 }, -- { 0x0000813c, 0x00000000 }, -- { 0x00008144, 0xffffffff }, -- { 0x00008168, 0x00000000 }, -- { 0x0000816c, 0x00000000 }, -- { 0x00008170, 0x32143320 }, -- { 0x00008174, 0xfaa4fa50 }, -- { 0x00008178, 0x00000100 }, -- { 0x0000817c, 0x00000000 }, -- { 0x000081c0, 0x00000000 }, -- { 0x000081d0, 0x0000320a }, -- { 0x000081ec, 0x00000000 }, -- { 0x000081f0, 0x00000000 }, -- { 0x000081f4, 0x00000000 }, -- { 0x000081f8, 0x00000000 }, -- { 0x000081fc, 0x00000000 }, -- { 0x00008200, 0x00000000 }, -- { 0x00008204, 0x00000000 }, -- { 0x00008208, 0x00000000 }, -- { 0x0000820c, 0x00000000 }, -- { 0x00008210, 0x00000000 }, -- { 0x00008214, 0x00000000 }, -- { 0x00008218, 0x00000000 }, -- { 0x0000821c, 0x00000000 }, -- { 0x00008220, 0x00000000 }, -- { 0x00008224, 0x00000000 }, -- { 0x00008228, 0x00000000 }, -- { 0x0000822c, 0x00000000 }, -- { 0x00008230, 0x00000000 }, -- { 0x00008234, 0x00000000 }, -- { 0x00008238, 0x00000000 }, -- { 0x0000823c, 0x00000000 }, -- { 0x00008240, 0x00100000 }, -- { 0x00008244, 0x0010f400 }, -- { 0x00008248, 0x00000100 }, -- { 0x0000824c, 0x0001e800 }, -- { 0x00008250, 0x00000000 }, -- { 0x00008254, 0x00000000 }, -- { 0x00008258, 0x00000000 }, -- { 0x0000825c, 0x400000ff }, -- { 0x00008260, 0x00080922 }, -- { 0x00008264, 0x88a00010 }, -- { 0x00008270, 0x00000000 }, -- { 0x00008274, 0x40000000 }, -- { 0x00008278, 0x003e4180 }, -- { 0x0000827c, 0x00000000 }, -- { 0x00008284, 0x0000002c }, -- { 0x00008288, 0x0000002c }, -- { 0x0000828c, 0x00000000 }, -- { 0x00008294, 0x00000000 }, -- { 0x00008298, 0x00000000 }, -- { 0x0000829c, 0x00000000 }, -- { 0x00008300, 0x00000040 }, -- { 0x00008314, 0x00000000 }, -- { 0x00008328, 0x00000000 }, -- { 0x0000832c, 0x00000001 }, -- { 0x00008330, 0x00000302 }, -- { 0x00008334, 0x00000e00 }, -- { 0x00008338, 0x00ff0000 }, -- { 0x0000833c, 0x00000000 }, -- { 0x00008340, 0x00010380 }, -- { 0x00008344, 0x00581043 }, -- { 0x00007010, 0x00000030 }, -- { 0x00007034, 0x00000002 }, -- { 0x00007038, 0x000004c2 }, -- { 0x00007800, 0x00140000 }, -- { 0x00007804, 0x0e4548d8 }, -- { 0x00007808, 0x54214514 }, -- { 0x0000780c, 0x02025820 }, -- { 0x00007810, 0x71c0d388 }, -- { 0x00007814, 0x924934a8 }, -- { 0x0000781c, 0x00000000 }, -- { 0x00007828, 0x66964300 }, -- { 0x0000782c, 0x8db6d961 }, -- { 0x00007830, 0x8db6d96c }, -- { 0x00007834, 0x6140008b }, -- { 0x0000783c, 0x72ee0a72 }, -- { 0x00007840, 0xbbfffffc }, -- { 0x00007844, 0x000c0db6 }, -- { 0x00007848, 0x6db6246f }, -- { 0x0000784c, 0x6d9b66db }, -- { 0x00007850, 0x6d8c6dba }, -- { 0x00007854, 0x00040000 }, -- { 0x00007858, 0xdb003012 }, -- { 0x0000785c, 0x04924914 }, -- { 0x00007860, 0x21084210 }, -- { 0x00007864, 0xf7d7ffde }, -- { 0x00007868, 0xc2034080 }, -- { 0x00007870, 0x10142c00 }, -- { 0x00009808, 0x00000000 }, -- { 0x0000980c, 0xafe68e30 }, -- { 0x00009810, 0xfd14e000 }, -- { 0x00009814, 0x9c0a9f6b }, -- { 0x0000981c, 0x00000000 }, -- { 0x0000982c, 0x0000a000 }, -- { 0x00009830, 0x00000000 }, -- { 0x0000983c, 0x00200400 }, -- { 0x0000984c, 0x0040233c }, -- { 0x00009854, 0x00000044 }, -- { 0x00009900, 0x00000000 }, -- { 0x00009904, 0x00000000 }, -- { 0x00009908, 0x00000000 }, -- { 0x0000990c, 0x00000000 }, -- { 0x0000991c, 0x10000fff }, -- { 0x00009920, 0x04900000 }, -- { 0x00009928, 0x00000001 }, -- { 0x0000992c, 0x00000004 }, -- { 0x00009934, 0x1e1f2022 }, -- { 0x00009938, 0x0a0b0c0d }, -- { 0x0000993c, 0x00000000 }, -- { 0x00009940, 0x14750604 }, -- { 0x00009948, 0x9280c00a }, -- { 0x0000994c, 0x00020028 }, -- { 0x00009954, 0x5f3ca3de }, -- { 0x00009958, 0x0108ecff }, -- { 0x00009968, 0x000003ce }, -- { 0x00009970, 0x192bb514 }, -- { 0x00009974, 0x00000000 }, -- { 0x00009978, 0x00000001 }, -- { 0x0000997c, 0x00000000 }, -- { 0x00009980, 0x00000000 }, -- { 0x00009984, 0x00000000 }, -- { 0x00009988, 0x00000000 }, -- { 0x0000998c, 0x00000000 }, -- { 0x00009990, 0x00000000 }, -- { 0x00009994, 0x00000000 }, -- { 0x00009998, 0x00000000 }, -- { 0x0000999c, 0x00000000 }, -- { 0x000099a0, 0x00000000 }, -- { 0x000099a4, 0x00000001 }, -- { 0x000099a8, 0x201fff00 }, -- { 0x000099ac, 0x2def0400 }, -- { 0x000099b0, 0x03051000 }, -- { 0x000099b4, 0x00000820 }, -- { 0x000099dc, 0x00000000 }, -- { 0x000099e0, 0x00000000 }, -- { 0x000099e4, 0xaaaaaaaa }, -- { 0x000099e8, 0x3c466478 }, -- { 0x000099ec, 0x0cc80caa }, -- { 0x000099f0, 0x00000000 }, -- { 0x0000a208, 0x803e68c8 }, -- { 0x0000a210, 0x4080a333 }, -- { 0x0000a214, 0x00206c10 }, -- { 0x0000a218, 0x009c4060 }, -- { 0x0000a220, 0x01834061 }, -- { 0x0000a224, 0x00000400 }, -- { 0x0000a228, 0x000003b5 }, -- { 0x0000a22c, 0x00000000 }, -- { 0x0000a234, 0x20202020 }, -- { 0x0000a238, 0x20202020 }, -- { 0x0000a244, 0x00000000 }, -- { 0x0000a248, 0xfffffffc }, -- { 0x0000a24c, 0x00000000 }, -- { 0x0000a254, 0x00000000 }, -- { 0x0000a258, 0x0ccb5380 }, -- { 0x0000a25c, 0x15151501 }, -- { 0x0000a260, 0xdfa90f01 }, -- { 0x0000a268, 0x00000000 }, -- { 0x0000a26c, 0x0ebae9e6 }, -- { 0x0000a388, 0x0c000000 }, -- { 0x0000a38c, 0x20202020 }, -- { 0x0000a390, 0x20202020 }, -- { 0x0000a39c, 0x00000001 }, -- { 0x0000a3a0, 0x00000000 }, -- { 0x0000a3a4, 0x00000000 }, -- { 0x0000a3a8, 0x00000000 }, -- { 0x0000a3ac, 0x00000000 }, -- { 0x0000a3b0, 0x00000000 }, -- { 0x0000a3b4, 0x00000000 }, -- { 0x0000a3b8, 0x00000000 }, -- { 0x0000a3bc, 0x00000000 }, -- { 0x0000a3c0, 0x00000000 }, -- { 0x0000a3c4, 0x00000000 }, -- { 0x0000a3cc, 0x20202020 }, -- { 0x0000a3d0, 0x20202020 }, -- { 0x0000a3d4, 0x20202020 }, -- { 0x0000a3e4, 0x00000000 }, -- { 0x0000a3e8, 0x18c43433 }, -- { 0x0000a3ec, 0x00f70081 }, -- { 0x0000a3f0, 0x01036a2f }, -- { 0x0000a3f4, 0x00000000 }, -- { 0x0000d270, 0x0d820820 }, -- { 0x0000d35c, 0x07ffffef }, -- { 0x0000d360, 0x0fffffe7 }, -- { 0x0000d364, 0x17ffffe5 }, -- { 0x0000d368, 0x1fffffe4 }, -- { 0x0000d36c, 0x37ffffe3 }, -- { 0x0000d370, 0x3fffffe3 }, -- { 0x0000d374, 0x57ffffe3 }, -- { 0x0000d378, 0x5fffffe2 }, -- { 0x0000d37c, 0x7fffffe2 }, -- { 0x0000d380, 0x7f3c7bba }, -- { 0x0000d384, 0xf3307ff0 }, -+ /* Addr allmodes */ -+ {0x0000000c, 0x00000000}, -+ {0x00000030, 0x00020045}, -+ {0x00000034, 0x00000005}, -+ {0x00000040, 0x00000000}, -+ {0x00000044, 0x00000008}, -+ {0x00000048, 0x00000008}, -+ {0x0000004c, 0x00000010}, -+ {0x00000050, 0x00000000}, -+ {0x00000054, 0x0000001f}, -+ {0x00000800, 0x00000000}, -+ {0x00000804, 0x00000000}, -+ {0x00000808, 0x00000000}, -+ {0x0000080c, 0x00000000}, -+ {0x00000810, 0x00000000}, -+ {0x00000814, 0x00000000}, -+ {0x00000818, 0x00000000}, -+ {0x0000081c, 0x00000000}, -+ {0x00000820, 0x00000000}, -+ {0x00000824, 0x00000000}, -+ {0x00001040, 0x002ffc0f}, -+ {0x00001044, 0x002ffc0f}, -+ {0x00001048, 0x002ffc0f}, -+ {0x0000104c, 0x002ffc0f}, -+ {0x00001050, 0x002ffc0f}, -+ {0x00001054, 0x002ffc0f}, -+ {0x00001058, 0x002ffc0f}, -+ {0x0000105c, 0x002ffc0f}, -+ {0x00001060, 0x002ffc0f}, -+ {0x00001064, 0x002ffc0f}, -+ {0x00001230, 0x00000000}, -+ {0x00001270, 0x00000000}, -+ {0x00001038, 0x00000000}, -+ {0x00001078, 0x00000000}, -+ {0x000010b8, 0x00000000}, -+ {0x000010f8, 0x00000000}, -+ {0x00001138, 0x00000000}, -+ {0x00001178, 0x00000000}, -+ {0x000011b8, 0x00000000}, -+ {0x000011f8, 0x00000000}, -+ {0x00001238, 0x00000000}, -+ {0x00001278, 0x00000000}, -+ {0x000012b8, 0x00000000}, -+ {0x000012f8, 0x00000000}, -+ {0x00001338, 0x00000000}, -+ {0x00001378, 0x00000000}, -+ {0x000013b8, 0x00000000}, -+ {0x000013f8, 0x00000000}, -+ {0x00001438, 0x00000000}, -+ {0x00001478, 0x00000000}, -+ {0x000014b8, 0x00000000}, -+ {0x000014f8, 0x00000000}, -+ {0x00001538, 0x00000000}, -+ {0x00001578, 0x00000000}, -+ {0x000015b8, 0x00000000}, -+ {0x000015f8, 0x00000000}, -+ {0x00001638, 0x00000000}, -+ {0x00001678, 0x00000000}, -+ {0x000016b8, 0x00000000}, -+ {0x000016f8, 0x00000000}, -+ {0x00001738, 0x00000000}, -+ {0x00001778, 0x00000000}, -+ {0x000017b8, 0x00000000}, -+ {0x000017f8, 0x00000000}, -+ {0x0000103c, 0x00000000}, -+ {0x0000107c, 0x00000000}, -+ {0x000010bc, 0x00000000}, -+ {0x000010fc, 0x00000000}, -+ {0x0000113c, 0x00000000}, -+ {0x0000117c, 0x00000000}, -+ {0x000011bc, 0x00000000}, -+ {0x000011fc, 0x00000000}, -+ {0x0000123c, 0x00000000}, -+ {0x0000127c, 0x00000000}, -+ {0x000012bc, 0x00000000}, -+ {0x000012fc, 0x00000000}, -+ {0x0000133c, 0x00000000}, -+ {0x0000137c, 0x00000000}, -+ {0x000013bc, 0x00000000}, -+ {0x000013fc, 0x00000000}, -+ {0x0000143c, 0x00000000}, -+ {0x0000147c, 0x00000000}, -+ {0x00004030, 0x00000002}, -+ {0x0000403c, 0x00000002}, -+ {0x00004024, 0x0000001f}, -+ {0x00004060, 0x00000000}, -+ {0x00004064, 0x00000000}, -+ {0x00008004, 0x00000000}, -+ {0x00008008, 0x00000000}, -+ {0x0000800c, 0x00000000}, -+ {0x00008018, 0x00000700}, -+ {0x00008020, 0x00000000}, -+ {0x00008038, 0x00000000}, -+ {0x0000803c, 0x00000000}, -+ {0x00008048, 0x00000000}, -+ {0x00008054, 0x00000000}, -+ {0x00008058, 0x00000000}, -+ {0x0000805c, 0x000fc78f}, -+ {0x00008060, 0x0000000f}, -+ {0x00008064, 0x00000000}, -+ {0x00008070, 0x00000000}, -+ {0x000080b0, 0x00000000}, -+ {0x000080b4, 0x00000000}, -+ {0x000080b8, 0x00000000}, -+ {0x000080bc, 0x00000000}, -+ {0x000080c0, 0x2a80001a}, -+ {0x000080c4, 0x05dc01e0}, -+ {0x000080c8, 0x1f402710}, -+ {0x000080cc, 0x01f40000}, -+ {0x000080d0, 0x00001e00}, -+ {0x000080d4, 0x00000000}, -+ {0x000080d8, 0x00400000}, -+ {0x000080e0, 0xffffffff}, -+ {0x000080e4, 0x0000ffff}, -+ {0x000080e8, 0x003f3f3f}, -+ {0x000080ec, 0x00000000}, -+ {0x000080f0, 0x00000000}, -+ {0x000080f4, 0x00000000}, -+ {0x000080f8, 0x00000000}, -+ {0x000080fc, 0x00020000}, -+ {0x00008100, 0x00020000}, -+ {0x00008104, 0x00000001}, -+ {0x00008108, 0x00000052}, -+ {0x0000810c, 0x00000000}, -+ {0x00008110, 0x00000168}, -+ {0x00008118, 0x000100aa}, -+ {0x0000811c, 0x00003210}, -+ {0x00008120, 0x08f04810}, -+ {0x00008124, 0x00000000}, -+ {0x00008128, 0x00000000}, -+ {0x0000812c, 0x00000000}, -+ {0x00008130, 0x00000000}, -+ {0x00008134, 0x00000000}, -+ {0x00008138, 0x00000000}, -+ {0x0000813c, 0x00000000}, -+ {0x00008144, 0xffffffff}, -+ {0x00008168, 0x00000000}, -+ {0x0000816c, 0x00000000}, -+ {0x00008170, 0x32143320}, -+ {0x00008174, 0xfaa4fa50}, -+ {0x00008178, 0x00000100}, -+ {0x0000817c, 0x00000000}, -+ {0x000081c0, 0x00000000}, -+ {0x000081d0, 0x0000320a}, -+ {0x000081ec, 0x00000000}, -+ {0x000081f0, 0x00000000}, -+ {0x000081f4, 0x00000000}, -+ {0x000081f8, 0x00000000}, -+ {0x000081fc, 0x00000000}, -+ {0x00008200, 0x00000000}, -+ {0x00008204, 0x00000000}, -+ {0x00008208, 0x00000000}, -+ {0x0000820c, 0x00000000}, -+ {0x00008210, 0x00000000}, -+ {0x00008214, 0x00000000}, -+ {0x00008218, 0x00000000}, -+ {0x0000821c, 0x00000000}, -+ {0x00008220, 0x00000000}, -+ {0x00008224, 0x00000000}, -+ {0x00008228, 0x00000000}, -+ {0x0000822c, 0x00000000}, -+ {0x00008230, 0x00000000}, -+ {0x00008234, 0x00000000}, -+ {0x00008238, 0x00000000}, -+ {0x0000823c, 0x00000000}, -+ {0x00008240, 0x00100000}, -+ {0x00008244, 0x0010f400}, -+ {0x00008248, 0x00000100}, -+ {0x0000824c, 0x0001e800}, -+ {0x00008250, 0x00000000}, -+ {0x00008254, 0x00000000}, -+ {0x00008258, 0x00000000}, -+ {0x0000825c, 0x400000ff}, -+ {0x00008260, 0x00080922}, -+ {0x00008264, 0x88a00010}, -+ {0x00008270, 0x00000000}, -+ {0x00008274, 0x40000000}, -+ {0x00008278, 0x003e4180}, -+ {0x0000827c, 0x00000000}, -+ {0x00008284, 0x0000002c}, -+ {0x00008288, 0x0000002c}, -+ {0x0000828c, 0x00000000}, -+ {0x00008294, 0x00000000}, -+ {0x00008298, 0x00000000}, -+ {0x0000829c, 0x00000000}, -+ {0x00008300, 0x00000040}, -+ {0x00008314, 0x00000000}, -+ {0x00008328, 0x00000000}, -+ {0x0000832c, 0x00000001}, -+ {0x00008330, 0x00000302}, -+ {0x00008334, 0x00000e00}, -+ {0x00008338, 0x00ff0000}, -+ {0x0000833c, 0x00000000}, -+ {0x00008340, 0x00010380}, -+ {0x00008344, 0x00581043}, -+ {0x00007010, 0x00000030}, -+ {0x00007034, 0x00000002}, -+ {0x00007038, 0x000004c2}, -+ {0x00007800, 0x00140000}, -+ {0x00007804, 0x0e4548d8}, -+ {0x00007808, 0x54214514}, -+ {0x0000780c, 0x02025820}, -+ {0x00007810, 0x71c0d388}, -+ {0x00007814, 0x924934a8}, -+ {0x0000781c, 0x00000000}, -+ {0x00007828, 0x66964300}, -+ {0x0000782c, 0x8db6d961}, -+ {0x00007830, 0x8db6d96c}, -+ {0x00007834, 0x6140008b}, -+ {0x0000783c, 0x72ee0a72}, -+ {0x00007840, 0xbbfffffc}, -+ {0x00007844, 0x000c0db6}, -+ {0x00007848, 0x6db6246f}, -+ {0x0000784c, 0x6d9b66db}, -+ {0x00007850, 0x6d8c6dba}, -+ {0x00007854, 0x00040000}, -+ {0x00007858, 0xdb003012}, -+ {0x0000785c, 0x04924914}, -+ {0x00007860, 0x21084210}, -+ {0x00007864, 0xf7d7ffde}, -+ {0x00007868, 0xc2034080}, -+ {0x00007870, 0x10142c00}, -+ {0x00009808, 0x00000000}, -+ {0x0000980c, 0xafe68e30}, -+ {0x00009810, 0xfd14e000}, -+ {0x00009814, 0x9c0a9f6b}, -+ {0x0000981c, 0x00000000}, -+ {0x0000982c, 0x0000a000}, -+ {0x00009830, 0x00000000}, -+ {0x0000983c, 0x00200400}, -+ {0x0000984c, 0x0040233c}, -+ {0x00009854, 0x00000044}, -+ {0x00009900, 0x00000000}, -+ {0x00009904, 0x00000000}, -+ {0x00009908, 0x00000000}, -+ {0x0000990c, 0x00000000}, -+ {0x0000991c, 0x10000fff}, -+ {0x00009920, 0x04900000}, -+ {0x00009928, 0x00000001}, -+ {0x0000992c, 0x00000004}, -+ {0x00009934, 0x1e1f2022}, -+ {0x00009938, 0x0a0b0c0d}, -+ {0x0000993c, 0x00000000}, -+ {0x00009940, 0x14750604}, -+ {0x00009948, 0x9280c00a}, -+ {0x0000994c, 0x00020028}, -+ {0x00009954, 0x5f3ca3de}, -+ {0x00009958, 0x0108ecff}, -+ {0x00009968, 0x000003ce}, -+ {0x00009970, 0x192bb514}, -+ {0x00009974, 0x00000000}, -+ {0x00009978, 0x00000001}, -+ {0x0000997c, 0x00000000}, -+ {0x00009980, 0x00000000}, -+ {0x00009984, 0x00000000}, -+ {0x00009988, 0x00000000}, -+ {0x0000998c, 0x00000000}, -+ {0x00009990, 0x00000000}, -+ {0x00009994, 0x00000000}, -+ {0x00009998, 0x00000000}, -+ {0x0000999c, 0x00000000}, -+ {0x000099a0, 0x00000000}, -+ {0x000099a4, 0x00000001}, -+ {0x000099a8, 0x201fff00}, -+ {0x000099ac, 0x2def0400}, -+ {0x000099b0, 0x03051000}, -+ {0x000099b4, 0x00000820}, -+ {0x000099dc, 0x00000000}, -+ {0x000099e0, 0x00000000}, -+ {0x000099e4, 0xaaaaaaaa}, -+ {0x000099e8, 0x3c466478}, -+ {0x000099ec, 0x0cc80caa}, -+ {0x000099f0, 0x00000000}, -+ {0x0000a208, 0x803e68c8}, -+ {0x0000a210, 0x4080a333}, -+ {0x0000a214, 0x00206c10}, -+ {0x0000a218, 0x009c4060}, -+ {0x0000a220, 0x01834061}, -+ {0x0000a224, 0x00000400}, -+ {0x0000a228, 0x000003b5}, -+ {0x0000a22c, 0x00000000}, -+ {0x0000a234, 0x20202020}, -+ {0x0000a238, 0x20202020}, -+ {0x0000a244, 0x00000000}, -+ {0x0000a248, 0xfffffffc}, -+ {0x0000a24c, 0x00000000}, -+ {0x0000a254, 0x00000000}, -+ {0x0000a258, 0x0ccb5380}, -+ {0x0000a25c, 0x15151501}, -+ {0x0000a260, 0xdfa90f01}, -+ {0x0000a268, 0x00000000}, -+ {0x0000a26c, 0x0ebae9e6}, -+ {0x0000a388, 0x0c000000}, -+ {0x0000a38c, 0x20202020}, -+ {0x0000a390, 0x20202020}, -+ {0x0000a39c, 0x00000001}, -+ {0x0000a3a0, 0x00000000}, -+ {0x0000a3a4, 0x00000000}, -+ {0x0000a3a8, 0x00000000}, -+ {0x0000a3ac, 0x00000000}, -+ {0x0000a3b0, 0x00000000}, -+ {0x0000a3b4, 0x00000000}, -+ {0x0000a3b8, 0x00000000}, -+ {0x0000a3bc, 0x00000000}, -+ {0x0000a3c0, 0x00000000}, -+ {0x0000a3c4, 0x00000000}, -+ {0x0000a3cc, 0x20202020}, -+ {0x0000a3d0, 0x20202020}, -+ {0x0000a3d4, 0x20202020}, -+ {0x0000a3e4, 0x00000000}, -+ {0x0000a3e8, 0x18c43433}, -+ {0x0000a3ec, 0x00f70081}, -+ {0x0000a3f0, 0x01036a2f}, -+ {0x0000a3f4, 0x00000000}, -+ {0x0000d270, 0x0d820820}, -+ {0x0000d35c, 0x07ffffef}, -+ {0x0000d360, 0x0fffffe7}, -+ {0x0000d364, 0x17ffffe5}, -+ {0x0000d368, 0x1fffffe4}, -+ {0x0000d36c, 0x37ffffe3}, -+ {0x0000d370, 0x3fffffe3}, -+ {0x0000d374, 0x57ffffe3}, -+ {0x0000d378, 0x5fffffe2}, -+ {0x0000d37c, 0x7fffffe2}, -+ {0x0000d380, 0x7f3c7bba}, -+ {0x0000d384, 0xf3307ff0}, - }; - - static const u32 ar9271Common_normal_cck_fir_coeff_9271[][2] = { -- { 0x0000a1f4, 0x00fffeff }, -- { 0x0000a1f8, 0x00f5f9ff }, -- { 0x0000a1fc, 0xb79f6427 }, -+ /* Addr allmodes */ -+ {0x0000a1f4, 0x00fffeff}, -+ {0x0000a1f8, 0x00f5f9ff}, -+ {0x0000a1fc, 0xb79f6427}, - }; - - static const u32 ar9271Common_japan_2484_cck_fir_coeff_9271[][2] = { -- { 0x0000a1f4, 0x00000000 }, -- { 0x0000a1f8, 0xefff0301 }, -- { 0x0000a1fc, 0xca9228ee }, -+ /* Addr allmodes */ -+ {0x0000a1f4, 0x00000000}, -+ {0x0000a1f8, 0xefff0301}, -+ {0x0000a1fc, 0xca9228ee}, - }; - - static const u32 ar9271Modes_9271_1_0_only[][6] = { -- { 0x00009910, 0x30002311, 0x30002311, 0x30002311, 0x30002311, 0x30002311 }, -- { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, -+ {0x00009910, 0x30002311, 0x30002311, 0x30002311, 0x30002311, 0x30002311}, -+ {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001}, - }; - - static const u32 ar9271Modes_9271_ANI_reg[][6] = { -- { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, -- { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, -- { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, -- { 0x0000986c, 0x06903881, 0x06903881, 0x06903881, 0x06903881, 0x06903881 }, -- { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, -- { 0x0000a208, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8 }, -- { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, -- { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, -+ {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2}, -+ {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e}, -+ {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e}, -+ {0x0000986c, 0x06903881, 0x06903881, 0x06903881, 0x06903881, 0x06903881}, -+ {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0}, -+ {0x0000a208, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8}, -+ {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d}, -+ {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, - }; - - static const u32 ar9271Modes_normal_power_tx_gain_9271[][6] = { -- { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x0001e610, 0x0001e610, 0x00000000 }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0002d6d0, 0x0002d6d0, 0x00000000 }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x00039758, 0x00039758, 0x00000000 }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x0003b759, 0x0003b759, 0x00000000 }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x0003d75a, 0x0003d75a, 0x00000000 }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x0004175c, 0x0004175c, 0x00000000 }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x0004575e, 0x0004575e, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0004979f, 0x0004979f, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x0004d7df, 0x0004d7df, 0x00000000 }, -- { 0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000 }, -- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, -- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, -- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x00007838, 0x00000029, 0x00000029, 0x00000029, 0x00000029, 0x00000029 }, -- { 0x00007824, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff }, -- { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, -- { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, -- { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a218652, 0x0a218652, 0x0a22a652 }, -- { 0x0000a278, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, -- { 0x0000a27c, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd }, -- { 0x0000a394, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, -- { 0x0000a398, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd }, -- { 0x0000a3dc, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, -- { 0x0000a3e0, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x0001e610, 0x0001e610, 0x00000000}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0002d6d0, 0x0002d6d0, 0x00000000}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x00039758, 0x00039758, 0x00000000}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x0003b759, 0x0003b759, 0x00000000}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x0003d75a, 0x0003d75a, 0x00000000}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x0004175c, 0x0004175c, 0x00000000}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x0004575e, 0x0004575e, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0004979f, 0x0004979f, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x0004d7df, 0x0004d7df, 0x00000000}, -+ {0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000}, -+ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, -+ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, -+ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x00007838, 0x00000029, 0x00000029, 0x00000029, 0x00000029, 0x00000029}, -+ {0x00007824, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff}, -+ {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4}, -+ {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04}, -+ {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a218652, 0x0a218652, 0x0a22a652}, -+ {0x0000a278, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd}, -+ {0x0000a27c, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd}, -+ {0x0000a394, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd}, -+ {0x0000a398, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd}, -+ {0x0000a3dc, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd}, -+ {0x0000a3e0, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd}, - }; - - static const u32 ar9271Modes_high_power_tx_gain_9271[][6] = { -- { 0x0000a300, 0x00000000, 0x00000000, 0x00010000, 0x00010000, 0x00000000 }, -- { 0x0000a304, 0x00000000, 0x00000000, 0x00016200, 0x00016200, 0x00000000 }, -- { 0x0000a308, 0x00000000, 0x00000000, 0x00018201, 0x00018201, 0x00000000 }, -- { 0x0000a30c, 0x00000000, 0x00000000, 0x0001b240, 0x0001b240, 0x00000000 }, -- { 0x0000a310, 0x00000000, 0x00000000, 0x0001d241, 0x0001d241, 0x00000000 }, -- { 0x0000a314, 0x00000000, 0x00000000, 0x0001f600, 0x0001f600, 0x00000000 }, -- { 0x0000a318, 0x00000000, 0x00000000, 0x00022800, 0x00022800, 0x00000000 }, -- { 0x0000a31c, 0x00000000, 0x00000000, 0x00026802, 0x00026802, 0x00000000 }, -- { 0x0000a320, 0x00000000, 0x00000000, 0x0002b805, 0x0002b805, 0x00000000 }, -- { 0x0000a324, 0x00000000, 0x00000000, 0x0002ea41, 0x0002ea41, 0x00000000 }, -- { 0x0000a328, 0x00000000, 0x00000000, 0x00038b00, 0x00038b00, 0x00000000 }, -- { 0x0000a32c, 0x00000000, 0x00000000, 0x0003ab40, 0x0003ab40, 0x00000000 }, -- { 0x0000a330, 0x00000000, 0x00000000, 0x0003cd80, 0x0003cd80, 0x00000000 }, -- { 0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000 }, -- { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, -- { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, -- { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, -- { 0x00007838, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b }, -- { 0x00007824, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff }, -- { 0x0000786c, 0x08609eb6, 0x08609eb6, 0x08609eba, 0x08609eba, 0x08609eb6 }, -- { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, -- { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a214652, 0x0a214652, 0x0a22a652 }, -- { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, -- { 0x0000a27c, 0x05018063, 0x05038063, 0x05018063, 0x05018063, 0x05018063 }, -- { 0x0000a394, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63 }, -- { 0x0000a398, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063 }, -- { 0x0000a3dc, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63 }, -- { 0x0000a3e0, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063 }, -+ {0x0000a300, 0x00000000, 0x00000000, 0x00010000, 0x00010000, 0x00000000}, -+ {0x0000a304, 0x00000000, 0x00000000, 0x00016200, 0x00016200, 0x00000000}, -+ {0x0000a308, 0x00000000, 0x00000000, 0x00018201, 0x00018201, 0x00000000}, -+ {0x0000a30c, 0x00000000, 0x00000000, 0x0001b240, 0x0001b240, 0x00000000}, -+ {0x0000a310, 0x00000000, 0x00000000, 0x0001d241, 0x0001d241, 0x00000000}, -+ {0x0000a314, 0x00000000, 0x00000000, 0x0001f600, 0x0001f600, 0x00000000}, -+ {0x0000a318, 0x00000000, 0x00000000, 0x00022800, 0x00022800, 0x00000000}, -+ {0x0000a31c, 0x00000000, 0x00000000, 0x00026802, 0x00026802, 0x00000000}, -+ {0x0000a320, 0x00000000, 0x00000000, 0x0002b805, 0x0002b805, 0x00000000}, -+ {0x0000a324, 0x00000000, 0x00000000, 0x0002ea41, 0x0002ea41, 0x00000000}, -+ {0x0000a328, 0x00000000, 0x00000000, 0x00038b00, 0x00038b00, 0x00000000}, -+ {0x0000a32c, 0x00000000, 0x00000000, 0x0003ab40, 0x0003ab40, 0x00000000}, -+ {0x0000a330, 0x00000000, 0x00000000, 0x0003cd80, 0x0003cd80, 0x00000000}, -+ {0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000}, -+ {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000}, -+ {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000}, -+ {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000}, -+ {0x00007838, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b}, -+ {0x00007824, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff}, -+ {0x0000786c, 0x08609eb6, 0x08609eb6, 0x08609eba, 0x08609eba, 0x08609eb6}, -+ {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00}, -+ {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a214652, 0x0a214652, 0x0a22a652}, -+ {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7}, -+ {0x0000a27c, 0x05018063, 0x05038063, 0x05018063, 0x05018063, 0x05018063}, -+ {0x0000a394, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63}, -+ {0x0000a398, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063}, -+ {0x0000a3dc, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63}, -+ {0x0000a3e0, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063}, - }; - --#endif /* INITVALS_9002_10_H */ diff --git a/package/mac80211/patches/522-initval_updates.patch b/package/mac80211/patches/522-initval_updates.patch deleted file mode 100644 index 708b8150d..000000000 --- a/package/mac80211/patches/522-initval_updates.patch +++ /dev/null @@ -1,376 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h -@@ -21,6 +21,8 @@ static const u32 ar5416Modes_9100[][6] = - {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, - {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, - {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, -+ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, -+ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, - {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, - {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, - {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -@@ -31,17 +33,17 @@ static const u32 ar5416Modes_9100[][6] = - {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, - {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, - {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -- {0x00009850, 0x6d48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6d48b0e2, 0x6d48b0e2}, -- {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec86d2e, 0x7ec84d2e, 0x7ec82d2e}, -- {0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e}, -+ {0x00009850, 0x6c48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6c48b0e2, 0x6c48b0e2}, -+ {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, -+ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, - {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, - {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, - {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, - {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, -- {0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0}, -+ {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, - {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016}, -- {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a11, 0xd00a8a0d, 0xd00a8a0d}, -- {0x00009940, 0x00754604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204}, -+ {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d}, -+ {0x00009940, 0x00750604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204}, - {0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020}, - {0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e}, - {0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff}, -@@ -52,7 +54,7 @@ static const u32 ar5416Modes_9100[][6] = - {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00}, - {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, - {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -- {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, -+ {0x000099c8, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329}, - {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, - {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, - {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -@@ -395,12 +397,12 @@ static const u32 ar5416Common_9100[][2] - {0x0000a22c, 0x00000000}, - {0x0000a234, 0x20202020}, - {0x0000a238, 0x20202020}, -- {0x0000a23c, 0x13c889ae}, -+ {0x0000a23c, 0x13c889af}, - {0x0000a240, 0x38490a20}, - {0x0000a244, 0x00007bb6}, - {0x0000a248, 0x0fff3ffc}, - {0x0000a24c, 0x00000001}, -- {0x0000a250, 0x0000a000}, -+ {0x0000a250, 0x0000e000}, - {0x0000a254, 0x00000000}, - {0x0000a258, 0x0cc75380}, - {0x0000a25c, 0x0f0f0f01}, -@@ -671,6 +673,8 @@ static const u32 ar5416Modes_9160[][6] = - {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008}, - {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0}, - {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf}, -+ {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810}, -+ {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a}, - {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303}, - {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200}, - {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e}, -@@ -681,11 +685,11 @@ static const u32 ar5416Modes_9160[][6] = - {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, - {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, - {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68}, -- {0x00009850, 0x6c48b4e2, 0x6c48b4e2, 0x6c48b0e2, 0x6c48b0e2, 0x6c48b0e2}, -+ {0x00009850, 0x6c48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6c48b0e2, 0x6c48b0e2}, - {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e}, -- {0x0000985c, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e}, -+ {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e}, - {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18}, -- {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, -+ {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00}, - {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0}, - {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081}, - {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0}, -@@ -697,10 +701,10 @@ static const u32 ar5416Modes_9160[][6] = - {0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40}, - {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120}, - {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce}, -- {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00}, -+ {0x000099bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00}, - {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be}, - {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -- {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, -+ {0x000099c8, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329}, - {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, - {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, - {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -@@ -851,7 +855,6 @@ static const u32 ar5416Common_9160[][2] - {0x00008110, 0x00000168}, - {0x00008118, 0x000100aa}, - {0x0000811c, 0x00003210}, -- {0x00008120, 0x08f04800}, - {0x00008124, 0x00000000}, - {0x00008128, 0x00000000}, - {0x0000812c, 0x00000000}, -@@ -867,7 +870,6 @@ static const u32 ar5416Common_9160[][2] - {0x00008178, 0x00000100}, - {0x0000817c, 0x00000000}, - {0x000081c4, 0x00000000}, -- {0x000081d0, 0x00003210}, - {0x000081ec, 0x00000000}, - {0x000081f0, 0x00000000}, - {0x000081f4, 0x00000000}, -@@ -898,6 +900,7 @@ static const u32 ar5416Common_9160[][2] - {0x00008258, 0x00000000}, - {0x0000825c, 0x400000ff}, - {0x00008260, 0x00080922}, -+ {0x00008264, 0x88a00010}, - {0x00008270, 0x00000000}, - {0x00008274, 0x40000000}, - {0x00008278, 0x003e4180}, -@@ -1058,9 +1061,9 @@ static const u32 ar5416Common_9160[][2] - {0x0000a25c, 0x0f0f0f01}, - {0x0000a260, 0xdfa91f01}, - {0x0000a268, 0x00000001}, -- {0x0000a26c, 0x0ebae9c6}, -- {0x0000b26c, 0x0ebae9c6}, -- {0x0000c26c, 0x0ebae9c6}, -+ {0x0000a26c, 0x0e79e5c6}, -+ {0x0000b26c, 0x0e79e5c6}, -+ {0x0000c26c, 0x0e79e5c6}, - {0x0000d270, 0x00820820}, - {0x0000a278, 0x1ce739ce}, - {0x0000a27c, 0x050701ce}, ---- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h -@@ -600,12 +600,6 @@ static const u32 ar9280Modes_9280_2[][6] - {0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c}, - {0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00}, - {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, -- {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77}, -- {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329}, -- {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8}, -- {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384}, -- {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444}, - {0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, - {0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019}, -@@ -842,7 +836,7 @@ static const u32 ar9280Common_9280_2[][2 - {0x00009958, 0x2108ecff}, - {0x00009940, 0x14750604}, - {0x0000c95c, 0x004b6a8e}, -- {0x00009970, 0x190fb515}, -+ {0x00009970, 0x190fb514}, - {0x00009974, 0x00000000}, - {0x00009978, 0x00000001}, - {0x0000997c, 0x00000000}, -@@ -860,6 +854,12 @@ static const u32 ar9280Common_9280_2[][2 - {0x000099ac, 0x006f0000}, - {0x000099b0, 0x03051000}, - {0x000099b4, 0x00000820}, -+ {0x000099c4, 0x06336f77}, -+ {0x000099c8, 0x6af6532f}, -+ {0x000099cc, 0x08f186c8}, -+ {0x000099d0, 0x00046384}, -+ {0x000099d4, 0x00000000}, -+ {0x000099d8, 0x00000000}, - {0x000099dc, 0x00000000}, - {0x000099e0, 0x00000000}, - {0x000099e4, 0xaaaaaaaa}, -@@ -924,7 +924,6 @@ static const u32 ar9280Common_9280_2[][2 - {0x0000a3e0, 0x000001ce}, - {0x0000a3e4, 0x00000000}, - {0x0000a3e8, 0x18c43433}, -- {0x0000a3ec, 0x00f70081}, - {0x00007800, 0x00040000}, - {0x00007804, 0xdb005012}, - {0x00007808, 0x04924914}, -@@ -1025,95 +1024,95 @@ static const u32 ar9280Modes_backoff_23d - {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08}, - {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c}, - {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10}, -- {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b14, 0x00008b14, 0x00008b14}, -- {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b01, 0x00008b01, 0x00008b01}, -- {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b05, 0x00008b05, 0x00008b05}, -- {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b09, 0x00008b09, 0x00008b09}, -- {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b0d, 0x00008b0d, 0x00008b0d}, -- {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b11, 0x00008b11, 0x00008b11}, -- {0x00009adc, 0x0000b390, 0x0000b390, 0x00008b15, 0x00008b15, 0x00008b15}, -- {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008b02, 0x00008b02, 0x00008b02}, -- {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008b06, 0x00008b06, 0x00008b06}, -- {0x00009ae8, 0x0000b780, 0x0000b780, 0x00008b0a, 0x00008b0a, 0x00008b0a}, -- {0x00009aec, 0x0000b784, 0x0000b784, 0x00008b0e, 0x00008b0e, 0x00008b0e}, -- {0x00009af0, 0x0000b788, 0x0000b788, 0x00008b12, 0x00008b12, 0x00008b12}, -- {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008b16, 0x00008b16, 0x00008b16}, -- {0x00009af8, 0x0000b790, 0x0000b790, 0x00008b03, 0x00008b03, 0x00008b03}, -- {0x00009afc, 0x0000b794, 0x0000b794, 0x00008b07, 0x00008b07, 0x00008b07}, -- {0x00009b00, 0x0000b798, 0x0000b798, 0x00008b0b, 0x00008b0b, 0x00008b0b}, -- {0x00009b04, 0x0000d784, 0x0000d784, 0x00008b0f, 0x00008b0f, 0x00008b0f}, -- {0x00009b08, 0x0000d788, 0x0000d788, 0x00008b13, 0x00008b13, 0x00008b13}, -- {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008b17, 0x00008b17, 0x00008b17}, -- {0x00009b10, 0x0000d790, 0x0000d790, 0x00008b23, 0x00008b23, 0x00008b23}, -- {0x00009b14, 0x0000f780, 0x0000f780, 0x00008b27, 0x00008b27, 0x00008b27}, -- {0x00009b18, 0x0000f784, 0x0000f784, 0x00008b2b, 0x00008b2b, 0x00008b2b}, -- {0x00009b1c, 0x0000f788, 0x0000f788, 0x00008b2f, 0x00008b2f, 0x00008b2f}, -- {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008b33, 0x00008b33, 0x00008b33}, -- {0x00009b24, 0x0000f790, 0x0000f790, 0x00008b37, 0x00008b37, 0x00008b37}, -- {0x00009b28, 0x0000f794, 0x0000f794, 0x00008b43, 0x00008b43, 0x00008b43}, -- {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008b47, 0x00008b47, 0x00008b47}, -- {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008b4b, 0x00008b4b, 0x00008b4b}, -- {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008b4f, 0x00008b4f, 0x00008b4f}, -- {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008b53, 0x00008b53, 0x00008b53}, -- {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008b57, 0x00008b57, 0x00008b57}, -- {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b}, -- {0x00009848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, -- {0x0000a848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050}, -+ {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b80, 0x00008b80, 0x00008b80}, -+ {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b84, 0x00008b84, 0x00008b84}, -+ {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b88, 0x00008b88, 0x00008b88}, -+ {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b8c, 0x00008b8c, 0x00008b8c}, -+ {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b90, 0x00008b90, 0x00008b90}, -+ {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b94, 0x00008b94, 0x00008b94}, -+ {0x00009adc, 0x0000b390, 0x0000b390, 0x00008b98, 0x00008b98, 0x00008b98}, -+ {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008ba4, 0x00008ba4, 0x00008ba4}, -+ {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008ba8, 0x00008ba8, 0x00008ba8}, -+ {0x00009ae8, 0x0000b780, 0x0000b780, 0x00008bac, 0x00008bac, 0x00008bac}, -+ {0x00009aec, 0x0000b784, 0x0000b784, 0x00008bb0, 0x00008bb0, 0x00008bb0}, -+ {0x00009af0, 0x0000b788, 0x0000b788, 0x00008bb4, 0x00008bb4, 0x00008bb4}, -+ {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008ba1, 0x00008ba1, 0x00008ba1}, -+ {0x00009af8, 0x0000b790, 0x0000b790, 0x00008ba5, 0x00008ba5, 0x00008ba5}, -+ {0x00009afc, 0x0000b794, 0x0000b794, 0x00008ba9, 0x00008ba9, 0x00008ba9}, -+ {0x00009b00, 0x0000b798, 0x0000b798, 0x00008bad, 0x00008bad, 0x00008bad}, -+ {0x00009b04, 0x0000d784, 0x0000d784, 0x00008bb1, 0x00008bb1, 0x00008bb1}, -+ {0x00009b08, 0x0000d788, 0x0000d788, 0x00008bb5, 0x00008bb5, 0x00008bb5}, -+ {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008ba2, 0x00008ba2, 0x00008ba2}, -+ {0x00009b10, 0x0000d790, 0x0000d790, 0x00008ba6, 0x00008ba6, 0x00008ba6}, -+ {0x00009b14, 0x0000f780, 0x0000f780, 0x00008baa, 0x00008baa, 0x00008baa}, -+ {0x00009b18, 0x0000f784, 0x0000f784, 0x00008bae, 0x00008bae, 0x00008bae}, -+ {0x00009b1c, 0x0000f788, 0x0000f788, 0x00008bb2, 0x00008bb2, 0x00008bb2}, -+ {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008bb6, 0x00008bb6, 0x00008bb6}, -+ {0x00009b24, 0x0000f790, 0x0000f790, 0x00008ba3, 0x00008ba3, 0x00008ba3}, -+ {0x00009b28, 0x0000f794, 0x0000f794, 0x00008ba7, 0x00008ba7, 0x00008ba7}, -+ {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008bab, 0x00008bab, 0x00008bab}, -+ {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008baf, 0x00008baf, 0x00008baf}, -+ {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008bb3, 0x00008bb3, 0x00008bb3}, -+ {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008bb7, 0x00008bb7, 0x00008bb7}, -+ {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008bc3, 0x00008bc3, 0x00008bc3}, -+ {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008bc7, 0x00008bc7, 0x00008bc7}, -+ {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008bcb, 0x00008bcb, 0x00008bcb}, -+ {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008bcf, 0x00008bcf, 0x00008bcf}, -+ {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008bd3, 0x00008bd3, 0x00008bd3}, -+ {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008bd7, 0x00008bd7, 0x00008bd7}, -+ {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb}, -+ {0x00009848, 0x00001066, 0x00001066, 0x00001055, 0x00001055, 0x00001055}, -+ {0x0000a848, 0x00001066, 0x00001066, 0x00001055, 0x00001055, 0x00001055}, - }; - - static const u32 ar9280Modes_original_rxgain_9280_2[][6] = { -- {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290}, -- {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300}, -- {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304}, -- {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308}, -- {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c}, -+ {0x00009a00, 0x00008184, 0x00008184, 0x00008000, 0x00008000, 0x00008000}, -+ {0x00009a04, 0x00008188, 0x00008188, 0x00008000, 0x00008000, 0x00008000}, -+ {0x00009a08, 0x0000818c, 0x0000818c, 0x00008000, 0x00008000, 0x00008000}, -+ {0x00009a0c, 0x00008190, 0x00008190, 0x00008000, 0x00008000, 0x00008000}, -+ {0x00009a10, 0x00008194, 0x00008194, 0x00008000, 0x00008000, 0x00008000}, - {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000}, - {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004}, - {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008}, -@@ -1399,6 +1398,7 @@ static const u32 ar9280Modes_high_power_ - {0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5}, - {0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54}, - {0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5}, -+ {0x0000a3ec, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081}, - {0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, - {0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff}, - {0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000}, -@@ -1432,6 +1432,7 @@ static const u32 ar9280Modes_original_tx - {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a}, - {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9}, - {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42}, -+ {0x0000a3ec, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081}, - {0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, - {0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff}, - {0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000}, diff --git a/package/mac80211/patches/530-ath9k_nf_sanitize.patch b/package/mac80211/patches/530-ath9k_nf_sanitize.patch deleted file mode 100644 index 191daeab2..000000000 --- a/package/mac80211/patches/530-ath9k_nf_sanitize.patch +++ /dev/null @@ -1,406 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c -@@ -1678,6 +1678,15 @@ static void ar5008_hw_ani_cache_ini_regs - aniState->cycleCount = 0; - } - -+static void ar5008_hw_set_nf_limits(struct ath_hw *ah) -+{ -+ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_2GHZ; -+ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_2GHZ; -+ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_5416_2GHZ; -+ ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_5GHZ; -+ ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_5GHZ; -+ ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_5416_5GHZ; -+} - - void ar5008_hw_attach_phy_ops(struct ath_hw *ah) - { -@@ -1715,4 +1724,6 @@ void ar5008_hw_attach_phy_ops(struct ath - priv_ops->compute_pll_control = ar9160_hw_compute_pll_control; - else - priv_ops->compute_pll_control = ar5008_hw_compute_pll_control; -+ -+ ar5008_hw_set_nf_limits(ah); - } ---- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c -@@ -481,9 +481,6 @@ static void ar9002_hw_do_getnf(struct at - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ctl] [chain 0] is %d\n", nf); - -- if (AR_SREV_9271(ah) && (nf >= -114)) -- nf = -116; -- - nfarray[0] = nf; - - if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { -@@ -503,9 +500,6 @@ static void ar9002_hw_do_getnf(struct at - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ext] [chain 0] is %d\n", nf); - -- if (AR_SREV_9271(ah) && (nf >= -114)) -- nf = -116; -- - nfarray[3] = nf; - - if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { -@@ -520,6 +514,30 @@ static void ar9002_hw_do_getnf(struct at - } - } - -+static void ar9002_hw_set_nf_limits(struct ath_hw *ah) -+{ -+ if (AR_SREV_9285(ah)) { -+ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9285_2GHZ; -+ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9285_2GHZ; -+ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9285_2GHZ; -+ } else if (AR_SREV_9287(ah)) { -+ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9287_2GHZ; -+ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9287_2GHZ; -+ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9287_2GHZ; -+ } else if (AR_SREV_9271(ah)) { -+ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9271_2GHZ; -+ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9271_2GHZ; -+ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9271_2GHZ; -+ } else { -+ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9280_2GHZ; -+ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9280_2GHZ; -+ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9280_2GHZ; -+ ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_9280_5GHZ; -+ ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_9280_5GHZ; -+ ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_9280_5GHZ; -+ } -+} -+ - void ar9002_hw_attach_phy_ops(struct ath_hw *ah) - { - struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); -@@ -532,4 +550,6 @@ void ar9002_hw_attach_phy_ops(struct ath - priv_ops->olc_init = ar9002_olc_init; - priv_ops->compute_pll_control = ar9002_hw_compute_pll_control; - priv_ops->do_getnf = ar9002_hw_do_getnf; -+ -+ ar9002_hw_set_nf_limits(ah); - } ---- a/drivers/net/wireless/ath/ath9k/ar9002_phy.h -+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.h -@@ -576,4 +576,30 @@ - #define AR_PHY_CH2_EXT_MINCCA_PWR 0xFF800000 - #define AR_PHY_CH2_EXT_MINCCA_PWR_S 23 - -+#define AR_PHY_CCA_NOM_VAL_5416_2GHZ -90 -+#define AR_PHY_CCA_NOM_VAL_5416_5GHZ -100 -+#define AR_PHY_CCA_MIN_GOOD_VAL_5416_2GHZ -100 -+#define AR_PHY_CCA_MIN_GOOD_VAL_5416_5GHZ -110 -+#define AR_PHY_CCA_MAX_GOOD_VAL_5416_2GHZ -80 -+#define AR_PHY_CCA_MAX_GOOD_VAL_5416_5GHZ -90 -+ -+#define AR_PHY_CCA_NOM_VAL_9280_2GHZ -112 -+#define AR_PHY_CCA_NOM_VAL_9280_5GHZ -112 -+#define AR_PHY_CCA_MIN_GOOD_VAL_9280_2GHZ -127 -+#define AR_PHY_CCA_MIN_GOOD_VAL_9280_5GHZ -122 -+#define AR_PHY_CCA_MAX_GOOD_VAL_9280_2GHZ -97 -+#define AR_PHY_CCA_MAX_GOOD_VAL_9280_5GHZ -102 -+ -+#define AR_PHY_CCA_NOM_VAL_9285_2GHZ -118 -+#define AR_PHY_CCA_MIN_GOOD_VAL_9285_2GHZ -127 -+#define AR_PHY_CCA_MAX_GOOD_VAL_9285_2GHZ -108 -+ -+#define AR_PHY_CCA_NOM_VAL_9271_2GHZ -118 -+#define AR_PHY_CCA_MIN_GOOD_VAL_9271_2GHZ -127 -+#define AR_PHY_CCA_MAX_GOOD_VAL_9271_2GHZ -116 -+ -+#define AR_PHY_CCA_NOM_VAL_9287_2GHZ -120 -+#define AR_PHY_CCA_MIN_GOOD_VAL_9287_2GHZ -127 -+#define AR_PHY_CCA_MAX_GOOD_VAL_9287_2GHZ -110 -+ - #endif ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -1015,52 +1015,6 @@ static bool ar9003_hw_ani_control(struct - return true; - } - --static void ar9003_hw_nf_sanitize_2g(struct ath_hw *ah, s16 *nf) --{ -- struct ath_common *common = ath9k_hw_common(ah); -- -- if (*nf > ah->nf_2g_max) { -- ath_print(common, ATH_DBG_CALIBRATE, -- "2 GHz NF (%d) > MAX (%d), " -- "correcting to MAX", -- *nf, ah->nf_2g_max); -- *nf = ah->nf_2g_max; -- } else if (*nf < ah->nf_2g_min) { -- ath_print(common, ATH_DBG_CALIBRATE, -- "2 GHz NF (%d) < MIN (%d), " -- "correcting to MIN", -- *nf, ah->nf_2g_min); -- *nf = ah->nf_2g_min; -- } --} -- --static void ar9003_hw_nf_sanitize_5g(struct ath_hw *ah, s16 *nf) --{ -- struct ath_common *common = ath9k_hw_common(ah); -- -- if (*nf > ah->nf_5g_max) { -- ath_print(common, ATH_DBG_CALIBRATE, -- "5 GHz NF (%d) > MAX (%d), " -- "correcting to MAX", -- *nf, ah->nf_5g_max); -- *nf = ah->nf_5g_max; -- } else if (*nf < ah->nf_5g_min) { -- ath_print(common, ATH_DBG_CALIBRATE, -- "5 GHz NF (%d) < MIN (%d), " -- "correcting to MIN", -- *nf, ah->nf_5g_min); -- *nf = ah->nf_5g_min; -- } --} -- --static void ar9003_hw_nf_sanitize(struct ath_hw *ah, s16 *nf) --{ -- if (IS_CHAN_2GHZ(ah->curchan)) -- ar9003_hw_nf_sanitize_2g(ah, nf); -- else -- ar9003_hw_nf_sanitize_5g(ah, nf); --} -- - static void ar9003_hw_do_getnf(struct ath_hw *ah, - int16_t nfarray[NUM_NF_READINGS]) - { -@@ -1070,7 +1024,6 @@ static void ar9003_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_CCA_0), AR_PHY_MINCCA_PWR); - if (nf & 0x100) - nf = 0 - ((nf ^ 0x1ff) + 1); -- ar9003_hw_nf_sanitize(ah, &nf); - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ctl] [chain 0] is %d\n", nf); - nfarray[0] = nf; -@@ -1078,7 +1031,6 @@ static void ar9003_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_CCA_1), AR_PHY_CH1_MINCCA_PWR); - if (nf & 0x100) - nf = 0 - ((nf ^ 0x1ff) + 1); -- ar9003_hw_nf_sanitize(ah, &nf); - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ctl] [chain 1] is %d\n", nf); - nfarray[1] = nf; -@@ -1086,7 +1038,6 @@ static void ar9003_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); - if (nf & 0x100) - nf = 0 - ((nf ^ 0x1ff) + 1); -- ar9003_hw_nf_sanitize(ah, &nf); - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ctl] [chain 2] is %d\n", nf); - nfarray[2] = nf; -@@ -1094,7 +1045,6 @@ static void ar9003_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); - if (nf & 0x100) - nf = 0 - ((nf ^ 0x1ff) + 1); -- ar9003_hw_nf_sanitize(ah, &nf); - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ext] [chain 0] is %d\n", nf); - nfarray[3] = nf; -@@ -1102,7 +1052,6 @@ static void ar9003_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_1), AR_PHY_CH1_EXT_MINCCA_PWR); - if (nf & 0x100) - nf = 0 - ((nf ^ 0x1ff) + 1); -- ar9003_hw_nf_sanitize(ah, &nf); - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ext] [chain 1] is %d\n", nf); - nfarray[4] = nf; -@@ -1110,18 +1059,19 @@ static void ar9003_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_2), AR_PHY_CH2_EXT_MINCCA_PWR); - if (nf & 0x100) - nf = 0 - ((nf ^ 0x1ff) + 1); -- ar9003_hw_nf_sanitize(ah, &nf); - ath_print(common, ATH_DBG_CALIBRATE, - "NF calibrated [ext] [chain 2] is %d\n", nf); - nfarray[5] = nf; - } - --void ar9003_hw_set_nf_limits(struct ath_hw *ah) -+static void ar9003_hw_set_nf_limits(struct ath_hw *ah) - { -- ah->nf_2g_max = AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ; -- ah->nf_2g_min = AR_PHY_CCA_MIN_GOOD_VAL_9300_2GHZ; -- ah->nf_5g_max = AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ; -- ah->nf_5g_min = AR_PHY_CCA_MIN_GOOD_VAL_9300_5GHZ; -+ ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ; -+ ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_2GHZ; -+ ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9300_2GHZ; -+ ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ; -+ ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_5GHZ; -+ ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_9300_5GHZ; - } - - /* -@@ -1309,6 +1259,8 @@ void ar9003_hw_attach_phy_ops(struct ath - priv_ops->do_getnf = ar9003_hw_do_getnf; - priv_ops->loadnf = ar9003_hw_loadnf; - priv_ops->ani_cache_ini_regs = ar9003_hw_ani_cache_ini_regs; -+ -+ ar9003_hw_set_nf_limits(ah); - } - - void ar9003_hw_bb_watchdog_config(struct ath_hw *ah) ---- a/drivers/net/wireless/ath/ath9k/calib.c -+++ b/drivers/net/wireless/ath/ath9k/calib.c -@@ -74,13 +74,8 @@ static void ath9k_hw_update_nfcal_hist_b - h[i].currIndex = 0; - - if (h[i].invalidNFcount > 0) { -- if (nfarray[i] < AR_PHY_CCA_MIN_BAD_VALUE || -- nfarray[i] > AR_PHY_CCA_MAX_HIGH_VALUE) { -- h[i].invalidNFcount = ATH9K_NF_CAL_HIST_MAX; -- } else { -- h[i].invalidNFcount--; -- h[i].privNF = nfarray[i]; -- } -+ h[i].invalidNFcount--; -+ h[i].privNF = nfarray[i]; - } else { - h[i].privNF = - ath9k_hw_get_nf_hist_mid(h[i].nfCalBuffer); -@@ -172,6 +167,35 @@ void ath9k_hw_start_nfcal(struct ath_hw - REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); - } - -+static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf) -+{ -+ struct ath_common *common = ath9k_hw_common(ah); -+ struct ath_nf_limits *limit; -+ int i; -+ -+ if (IS_CHAN_2GHZ(ah->curchan)) -+ limit = &ah->nf_2g; -+ else -+ limit = &ah->nf_5g; -+ -+ for (i = 0; i < NUM_NF_READINGS; i++) { -+ if (!nf[i]) -+ continue; -+ -+ if (nf[i] > limit->max) { -+ ath_print(common, ATH_DBG_CALIBRATE, -+ "NF[%d] (%d) > MAX (%d), correcting to MAX", -+ i, nf[i], limit->max); -+ nf[i] = limit->max; -+ } else if (nf[i] < limit->min) { -+ ath_print(common, ATH_DBG_CALIBRATE, -+ "NF[%d] (%d) < MIN (%d), correcting to NOM", -+ i, nf[i], limit->min); -+ nf[i] = limit->nominal; -+ } -+ } -+} -+ - int16_t ath9k_hw_getnf(struct ath_hw *ah, - struct ath9k_channel *chan) - { -@@ -190,6 +214,7 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah - return chan->rawNoiseFloor; - } else { - ath9k_hw_do_getnf(ah, nfarray); -+ ath9k_hw_nf_sanitize(ah, nfarray); - nf = nfarray[0]; - if (ath9k_hw_get_nf_thresh(ah, c->band, &nfThresh) - && nf > nfThresh) { -@@ -211,25 +236,21 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah - - void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah) - { -+ struct ath_nf_limits *limit; - int i, j; -- s16 noise_floor; - -- if (AR_SREV_9280(ah)) -- noise_floor = AR_PHY_CCA_MAX_AR9280_GOOD_VALUE; -- else if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) -- noise_floor = AR_PHY_CCA_MAX_AR9285_GOOD_VALUE; -- else if (AR_SREV_9287(ah)) -- noise_floor = AR_PHY_CCA_MAX_AR9287_GOOD_VALUE; -+ if (!ah->curchan || IS_CHAN_2GHZ(ah->curchan)) -+ limit = &ah->nf_2g; - else -- noise_floor = AR_PHY_CCA_MAX_AR5416_GOOD_VALUE; -+ limit = &ah->nf_5g; - - for (i = 0; i < NUM_NF_READINGS; i++) { - ah->nfCalHist[i].currIndex = 0; -- ah->nfCalHist[i].privNF = noise_floor; -+ ah->nfCalHist[i].privNF = limit->nominal; - ah->nfCalHist[i].invalidNFcount = - AR_PHY_CCA_FILTERWINDOW_LENGTH; - for (j = 0; j < ATH9K_NF_CAL_HIST_MAX; j++) { -- ah->nfCalHist[i].nfCalBuffer[j] = noise_floor; -+ ah->nfCalHist[i].nfCalBuffer[j] = limit->nominal; - } - } - } ---- a/drivers/net/wireless/ath/ath9k/calib.h -+++ b/drivers/net/wireless/ath/ath9k/calib.h -@@ -19,12 +19,6 @@ - - #include "hw.h" - --#define AR_PHY_CCA_MAX_AR5416_GOOD_VALUE -85 --#define AR_PHY_CCA_MAX_AR9280_GOOD_VALUE -112 --#define AR_PHY_CCA_MAX_AR9285_GOOD_VALUE -118 --#define AR_PHY_CCA_MAX_AR9287_GOOD_VALUE -118 --#define AR_PHY_CCA_MAX_HIGH_VALUE -62 --#define AR_PHY_CCA_MIN_BAD_VALUE -140 - #define AR_PHY_CCA_FILTERWINDOW_LENGTH_INIT 3 - #define AR_PHY_CCA_FILTERWINDOW_LENGTH 5 - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -621,9 +621,6 @@ static int __ath9k_hw_init(struct ath_hw - else - ah->tx_trig_level = (AR_FTRIG_512B >> AR_FTRIG_S); - -- if (AR_SREV_9300_20_OR_LATER(ah)) -- ar9003_hw_set_nf_limits(ah); -- - ath9k_init_nfcal_hist_buffer(ah); - ah->bb_watchdog_timeout_ms = 25; - ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -630,6 +630,12 @@ struct ath_hw_ops { - void (*ani_monitor)(struct ath_hw *ah, struct ath9k_channel *chan); - }; - -+struct ath_nf_limits { -+ s16 max; -+ s16 min; -+ s16 nominal; -+}; -+ - struct ath_hw { - struct ieee80211_hw *hw; - struct ath_common common; -@@ -651,10 +657,9 @@ struct ath_hw { - bool is_pciexpress; - bool need_an_top2_fixup; - u16 tx_trig_level; -- s16 nf_2g_max; -- s16 nf_2g_min; -- s16 nf_5g_max; -- s16 nf_5g_min; -+ -+ struct ath_nf_limits nf_2g; -+ struct ath_nf_limits nf_5g; - u16 rfsilent; - u32 rfkill_gpio; - u32 rfkill_polarity; -@@ -945,7 +950,6 @@ void ar9002_hw_enable_wep_aggregation(st - * Code specific to AR9003, we stuff these here to avoid callbacks - * for older families - */ --void ar9003_hw_set_nf_limits(struct ath_hw *ah); - void ar9003_hw_bb_watchdog_config(struct ath_hw *ah); - void ar9003_hw_bb_watchdog_read(struct ath_hw *ah); - void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah); diff --git a/package/mac80211/patches/531-ath9k_nf_cleanup.patch b/package/mac80211/patches/531-ath9k_nf_cleanup.patch deleted file mode 100644 index f74e4f676..000000000 --- a/package/mac80211/patches/531-ath9k_nf_cleanup.patch +++ /dev/null @@ -1,207 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c -@@ -1497,50 +1497,25 @@ static bool ar5008_hw_ani_control_new(st - static void ar5008_hw_do_getnf(struct ath_hw *ah, - int16_t nfarray[NUM_NF_READINGS]) - { -- struct ath_common *common = ath9k_hw_common(ah); - int16_t nf; - - nf = MS(REG_READ(ah, AR_PHY_CCA), AR_PHY_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 0] is %d\n", nf); -- nfarray[0] = nf; -+ nfarray[0] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR_PHY_CH1_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 1] is %d\n", nf); -- nfarray[1] = nf; -+ nfarray[1] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 2] is %d\n", nf); -- nfarray[2] = nf; -+ nfarray[2] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 0] is %d\n", nf); -- nfarray[3] = nf; -+ nfarray[3] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR_PHY_CH1_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 1] is %d\n", nf); -- nfarray[4] = nf; -+ nfarray[4] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA), AR_PHY_CH2_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 2] is %d\n", nf); -- nfarray[5] = nf; -+ nfarray[5] = sign_extend(nf, 9); - } - - static void ar5008_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) ---- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c -@@ -471,47 +471,22 @@ static u32 ar9002_hw_compute_pll_control - static void ar9002_hw_do_getnf(struct ath_hw *ah, - int16_t nfarray[NUM_NF_READINGS]) - { -- struct ath_common *common = ath9k_hw_common(ah); - int16_t nf; - - nf = MS(REG_READ(ah, AR_PHY_CCA), AR9280_PHY_MINCCA_PWR); -- -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 0] is %d\n", nf); -- -- nfarray[0] = nf; -- -- if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { -- nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), -- AR9280_PHY_CH1_MINCCA_PWR); -- -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 1] is %d\n", nf); -- nfarray[1] = nf; -- } -+ nfarray[0] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 0] is %d\n", nf); -- -- nfarray[3] = nf; -- -- if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { -- nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), -- AR9280_PHY_CH1_EXT_MINCCA_PWR); -- -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 1] is %d\n", nf); -- nfarray[4] = nf; -- } -+ nfarray[3] = sign_extend(nf, 9); -+ -+ if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) -+ return; -+ -+ nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR9280_PHY_CH1_MINCCA_PWR); -+ nfarray[1] = sign_extend(nf, 9); -+ -+ nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR); -+ nfarray[4] = sign_extend(nf, 9); - } - - static void ar9002_hw_set_nf_limits(struct ath_hw *ah) ---- a/drivers/net/wireless/ath/ath9k/calib.c -+++ b/drivers/net/wireless/ath/ath9k/calib.c -@@ -182,6 +182,10 @@ static void ath9k_hw_nf_sanitize(struct - if (!nf[i]) - continue; - -+ ath_print(common, ATH_DBG_CALIBRATE, -+ "NF calibrated [%s] [chain %d] is %d\n", -+ (i > 3 ? "ext" : "ctl"), i % 3, nf[i]); -+ - if (nf[i] > limit->max) { - ath_print(common, ATH_DBG_CALIBRATE, - "NF[%d] (%d) > MAX (%d), correcting to MAX", ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -853,6 +853,12 @@ static inline struct ath_hw_ops *ath9k_h - return &ah->ops; - } - -+static inline int sign_extend(int val, const int nbits) -+{ -+ int order = BIT(nbits-1); -+ return (val ^ order) - order; -+} -+ - /* Initialization, Detach, Reset */ - const char *ath9k_hw_probe(u16 vendorid, u16 devid); - void ath9k_hw_deinit(struct ath_hw *ah); ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -1018,50 +1018,25 @@ static bool ar9003_hw_ani_control(struct - static void ar9003_hw_do_getnf(struct ath_hw *ah, - int16_t nfarray[NUM_NF_READINGS]) - { -- struct ath_common *common = ath9k_hw_common(ah); - int16_t nf; - - nf = MS(REG_READ(ah, AR_PHY_CCA_0), AR_PHY_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 0] is %d\n", nf); -- nfarray[0] = nf; -+ nfarray[0] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CCA_1), AR_PHY_CH1_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 1] is %d\n", nf); -- nfarray[1] = nf; -+ nfarray[1] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ctl] [chain 2] is %d\n", nf); -- nfarray[2] = nf; -+ nfarray[2] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 0] is %d\n", nf); -- nfarray[3] = nf; -+ nfarray[3] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_1), AR_PHY_CH1_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 1] is %d\n", nf); -- nfarray[4] = nf; -+ nfarray[4] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_2), AR_PHY_CH2_EXT_MINCCA_PWR); -- if (nf & 0x100) -- nf = 0 - ((nf ^ 0x1ff) + 1); -- ath_print(common, ATH_DBG_CALIBRATE, -- "NF calibrated [ext] [chain 2] is %d\n", nf); -- nfarray[5] = nf; -+ nfarray[5] = sign_extend(nf, 9); - } - - static void ar9003_hw_set_nf_limits(struct ath_hw *ah) diff --git a/package/mac80211/patches/540-ath9k_hang_check.patch b/package/mac80211/patches/540-ath9k_hang_check.patch deleted file mode 100644 index 85e03bc98..000000000 --- a/package/mac80211/patches/540-ath9k_hang_check.patch +++ /dev/null @@ -1,90 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -428,6 +428,7 @@ int ath_beaconq_config(struct ath_softc - - #define ATH_PAPRD_TIMEOUT 100 /* msecs */ - -+void ath_hw_check(struct work_struct *work); - void ath_paprd_calibrate(struct work_struct *work); - void ath_ani_calibrate(unsigned long data); - -@@ -563,6 +564,7 @@ struct ath_softc { - spinlock_t sc_pm_lock; - struct mutex mutex; - struct work_struct paprd_work; -+ struct work_struct hw_check_work; - struct completion paprd_complete; - - u32 intrstatus; ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -516,6 +516,25 @@ static void ath_node_detach(struct ath_s - ath_tx_node_cleanup(sc, an); - } - -+void ath_hw_check(struct work_struct *work) -+{ -+ struct ath_softc *sc = container_of(work, struct ath_softc, hw_check_work); -+ int i; -+ -+ ath9k_ps_wakeup(sc); -+ -+ for (i = 0; i < 3; i++) { -+ if (ath9k_hw_check_alive(sc->sc_ah)) -+ goto out; -+ -+ msleep(1); -+ } -+ ath_reset(sc, false); -+ -+out: -+ ath9k_ps_restore(sc); -+} -+ - void ath9k_tasklet(unsigned long data) - { - struct ath_softc *sc = (struct ath_softc *)data; -@@ -527,13 +546,15 @@ void ath9k_tasklet(unsigned long data) - - ath9k_ps_wakeup(sc); - -- if ((status & ATH9K_INT_FATAL) || -- !ath9k_hw_check_alive(ah)) { -+ if (status & ATH9K_INT_FATAL) { - ath_reset(sc, false); - ath9k_ps_restore(sc); - return; - } - -+ if (!ath9k_hw_check_alive(ah)) -+ ieee80211_queue_work(sc->hw, &sc->hw_check_work); -+ - if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) - rxmask = (ATH9K_INT_RXHP | ATH9K_INT_RXLP | ATH9K_INT_RXEOL | - ATH9K_INT_RXORN); -@@ -1254,6 +1275,7 @@ static void ath9k_stop(struct ieee80211_ - - cancel_delayed_work_sync(&sc->tx_complete_work); - cancel_work_sync(&sc->paprd_work); -+ cancel_work_sync(&sc->hw_check_work); - - if (!sc->num_sec_wiphy) { - cancel_delayed_work_sync(&sc->wiphy_work); -@@ -1977,6 +1999,7 @@ static void ath9k_sw_scan_start(struct i - sc->sc_flags |= SC_OP_SCANNING; - del_timer_sync(&common->ani.timer); - cancel_work_sync(&sc->paprd_work); -+ cancel_work_sync(&sc->hw_check_work); - cancel_delayed_work_sync(&sc->tx_complete_work); - mutex_unlock(&sc->mutex); - } ---- a/drivers/net/wireless/ath/ath9k/init.c -+++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -751,6 +751,7 @@ int ath9k_init_device(u16 devid, struct - goto error_world; - } - -+ INIT_WORK(&sc->hw_check_work, ath_hw_check); - INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); - INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work); - INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work); diff --git a/package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch b/package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch deleted file mode 100644 index a71db0440..000000000 --- a/package/mac80211/patches/550-ath9k_fix_wep_adhoc_crash.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/common.c -+++ b/drivers/net/wireless/ath/ath9k/common.c -@@ -319,6 +319,10 @@ int ath9k_cmn_key_config(struct ath_comm - idx = ath_reserve_key_cache_slot(common, key->alg); - break; - case NL80211_IFTYPE_ADHOC: -+ if (!sta) { -+ idx = key->keyidx; -+ break; -+ } - memcpy(gmac, sta->addr, ETH_ALEN); - gmac[0] |= 0x01; - mac = gmac; 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 bae97ca17..37d7b847a 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 @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c -@@ -262,6 +262,7 @@ void rt2x00pci_uninitialize(struct rt2x0 +@@ -188,6 +188,7 @@ void rt2x00pci_uninitialize(struct rt2x0 } EXPORT_SYMBOL_GPL(rt2x00pci_uninitialize); @@ -8,7 +8,7 @@ /* * PCI driver handlers. */ -@@ -439,6 +440,7 @@ int rt2x00pci_resume(struct pci_dev *pci +@@ -365,6 +366,7 @@ int rt2x00pci_resume(struct pci_dev *pci } EXPORT_SYMBOL_GPL(rt2x00pci_resume); #endif /* CONFIG_PM */ diff --git a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch index a584d0009..5b1ae415a 100644 --- a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch +++ b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch @@ -14,11 +14,9 @@ Signed-off-by: Helmut Schaa drivers/net/wireless/rt2x00/rt2800pci.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) -diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c -index 165da7b..bb35350 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -737,6 +737,10 @@ static void rt2800pci_kill_tx_queue(struct rt2x00_dev *rt2x00dev, +@@ -749,6 +749,10 @@ static void rt2800pci_kill_tx_queue(stru rt2800_register_write(rt2x00dev, BCN_TIME_CFG, 0); return; } @@ -29,6 +27,3 @@ index 165da7b..bb35350 100644 rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, ®); rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, (qid == QID_AC_BE)); --- -1.6.4.2 - diff --git a/package/mac80211/patches/750-set_pci_mwi.patch b/package/mac80211/patches/750-set_pci_mwi.patch index feb5d477a..3cc5bdb62 100644 --- a/package/mac80211/patches/750-set_pci_mwi.patch +++ b/package/mac80211/patches/750-set_pci_mwi.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c -@@ -327,8 +327,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ +@@ -253,8 +253,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ pci_set_master(pci_dev); From e7085b58aa2a24c63103c7b0a4ed46f389743ade Mon Sep 17 00:00:00 2001 From: nbd Date: Sat, 10 Jul 2010 00:49:29 +0000 Subject: [PATCH 56/90] [backfire] merge b44 spam fix from r22110 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22111 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches-2.6.32/211-b44_timeout_spam.patch | 17 +++++++++++++++++ .../813-use_netdev_alloc_skb.patch | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 target/linux/brcm47xx/patches-2.6.32/211-b44_timeout_spam.patch diff --git a/target/linux/brcm47xx/patches-2.6.32/211-b44_timeout_spam.patch b/target/linux/brcm47xx/patches-2.6.32/211-b44_timeout_spam.patch new file mode 100644 index 000000000..dbd46aee6 --- /dev/null +++ b/target/linux/brcm47xx/patches-2.6.32/211-b44_timeout_spam.patch @@ -0,0 +1,17 @@ +--- a/drivers/net/b44.c ++++ b/drivers/net/b44.c +@@ -189,11 +189,13 @@ static int b44_wait_bit(struct b44 *bp, + udelay(10); + } + if (i == timeout) { +- printk(KERN_ERR PFX "%s: BUG! Timeout waiting for bit %08x of register " ++#if 0 ++ printk(KERN_DEBUG PFX "%s: BUG! Timeout waiting for bit %08x of register " + "%lx to %s.\n", + bp->dev->name, + bit, reg, + (clear ? "clear" : "set")); ++#endif + return -ENODEV; + } + return 0; diff --git a/target/linux/brcm47xx/patches-2.6.32/813-use_netdev_alloc_skb.patch b/target/linux/brcm47xx/patches-2.6.32/813-use_netdev_alloc_skb.patch index a9b2db586..2cfa824cc 100644 --- a/target/linux/brcm47xx/patches-2.6.32/813-use_netdev_alloc_skb.patch +++ b/target/linux/brcm47xx/patches-2.6.32/813-use_netdev_alloc_skb.patch @@ -1,6 +1,6 @@ --- a/drivers/net/b44.c +++ b/drivers/net/b44.c -@@ -848,7 +848,7 @@ static int b44_rx(struct b44 *bp, int bu +@@ -850,7 +850,7 @@ static int b44_rx(struct b44 *bp, int bu struct sk_buff *copy_skb; b44_recycle_rx(bp, cons, bp->rx_prod); From 966bcf7074a34125e9d3772e906781bb8aee982e Mon Sep 17 00:00:00 2001 From: nbd Date: Sat, 10 Jul 2010 00:52:26 +0000 Subject: [PATCH 57/90] [backfire] broadcom-diag: merge SimpleTech SimpleShare fix from r22112 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22113 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/broadcom-diag/src/diag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/broadcom-diag/src/diag.c b/package/broadcom-diag/src/diag.c index 27a3ee438..4ee734b7d 100644 --- a/package/broadcom-diag/src/diag.c +++ b/package/broadcom-diag/src/diag.c @@ -1095,7 +1095,7 @@ static struct platform_t __init *platform_detect(void) return &platforms[TEW411BRPP]; } - if (startswith(boardnum, "04FN52")) /* SimpleTech SimpleShare */ + if (startswith(boardnum, "04FN")) /* SimpleTech SimpleShare */ return &platforms[STI_NAS]; if (!strcmp(getvar("boardnum"), "10") && !strcmp(getvar("boardrev"), "0x13")) /* D-Link DWL-3150 */ From 20a53397e68edd5a32a14bbcae6a55da933a85f7 Mon Sep 17 00:00:00 2001 From: nico Date: Sun, 11 Jul 2010 00:26:32 +0000 Subject: [PATCH 58/90] [backfire] merge r21572 package/carl9170: update to 1.0.5.3 (closes: #7342), make DebugFS support configurable and add LEDs support git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22121 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/carl9170/Makefile | 35 +++++++++++++++---- .../patches/100-request_firmware_compat.patch | 2 +- .../carl9170/patches/120-compile_fix.patch | 13 ------- 3 files changed, 30 insertions(+), 20 deletions(-) delete mode 100644 package/carl9170/patches/120-compile_fix.patch diff --git a/package/carl9170/Makefile b/package/carl9170/Makefile index 823838986..34165cb48 100644 --- a/package/carl9170/Makefile +++ b/package/carl9170/Makefile @@ -9,13 +9,16 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=carl9170 -PKG_VERSION:=1.0.1.1 +PKG_VERSION:=1.0.5.3 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/chr/carl9170/$(PKG_VERSION) \ @KERNEL/linux/kernel/people/chr/carl9170/old/$(PKG_VERSION) -PKG_MD5SUM:=8abbb4ae09a45a82af6f63cb65c7e2d8 +PKG_MD5SUM:=91d714d1e5c5c62da1191ac5afd8bcb0 + +PKG_CONFIG_DEPENDS:= \ + CONFIG_PACKAGE_CARL9170_DEBUGFS \ include $(INCLUDE_DIR)/package.mk @@ -28,6 +31,21 @@ define KernelPackage/carl9170 URL:=http://www.kernel.org/pub/linux/kernel/people/chr/carl9170 FILES:=$(DRV_PATH)/carl9170usb.$(LINUX_KMOD_SUFFIX) AUTOLOAD:=$(call AutoLoad,60,carl9170usb) + MENU:=1 +endef + +define KernelPackage/carl9170/config + menu "Configuration" + depends PACKAGE_kmod-carl9170 + + config PACKAGE_CARL9170_DEBUGFS + bool "Enable Debugging (DebugFS) Support" + depends PACKAGE_MAC80211_DEBUGFS + help + Say Y if you need access to carl9170usb's statistics for QoS queue + status, rate control, etc... + + endmenu endef define KernelPackage/carl9170/description @@ -39,16 +57,21 @@ define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(HOST_TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(PKG_SOURCE) $(HOST_TAR) -C $(PKG_BUILD_DIR) -xf $(PKG_BUILD_DIR)/$(PKG_VERSION)/driver/carl9170-driver-$(PKG_VERSION).tar - ln -sf Makefile.standalone $(DRV_PATH)/Makefile ln -s $(STAGING_DIR)/usr/include/mac80211/ath/*.h $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ $(Build/Patch) endef BUILDFLAGS = \ - CONFIG_MAC80211_DEBUGFS=$(CONFIG_PACKAGE_MAC80211_DEBUGFS) + CONFIG_CARL9170_USB=m \ + CONFIG_CARL9170_LEDS=$(if $(CONFIG_LEDS_TRIGGERS),y) \ + CONFIG_CARL9170_DEBUGFS=$(if $(CONFIG_PACKAGE_CARL9170_DEBUGFS),y) \ + CONFIG_MAC80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \ EXTRA_CFLAGS = \ - $(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD) + $(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD) \ + $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_CARL9170_LEDS) \ + $(if $(CONFIG_PACKAGE_CARL9170_DEBUGFS),-DCONFIG_CARL9170_DEBUGFS) \ + $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS) \ define Build/Compile $(MAKE) -C $(LINUX_DIR) \ @@ -61,7 +84,7 @@ endef define KernelPackage/carl9170/install $(INSTALL_DIR) $(1)/lib/firmware - $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_VERSION)/firmware_build/carl9170.fw $(1)/lib/firmware/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_VERSION)/firmware_build/carl9170-1.fw $(1)/lib/firmware/ endef $(eval $(call KernelPackage,carl9170)) diff --git a/package/carl9170/patches/100-request_firmware_compat.patch b/package/carl9170/patches/100-request_firmware_compat.patch index f1dae2d01..cc29239c8 100644 --- a/package/carl9170/patches/100-request_firmware_compat.patch +++ b/package/carl9170/patches/100-request_firmware_compat.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/carl9170/usb.c +++ b/drivers/net/wireless/ath/carl9170/usb.c -@@ -988,11 +988,28 @@ err_failed: +@@ -1000,11 +1000,28 @@ err_failed: ar9170_usb_firmware_failed(aru); } diff --git a/package/carl9170/patches/120-compile_fix.patch b/package/carl9170/patches/120-compile_fix.patch deleted file mode 100644 index 00f0fba84..000000000 --- a/package/carl9170/patches/120-compile_fix.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/drivers/net/wireless/ath/carl9170/fw.c -+++ b/drivers/net/wireless/ath/carl9170/fw.c -@@ -185,8 +185,10 @@ static int ar9170_fw_check(struct ar9170 - if (SUPP(CARL9170FW_WLANTX_CAB)) - ar->hw->wiphy->interface_modes |= BIT(NL80211_IFTYPE_AP); - -+#ifdef CONFIG_CARL9170_WPS_BUTTON - if (!SUPP(CARL9170FW_GPIO_INTERRUPT)) - ar->has_wps_button = false; -+#endif - - #undef SUPPORTED - return 0; From 8c0d987c3a2b5530c18aee1a3b817fd892d9fe49 Mon Sep 17 00:00:00 2001 From: nbd Date: Sun, 11 Jul 2010 03:51:34 +0000 Subject: [PATCH 59/90] [backfire] merge ath9k fixes from r22123 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22124 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../520-ath9k_ar9285_diversity_fix.patch | 77 +++++++++++++++++++ .../patches/521-ath9k_iqcal_fix.patch | 11 +++ .../patches/522-ath9k_pwrcal_fix.patch | 11 +++ .../523-ath9k_channel_change_fix.patch | 15 ++++ .../524-ath9k_aggr_status_validate.patch | 51 ++++++++++++ .../patches/525-ath9k_handle_keymiss.patch | 23 ++++++ 6 files changed, 188 insertions(+) create mode 100644 package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch create mode 100644 package/mac80211/patches/521-ath9k_iqcal_fix.patch create mode 100644 package/mac80211/patches/522-ath9k_pwrcal_fix.patch create mode 100644 package/mac80211/patches/523-ath9k_channel_change_fix.patch create mode 100644 package/mac80211/patches/524-ath9k_aggr_status_validate.patch create mode 100644 package/mac80211/patches/525-ath9k_handle_keymiss.patch diff --git a/package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch b/package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch new file mode 100644 index 000000000..a79667421 --- /dev/null +++ b/package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch @@ -0,0 +1,77 @@ +--- a/drivers/net/wireless/ath/ath9k/eeprom.h ++++ b/drivers/net/wireless/ath/ath9k/eeprom.h +@@ -670,7 +670,7 @@ struct eeprom_ops { + int (*get_eeprom_ver)(struct ath_hw *hw); + int (*get_eeprom_rev)(struct ath_hw *hw); + u8 (*get_num_ant_config)(struct ath_hw *hw, enum ieee80211_band band); +- u16 (*get_eeprom_antenna_cfg)(struct ath_hw *hw, ++ u32 (*get_eeprom_antenna_cfg)(struct ath_hw *hw, + struct ath9k_channel *chan); + void (*set_board_values)(struct ath_hw *hw, struct ath9k_channel *chan); + void (*set_addac)(struct ath_hw *hw, struct ath9k_channel *chan); +--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c +@@ -1130,13 +1130,13 @@ static u8 ath9k_hw_ar9287_get_num_ant_co + return 1; + } + +-static u16 ath9k_hw_ar9287_get_eeprom_antenna_cfg(struct ath_hw *ah, ++static u32 ath9k_hw_ar9287_get_eeprom_antenna_cfg(struct ath_hw *ah, + struct ath9k_channel *chan) + { + struct ar9287_eeprom *eep = &ah->eeprom.map9287; + struct modal_eep_ar9287_header *pModal = &eep->modalHeader; + +- return pModal->antCtrlCommon & 0xFFFF; ++ return pModal->antCtrlCommon; + } + + static u16 ath9k_hw_ar9287_get_spur_channel(struct ath_hw *ah, +--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c +@@ -1438,14 +1438,14 @@ static u8 ath9k_hw_def_get_num_ant_confi + return num_ant_config; + } + +-static u16 ath9k_hw_def_get_eeprom_antenna_cfg(struct ath_hw *ah, ++static u32 ath9k_hw_def_get_eeprom_antenna_cfg(struct ath_hw *ah, + struct ath9k_channel *chan) + { + struct ar5416_eeprom_def *eep = &ah->eeprom.def; + struct modal_eep_header *pModal = + &(eep->modalHeader[IS_CHAN_2GHZ(chan)]); + +- return pModal->antCtrlCommon & 0xFFFF; ++ return pModal->antCtrlCommon; + } + + static u16 ath9k_hw_def_get_spur_channel(struct ath_hw *ah, u16 i, bool is2GHz) +--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c +@@ -1150,13 +1150,13 @@ static void ath9k_hw_4k_set_board_values + } + } + +-static u16 ath9k_hw_4k_get_eeprom_antenna_cfg(struct ath_hw *ah, ++static u32 ath9k_hw_4k_get_eeprom_antenna_cfg(struct ath_hw *ah, + struct ath9k_channel *chan) + { + struct ar5416_eeprom_4k *eep = &ah->eeprom.map4k; + struct modal_eep_4k_header *pModal = &eep->modalHeader; + +- return pModal->antCtrlCommon & 0xFFFF; ++ return pModal->antCtrlCommon; + } + + static u8 ath9k_hw_4k_get_num_ant_config(struct ath_hw *ah, +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +@@ -951,7 +951,7 @@ static u8 ath9k_hw_ar9300_get_num_ant_co + return 1; + } + +-static u16 ath9k_hw_ar9300_get_eeprom_antenna_cfg(struct ath_hw *ah, ++static u32 ath9k_hw_ar9300_get_eeprom_antenna_cfg(struct ath_hw *ah, + struct ath9k_channel *chan) + { + return -EINVAL; diff --git a/package/mac80211/patches/521-ath9k_iqcal_fix.patch b/package/mac80211/patches/521-ath9k_iqcal_fix.patch new file mode 100644 index 000000000..1efd6cccc --- /dev/null +++ b/package/mac80211/patches/521-ath9k_iqcal_fix.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c +@@ -239,7 +239,7 @@ static void ar9002_hw_iqcalibrate(struct + if (qCoff > 15) + qCoff = 15; + else if (qCoff <= -16) +- qCoff = 16; ++ qCoff = -16; + + ath_print(common, ATH_DBG_CALIBRATE, + "Chn %d : iCoff = 0x%x qCoff = 0x%x\n", diff --git a/package/mac80211/patches/522-ath9k_pwrcal_fix.patch b/package/mac80211/patches/522-ath9k_pwrcal_fix.patch new file mode 100644 index 000000000..6a41c9f88 --- /dev/null +++ b/package/mac80211/patches/522-ath9k_pwrcal_fix.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c +@@ -730,7 +730,7 @@ static void ath9k_hw_get_def_gain_bounda + vpdTableI[i][sizeCurrVpdTable - 2]); + vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep); + +- if (tgtIndex > maxIndex) { ++ if (tgtIndex >= maxIndex) { + while ((ss <= tgtIndex) && + (k < (AR5416_NUM_PDADC_VALUES - 1))) { + tmpVal = (int16_t)((vpdTableI[i][sizeCurrVpdTable - 1] + diff --git a/package/mac80211/patches/523-ath9k_channel_change_fix.patch b/package/mac80211/patches/523-ath9k_channel_change_fix.patch new file mode 100644 index 000000000..0f10cb38d --- /dev/null +++ b/package/mac80211/patches/523-ath9k_channel_change_fix.patch @@ -0,0 +1,15 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1244,9 +1244,11 @@ int ath9k_hw_reset(struct ath_hw *ah, st + + if (!ah->chip_fullsleep) { + ath9k_hw_abortpcurecv(ah); +- if (!ath9k_hw_stopdmarecv(ah)) ++ if (!ath9k_hw_stopdmarecv(ah)) { + ath_print(common, ATH_DBG_XMIT, + "Failed to stop receive dma\n"); ++ bChannelChange = false; ++ } + } + + if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) diff --git a/package/mac80211/patches/524-ath9k_aggr_status_validate.patch b/package/mac80211/patches/524-ath9k_aggr_status_validate.patch new file mode 100644 index 000000000..e6ea97e97 --- /dev/null +++ b/package/mac80211/patches/524-ath9k_aggr_status_validate.patch @@ -0,0 +1,51 @@ +--- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c +@@ -287,6 +287,7 @@ static int ar9002_hw_proc_txdesc(struct + ts->ts_shortretry = MS(ads->ds_txstatus1, AR_RTSFailCnt); + ts->ts_longretry = MS(ads->ds_txstatus1, AR_DataFailCnt); + ts->ts_virtcol = MS(ads->ds_txstatus1, AR_VirtRetryCnt); ++ ts->tid = MS(ads->ds_txstatus9, AR_TxTid); + ts->ts_antenna = 0; + + return 0; +--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.h ++++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.h +@@ -33,9 +33,6 @@ + #define AR_TxDescId_S 16 + #define AR_TxPtrChkSum 0x0000ffff + +-#define AR_TxTid 0xf0000000 +-#define AR_TxTid_S 28 +- + #define AR_LowRxChain 0x00004000 + + #define AR_Not_Sounding 0x20000000 +--- a/drivers/net/wireless/ath/ath9k/mac.h ++++ b/drivers/net/wireless/ath/ath9k/mac.h +@@ -485,6 +485,9 @@ struct ar5416_desc { + #define AR_TxRSSICombined 0xff000000 + #define AR_TxRSSICombined_S 24 + ++#define AR_TxTid 0xf0000000 ++#define AR_TxTid_S 28 ++ + #define AR_TxEVM0 ds_txstatus5 + #define AR_TxEVM1 ds_txstatus6 + #define AR_TxEVM2 ds_txstatus7 +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -355,6 +355,14 @@ static void ath_tx_complete_aggr(struct + an = (struct ath_node *)sta->drv_priv; + tid = ATH_AN_2_TID(an, bf->bf_tidno); + ++ /* ++ * The hardware occasionally sends a tx status for the wrong TID. ++ * In this case, the BA status cannot be considered valid and all ++ * subframes need to be retransmitted ++ */ ++ if (bf->bf_tidno != ts->tid) ++ txok = false; ++ + isaggr = bf_isaggr(bf); + memset(ba, 0, WME_BA_BMP_SIZE >> 3); + diff --git a/package/mac80211/patches/525-ath9k_handle_keymiss.patch b/package/mac80211/patches/525-ath9k_handle_keymiss.patch new file mode 100644 index 000000000..a2031cf46 --- /dev/null +++ b/package/mac80211/patches/525-ath9k_handle_keymiss.patch @@ -0,0 +1,23 @@ +--- a/drivers/net/wireless/ath/ath9k/mac.c ++++ b/drivers/net/wireless/ath/ath9k/mac.c +@@ -701,6 +701,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a + rs->rs_flags |= ATH9K_RX_DELIM_CRC_POST; + if (ads.ds_rxstatus8 & AR_DecryptBusyErr) + rs->rs_flags |= ATH9K_RX_DECRYPT_BUSY; ++ if (ads.ds_rxstatus8 & AR_KeyMiss) ++ rs->rs_keyix = ATH9K_RXKEYIX_INVALID; + + if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) { + if (ads.ds_rxstatus8 & AR_CRCErr) +--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c +@@ -578,6 +578,9 @@ int ath9k_hw_process_rxdesc_edma(struct + if (rxsp->status11 & AR_DecryptBusyErr) + rxs->rs_flags |= ATH9K_RX_DECRYPT_BUSY; + ++ if (rxsp->status11 & AR_KeyMiss) ++ rxs->rs_keyix = ATH9K_RXKEYIX_INVALID; ++ + if ((rxsp->status11 & AR_RxFrameOK) == 0) { + if (rxsp->status11 & AR_CRCErr) { + rxs->rs_status |= ATH9K_RXERR_CRC; From 623d5b80bf62d3d2bb3bd1b40f2ff03c08302229 Mon Sep 17 00:00:00 2001 From: nbd Date: Sun, 11 Jul 2010 11:57:03 +0000 Subject: [PATCH 60/90] [backfire] merge ath9k noise floor calibration fix from r22126 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22127 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/526-ath9k_improve_nf_cal.patch | 399 ++++++++++++++++++ 1 file changed, 399 insertions(+) create mode 100644 package/mac80211/patches/526-ath9k_improve_nf_cal.patch diff --git a/package/mac80211/patches/526-ath9k_improve_nf_cal.patch b/package/mac80211/patches/526-ath9k_improve_nf_cal.patch new file mode 100644 index 000000000..2bc11a1d2 --- /dev/null +++ b/package/mac80211/patches/526-ath9k_improve_nf_cal.patch @@ -0,0 +1,399 @@ +--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c +@@ -1518,77 +1518,6 @@ static void ar5008_hw_do_getnf(struct at + nfarray[5] = sign_extend(nf, 9); + } + +-static void ar5008_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) +-{ +- struct ath9k_nfcal_hist *h; +- int i, j; +- int32_t val; +- const u32 ar5416_cca_regs[6] = { +- AR_PHY_CCA, +- AR_PHY_CH1_CCA, +- AR_PHY_CH2_CCA, +- AR_PHY_EXT_CCA, +- AR_PHY_CH1_EXT_CCA, +- AR_PHY_CH2_EXT_CCA +- }; +- u8 chainmask, rx_chain_status; +- +- rx_chain_status = REG_READ(ah, AR_PHY_RX_CHAINMASK); +- if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) +- chainmask = 0x9; +- else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) { +- if ((rx_chain_status & 0x2) || (rx_chain_status & 0x4)) +- chainmask = 0x1B; +- else +- chainmask = 0x09; +- } else { +- if (rx_chain_status & 0x4) +- chainmask = 0x3F; +- else if (rx_chain_status & 0x2) +- chainmask = 0x1B; +- else +- chainmask = 0x09; +- } +- +- h = ah->nfCalHist; +- +- for (i = 0; i < NUM_NF_READINGS; i++) { +- if (chainmask & (1 << i)) { +- val = REG_READ(ah, ar5416_cca_regs[i]); +- val &= 0xFFFFFE00; +- val |= (((u32) (h[i].privNF) << 1) & 0x1ff); +- REG_WRITE(ah, ar5416_cca_regs[i], val); +- } +- } +- +- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, +- AR_PHY_AGC_CONTROL_ENABLE_NF); +- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, +- AR_PHY_AGC_CONTROL_NO_UPDATE_NF); +- REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); +- +- for (j = 0; j < 5; j++) { +- if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & +- AR_PHY_AGC_CONTROL_NF) == 0) +- break; +- udelay(50); +- } +- +- ENABLE_REGWRITE_BUFFER(ah); +- +- for (i = 0; i < NUM_NF_READINGS; i++) { +- if (chainmask & (1 << i)) { +- val = REG_READ(ah, ar5416_cca_regs[i]); +- val &= 0xFFFFFE00; +- val |= (((u32) (-50) << 1) & 0x1ff); +- REG_WRITE(ah, ar5416_cca_regs[i], val); +- } +- } +- +- REGWRITE_BUFFER_FLUSH(ah); +- DISABLE_REGWRITE_BUFFER(ah); +-} +- + /* + * Initialize the ANI register values with default (ini) values. + * This routine is called during a (full) hardware reset after +@@ -1666,6 +1595,14 @@ static void ar5008_hw_set_nf_limits(stru + void ar5008_hw_attach_phy_ops(struct ath_hw *ah) + { + struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); ++ const u32 ar5416_cca_regs[6] = { ++ AR_PHY_CCA, ++ AR_PHY_CH1_CCA, ++ AR_PHY_CH2_CCA, ++ AR_PHY_EXT_CCA, ++ AR_PHY_CH1_EXT_CCA, ++ AR_PHY_CH2_EXT_CCA ++ }; + + priv_ops->rf_set_freq = ar5008_hw_set_channel; + priv_ops->spur_mitigate_freq = ar5008_hw_spur_mitigate; +@@ -1685,7 +1622,6 @@ void ar5008_hw_attach_phy_ops(struct ath + priv_ops->restore_chainmask = ar5008_restore_chainmask; + priv_ops->set_diversity = ar5008_set_diversity; + priv_ops->do_getnf = ar5008_hw_do_getnf; +- priv_ops->loadnf = ar5008_hw_loadnf; + + if (modparam_force_new_ani) { + priv_ops->ani_control = ar5008_hw_ani_control_new; +@@ -1701,4 +1637,5 @@ void ar5008_hw_attach_phy_ops(struct ath + priv_ops->compute_pll_control = ar5008_hw_compute_pll_control; + + ar5008_hw_set_nf_limits(ah); ++ memcpy(ah->nf_regs, ar5416_cca_regs, sizeof(ah->nf_regs)); + } +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -1050,106 +1050,6 @@ static void ar9003_hw_set_nf_limits(stru + } + + /* +- * Find out which of the RX chains are enabled +- */ +-static u32 ar9003_hw_get_rx_chainmask(struct ath_hw *ah) +-{ +- u32 chain = REG_READ(ah, AR_PHY_RX_CHAINMASK); +- /* +- * The bits [2:0] indicate the rx chain mask and are to be +- * interpreted as follows: +- * 00x => Only chain 0 is enabled +- * 01x => Chain 1 and 0 enabled +- * 1xx => Chain 2,1 and 0 enabled +- */ +- return chain & 0x7; +-} +- +-static void ar9003_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) +-{ +- struct ath9k_nfcal_hist *h; +- unsigned i, j; +- int32_t val; +- const u32 ar9300_cca_regs[6] = { +- AR_PHY_CCA_0, +- AR_PHY_CCA_1, +- AR_PHY_CCA_2, +- AR_PHY_EXT_CCA, +- AR_PHY_EXT_CCA_1, +- AR_PHY_EXT_CCA_2, +- }; +- u8 chainmask, rx_chain_status; +- struct ath_common *common = ath9k_hw_common(ah); +- +- rx_chain_status = ar9003_hw_get_rx_chainmask(ah); +- +- chainmask = 0x3F; +- h = ah->nfCalHist; +- +- for (i = 0; i < NUM_NF_READINGS; i++) { +- if (chainmask & (1 << i)) { +- val = REG_READ(ah, ar9300_cca_regs[i]); +- val &= 0xFFFFFE00; +- val |= (((u32) (h[i].privNF) << 1) & 0x1ff); +- REG_WRITE(ah, ar9300_cca_regs[i], val); +- } +- } +- +- /* +- * Load software filtered NF value into baseband internal minCCApwr +- * variable. +- */ +- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, +- AR_PHY_AGC_CONTROL_ENABLE_NF); +- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, +- AR_PHY_AGC_CONTROL_NO_UPDATE_NF); +- REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); +- +- /* +- * Wait for load to complete, should be fast, a few 10s of us. +- * The max delay was changed from an original 250us to 10000us +- * since 250us often results in NF load timeout and causes deaf +- * condition during stress testing 12/12/2009 +- */ +- for (j = 0; j < 1000; j++) { +- if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & +- AR_PHY_AGC_CONTROL_NF) == 0) +- break; +- udelay(10); +- } +- +- /* +- * We timed out waiting for the noisefloor to load, probably due to an +- * in-progress rx. Simply return here and allow the load plenty of time +- * to complete before the next calibration interval. We need to avoid +- * trying to load -50 (which happens below) while the previous load is +- * still in progress as this can cause rx deafness. Instead by returning +- * here, the baseband nf cal will just be capped by our present +- * noisefloor until the next calibration timer. +- */ +- if (j == 1000) { +- ath_print(common, ATH_DBG_ANY, "Timeout while waiting for nf " +- "to load: AR_PHY_AGC_CONTROL=0x%x\n", +- REG_READ(ah, AR_PHY_AGC_CONTROL)); +- return; +- } +- +- /* +- * Restore maxCCAPower register parameter again so that we're not capped +- * by the median we just loaded. This will be initial (and max) value +- * of next noise floor calibration the baseband does. +- */ +- for (i = 0; i < NUM_NF_READINGS; i++) { +- if (chainmask & (1 << i)) { +- val = REG_READ(ah, ar9300_cca_regs[i]); +- val &= 0xFFFFFE00; +- val |= (((u32) (-50) << 1) & 0x1ff); +- REG_WRITE(ah, ar9300_cca_regs[i], val); +- } +- } +-} +- +-/* + * Initialize the ANI register values with default (ini) values. + * This routine is called during a (full) hardware reset after + * all the registers are initialised from the INI. +@@ -1216,6 +1116,14 @@ static void ar9003_hw_ani_cache_ini_regs + void ar9003_hw_attach_phy_ops(struct ath_hw *ah) + { + struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); ++ const u32 ar9300_cca_regs[6] = { ++ AR_PHY_CCA_0, ++ AR_PHY_CCA_1, ++ AR_PHY_CCA_2, ++ AR_PHY_EXT_CCA, ++ AR_PHY_EXT_CCA_1, ++ AR_PHY_EXT_CCA_2, ++ }; + + priv_ops->rf_set_freq = ar9003_hw_set_channel; + priv_ops->spur_mitigate_freq = ar9003_hw_spur_mitigate; +@@ -1232,10 +1140,10 @@ void ar9003_hw_attach_phy_ops(struct ath + priv_ops->set_diversity = ar9003_hw_set_diversity; + priv_ops->ani_control = ar9003_hw_ani_control; + priv_ops->do_getnf = ar9003_hw_do_getnf; +- priv_ops->loadnf = ar9003_hw_loadnf; + priv_ops->ani_cache_ini_regs = ar9003_hw_ani_cache_ini_regs; + + ar9003_hw_set_nf_limits(ah); ++ memcpy(ah->nf_regs, ar9300_cca_regs, sizeof(ah->nf_regs)); + } + + void ar9003_hw_bb_watchdog_config(struct ath_hw *ah) +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -167,6 +167,100 @@ void ath9k_hw_start_nfcal(struct ath_hw + REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); + } + ++void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) ++{ ++ struct ath9k_nfcal_hist *h; ++ unsigned i, j; ++ int32_t val; ++ u8 chainmask; ++ struct ath_common *common = ath9k_hw_common(ah); ++ ++ if (AR_SREV_9300_20_OR_LATER(ah)) ++ chainmask = 0x3F; ++ else if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) ++ chainmask = 0x9; ++ else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) { ++ if ((ah->rxchainmask & 0x2) || (ah->rxchainmask & 0x4)) ++ chainmask = 0x1B; ++ else ++ chainmask = 0x09; ++ } else { ++ if (ah->rxchainmask & 0x4) ++ chainmask = 0x3F; ++ else if (ah->rxchainmask & 0x2) ++ chainmask = 0x1B; ++ else ++ chainmask = 0x09; ++ } ++ h = ah->nfCalHist; ++ ++ for (i = 0; i < NUM_NF_READINGS; i++) { ++ if (chainmask & (1 << i)) { ++ val = REG_READ(ah, ah->nf_regs[i]); ++ val &= 0xFFFFFE00; ++ val |= (((u32) (h[i].privNF) << 1) & 0x1ff); ++ REG_WRITE(ah, ah->nf_regs[i], val); ++ } ++ } ++ ++ /* ++ * Load software filtered NF value into baseband internal minCCApwr ++ * variable. ++ */ ++ REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, ++ AR_PHY_AGC_CONTROL_ENABLE_NF); ++ REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, ++ AR_PHY_AGC_CONTROL_NO_UPDATE_NF); ++ REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); ++ ++ /* ++ * Wait for load to complete, should be fast, a few 10s of us. ++ * The max delay was changed from an original 250us to 10000us ++ * since 250us often results in NF load timeout and causes deaf ++ * condition during stress testing 12/12/2009 ++ */ ++ for (j = 0; j < 1000; j++) { ++ if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & ++ AR_PHY_AGC_CONTROL_NF) == 0) ++ break; ++ udelay(10); ++ } ++ ++ /* ++ * We timed out waiting for the noisefloor to load, probably due to an ++ * in-progress rx. Simply return here and allow the load plenty of time ++ * to complete before the next calibration interval. We need to avoid ++ * trying to load -50 (which happens below) while the previous load is ++ * still in progress as this can cause rx deafness. Instead by returning ++ * here, the baseband nf cal will just be capped by our present ++ * noisefloor until the next calibration timer. ++ */ ++ if (j == 1000) { ++ ath_print(common, ATH_DBG_ANY, "Timeout while waiting for nf " ++ "to load: AR_PHY_AGC_CONTROL=0x%x\n", ++ REG_READ(ah, AR_PHY_AGC_CONTROL)); ++ return; ++ } ++ ++ /* ++ * Restore maxCCAPower register parameter again so that we're not capped ++ * by the median we just loaded. This will be initial (and max) value ++ * of next noise floor calibration the baseband does. ++ */ ++ ENABLE_REGWRITE_BUFFER(ah); ++ for (i = 0; i < NUM_NF_READINGS; i++) { ++ if (chainmask & (1 << i)) { ++ val = REG_READ(ah, ah->nf_regs[i]); ++ val &= 0xFFFFFE00; ++ val |= (((u32) (-50) << 1) & 0x1ff); ++ REG_WRITE(ah, ah->nf_regs[i], val); ++ } ++ } ++ REGWRITE_BUFFER_FLUSH(ah); ++ DISABLE_REGWRITE_BUFFER(ah); ++} ++ ++ + static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf) + { + struct ath_common *common = ath9k_hw_common(ah); +--- a/drivers/net/wireless/ath/ath9k/calib.h ++++ b/drivers/net/wireless/ath/ath9k/calib.h +@@ -109,6 +109,7 @@ struct ath9k_pacal_info{ + + bool ath9k_hw_reset_calvalid(struct ath_hw *ah); + void ath9k_hw_start_nfcal(struct ath_hw *ah); ++void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan); + int16_t ath9k_hw_getnf(struct ath_hw *ah, + struct ath9k_channel *chan); + void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah); +--- a/drivers/net/wireless/ath/ath9k/hw-ops.h ++++ b/drivers/net/wireless/ath/ath9k/hw-ops.h +@@ -264,12 +264,6 @@ static inline void ath9k_hw_do_getnf(str + ath9k_hw_private_ops(ah)->do_getnf(ah, nfarray); + } + +-static inline void ath9k_hw_loadnf(struct ath_hw *ah, +- struct ath9k_channel *chan) +-{ +- ath9k_hw_private_ops(ah)->loadnf(ah, chan); +-} +- + static inline bool ath9k_hw_init_cal(struct ath_hw *ah, + struct ath9k_channel *chan) + { +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -510,7 +510,6 @@ struct ath_gen_timer_table { + * AR_RTC_PLL_CONTROL for a given channel + * @setup_calibration: set up calibration + * @iscal_supported: used to query if a type of calibration is supported +- * @loadnf: load noise floor read from each chain on the CCA registers + * + * @ani_reset: reset ANI parameters to default values + * @ani_lower_immunity: lower the noise immunity level. The level controls +@@ -564,7 +563,6 @@ struct ath_hw_private_ops { + bool (*ani_control)(struct ath_hw *ah, enum ath9k_ani_cmd cmd, + int param); + void (*do_getnf)(struct ath_hw *ah, int16_t nfarray[NUM_NF_READINGS]); +- void (*loadnf)(struct ath_hw *ah, struct ath9k_channel *chan); + + /* ANI */ + void (*ani_reset)(struct ath_hw *ah, bool is_scanning); +@@ -658,6 +656,7 @@ struct ath_hw { + bool need_an_top2_fixup; + u16 tx_trig_level; + ++ u32 nf_regs[6]; + struct ath_nf_limits nf_2g; + struct ath_nf_limits nf_5g; + u16 rfsilent; From 6567df8b3f84d7728d4375852b833585b981e3ba Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 12 Jul 2010 19:29:46 +0000 Subject: [PATCH 61/90] [backfire] merge ath9k fixes from r22152 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22153 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/525-ath9k_handle_keymiss.patch | 34 +++++++++--------- .../mac80211/patches/530-ath9k_aggr_fix.patch | 35 +++++++++++++++++++ 2 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 package/mac80211/patches/530-ath9k_aggr_fix.patch diff --git a/package/mac80211/patches/525-ath9k_handle_keymiss.patch b/package/mac80211/patches/525-ath9k_handle_keymiss.patch index a2031cf46..bbdd17761 100644 --- a/package/mac80211/patches/525-ath9k_handle_keymiss.patch +++ b/package/mac80211/patches/525-ath9k_handle_keymiss.patch @@ -1,23 +1,23 @@ --- a/drivers/net/wireless/ath/ath9k/mac.c +++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -701,6 +701,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a - rs->rs_flags |= ATH9K_RX_DELIM_CRC_POST; - if (ads.ds_rxstatus8 & AR_DecryptBusyErr) - rs->rs_flags |= ATH9K_RX_DECRYPT_BUSY; -+ if (ads.ds_rxstatus8 & AR_KeyMiss) -+ rs->rs_keyix = ATH9K_RXKEYIX_INVALID; +@@ -713,6 +713,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a + rs->rs_status |= ATH9K_RXERR_DECRYPT; + else if (ads.ds_rxstatus8 & AR_MichaelErr) + rs->rs_status |= ATH9K_RXERR_MIC; ++ else if (ads.ds_rxstatus8 & AR_KeyMiss) ++ rs->rs_status |= ATH9K_RXERR_DECRYPT; + } - if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) { - if (ads.ds_rxstatus8 & AR_CRCErr) + return 0; --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -578,6 +578,9 @@ int ath9k_hw_process_rxdesc_edma(struct - if (rxsp->status11 & AR_DecryptBusyErr) - rxs->rs_flags |= ATH9K_RX_DECRYPT_BUSY; +@@ -589,7 +589,8 @@ int ath9k_hw_process_rxdesc_edma(struct + rxs->rs_status |= ATH9K_RXERR_DECRYPT; + } else if (rxsp->status11 & AR_MichaelErr) { + rxs->rs_status |= ATH9K_RXERR_MIC; +- } ++ } else if (rxsp->status11 & AR_KeyMiss) ++ rxs->rs_status |= ATH9K_RXERR_DECRYPT; + } -+ if (rxsp->status11 & AR_KeyMiss) -+ rxs->rs_keyix = ATH9K_RXKEYIX_INVALID; -+ - if ((rxsp->status11 & AR_RxFrameOK) == 0) { - if (rxsp->status11 & AR_CRCErr) { - rxs->rs_status |= ATH9K_RXERR_CRC; + return 0; diff --git a/package/mac80211/patches/530-ath9k_aggr_fix.patch b/package/mac80211/patches/530-ath9k_aggr_fix.patch new file mode 100644 index 000000000..0c9d887ac --- /dev/null +++ b/package/mac80211/patches/530-ath9k_aggr_fix.patch @@ -0,0 +1,35 @@ +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -329,7 +329,6 @@ static void ath_tx_complete_aggr(struct + int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0; + bool rc_update = true; + struct ieee80211_tx_rate rates[4]; +- unsigned long flags; + + skb = bf->bf_mpdu; + hdr = (struct ieee80211_hdr *)skb->data; +@@ -346,9 +345,21 @@ static void ath_tx_complete_aggr(struct + if (!sta) { + rcu_read_unlock(); + +- spin_lock_irqsave(&sc->tx.txbuflock, flags); +- list_splice_tail_init(bf_q, &sc->tx.txbuf); +- spin_unlock_irqrestore(&sc->tx.txbuflock, flags); ++ INIT_LIST_HEAD(&bf_head); ++ while (bf) { ++ bf_next = bf->bf_next; ++ ++ bf->bf_state.bf_type |= BUF_XRETRY; ++ if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) || ++ !bf->bf_stale || bf_next != NULL) ++ list_move_tail(&bf->list, &bf_head); ++ ++ ath_tx_rc_status(bf, ts, 0, 0, false); ++ ath_tx_complete_buf(sc, bf, txq, &bf_head, ts, ++ 0, 0); ++ ++ bf = bf_next; ++ } + return; + } + From 3233d476b39f006e256046920282e335e092bfb1 Mon Sep 17 00:00:00 2001 From: nbd Date: Tue, 13 Jul 2010 18:46:25 +0000 Subject: [PATCH 62/90] [backfire] enable ipv6 support for packages by default (r22176) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22177 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Config.in b/Config.in index 7abfeeaef..cac1cce19 100644 --- a/Config.in +++ b/Config.in @@ -191,7 +191,7 @@ menu "Global build settings" config IPV6 bool prompt "Enable IPv6 support in packages" - default n + default y help Enable IPV6 support in packages (passes --enable-ipv6 to configure scripts). From b1c533c4a51dc464c889a5471d86051a94962aed Mon Sep 17 00:00:00 2001 From: nico Date: Thu, 15 Jul 2010 15:34:30 +0000 Subject: [PATCH 63/90] [backfire] package/mac80211: don't build on 2.4 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22207 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 71ce17add..c8c6998ce 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -35,7 +35,7 @@ define KernelPackage/mac80211/Default SUBMENU:=$(WMENU) URL:=http://linuxwireless.org/ MAINTAINER:=Felix Fietkau - DEPENDS:=@(!(TARGET_avr32||TARGET_ep93xx||TARGET_ps3||TARGET_pxcab)||BROKEN) + DEPENDS:=@!LINUX_2_4 @(!(TARGET_avr32||TARGET_ep93xx||TARGET_ps3||TARGET_pxcab)||BROKEN) endef define KernelPackage/cfg80211 From 7c6904ccee74536ddf813ba3e6b15ee6790d5ea4 Mon Sep 17 00:00:00 2001 From: jow Date: Thu, 15 Jul 2010 19:08:47 +0000 Subject: [PATCH 64/90] [backfire] merge r21589, r21612 and r22102 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22209 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/6in4/Makefile | 43 +++++++++++++ package/6in4/files/6in4.hotplug | 44 ++++++++++++++ package/6in4/files/6in4.sh | 103 ++++++++++++++++++++++++++++++++ 3 files changed, 190 insertions(+) create mode 100644 package/6in4/Makefile create mode 100644 package/6in4/files/6in4.hotplug create mode 100755 package/6in4/files/6in4.sh diff --git a/package/6in4/Makefile b/package/6in4/Makefile new file mode 100644 index 000000000..75e784882 --- /dev/null +++ b/package/6in4/Makefile @@ -0,0 +1,43 @@ +# +# Copyright (C) 2010 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=6in4 +PKG_VERSION:=3 +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/6in4 + SECTION:=ipv6 + CATEGORY:=IPv6 + DEPENDS:=+ip +kmod-ipv6 +kmod-sit + TITLE:=IPv6-in-IPv4 configuration support + PKGARCH:=all +endef + +define Package/6in4/description +Provides support for 6in4 tunnels in /etc/config/network. +Refer to http://wiki.openwrt.org/doc/uci/network for +configuration details. +endef + +define Build/Compile +endef + +define Build/Configure +endef + +define Package/6in4/install + $(INSTALL_DIR) $(1)/lib/network + $(INSTALL_DATA) ./files/6in4.sh $(1)/lib/network/6in4.sh + $(INSTALL_DIR) $(1)/etc/hotplug.d/iface + $(INSTALL_DATA) ./files/6in4.hotplug $(1)/etc/hotplug.d/iface/90-6in4 +endef + +$(eval $(call BuildPackage,6in4)) diff --git a/package/6in4/files/6in4.hotplug b/package/6in4/files/6in4.hotplug new file mode 100644 index 000000000..96b046d14 --- /dev/null +++ b/package/6in4/files/6in4.hotplug @@ -0,0 +1,44 @@ +#!/bin/sh + +if [ "$ACTION" = ifup ]; then + . /etc/functions.sh + + include /lib/network + scan_interfaces + + update_tunnel() { + local cfg="$1" + + local proto + config_get proto "$cfg" proto + [ "$proto" = 6in4 ] || return 0 + + local wandev + config_get wandev "$cfg" wan_device "$(find_6in4_wanif)" + [ "$wandev" = "$DEVICE" ] || return 0 + + local oldip + local wanip=$(find_6in4_wanip "$wandev") + config_get oldip "$cfg" ipaddr + + [ -n "$wanip" ] && [ "$oldip" != "$wanip" ] && { + local tunnelid + config_get tunnelid "$cfg" tunnelid + + local username + config_get username "$cfg" username + + local password + config_get password "$cfg" password + + [ -n "$tunnelid" ] && [ -n "$username" ] && [ -n "$password" ] && { + password="$(echo -n "$password" | md5sum)"; password="${password%% *}" + uci_set_state network "$cfg" ipaddr "$wanip" + + ( wget -qO/dev/null "http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&user_id=$username&pass=$password&tunnel_id=$tunnelid" && ifup "$cfg" )& + } + } + } + + config_foreach update_tunnel interface +fi diff --git a/package/6in4/files/6in4.sh b/package/6in4/files/6in4.sh new file mode 100755 index 000000000..5e416ee0b --- /dev/null +++ b/package/6in4/files/6in4.sh @@ -0,0 +1,103 @@ +# 6in4.sh - IPv6-in-IPv4 tunnel backend +# Copyright (c) 2010 OpenWrt.org + +find_6in4_wanif() { + local if=$(ip -4 r l e 0/0); if="${if#default via * dev }"; if="${if%% *}" + [ -n "$if" ] && grep -qs "^ *$if:" /proc/net/dev && echo "$if" +} + +find_6in4_wanip() { + local ip=$(ip -4 a s dev "$1"); ip="${ip#*inet }" + echo "${ip%%/[0-9]* brd *}" +} + +# Hook into scan_interfaces() to synthesize a .device option +# This is needed for /sbin/ifup to properly dispatch control +# to setup_interface_6in4() even if no .ifname is set in +# the configuration. +scan_6in4() { + config_set "$1" device "6in4-$1" +} + +coldplug_interface_6in4() { + setup_interface_6in4 "6in4-$1" "$1" +} + +setup_interface_6in4() { + local iface="$1" + local cfg="$2" + local link="6in4-$cfg" + + local local4 + config_get local4 "$cfg" ipaddr + + local remote4 + config_get remote4 "$cfg" peeraddr + + local local6 + config_get local6 "$cfg" ip6addr + + local mtu + config_get mtu "$cfg" mtu + + local ttl + config_get ttl "$cfg" ttl + + local defaultroute + config_get_bool defaultroute "$cfg" defaultroute 1 + + # If local4 is unset, guess local IPv4 address from the + # interface used by the default route. + [ -z "$local4" ] && { + local wanif=$(find_6in4_wanif) + [ -n "$wanif" ] && { + local4=$(find_6in4_wanip "$wanif") + uci_set_state network "$cfg" wan_device "$wanif" + } + } + + [ -n "$local4" ] && { + # creating the tunnel below will trigger a net subsystem event + # prevent it from touching or iface by disabling .auto here + uci_set_state network "$cfg" ifname $link + uci_set_state network "$cfg" auto 0 + + ip tunnel add $link mode sit remote $remote4 local $local4 ttl 255 + ip link set $link up + ip link set mtu ${mtu:-1280} dev $link + ip tunnel change $link ttl ${ttl:-64} + ip addr add $local6 dev $link + + uci_set_state network "$cfg" ipaddr $local4 + uci_set_state network "$cfg" ip6addr $local6 + + [ "$defaultroute" = 1 ] && { + ip -6 route add ::/0 dev $link + uci_set_state network "$cfg" defaultroute 1 + } + + env -i ACTION="ifup" INTERFACE="$cfg" DEVICE="$link" PROTO=6in4 /sbin/hotplug-call "iface" & + } || { + echo "Cannot determine local IPv4 address for 6in4 tunnel $cfg - skipping" + } +} + +stop_interface_6in4() { + local cfg="$1" + local link="6in4-$cfg" + + local local6=$(uci_get_state network "$cfg" ip6addr) + local defaultroute=$(uci_get_state network "$cfg" defaultroute) + + grep -qs "^ *$link:" /proc/net/dev && { + env -i ACTION="ifdown" INTERFACE="$cfg" DEVICE="$link" PROTO=6in4 /sbin/hotplug-call "iface" & + + [ "$defaultroute" = "1" ] && { + ip -6 route del ::/0 dev $link + } + + ip addr del $local6 dev $link + ip link set $link down + ip tunnel del $link + } +} From 5e994345682baab2bf060597395b3716a2c42e83 Mon Sep 17 00:00:00 2001 From: jow Date: Thu, 15 Jul 2010 22:08:02 +0000 Subject: [PATCH 65/90] [backfire] firewall: consider zones referenced by redirects as conntracked (#7196) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22216 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/firewall/Makefile | 2 +- package/firewall/files/uci_firewall.sh | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package/firewall/Makefile b/package/firewall/Makefile index abc602043..7c324fcf1 100644 --- a/package/firewall/Makefile +++ b/package/firewall/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=firewall PKG_VERSION:=1 -PKG_RELEASE:=10 +PKG_RELEASE:=11 include $(INCLUDE_DIR)/package.mk diff --git a/package/firewall/files/uci_firewall.sh b/package/firewall/files/uci_firewall.sh index 8d7538201..be1d437a6 100755 --- a/package/firewall/files/uci_firewall.sh +++ b/package/firewall/files/uci_firewall.sh @@ -356,6 +356,9 @@ fw_redirect() { [ -z "$src" -o -z "$dest_ip" ] && { \ echo "redirect needs src and dest_ip"; return ; } + find_item "$src" $CONNTRACK_ZONES || \ + append CONNTRACK_ZONES "$src" + src_port_first=${src_port%-*} src_port_last=${src_port#*-} [ "$src_port_first" != "$src_port_last" ] && { \ @@ -391,6 +394,7 @@ fw_redirect() { ${src_mac:+-m mac --mac-source $src_mac} \ -j ACCEPT } + [ "$proto" == "tcpudp" -o -z "$proto" ] && { proto=tcp add_rule From 1660376c9d34901fef82e34ea03c1e59efca17a5 Mon Sep 17 00:00:00 2001 From: jow Date: Fri, 16 Jul 2010 01:00:16 +0000 Subject: [PATCH 66/90] [backfire] merge r21523, r21871 & r22222 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22223 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/dnsmasq/Makefile | 6 +++--- package/dnsmasq/files/dhcp.conf | 5 ++++- package/dnsmasq/files/dnsmasq.init | 23 +++++++++++++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/package/dnsmasq/Makefile b/package/dnsmasq/Makefile index 77b8f82a6..852b126fc 100644 --- a/package/dnsmasq/Makefile +++ b/package/dnsmasq/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnsmasq -PKG_VERSION:=2.52 -PKG_RELEASE:=4 +PKG_VERSION:=2.55 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq -PKG_MD5SUM:=1bb32fffdb4f977ead607802b5d701d0 +PKG_MD5SUM:=b093d7c6bc7f97ae6fd35d048529232a include $(INCLUDE_DIR)/package.mk diff --git a/package/dnsmasq/files/dhcp.conf b/package/dnsmasq/files/dhcp.conf index 25ecde6f5..c79458fb2 100644 --- a/package/dnsmasq/files/dhcp.conf +++ b/package/dnsmasq/files/dhcp.conf @@ -1,8 +1,11 @@ config dnsmasq option domainneeded 1 option boguspriv 1 - option filterwin2k '0' #enable for dial on demand + option filterwin2k 0 # enable for dial on demand option localise_queries 1 + option rebind_protection 1 # disable if upstream must serve RFC1918 addresses + option rebind_localhost 0 # enable for RBL checking and similar services + #list rebind_domain example.lan # whitelist RFC1918 responses for domains option local '/lan/' option domain 'lan' option expandhosts 1 diff --git a/package/dnsmasq/files/dnsmasq.init b/package/dnsmasq/files/dnsmasq.init index 15f856d4e..4e0bbf921 100644 --- a/package/dnsmasq/files/dnsmasq.init +++ b/package/dnsmasq/files/dnsmasq.init @@ -99,6 +99,29 @@ dnsmasq() { config_get hostsfile "$cfg" dhcphostsfile [ -e "$hostsfile" ] && append args "--dhcp-hostsfile=$hostsfile" + + local rebind + config_get_bool rebind "$cfg" rebind_protection 1 + [ $rebind -gt 0 ] && { + logger -t dnsmasq \ + "DNS rebinding protection is active," \ + "will discard upstream RFC1918 responses!" + append args "--stop-dns-rebind" + + local rebind_localhost + config_get_bool rebind_localhost "$cfg" rebind_localhost 0 + [ $rebind_localhost -gt 0 ] && { + logger -t dnsmasq "Allowing 127.0.0.0/8 responses" + append args "--rebind-localhost-ok" + } + + append_rebind_domain() { + logger -t dnsmasq "Allowing RFC1918 responses for domain $1" + append args "--rebind-domain-ok=$1" + } + + config_list_foreach "$cfg" rebind_domain append_rebind_domain + } } dhcp_subscrid_add() { From 1ad551b0a7047428905bd79e6d7a2752dff9df9d Mon Sep 17 00:00:00 2001 From: jow Date: Fri, 16 Jul 2010 06:05:23 +0000 Subject: [PATCH 67/90] [backfire] firewall: allow redirecting only destination port (#7197) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22228 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/firewall/Makefile | 2 +- package/firewall/files/uci_firewall.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package/firewall/Makefile b/package/firewall/Makefile index 7c324fcf1..fa53bb351 100644 --- a/package/firewall/Makefile +++ b/package/firewall/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=firewall PKG_VERSION:=1 -PKG_RELEASE:=11 +PKG_RELEASE:=12 include $(INCLUDE_DIR)/package.mk diff --git a/package/firewall/files/uci_firewall.sh b/package/firewall/files/uci_firewall.sh index be1d437a6..898827f4d 100755 --- a/package/firewall/files/uci_firewall.sh +++ b/package/firewall/files/uci_firewall.sh @@ -353,8 +353,8 @@ fw_redirect() { config_get dest_ip $1 dest_ip config_get dest_port $1 dest_port config_get proto $1 proto - [ -z "$src" -o -z "$dest_ip" ] && { \ - echo "redirect needs src and dest_ip"; return ; } + [ -z "$src" -o -z "$dest_ip$dest_port" ] && { \ + echo "redirect needs src and dest_ip or dest_port"; return ; } find_item "$src" $CONNTRACK_ZONES || \ append CONNTRACK_ZONES "$src" @@ -385,6 +385,7 @@ fw_redirect() { ${src_mac:+-m mac --mac-source $src_mac} \ -j DNAT --to-destination $dest_ip${dest_port:+:$dest_port} + [ -n "$dest_ip" ] && \ $IPTABLES -I zone_${src}_forward 1 \ ${proto:+-p $proto} \ -d $dest_ip \ From 1066e6d8b99a13c2f2fa067a74dbfb6c5d9b9be3 Mon Sep 17 00:00:00 2001 From: nico Date: Sun, 18 Jul 2010 00:36:53 +0000 Subject: [PATCH 68/90] [backfire] merge r22251 dnsmasq: initscript: fix bool options handling, bump release number git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22269 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/dnsmasq/Makefile | 2 +- package/dnsmasq/files/dnsmasq.init | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/dnsmasq/Makefile b/package/dnsmasq/Makefile index 852b126fc..977e10970 100644 --- a/package/dnsmasq/Makefile +++ b/package/dnsmasq/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnsmasq PKG_VERSION:=2.55 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq diff --git a/package/dnsmasq/files/dnsmasq.init b/package/dnsmasq/files/dnsmasq.init index 4e0bbf921..2325a3e4f 100644 --- a/package/dnsmasq/files/dnsmasq.init +++ b/package/dnsmasq/files/dnsmasq.init @@ -23,8 +23,8 @@ append_bool() { local option="$2" local value="$3" local _loctmp - config_get_bool _loctmp "$section" "$option" - [ "$_loctmp" -gt 0 ] && append args "$value" + config_get_bool _loctmp "$section" "$option" 0 + [ $_loctmp -gt 0 ] && append args "$value" } append_parm() { @@ -274,7 +274,7 @@ dhcp_add() { #check for an already active dhcp server on the interface, unless 'force' is set config_get_bool force "$cfg" force 0 - [ "$force" -gt 0 ] || { + [ $force -gt 0 ] || { udhcpc -n -q -s /bin/true -t 1 -i $ifname >&- && return 0 } From 3955c4e1e665b6f5cd24c02b271ee0bfa06102bf Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 21 Jul 2010 16:06:16 +0000 Subject: [PATCH 69/90] add missing kernel config symbols git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22329 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/config-2.6.30 | 4 ++++ target/linux/generic-2.6/config-2.6.32 | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/target/linux/generic-2.6/config-2.6.30 b/target/linux/generic-2.6/config-2.6.30 index 0dde72872..dc14bcdb4 100644 --- a/target/linux/generic-2.6/config-2.6.30 +++ b/target/linux/generic-2.6/config-2.6.30 @@ -1008,6 +1008,7 @@ CONFIG_IPW2200_MONITOR=y # CONFIG_ISCSI_TCP is not set CONFIG_ISDN=y # CONFIG_ISDN_AUDIO is not set +# CONFIG_ISDN_CAPI is not set # CONFIG_ISDN_CAPI_CAPIDRV is not set # CONFIG_ISDN_DIVERSION is not set # CONFIG_ISDN_DRV_ACT2000 is not set @@ -1019,6 +1020,7 @@ CONFIG_ISDN=y # CONFIG_ISDN_DRV_PCBIT is not set # CONFIG_ISDN_DRV_SC is not set # CONFIG_ISDN_DRV_TPAM is not set +# CONFIG_ISDN_I4L is not set # CONFIG_ISDN_WITH_ABC is not set # CONFIG_ISL29003 is not set # CONFIG_ISO9660_FS is not set @@ -1054,6 +1056,7 @@ CONFIG_JFFS2_ZLIB=y # CONFIG_JFS_STATISTICS is not set # CONFIG_JME is not set CONFIG_JOLIET=y +# CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS is not set # CONFIG_KARMA_PARTITION is not set @@ -2229,6 +2232,7 @@ CONFIG_TEXTSEARCH=y CONFIG_TICK_ONESHOT=y # CONFIG_TIFM_CORE is not set # CONFIG_TIGON3 is not set +# CONFIG_TIMER_STATS is not set CONFIG_TIMERFD=y # CONFIG_TINY_SHMEM is not set # CONFIG_TIPC is not set diff --git a/target/linux/generic-2.6/config-2.6.32 b/target/linux/generic-2.6/config-2.6.32 index 6383f0b65..c8b10b3fd 100644 --- a/target/linux/generic-2.6/config-2.6.32 +++ b/target/linux/generic-2.6/config-2.6.32 @@ -1059,6 +1059,7 @@ CONFIG_IPW2200_MONITOR=y # CONFIG_ISCSI_TCP is not set CONFIG_ISDN=y # CONFIG_ISDN_AUDIO is not set +# CONFIG_ISDN_CAPI is not set # CONFIG_ISDN_CAPI_CAPIDRV is not set # CONFIG_ISDN_DIVERSION is not set # CONFIG_ISDN_DRV_ACT2000 is not set @@ -1070,6 +1071,7 @@ CONFIG_ISDN=y # CONFIG_ISDN_DRV_PCBIT is not set # CONFIG_ISDN_DRV_SC is not set # CONFIG_ISDN_DRV_TPAM is not set +# CONFIG_ISDN_I4L is not set # CONFIG_ISDN_WITH_ABC is not set # CONFIG_ISL29003 is not set # CONFIG_ISO9660_FS is not set @@ -1105,6 +1107,7 @@ CONFIG_JFFS2_ZLIB=y # CONFIG_JFS_STATISTICS is not set # CONFIG_JME is not set CONFIG_JOLIET=y +# CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS is not set # CONFIG_KARMA_PARTITION is not set @@ -2350,6 +2353,7 @@ CONFIG_TEXTSEARCH=y CONFIG_TICK_ONESHOT=y # CONFIG_TIFM_CORE is not set # CONFIG_TIGON3 is not set +# CONFIG_TIMER_STATS is not set CONFIG_TIMERFD=y # CONFIG_TINY_SHMEM is not set # CONFIG_TIPC is not set From 331e9cd0f5f1ce5ea5d832256f6c21e9322100e8 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 21 Jul 2010 16:06:20 +0000 Subject: [PATCH 70/90] merge the kernel config cleanup that was added to trunk as part of r20837 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22330 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- include/kernel-defaults.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk index 300139cab..0969b844a 100644 --- a/include/kernel-defaults.mk +++ b/include/kernel-defaults.mk @@ -97,9 +97,8 @@ define Kernel/Configure/2.6 endef define Kernel/Configure/Default $(LINUX_CONFCMD) > $(LINUX_DIR)/.config.target - echo "$(if $(CONFIG_KERNEL_KALLSYMS),CONFIG_KALLSYMS=y,# CONFIG_KALLSYMS is not set)" >> $(LINUX_DIR)/.config.target - echo "$(if $(CONFIG_KERNEL_PROFILING),CONFIG_PROFILING=y,# CONFIG_PROFILING is not set)" >> $(LINUX_DIR)/.config.target - echo "$(if $(CONFIG_KERNEL_DEBUG_FS),CONFIG_DEBUG_FS=y,# CONFIG_DEBUG_FS is not set)" >> $(LINUX_DIR)/.config.target +# copy CONFIG_KERNEL_* settings over to .config.target + awk '/^(#[[:space:]]+)?CONFIG_KERNEL/{sub("CONFIG_KERNEL_","CONFIG_");print}' $(TOPDIR)/.config >> $(LINUX_DIR)/.config.target echo "# CONFIG_KALLSYMS_EXTRA_PASS is not set" >> $(LINUX_DIR)/.config.target echo "# CONFIG_KALLSYMS_ALL is not set" >> $(LINUX_DIR)/.config.target echo "# CONFIG_KPROBES is not set" >> $(LINUX_DIR)/.config.target From 3108bf3e57736801bf637d1a0103cc568aa3c5ea Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 21 Jul 2010 16:06:22 +0000 Subject: [PATCH 71/90] merge the kernel debug option from r22325 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22331 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- Config.in | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Config.in b/Config.in index cac1cce19..f9375be0a 100644 --- a/Config.in +++ b/Config.in @@ -179,6 +179,17 @@ menu "Global build settings" help This will give you more information in stack traces from kernel oopses + config KERNEL_DEBUG_KERNEL + bool + default n + + config KERNEL_DEBUG_INFO + bool "Compile the kernel with debug information" + default n + select KERNEL_DEBUG_KERNEL + help + This will compile your kernel and modules with debug information. + comment "Package build options" config DEBUG From c4d42835103fc84db564425380d7fc9fb1ead7a4 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 21 Jul 2010 16:06:24 +0000 Subject: [PATCH 72/90] merge the kernel debug collect option from r22327 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22332 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- Config.in | 9 +++++++++ include/kernel-build.mk | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/Config.in b/Config.in index f9375be0a..61a46b453 100644 --- a/Config.in +++ b/Config.in @@ -155,6 +155,15 @@ menu "Global build settings" help This removes all ipkg/opkg status data files from the target directory before building the root fs + config COLLECT_KERNEL_DEBUG + bool + prompt "Colllect kernel debug information" + select KERNEL_DEBUG_INFO + default n + help + This collects debugging symbols from the kernel and all compiled modules. + Useful for release builds, so that kernel issues can be debugged offline later. + comment "Kernel build options" config KERNEL_DEBUG_FS diff --git a/include/kernel-build.mk b/include/kernel-build.mk index 7c5d1fbe9..648e65848 100644 --- a/include/kernel-build.mk +++ b/include/kernel-build.mk @@ -44,6 +44,19 @@ define Download/kernel MD5SUM:=$(LINUX_KERNEL_MD5SUM) endef +ifdef CONFIG_COLLECT_KERNEL_DEBUG + define Kernel/CollectDebug + rm -rf $(KERNEL_BUILD_DIR)/debug + mkdir -p $(KERNEL_BUILD_DIR)/debug/modules + $(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/debug/ + -$(CP) \ + $(STAGING_DIR_ROOT)/lib/modules/$(LINUX_VERSION)/* \ + $(KERNEL_BUILD_DIR)/debug/modules/ + $(FIND) $(KERNEL_BUILD_DIR)/debug -type f | $(XARGS) $(KERNEL_CROSS)strip --only-keep-debug + $(TAR) c -C $(KERNEL_BUILD_DIR) debug | bzip2 -c -9 > $(BIN_DIR)/kernel-debug.tar.bz2 + endef +endif + define BuildKernel $(if $(QUILT),$(Build/Quilt)) $(if $(LINUX_SITE),$(call Download,kernel)) @@ -86,6 +99,7 @@ define BuildKernel $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) $(if $(CONFIG_STRIP_KERNEL_EXPORTS),$(KERNEL_BUILD_DIR)/symtab.h) FORCE $(Kernel/CompileImage) + $(Kernel/CollectDebug) touch $$@ mostlyclean: FORCE From 67b5947cda593816358e22e50245e539d3e2a8d9 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 21 Jul 2010 16:06:29 +0000 Subject: [PATCH 73/90] merge the crashlog feature from r22305, r22326 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22333 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/generic-2.6/config-2.6.30 | 1 + target/linux/generic-2.6/config-2.6.32 | 1 + .../930-kmsg_dump_backport.patch | 205 +++++++++++++++ .../patches-2.6.30/931-crashlog.patch | 241 ++++++++++++++++++ .../930-kmsg_dump_backport.patch | 205 +++++++++++++++ .../patches-2.6.32/931-crashlog.patch | 241 ++++++++++++++++++ target/linux/uml/config/i386 | 1 + target/linux/uml/config/x86_64 | 1 + 8 files changed, 896 insertions(+) create mode 100644 target/linux/generic-2.6/patches-2.6.30/930-kmsg_dump_backport.patch create mode 100644 target/linux/generic-2.6/patches-2.6.30/931-crashlog.patch create mode 100644 target/linux/generic-2.6/patches-2.6.32/930-kmsg_dump_backport.patch create mode 100644 target/linux/generic-2.6/patches-2.6.32/931-crashlog.patch diff --git a/target/linux/generic-2.6/config-2.6.30 b/target/linux/generic-2.6/config-2.6.30 index dc14bcdb4..ff553850b 100644 --- a/target/linux/generic-2.6/config-2.6.30 +++ b/target/linux/generic-2.6/config-2.6.30 @@ -336,6 +336,7 @@ CONFIG_COMPAT_NET_DEV_OPS=y # CONFIG_CPU_FREQ is not set # CONFIG_CPU_IDLE is not set # CONFIG_CRAMFS is not set +CONFIG_CRASHLOG=y # CONFIG_CRASH_DUMP is not set # CONFIG_CRC16 is not set CONFIG_CRC32=y diff --git a/target/linux/generic-2.6/config-2.6.32 b/target/linux/generic-2.6/config-2.6.32 index c8b10b3fd..522a30acb 100644 --- a/target/linux/generic-2.6/config-2.6.32 +++ b/target/linux/generic-2.6/config-2.6.32 @@ -351,6 +351,7 @@ CONFIG_CONSTRUCTORS=y # CONFIG_CPU_FREQ is not set # CONFIG_CPU_IDLE is not set # CONFIG_CRAMFS is not set +CONFIG_CRASHLOG=y # CONFIG_CRASH_DUMP is not set # CONFIG_CRC16 is not set CONFIG_CRC32=y diff --git a/target/linux/generic-2.6/patches-2.6.30/930-kmsg_dump_backport.patch b/target/linux/generic-2.6/patches-2.6.30/930-kmsg_dump_backport.patch new file mode 100644 index 000000000..762b44111 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.30/930-kmsg_dump_backport.patch @@ -0,0 +1,205 @@ +--- /dev/null ++++ b/include/linux/kmsg_dump.h +@@ -0,0 +1,44 @@ ++/* ++ * linux/include/kmsg_dump.h ++ * ++ * Copyright (C) 2009 Net Insight AB ++ * ++ * Author: Simon Kagstrom ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ */ ++#ifndef _LINUX_KMSG_DUMP_H ++#define _LINUX_KMSG_DUMP_H ++ ++#include ++ ++enum kmsg_dump_reason { ++ KMSG_DUMP_OOPS, ++ KMSG_DUMP_PANIC, ++}; ++ ++/** ++ * struct kmsg_dumper - kernel crash message dumper structure ++ * @dump: The callback which gets called on crashes. The buffer is passed ++ * as two sections, where s1 (length l1) contains the older ++ * messages and s2 (length l2) contains the newer. ++ * @list: Entry in the dumper list (private) ++ * @registered: Flag that specifies if this is already registered ++ */ ++struct kmsg_dumper { ++ void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason, ++ const char *s1, unsigned long l1, ++ const char *s2, unsigned long l2); ++ struct list_head list; ++ int registered; ++}; ++ ++void kmsg_dump(enum kmsg_dump_reason reason); ++ ++int kmsg_dump_register(struct kmsg_dumper *dumper); ++ ++int kmsg_dump_unregister(struct kmsg_dumper *dumper); ++ ++#endif /* _LINUX_KMSG_DUMP_H */ +--- a/kernel/panic.c ++++ b/kernel/panic.c +@@ -10,6 +10,7 @@ + */ + #include + #include ++#include + #include + #include + #include +@@ -74,6 +75,7 @@ + dump_stack(); + #endif + ++ kmsg_dump(KMSG_DUMP_PANIC); + /* + * If we have crashed and we have a crash kernel loaded let it handle + * everything else. +@@ -337,6 +339,7 @@ + { + do_oops_enter_exit(); + print_oops_end_marker(); ++ kmsg_dump(KMSG_DUMP_OOPS); + } + + #ifdef WANT_WARN_ON_SLOWPATH +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + + #include + +@@ -1322,3 +1323,121 @@ + } + EXPORT_SYMBOL(printk_timed_ratelimit); + #endif ++ ++static DEFINE_SPINLOCK(dump_list_lock); ++static LIST_HEAD(dump_list); ++ ++/** ++ * kmsg_dump_register - register a kernel log dumper. ++ * @dump: pointer to the kmsg_dumper structure ++ * ++ * Adds a kernel log dumper to the system. The dump callback in the ++ * structure will be called when the kernel oopses or panics and must be ++ * set. Returns zero on success and %-EINVAL or %-EBUSY otherwise. ++ */ ++int kmsg_dump_register(struct kmsg_dumper *dumper) ++{ ++ unsigned long flags; ++ int err = -EBUSY; ++ ++ /* The dump callback needs to be set */ ++ if (!dumper->dump) ++ return -EINVAL; ++ ++ spin_lock_irqsave(&dump_list_lock, flags); ++ /* Don't allow registering multiple times */ ++ if (!dumper->registered) { ++ dumper->registered = 1; ++ list_add_tail(&dumper->list, &dump_list); ++ err = 0; ++ } ++ spin_unlock_irqrestore(&dump_list_lock, flags); ++ ++ return err; ++} ++EXPORT_SYMBOL_GPL(kmsg_dump_register); ++ ++/** ++ * kmsg_dump_unregister - unregister a kmsg dumper. ++ * @dump: pointer to the kmsg_dumper structure ++ * ++ * Removes a dump device from the system. Returns zero on success and ++ * %-EINVAL otherwise. ++ */ ++int kmsg_dump_unregister(struct kmsg_dumper *dumper) ++{ ++ unsigned long flags; ++ int err = -EINVAL; ++ ++ spin_lock_irqsave(&dump_list_lock, flags); ++ if (dumper->registered) { ++ dumper->registered = 0; ++ list_del(&dumper->list); ++ err = 0; ++ } ++ spin_unlock_irqrestore(&dump_list_lock, flags); ++ ++ return err; ++} ++EXPORT_SYMBOL_GPL(kmsg_dump_unregister); ++ ++static const char const *kmsg_reasons[] = { ++ [KMSG_DUMP_OOPS] = "oops", ++ [KMSG_DUMP_PANIC] = "panic", ++}; ++ ++static const char *kmsg_to_str(enum kmsg_dump_reason reason) ++{ ++ if (reason >= ARRAY_SIZE(kmsg_reasons) || reason < 0) ++ return "unknown"; ++ ++ return kmsg_reasons[reason]; ++} ++ ++/** ++ * kmsg_dump - dump kernel log to kernel message dumpers. ++ * @reason: the reason (oops, panic etc) for dumping ++ * ++ * Iterate through each of the dump devices and call the oops/panic ++ * callbacks with the log buffer. ++ */ ++void kmsg_dump(enum kmsg_dump_reason reason) ++{ ++ unsigned long end; ++ unsigned chars; ++ struct kmsg_dumper *dumper; ++ const char *s1, *s2; ++ unsigned long l1, l2; ++ unsigned long flags; ++ ++ /* Theoretically, the log could move on after we do this, but ++ there's not a lot we can do about that. The new messages ++ will overwrite the start of what we dump. */ ++ spin_lock_irqsave(&logbuf_lock, flags); ++ end = log_end & LOG_BUF_MASK; ++ chars = logged_chars; ++ spin_unlock_irqrestore(&logbuf_lock, flags); ++ ++ if (logged_chars > end) { ++ s1 = log_buf + log_buf_len - logged_chars + end; ++ l1 = logged_chars - end; ++ ++ s2 = log_buf; ++ l2 = end; ++ } else { ++ s1 = ""; ++ l1 = 0; ++ ++ s2 = log_buf + end - logged_chars; ++ l2 = logged_chars; ++ } ++ ++ if (!spin_trylock_irqsave(&dump_list_lock, flags)) { ++ printk(KERN_ERR "dump_kmsg: dump list lock is held during %s, skipping dump\n", ++ kmsg_to_str(reason)); ++ return; ++ } ++ list_for_each_entry(dumper, &dump_list, list) ++ dumper->dump(dumper, reason, s1, l1, s2, l2); ++ spin_unlock_irqrestore(&dump_list_lock, flags); ++} diff --git a/target/linux/generic-2.6/patches-2.6.30/931-crashlog.patch b/target/linux/generic-2.6/patches-2.6.30/931-crashlog.patch new file mode 100644 index 000000000..d4424190c --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.30/931-crashlog.patch @@ -0,0 +1,241 @@ +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -723,6 +723,9 @@ + Allow user space to create what appear to be multiple instances + of the network stack. + ++config CRASHLOG ++ bool "Crash logging" ++ + config BLK_DEV_INITRD + bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" + depends on BROKEN || !FRV +--- a/kernel/Makefile ++++ b/kernel/Makefile +@@ -95,6 +95,7 @@ + obj-$(CONFIG_TRACING) += trace/ + obj-$(CONFIG_SMP) += sched_cpupri.o + obj-$(CONFIG_SLOW_WORK) += slow-work.o ++obj-$(CONFIG_CRASHLOG) += crashlog.o + + ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y) + # According to Alan Modra , the -fno-omit-frame-pointer is +--- a/mm/bootmem.c ++++ b/mm/bootmem.c +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -151,6 +152,7 @@ + if (!bdata->node_bootmem_map) + return 0; + ++ crashlog_init_mem(bdata); + start = bdata->node_min_pfn; + end = bdata->node_low_pfn; + +--- a/kernel/module.c ++++ b/kernel/module.c +@@ -71,6 +71,9 @@ + DEFINE_MUTEX(module_mutex); + EXPORT_SYMBOL_GPL(module_mutex); + static LIST_HEAD(modules); ++#ifdef CONFIG_CRASHLOG ++struct list_head *crashlog_modules = &modules; ++#endif + + /* Waiting for a module to finish initializing? */ + static DECLARE_WAIT_QUEUE_HEAD(module_wq); +--- /dev/null ++++ b/include/linux/crashlog.h +@@ -0,0 +1,12 @@ ++#ifndef __CRASHLOG_H ++#define __CRASHLOG_H ++ ++#ifdef CONFIG_CRASHLOG ++void __init crashlog_init_mem(struct bootmem_data *bdata); ++#else ++static inline void crashlog_init_mem(struct bootmem_data *bdata) ++{ ++} ++#endif ++ ++#endif +--- /dev/null ++++ b/kernel/crashlog.c +@@ -0,0 +1,171 @@ ++/* ++ * Crash information logger ++ * Copyright (C) 2010 Felix Fietkau ++ * ++ * Based on ramoops.c ++ * Copyright (C) 2010 Marco Stornelli ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ++ * 02110-1301 USA ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define CRASHLOG_PAGES 4 ++#define CRASHLOG_SIZE (CRASHLOG_PAGES * PAGE_SIZE) ++#define CRASHLOG_MAGIC 0xa1eedead ++ ++/* ++ * Start the log at 1M before the end of RAM, as some boot loaders like ++ * to use the end of the RAM for stack usage and other things ++ * If this fails, fall back to using the last part. ++ */ ++#define CRASHLOG_OFFSET (1024 * 1024) ++ ++struct crashlog_data { ++ u32 magic; ++ u32 len; ++ u8 data[]; ++}; ++ ++static struct debugfs_blob_wrapper crashlog_blob; ++static unsigned long crashlog_addr = 0; ++static struct crashlog_data *crashlog_buf; ++static struct kmsg_dumper dump; ++static bool first = true; ++ ++extern struct list_head *crashlog_modules; ++ ++void __init crashlog_init_mem(bootmem_data_t *bdata) ++{ ++ unsigned long addr; ++ ++ if (crashlog_addr) ++ return; ++ ++ addr = PFN_PHYS(bdata->node_low_pfn) - CRASHLOG_OFFSET; ++ if (reserve_bootmem(addr, CRASHLOG_SIZE, BOOTMEM_EXCLUSIVE) < 0) { ++ printk("Crashlog failed to allocate RAM at address 0x%lx\n", addr); ++ bdata->node_low_pfn -= CRASHLOG_PAGES; ++ addr = PFN_PHYS(bdata->node_low_pfn); ++ } ++ crashlog_addr = addr; ++} ++ ++static void __init crashlog_copy(void) ++{ ++ if (crashlog_buf->magic != CRASHLOG_MAGIC) ++ return; ++ ++ if (!crashlog_buf->len || crashlog_buf->len > ++ CRASHLOG_SIZE - sizeof(*crashlog_buf)) ++ return; ++ ++ crashlog_blob.size = crashlog_buf->len; ++ crashlog_blob.data = kmemdup(crashlog_buf->data, ++ crashlog_buf->len, GFP_KERNEL); ++ ++ debugfs_create_blob("crashlog", 0700, NULL, &crashlog_blob); ++} ++ ++static int get_maxlen(void) ++{ ++ return CRASHLOG_SIZE - sizeof(*crashlog_buf) - crashlog_buf->len; ++} ++ ++static void crashlog_printf(const char *fmt, ...) ++{ ++ va_list args; ++ int len = get_maxlen(); ++ ++ if (!len) ++ return; ++ ++ va_start(args, fmt); ++ crashlog_buf->len += vsnprintf( ++ &crashlog_buf->data[crashlog_buf->len], ++ len, fmt, args); ++ va_end(args); ++} ++ ++static void crashlog_do_dump(struct kmsg_dumper *dumper, ++ enum kmsg_dump_reason reason, const char *s1, unsigned long l1, ++ const char *s2, unsigned long l2) ++{ ++ unsigned long s1_start, s2_start; ++ unsigned long l1_cpy, l2_cpy; ++ struct timeval tv; ++ struct module *m; ++ char *buf; ++ int len; ++ ++ if (!first) ++ crashlog_printf("\n===================================\n"); ++ ++ do_gettimeofday(&tv); ++ crashlog_printf("Time: %lu.%lu\n", ++ (long)tv.tv_sec, (long)tv.tv_usec); ++ ++ if (first) { ++ crashlog_printf("Modules:"); ++ list_for_each_entry(m, crashlog_modules, list) { ++ crashlog_printf("\t%s@%p+%x", m->name, ++ m->module_core, m->core_size, ++ m->module_init, m->init_size); ++ } ++ crashlog_printf("\n"); ++ first = false; ++ } ++ ++ buf = (char *)&crashlog_buf->data[crashlog_buf->len]; ++ len = get_maxlen(); ++ ++ l2_cpy = min(l2, (unsigned long)len); ++ l1_cpy = min(l1, (unsigned long)len - l2_cpy); ++ ++ s2_start = l2 - l2_cpy; ++ s1_start = l1 - l1_cpy; ++ ++ memcpy(buf, s1 + s1_start, l1_cpy); ++ memcpy(buf + l1_cpy, s2 + s2_start, l2_cpy); ++ crashlog_buf->len += l1_cpy + l2_cpy; ++} ++ ++ ++int __init crashlog_init_fs(void) ++{ ++ if (!crashlog_addr) ++ return -ENOMEM; ++ ++ crashlog_buf = ioremap(crashlog_addr, CRASHLOG_SIZE); ++ ++ crashlog_copy(); ++ ++ crashlog_buf->magic = CRASHLOG_MAGIC; ++ crashlog_buf->len = 0; ++ ++ dump.dump = crashlog_do_dump; ++ kmsg_dump_register(&dump); ++ ++ return 0; ++} ++module_init(crashlog_init_fs); diff --git a/target/linux/generic-2.6/patches-2.6.32/930-kmsg_dump_backport.patch b/target/linux/generic-2.6/patches-2.6.32/930-kmsg_dump_backport.patch new file mode 100644 index 000000000..4b0369059 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.32/930-kmsg_dump_backport.patch @@ -0,0 +1,205 @@ +--- /dev/null ++++ b/include/linux/kmsg_dump.h +@@ -0,0 +1,44 @@ ++/* ++ * linux/include/kmsg_dump.h ++ * ++ * Copyright (C) 2009 Net Insight AB ++ * ++ * Author: Simon Kagstrom ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ */ ++#ifndef _LINUX_KMSG_DUMP_H ++#define _LINUX_KMSG_DUMP_H ++ ++#include ++ ++enum kmsg_dump_reason { ++ KMSG_DUMP_OOPS, ++ KMSG_DUMP_PANIC, ++}; ++ ++/** ++ * struct kmsg_dumper - kernel crash message dumper structure ++ * @dump: The callback which gets called on crashes. The buffer is passed ++ * as two sections, where s1 (length l1) contains the older ++ * messages and s2 (length l2) contains the newer. ++ * @list: Entry in the dumper list (private) ++ * @registered: Flag that specifies if this is already registered ++ */ ++struct kmsg_dumper { ++ void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason, ++ const char *s1, unsigned long l1, ++ const char *s2, unsigned long l2); ++ struct list_head list; ++ int registered; ++}; ++ ++void kmsg_dump(enum kmsg_dump_reason reason); ++ ++int kmsg_dump_register(struct kmsg_dumper *dumper); ++ ++int kmsg_dump_unregister(struct kmsg_dumper *dumper); ++ ++#endif /* _LINUX_KMSG_DUMP_H */ +--- a/kernel/panic.c ++++ b/kernel/panic.c +@@ -10,6 +10,7 @@ + */ + #include + #include ++#include + #include + #include + #include +@@ -74,6 +75,7 @@ NORET_TYPE void panic(const char * fmt, + dump_stack(); + #endif + ++ kmsg_dump(KMSG_DUMP_PANIC); + /* + * If we have crashed and we have a crash kernel loaded let it handle + * everything else. +@@ -339,6 +341,7 @@ void oops_exit(void) + { + do_oops_enter_exit(); + print_oops_end_marker(); ++ kmsg_dump(KMSG_DUMP_OOPS); + } + + #ifdef WANT_WARN_ON_SLOWPATH +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + + #include + +@@ -1405,3 +1406,121 @@ bool printk_timed_ratelimit(unsigned lon + } + EXPORT_SYMBOL(printk_timed_ratelimit); + #endif ++ ++static DEFINE_SPINLOCK(dump_list_lock); ++static LIST_HEAD(dump_list); ++ ++/** ++ * kmsg_dump_register - register a kernel log dumper. ++ * @dump: pointer to the kmsg_dumper structure ++ * ++ * Adds a kernel log dumper to the system. The dump callback in the ++ * structure will be called when the kernel oopses or panics and must be ++ * set. Returns zero on success and %-EINVAL or %-EBUSY otherwise. ++ */ ++int kmsg_dump_register(struct kmsg_dumper *dumper) ++{ ++ unsigned long flags; ++ int err = -EBUSY; ++ ++ /* The dump callback needs to be set */ ++ if (!dumper->dump) ++ return -EINVAL; ++ ++ spin_lock_irqsave(&dump_list_lock, flags); ++ /* Don't allow registering multiple times */ ++ if (!dumper->registered) { ++ dumper->registered = 1; ++ list_add_tail(&dumper->list, &dump_list); ++ err = 0; ++ } ++ spin_unlock_irqrestore(&dump_list_lock, flags); ++ ++ return err; ++} ++EXPORT_SYMBOL_GPL(kmsg_dump_register); ++ ++/** ++ * kmsg_dump_unregister - unregister a kmsg dumper. ++ * @dump: pointer to the kmsg_dumper structure ++ * ++ * Removes a dump device from the system. Returns zero on success and ++ * %-EINVAL otherwise. ++ */ ++int kmsg_dump_unregister(struct kmsg_dumper *dumper) ++{ ++ unsigned long flags; ++ int err = -EINVAL; ++ ++ spin_lock_irqsave(&dump_list_lock, flags); ++ if (dumper->registered) { ++ dumper->registered = 0; ++ list_del(&dumper->list); ++ err = 0; ++ } ++ spin_unlock_irqrestore(&dump_list_lock, flags); ++ ++ return err; ++} ++EXPORT_SYMBOL_GPL(kmsg_dump_unregister); ++ ++static const char const *kmsg_reasons[] = { ++ [KMSG_DUMP_OOPS] = "oops", ++ [KMSG_DUMP_PANIC] = "panic", ++}; ++ ++static const char *kmsg_to_str(enum kmsg_dump_reason reason) ++{ ++ if (reason >= ARRAY_SIZE(kmsg_reasons) || reason < 0) ++ return "unknown"; ++ ++ return kmsg_reasons[reason]; ++} ++ ++/** ++ * kmsg_dump - dump kernel log to kernel message dumpers. ++ * @reason: the reason (oops, panic etc) for dumping ++ * ++ * Iterate through each of the dump devices and call the oops/panic ++ * callbacks with the log buffer. ++ */ ++void kmsg_dump(enum kmsg_dump_reason reason) ++{ ++ unsigned long end; ++ unsigned chars; ++ struct kmsg_dumper *dumper; ++ const char *s1, *s2; ++ unsigned long l1, l2; ++ unsigned long flags; ++ ++ /* Theoretically, the log could move on after we do this, but ++ there's not a lot we can do about that. The new messages ++ will overwrite the start of what we dump. */ ++ spin_lock_irqsave(&logbuf_lock, flags); ++ end = log_end & LOG_BUF_MASK; ++ chars = logged_chars; ++ spin_unlock_irqrestore(&logbuf_lock, flags); ++ ++ if (logged_chars > end) { ++ s1 = log_buf + log_buf_len - logged_chars + end; ++ l1 = logged_chars - end; ++ ++ s2 = log_buf; ++ l2 = end; ++ } else { ++ s1 = ""; ++ l1 = 0; ++ ++ s2 = log_buf + end - logged_chars; ++ l2 = logged_chars; ++ } ++ ++ if (!spin_trylock_irqsave(&dump_list_lock, flags)) { ++ printk(KERN_ERR "dump_kmsg: dump list lock is held during %s, skipping dump\n", ++ kmsg_to_str(reason)); ++ return; ++ } ++ list_for_each_entry(dumper, &dump_list, list) ++ dumper->dump(dumper, reason, s1, l1, s2, l2); ++ spin_unlock_irqrestore(&dump_list_lock, flags); ++} diff --git a/target/linux/generic-2.6/patches-2.6.32/931-crashlog.patch b/target/linux/generic-2.6/patches-2.6.32/931-crashlog.patch new file mode 100644 index 000000000..0c06700ae --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.32/931-crashlog.patch @@ -0,0 +1,241 @@ +--- /dev/null ++++ b/include/linux/crashlog.h +@@ -0,0 +1,12 @@ ++#ifndef __CRASHLOG_H ++#define __CRASHLOG_H ++ ++#ifdef CONFIG_CRASHLOG ++void __init crashlog_init_mem(struct bootmem_data *bdata); ++#else ++static inline void crashlog_init_mem(struct bootmem_data *bdata) ++{ ++} ++#endif ++ ++#endif +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -710,6 +710,9 @@ config NET_NS + Allow user space to create what appear to be multiple instances + of the network stack. + ++config CRASHLOG ++ bool "Crash logging" ++ + config BLK_DEV_INITRD + bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" + depends on BROKEN || !FRV +--- a/kernel/Makefile ++++ b/kernel/Makefile +@@ -96,6 +96,7 @@ obj-$(CONFIG_SMP) += sched_cpupri.o + obj-$(CONFIG_SLOW_WORK) += slow-work.o + obj-$(CONFIG_SLOW_WORK_DEBUG) += slow-work-debugfs.o + obj-$(CONFIG_PERF_EVENTS) += perf_event.o ++obj-$(CONFIG_CRASHLOG) += crashlog.o + + ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y) + # According to Alan Modra , the -fno-omit-frame-pointer is +--- /dev/null ++++ b/kernel/crashlog.c +@@ -0,0 +1,171 @@ ++/* ++ * Crash information logger ++ * Copyright (C) 2010 Felix Fietkau ++ * ++ * Based on ramoops.c ++ * Copyright (C) 2010 Marco Stornelli ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ++ * 02110-1301 USA ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define CRASHLOG_PAGES 4 ++#define CRASHLOG_SIZE (CRASHLOG_PAGES * PAGE_SIZE) ++#define CRASHLOG_MAGIC 0xa1eedead ++ ++/* ++ * Start the log at 1M before the end of RAM, as some boot loaders like ++ * to use the end of the RAM for stack usage and other things ++ * If this fails, fall back to using the last part. ++ */ ++#define CRASHLOG_OFFSET (1024 * 1024) ++ ++struct crashlog_data { ++ u32 magic; ++ u32 len; ++ u8 data[]; ++}; ++ ++static struct debugfs_blob_wrapper crashlog_blob; ++static unsigned long crashlog_addr = 0; ++static struct crashlog_data *crashlog_buf; ++static struct kmsg_dumper dump; ++static bool first = true; ++ ++extern struct list_head *crashlog_modules; ++ ++void __init crashlog_init_mem(bootmem_data_t *bdata) ++{ ++ unsigned long addr; ++ ++ if (crashlog_addr) ++ return; ++ ++ addr = PFN_PHYS(bdata->node_low_pfn) - CRASHLOG_OFFSET; ++ if (reserve_bootmem(addr, CRASHLOG_SIZE, BOOTMEM_EXCLUSIVE) < 0) { ++ printk("Crashlog failed to allocate RAM at address 0x%lx\n", addr); ++ bdata->node_low_pfn -= CRASHLOG_PAGES; ++ addr = PFN_PHYS(bdata->node_low_pfn); ++ } ++ crashlog_addr = addr; ++} ++ ++static void __init crashlog_copy(void) ++{ ++ if (crashlog_buf->magic != CRASHLOG_MAGIC) ++ return; ++ ++ if (!crashlog_buf->len || crashlog_buf->len > ++ CRASHLOG_SIZE - sizeof(*crashlog_buf)) ++ return; ++ ++ crashlog_blob.size = crashlog_buf->len; ++ crashlog_blob.data = kmemdup(crashlog_buf->data, ++ crashlog_buf->len, GFP_KERNEL); ++ ++ debugfs_create_blob("crashlog", 0700, NULL, &crashlog_blob); ++} ++ ++static int get_maxlen(void) ++{ ++ return CRASHLOG_SIZE - sizeof(*crashlog_buf) - crashlog_buf->len; ++} ++ ++static void crashlog_printf(const char *fmt, ...) ++{ ++ va_list args; ++ int len = get_maxlen(); ++ ++ if (!len) ++ return; ++ ++ va_start(args, fmt); ++ crashlog_buf->len += vsnprintf( ++ &crashlog_buf->data[crashlog_buf->len], ++ len, fmt, args); ++ va_end(args); ++} ++ ++static void crashlog_do_dump(struct kmsg_dumper *dumper, ++ enum kmsg_dump_reason reason, const char *s1, unsigned long l1, ++ const char *s2, unsigned long l2) ++{ ++ unsigned long s1_start, s2_start; ++ unsigned long l1_cpy, l2_cpy; ++ struct timeval tv; ++ struct module *m; ++ char *buf; ++ int len; ++ ++ if (!first) ++ crashlog_printf("\n===================================\n"); ++ ++ do_gettimeofday(&tv); ++ crashlog_printf("Time: %lu.%lu\n", ++ (long)tv.tv_sec, (long)tv.tv_usec); ++ ++ if (first) { ++ crashlog_printf("Modules:"); ++ list_for_each_entry(m, crashlog_modules, list) { ++ crashlog_printf("\t%s@%p+%x", m->name, ++ m->module_core, m->core_size, ++ m->module_init, m->init_size); ++ } ++ crashlog_printf("\n"); ++ first = false; ++ } ++ ++ buf = (char *)&crashlog_buf->data[crashlog_buf->len]; ++ len = get_maxlen(); ++ ++ l2_cpy = min(l2, (unsigned long)len); ++ l1_cpy = min(l1, (unsigned long)len - l2_cpy); ++ ++ s2_start = l2 - l2_cpy; ++ s1_start = l1 - l1_cpy; ++ ++ memcpy(buf, s1 + s1_start, l1_cpy); ++ memcpy(buf + l1_cpy, s2 + s2_start, l2_cpy); ++ crashlog_buf->len += l1_cpy + l2_cpy; ++} ++ ++ ++int __init crashlog_init_fs(void) ++{ ++ if (!crashlog_addr) ++ return -ENOMEM; ++ ++ crashlog_buf = ioremap(crashlog_addr, CRASHLOG_SIZE); ++ ++ crashlog_copy(); ++ ++ crashlog_buf->magic = CRASHLOG_MAGIC; ++ crashlog_buf->len = 0; ++ ++ dump.dump = crashlog_do_dump; ++ kmsg_dump_register(&dump); ++ ++ return 0; ++} ++module_init(crashlog_init_fs); +--- a/mm/bootmem.c ++++ b/mm/bootmem.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -152,6 +153,7 @@ static unsigned long __init free_all_boo + if (!bdata->node_bootmem_map) + return 0; + ++ crashlog_init_mem(bdata); + start = bdata->node_min_pfn; + end = bdata->node_low_pfn; + +--- a/kernel/module.c ++++ b/kernel/module.c +@@ -79,6 +79,9 @@ EXPORT_TRACEPOINT_SYMBOL(module_get); + DEFINE_MUTEX(module_mutex); + EXPORT_SYMBOL_GPL(module_mutex); + static LIST_HEAD(modules); ++#ifdef CONFIG_CRASHLOG ++struct list_head *crashlog_modules = &modules; ++#endif + + /* Block module loading/unloading? */ + int modules_disabled = 0; diff --git a/target/linux/uml/config/i386 b/target/linux/uml/config/i386 index b8f78dc7e..e1715c317 100644 --- a/target/linux/uml/config/i386 +++ b/target/linux/uml/config/i386 @@ -15,6 +15,7 @@ CONFIG_CLASSIC_RCU=y CONFIG_CON_CHAN="xterm" CONFIG_CON_ZERO_CHAN="fd:0,fd:1" CONFIG_CRAMFS=y +# CONFIG_CRASHLOG is not set # CONFIG_CRYPTO_AES_586 is not set # CONFIG_CRYPTO_SALSA20_586 is not set # CONFIG_CRYPTO_TWOFISH_586 is not set diff --git a/target/linux/uml/config/x86_64 b/target/linux/uml/config/x86_64 index 8ef700fe6..66c1c4b8d 100644 --- a/target/linux/uml/config/x86_64 +++ b/target/linux/uml/config/x86_64 @@ -13,6 +13,7 @@ CONFIG_BLK_DEV_UBD_SYNC=y CONFIG_CON_CHAN="xterm" CONFIG_CON_ZERO_CHAN="fd:0,fd:1" CONFIG_CRAMFS=y +# CONFIG_CRASHLOG is not set # CONFIG_CRYPTO_AES_NI_INTEL is not set # CONFIG_CRYPTO_AES_X86_64 is not set # CONFIG_CRYPTO_SALSA20_X86_64 is not set From ba36298f895acc299ca6324557a101bbf95d9a0d Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 21 Jul 2010 17:32:04 +0000 Subject: [PATCH 74/90] squashfs4: backport the mode fix from r22334 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22335 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- tools/squashfs4/patches/140-mode_check.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 tools/squashfs4/patches/140-mode_check.patch diff --git a/tools/squashfs4/patches/140-mode_check.patch b/tools/squashfs4/patches/140-mode_check.patch new file mode 100644 index 000000000..30ab4e137 --- /dev/null +++ b/tools/squashfs4/patches/140-mode_check.patch @@ -0,0 +1,11 @@ +--- a/squashfs-tools/pseudo.c ++++ b/squashfs-tools/pseudo.c +@@ -374,7 +374,7 @@ + } + + +- if(mode > 0777) { ++ if(mode > 07777) { + ERROR("Mode %o out of range\n", mode); + goto error; + } From 5dba542b5a0bb42c097d1cd81913ac98abaa14b3 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 21 Jul 2010 17:50:18 +0000 Subject: [PATCH 75/90] backport scripts/env init fix from r22336 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22337 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- scripts/env | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/env b/scripts/env index 65594f9a5..882b42a49 100755 --- a/scripts/env +++ b/scripts/env @@ -192,7 +192,8 @@ env_new() { if [ -f "$BASEDIR/.config" -o -d "$BASEDIR/files" ]; then if ask_bool 1 "Do you want to keep your current config and files?"; then [ -d "$BASEDIR/files" -a \! -L "$BASEDIR/files" ] && { - mv "$BASEDIR/files/"* "$ENVDIR/" 2>/dev/null + mkdir -p "$ENVDIR/files" + mv "$BASEDIR/files/*" "$ENVDIR/files/" 2>/dev/null rmdir "$BASEDIR/files" } env_sync From 20769ac18b0a476f5f4fb318db0799d900c77c83 Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 21 Jul 2010 18:28:30 +0000 Subject: [PATCH 76/90] [backfire] merge r22338 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22339 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...-strip-trailing-conffiles-whitespace.patch | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 package/opkg/patches/012-strip-trailing-conffiles-whitespace.patch diff --git a/package/opkg/patches/012-strip-trailing-conffiles-whitespace.patch b/package/opkg/patches/012-strip-trailing-conffiles-whitespace.patch new file mode 100644 index 000000000..cd7d47d05 --- /dev/null +++ b/package/opkg/patches/012-strip-trailing-conffiles-whitespace.patch @@ -0,0 +1,23 @@ +--- a/libopkg/opkg_install.c ++++ b/libopkg/opkg_install.c +@@ -271,6 +271,7 @@ unpack_pkg_control_files(pkg_t *pkg) + while (1) { + char *cf_name; + char *cf_name_in_dest; ++ int i; + + cf_name = file_read_line_alloc(conffiles_file); + if (cf_name == NULL) { +@@ -279,6 +280,12 @@ unpack_pkg_control_files(pkg_t *pkg) + if (cf_name[0] == '\0') { + continue; + } ++ for (i = strlen(cf_name) - 1; ++ (i >= 0) && (cf_name[i] == ' ' || cf_name[i] == '\t'); ++ i-- ++ ) { ++ cf_name[i] = '\0'; ++ } + + /* Prepend dest->root_dir to conffile name. + Take pains to avoid multiple slashes. */ From 6ef6628ddb20881215bca6ea68b3439eed7ad410 Mon Sep 17 00:00:00 2001 From: jow Date: Thu, 22 Jul 2010 16:02:30 +0000 Subject: [PATCH 77/90] [backfire] merge r22355 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22356 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/files/lib/wifi/mac80211.sh | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh index c871cbe73..4390b657f 100644 --- a/package/mac80211/files/lib/wifi/mac80211.sh +++ b/package/mac80211/files/lib/wifi/mac80211.sh @@ -206,6 +206,8 @@ enable_mac80211() { config_get txpower "$device" txpower config_get country "$device" country config_get distance "$device" distance + config_get frag "$device" frag + config_get rts "$device" rts find_mac80211_phy "$device" || return 0 config_get phy "$device" phy local i=0 @@ -219,6 +221,8 @@ enable_mac80211() { } [ -n "$distance" ] && iw phy "$phy" set distance "$distance" + [ -n "$frag" ] && iw phy "$phy" set frag "${frag%%.*}" + [ -n "$rts" ] && iw phy "$phy" set rts "${rts%%.*}" export channel fixed # convert channel to frequency @@ -310,16 +314,6 @@ enable_mac80211() { # wifi-device) if the latter doesn't exist txpower="${txpower:-$vif_txpower}" [ -z "$txpower" ] || iwconfig "$ifname" txpower "${txpower%%.*}" - - config_get frag "$vif" frag - if [ -n "$frag" ]; then - iw phy "$phy" set frag "${frag%%.*}" - fi - - config_get rts "$vif" rts - if [ -n "$rts" ]; then - iw phy "$phy" set rts "${rts%%.*}" - fi done local start_hostapd= From e05e095d4d3b68be2c682513b1f53818f5ee4691 Mon Sep 17 00:00:00 2001 From: jow Date: Fri, 23 Jul 2010 10:40:45 +0000 Subject: [PATCH 78/90] [backfire] merge r22363 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22364 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/atheros/base-files/etc/uci-defaults/network | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target/linux/atheros/base-files/etc/uci-defaults/network b/target/linux/atheros/base-files/etc/uci-defaults/network index 89ea9a102..7e91e6ac2 100644 --- a/target/linux/atheros/base-files/etc/uci-defaults/network +++ b/target/linux/atheros/base-files/etc/uci-defaults/network @@ -1,5 +1,8 @@ #!/bin/sh -if [ -e "/sys/bus/mdio_bus/drivers/IC+ IP175C/0:00" -a -x /sbin/swconfig ]; then +if [ -e "/sys/bus/mdio_bus/drivers/IC+ IP175C/0:00" -o \ + -e "/sys/bus/mdio_bus/drivers/IC+ IP17xx/0:00" ] && \ + [ -x /sbin/swconfig ]; +then uci batch < Date: Fri, 23 Jul 2010 18:17:41 +0000 Subject: [PATCH 79/90] ar71xx: backport nanostation m sysupgrade fix from r22370 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22371 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ar71xx/base-files/lib/upgrade/platform.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index a6ffa4f26..1076bdea8 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -68,7 +68,7 @@ platform_check_image() { [ "$ARGC" -gt 1 ] && return 1 case "$board" in - ap81 | ap83 | dir-600-a1 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt400n | bullet-m | nano-m | rocket-m | wzr-hp-g300nh) + ap81 | ap83 | dir-600-a1 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt400n | bullet-m | nanostation-m | rocket-m | wzr-hp-g300nh ) [ "$magic" != "2705" ] && { echo "Invalid image type." return 1 From 2f1f0c0e5b648d9e2112e039438a4453b50fd691 Mon Sep 17 00:00:00 2001 From: jow Date: Sat, 24 Jul 2010 15:48:29 +0000 Subject: [PATCH 80/90] [backfire] merge r22377 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22378 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/Makefile | 2 +- package/base-files/files/lib/preinit/40_mount_jffs2 | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 24169afec..11431669e 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=base-files -PKG_RELEASE:=43.2 +PKG_RELEASE:=43.3 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ diff --git a/package/base-files/files/lib/preinit/40_mount_jffs2 b/package/base-files/files/lib/preinit/40_mount_jffs2 index cb743ea75..d2f05b02c 100644 --- a/package/base-files/files/lib/preinit/40_mount_jffs2 +++ b/package/base-files/files/lib/preinit/40_mount_jffs2 @@ -5,6 +5,7 @@ find_mount_jffs2() { mkdir -p /tmp/overlay mount "$(find_mtd_part rootfs_data)" /tmp/overlay -t jffs2 + mtd -qq unlock rootfs_data } jffs2_not_mounted() { From 250cb956cb396c0b945009c5fcceeb17bc724881 Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 26 Jul 2010 21:59:27 +0000 Subject: [PATCH 81/90] mac80211: backport latest version from trunk into backfire git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22391 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/Makefile | 4 +- .../mac80211/patches/120-pm_qos_params.patch | 61 +++ .../408-ath9k_tweak_rx_intr_mitigation.patch | 2 +- .../patches/450-add-ath5k-platform.patch | 35 ++ ...add-platform-eeprom-support-to-ath5k.patch | 57 +++ .../patches/510-ath9k_aggr_buffer_leak.patch | 68 --- ...s.patch => 510-ath9k_handle_keymiss.patch} | 2 +- .../511-ath9k_completion_buffer_leak.patch | 21 - .../520-ath9k_ar9285_diversity_fix.patch | 77 ---- .../mac80211/patches/520-ath9k_leak_fix.patch | 32 ++ .../patches/521-ath9k_iqcal_fix.patch | 11 - .../patches/522-ath9k_pwrcal_fix.patch | 11 - .../523-ath9k_channel_change_fix.patch | 15 - .../524-ath9k_aggr_status_validate.patch | 51 --- .../patches/526-ath9k_improve_nf_cal.patch | 399 ------------------ .../mac80211/patches/530-ath9k_aggr_fix.patch | 35 -- .../mac80211/patches/530-ath9k_nf_fix.patch | 46 ++ .../patches/531-ath9k_nf_cleanup.patch | 30 ++ ...e-pci-code-if-CONFIG_PCI-not-defined.patch | 4 +- .../601-rt2x00-fix-hang-on-ifdown.patch | 29 -- ...et_pci_mwi.patch => 610-set_pci_mwi.patch} | 2 +- .../patches/800-mac80211_aggr_fix.patch | 20 + 22 files changed, 288 insertions(+), 724 deletions(-) create mode 100644 package/mac80211/patches/120-pm_qos_params.patch create mode 100644 package/mac80211/patches/450-add-ath5k-platform.patch create mode 100644 package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch delete mode 100644 package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch rename package/mac80211/patches/{525-ath9k_handle_keymiss.patch => 510-ath9k_handle_keymiss.patch} (92%) delete mode 100644 package/mac80211/patches/511-ath9k_completion_buffer_leak.patch delete mode 100644 package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch create mode 100644 package/mac80211/patches/520-ath9k_leak_fix.patch delete mode 100644 package/mac80211/patches/521-ath9k_iqcal_fix.patch delete mode 100644 package/mac80211/patches/522-ath9k_pwrcal_fix.patch delete mode 100644 package/mac80211/patches/523-ath9k_channel_change_fix.patch delete mode 100644 package/mac80211/patches/524-ath9k_aggr_status_validate.patch delete mode 100644 package/mac80211/patches/526-ath9k_improve_nf_cal.patch delete mode 100644 package/mac80211/patches/530-ath9k_aggr_fix.patch create mode 100644 package/mac80211/patches/530-ath9k_nf_fix.patch create mode 100644 package/mac80211/patches/531-ath9k_nf_cleanup.patch delete mode 100644 package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch rename package/mac80211/patches/{750-set_pci_mwi.patch => 610-set_pci_mwi.patch} (84%) create mode 100644 package/mac80211/patches/800-mac80211_aggr_fix.patch diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index c8c6998ce..7dd953882 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=2010-07-06 +PKG_VERSION:=2010-07-16 PKG_RELEASE:=1 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources # http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \ # http://wireless.kernel.org/download/compat-wireless-2.6 -PKG_MD5SUM:=e669e4c2ed4f0cc9a6a28e941d766eac +PKG_MD5SUM:=f0eb07a207d1f3675787a466c838b777 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) diff --git a/package/mac80211/patches/120-pm_qos_params.patch b/package/mac80211/patches/120-pm_qos_params.patch new file mode 100644 index 000000000..8562992a5 --- /dev/null +++ b/package/mac80211/patches/120-pm_qos_params.patch @@ -0,0 +1,61 @@ +--- a/drivers/net/wireless/ipw2x00/ipw2100.c ++++ b/drivers/net/wireless/ipw2x00/ipw2100.c +@@ -174,7 +174,9 @@ that only one external action is invoked + #define DRV_DESCRIPTION "Intel(R) PRO/Wireless 2100 Network Driver" + #define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation" + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + struct pm_qos_request_list *ipw2100_pm_qos_req; ++#endif + + /* Debugging stuff */ + #ifdef CONFIG_IPW2100_DEBUG +@@ -1741,7 +1743,11 @@ static int ipw2100_up(struct ipw2100_pri + /* the ipw2100 hardware really doesn't want power management delays + * longer than 175usec + */ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + pm_qos_update_request(ipw2100_pm_qos_req, 175); ++#else ++ pm_qos_update_requirement(PM_QOS_CPU_DMA_LATENCY, "ipw2100", 175); ++#endif + + /* If the interrupt is enabled, turn it off... */ + spin_lock_irqsave(&priv->low_lock, flags); +@@ -1889,7 +1895,12 @@ static void ipw2100_down(struct ipw2100_ + ipw2100_disable_interrupts(priv); + spin_unlock_irqrestore(&priv->low_lock, flags); + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + pm_qos_update_request(ipw2100_pm_qos_req, PM_QOS_DEFAULT_VALUE); ++#else ++ pm_qos_update_requirement(PM_QOS_CPU_DMA_LATENCY, "ipw2100", ++ PM_QOS_DEFAULT_VALUE); ++#endif + + /* We have to signal any supplicant if we are disassociating */ + if (associated) +@@ -6669,7 +6680,11 @@ static int __init ipw2100_init(void) + if (ret) + goto out; + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + ipw2100_pm_qos_req = pm_qos_add_request(PM_QOS_CPU_DMA_LATENCY, ++#else ++ pm_qos_add_requirement(PM_QOS_CPU_DMA_LATENCY, "ipw2100", ++#endif + PM_QOS_DEFAULT_VALUE); + #ifdef CONFIG_IPW2100_DEBUG + ipw2100_debug_level = debug; +@@ -6692,7 +6707,11 @@ static void __exit ipw2100_exit(void) + &driver_attr_debug_level); + #endif + pci_unregister_driver(&ipw2100_pci_driver); ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + pm_qos_remove_request(ipw2100_pm_qos_req); ++#else ++ pm_qos_remove_requirement(PM_QOS_CPU_DMA_LATENCY, "ipw2100"); ++#endif + } + + module_init(ipw2100_init); diff --git a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch index c9add27c9..f987e8a54 100644 --- a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch +++ b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1416,7 +1416,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1418,7 +1418,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st if (ah->config.rx_intr_mitigation) { REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500); diff --git a/package/mac80211/patches/450-add-ath5k-platform.patch b/package/mac80211/patches/450-add-ath5k-platform.patch new file mode 100644 index 000000000..77717b993 --- /dev/null +++ b/package/mac80211/patches/450-add-ath5k-platform.patch @@ -0,0 +1,35 @@ +diff -Nur a/include/linux/ath5k_platform.h b/include/linux/ath5k_platform.h +--- a/include/linux/ath5k_platform.h 1970-01-01 01:00:00.000000000 +0100 ++++ b/include/linux/ath5k_platform.h 2010-06-21 00:19:52.000000000 +0200 +@@ -0,0 +1,30 @@ ++/* ++ * Copyright (c) 2008 Atheros Communications Inc. ++ * Copyright (c) 2009 Gabor Juhos ++ * Copyright (c) 2009 Imre Kaloz ++ * Copyright (c) 2010 Daniel Golle ++ * ++ * 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 _LINUX_ATH5K_PLATFORM_H ++#define _LINUX_ATH5K_PLATFORM_H ++ ++#define ATH5K_PLAT_EEP_MAX_WORDS 2048 ++ ++struct ath5k_platform_data { ++ u16 *eeprom_data; ++ u8 *macaddr; ++}; ++ ++#endif /* _LINUX_ATH5K_PLATFORM_H */ + diff --git a/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch b/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch new file mode 100644 index 000000000..717acd234 --- /dev/null +++ b/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch @@ -0,0 +1,57 @@ +--- a/drivers/net/wireless/ath/ath5k/eeprom.c 2010-06-23 03:08:32.000000000 +0200 ++++ b/drivers/net/wireless/ath/ath5k/eeprom.c 2010-06-23 05:59:30.000000000 +0200 +@@ -22,6 +23,8 @@ + \*************************************/ + + #include ++#include ++#include + + #include "ath5k.h" + #include "reg.h" +@@ -34,6 +37,18 @@ + static int ath5k_hw_eeprom_read(struct ath5k_hw *ah, u32 offset, u16 *data) + { + u32 status, timeout; ++ struct ath5k_platform_data *pdata = NULL; ++ ++ if (ah->ah_sc->pdev) ++ pdata = ah->ah_sc->pdev->dev.platform_data; ++ ++ if (pdata && pdata->eeprom_data && pdata->eeprom_data[0] == AR5K_EEPROM_MAGIC_VALUE) ++ { ++ ATH5K_INFO(ah->ah_sc, "using eeprom-content from platform_data\n"); ++ if (offset >= ATH5K_PLAT_EEP_MAX_WORDS) return -EIO; ++ *data = pdata->eeprom_data[offset]; ++ return 0; ++ } + + /* + * Initialize EEPROM access +@@ -1788,7 +1802,7 @@ + } + + /* +- * Read the MAC address from eeprom ++ * Read the MAC address from eeprom or platform_data + */ + int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac) + { +@@ -1796,6 +1810,16 @@ + u32 total, offset; + u16 data; + int octet, ret; ++ struct ath5k_platform_data *pdata = NULL; ++ ++ if (ah->ah_sc->pdev) ++ pdata = ah->ah_sc->pdev->dev.platform_data; ++ ++ if (pdata && pdata->macaddr) ++ { ++ memcpy(mac, pdata->macaddr, ETH_ALEN); ++ return 0; ++ } + + ret = ath5k_hw_eeprom_read(ah, 0x20, &data); + if (ret) + diff --git a/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch b/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch deleted file mode 100644 index aa1f033fa..000000000 --- a/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch +++ /dev/null @@ -1,68 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -2430,37 +2430,37 @@ void ath_tx_node_init(struct ath_softc * - - void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an) - { -- int i; -- struct ath_atx_ac *ac, *ac_tmp; -- struct ath_atx_tid *tid, *tid_tmp; -+ struct ath_atx_ac *ac; -+ struct ath_atx_tid *tid; - struct ath_txq *txq; -+ int i, tidno; - -- for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { -- if (ATH_TXQ_SETUP(sc, i)) { -- txq = &sc->tx.txq[i]; -- -- spin_lock_bh(&txq->axq_lock); -- -- list_for_each_entry_safe(ac, -- ac_tmp, &txq->axq_acq, list) { -- tid = list_first_entry(&ac->tid_q, -- struct ath_atx_tid, list); -- if (tid && tid->an != an) -- continue; -- list_del(&ac->list); -- ac->sched = false; -- -- list_for_each_entry_safe(tid, -- tid_tmp, &ac->tid_q, list) { -- list_del(&tid->list); -- tid->sched = false; -- ath_tid_drain(sc, txq, tid); -- tid->state &= ~AGGR_ADDBA_COMPLETE; -- tid->state &= ~AGGR_CLEANUP; -- } -- } -+ for (tidno = 0, tid = &an->tid[tidno]; -+ tidno < WME_NUM_TID; tidno++, tid++) { -+ i = tid->ac->qnum; - -- spin_unlock_bh(&txq->axq_lock); -+ if (!ATH_TXQ_SETUP(sc, i)) -+ continue; -+ -+ txq = &sc->tx.txq[i]; -+ ac = tid->ac; -+ -+ spin_lock_bh(&txq->axq_lock); -+ -+ if (tid->sched) { -+ list_del(&tid->list); -+ tid->sched = false; - } -+ -+ if (ac->sched) { -+ list_del(&ac->list); -+ tid->ac->sched = false; -+ } -+ -+ ath_tid_drain(sc, txq, tid); -+ tid->state &= ~AGGR_ADDBA_COMPLETE; -+ tid->state &= ~AGGR_CLEANUP; -+ -+ spin_unlock_bh(&txq->axq_lock); - } - } diff --git a/package/mac80211/patches/525-ath9k_handle_keymiss.patch b/package/mac80211/patches/510-ath9k_handle_keymiss.patch similarity index 92% rename from package/mac80211/patches/525-ath9k_handle_keymiss.patch rename to package/mac80211/patches/510-ath9k_handle_keymiss.patch index bbdd17761..f4ff69b16 100644 --- a/package/mac80211/patches/525-ath9k_handle_keymiss.patch +++ b/package/mac80211/patches/510-ath9k_handle_keymiss.patch @@ -11,7 +11,7 @@ return 0; --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -589,7 +589,8 @@ int ath9k_hw_process_rxdesc_edma(struct +@@ -616,7 +616,8 @@ int ath9k_hw_process_rxdesc_edma(struct rxs->rs_status |= ATH9K_RXERR_DECRYPT; } else if (rxsp->status11 & AR_MichaelErr) { rxs->rs_status |= ATH9K_RXERR_MIC; diff --git a/package/mac80211/patches/511-ath9k_completion_buffer_leak.patch b/package/mac80211/patches/511-ath9k_completion_buffer_leak.patch deleted file mode 100644 index 709e2846c..000000000 --- a/package/mac80211/patches/511-ath9k_completion_buffer_leak.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -329,6 +329,7 @@ static void ath_tx_complete_aggr(struct - int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0; - bool rc_update = true; - struct ieee80211_tx_rate rates[4]; -+ unsigned long flags; - - skb = bf->bf_mpdu; - hdr = (struct ieee80211_hdr *)skb->data; -@@ -344,6 +345,10 @@ static void ath_tx_complete_aggr(struct - sta = ieee80211_find_sta_by_hw(hw, hdr->addr1); - if (!sta) { - rcu_read_unlock(); -+ -+ spin_lock_irqsave(&sc->tx.txbuflock, flags); -+ list_splice_tail_init(bf_q, &sc->tx.txbuf); -+ spin_unlock_irqrestore(&sc->tx.txbuflock, flags); - return; - } - diff --git a/package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch b/package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch deleted file mode 100644 index a79667421..000000000 --- a/package/mac80211/patches/520-ath9k_ar9285_diversity_fix.patch +++ /dev/null @@ -1,77 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/eeprom.h -+++ b/drivers/net/wireless/ath/ath9k/eeprom.h -@@ -670,7 +670,7 @@ struct eeprom_ops { - int (*get_eeprom_ver)(struct ath_hw *hw); - int (*get_eeprom_rev)(struct ath_hw *hw); - u8 (*get_num_ant_config)(struct ath_hw *hw, enum ieee80211_band band); -- u16 (*get_eeprom_antenna_cfg)(struct ath_hw *hw, -+ u32 (*get_eeprom_antenna_cfg)(struct ath_hw *hw, - struct ath9k_channel *chan); - void (*set_board_values)(struct ath_hw *hw, struct ath9k_channel *chan); - void (*set_addac)(struct ath_hw *hw, struct ath9k_channel *chan); ---- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c -+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c -@@ -1130,13 +1130,13 @@ static u8 ath9k_hw_ar9287_get_num_ant_co - return 1; - } - --static u16 ath9k_hw_ar9287_get_eeprom_antenna_cfg(struct ath_hw *ah, -+static u32 ath9k_hw_ar9287_get_eeprom_antenna_cfg(struct ath_hw *ah, - struct ath9k_channel *chan) - { - struct ar9287_eeprom *eep = &ah->eeprom.map9287; - struct modal_eep_ar9287_header *pModal = &eep->modalHeader; - -- return pModal->antCtrlCommon & 0xFFFF; -+ return pModal->antCtrlCommon; - } - - static u16 ath9k_hw_ar9287_get_spur_channel(struct ath_hw *ah, ---- a/drivers/net/wireless/ath/ath9k/eeprom_def.c -+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c -@@ -1438,14 +1438,14 @@ static u8 ath9k_hw_def_get_num_ant_confi - return num_ant_config; - } - --static u16 ath9k_hw_def_get_eeprom_antenna_cfg(struct ath_hw *ah, -+static u32 ath9k_hw_def_get_eeprom_antenna_cfg(struct ath_hw *ah, - struct ath9k_channel *chan) - { - struct ar5416_eeprom_def *eep = &ah->eeprom.def; - struct modal_eep_header *pModal = - &(eep->modalHeader[IS_CHAN_2GHZ(chan)]); - -- return pModal->antCtrlCommon & 0xFFFF; -+ return pModal->antCtrlCommon; - } - - static u16 ath9k_hw_def_get_spur_channel(struct ath_hw *ah, u16 i, bool is2GHz) ---- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c -+++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c -@@ -1150,13 +1150,13 @@ static void ath9k_hw_4k_set_board_values - } - } - --static u16 ath9k_hw_4k_get_eeprom_antenna_cfg(struct ath_hw *ah, -+static u32 ath9k_hw_4k_get_eeprom_antenna_cfg(struct ath_hw *ah, - struct ath9k_channel *chan) - { - struct ar5416_eeprom_4k *eep = &ah->eeprom.map4k; - struct modal_eep_4k_header *pModal = &eep->modalHeader; - -- return pModal->antCtrlCommon & 0xFFFF; -+ return pModal->antCtrlCommon; - } - - static u8 ath9k_hw_4k_get_num_ant_config(struct ath_hw *ah, ---- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c -@@ -951,7 +951,7 @@ static u8 ath9k_hw_ar9300_get_num_ant_co - return 1; - } - --static u16 ath9k_hw_ar9300_get_eeprom_antenna_cfg(struct ath_hw *ah, -+static u32 ath9k_hw_ar9300_get_eeprom_antenna_cfg(struct ath_hw *ah, - struct ath9k_channel *chan) - { - return -EINVAL; diff --git a/package/mac80211/patches/520-ath9k_leak_fix.patch b/package/mac80211/patches/520-ath9k_leak_fix.patch new file mode 100644 index 000000000..acf7efd87 --- /dev/null +++ b/package/mac80211/patches/520-ath9k_leak_fix.patch @@ -0,0 +1,32 @@ +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -518,6 +518,14 @@ static void ath_tx_complete_aggr(struct + bf = bf_next; + } + ++ /* prepend un-acked frames to the beginning of the pending frame queue */ ++ if (!list_empty(&bf_pending)) { ++ spin_lock_bh(&txq->axq_lock); ++ list_splice(&bf_pending, &tid->buf_q); ++ ath_tx_queue_tid(txq, tid); ++ spin_unlock_bh(&txq->axq_lock); ++ } ++ + if (tid->state & AGGR_CLEANUP) { + if (tid->baw_head == tid->baw_tail) { + tid->state &= ~AGGR_ADDBA_COMPLETE; +@@ -530,14 +538,6 @@ static void ath_tx_complete_aggr(struct + return; + } + +- /* prepend un-acked frames to the beginning of the pending frame queue */ +- if (!list_empty(&bf_pending)) { +- spin_lock_bh(&txq->axq_lock); +- list_splice(&bf_pending, &tid->buf_q); +- ath_tx_queue_tid(txq, tid); +- spin_unlock_bh(&txq->axq_lock); +- } +- + rcu_read_unlock(); + + if (needreset) diff --git a/package/mac80211/patches/521-ath9k_iqcal_fix.patch b/package/mac80211/patches/521-ath9k_iqcal_fix.patch deleted file mode 100644 index 1efd6cccc..000000000 --- a/package/mac80211/patches/521-ath9k_iqcal_fix.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c -@@ -239,7 +239,7 @@ static void ar9002_hw_iqcalibrate(struct - if (qCoff > 15) - qCoff = 15; - else if (qCoff <= -16) -- qCoff = 16; -+ qCoff = -16; - - ath_print(common, ATH_DBG_CALIBRATE, - "Chn %d : iCoff = 0x%x qCoff = 0x%x\n", diff --git a/package/mac80211/patches/522-ath9k_pwrcal_fix.patch b/package/mac80211/patches/522-ath9k_pwrcal_fix.patch deleted file mode 100644 index 6a41c9f88..000000000 --- a/package/mac80211/patches/522-ath9k_pwrcal_fix.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/eeprom_def.c -+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c -@@ -730,7 +730,7 @@ static void ath9k_hw_get_def_gain_bounda - vpdTableI[i][sizeCurrVpdTable - 2]); - vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep); - -- if (tgtIndex > maxIndex) { -+ if (tgtIndex >= maxIndex) { - while ((ss <= tgtIndex) && - (k < (AR5416_NUM_PDADC_VALUES - 1))) { - tmpVal = (int16_t)((vpdTableI[i][sizeCurrVpdTable - 1] + diff --git a/package/mac80211/patches/523-ath9k_channel_change_fix.patch b/package/mac80211/patches/523-ath9k_channel_change_fix.patch deleted file mode 100644 index 0f10cb38d..000000000 --- a/package/mac80211/patches/523-ath9k_channel_change_fix.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1244,9 +1244,11 @@ int ath9k_hw_reset(struct ath_hw *ah, st - - if (!ah->chip_fullsleep) { - ath9k_hw_abortpcurecv(ah); -- if (!ath9k_hw_stopdmarecv(ah)) -+ if (!ath9k_hw_stopdmarecv(ah)) { - ath_print(common, ATH_DBG_XMIT, - "Failed to stop receive dma\n"); -+ bChannelChange = false; -+ } - } - - if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) diff --git a/package/mac80211/patches/524-ath9k_aggr_status_validate.patch b/package/mac80211/patches/524-ath9k_aggr_status_validate.patch deleted file mode 100644 index e6ea97e97..000000000 --- a/package/mac80211/patches/524-ath9k_aggr_status_validate.patch +++ /dev/null @@ -1,51 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c -@@ -287,6 +287,7 @@ static int ar9002_hw_proc_txdesc(struct - ts->ts_shortretry = MS(ads->ds_txstatus1, AR_RTSFailCnt); - ts->ts_longretry = MS(ads->ds_txstatus1, AR_DataFailCnt); - ts->ts_virtcol = MS(ads->ds_txstatus1, AR_VirtRetryCnt); -+ ts->tid = MS(ads->ds_txstatus9, AR_TxTid); - ts->ts_antenna = 0; - - return 0; ---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.h -@@ -33,9 +33,6 @@ - #define AR_TxDescId_S 16 - #define AR_TxPtrChkSum 0x0000ffff - --#define AR_TxTid 0xf0000000 --#define AR_TxTid_S 28 -- - #define AR_LowRxChain 0x00004000 - - #define AR_Not_Sounding 0x20000000 ---- a/drivers/net/wireless/ath/ath9k/mac.h -+++ b/drivers/net/wireless/ath/ath9k/mac.h -@@ -485,6 +485,9 @@ struct ar5416_desc { - #define AR_TxRSSICombined 0xff000000 - #define AR_TxRSSICombined_S 24 - -+#define AR_TxTid 0xf0000000 -+#define AR_TxTid_S 28 -+ - #define AR_TxEVM0 ds_txstatus5 - #define AR_TxEVM1 ds_txstatus6 - #define AR_TxEVM2 ds_txstatus7 ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -355,6 +355,14 @@ static void ath_tx_complete_aggr(struct - an = (struct ath_node *)sta->drv_priv; - tid = ATH_AN_2_TID(an, bf->bf_tidno); - -+ /* -+ * The hardware occasionally sends a tx status for the wrong TID. -+ * In this case, the BA status cannot be considered valid and all -+ * subframes need to be retransmitted -+ */ -+ if (bf->bf_tidno != ts->tid) -+ txok = false; -+ - isaggr = bf_isaggr(bf); - memset(ba, 0, WME_BA_BMP_SIZE >> 3); - diff --git a/package/mac80211/patches/526-ath9k_improve_nf_cal.patch b/package/mac80211/patches/526-ath9k_improve_nf_cal.patch deleted file mode 100644 index 2bc11a1d2..000000000 --- a/package/mac80211/patches/526-ath9k_improve_nf_cal.patch +++ /dev/null @@ -1,399 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c -@@ -1518,77 +1518,6 @@ static void ar5008_hw_do_getnf(struct at - nfarray[5] = sign_extend(nf, 9); - } - --static void ar5008_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) --{ -- struct ath9k_nfcal_hist *h; -- int i, j; -- int32_t val; -- const u32 ar5416_cca_regs[6] = { -- AR_PHY_CCA, -- AR_PHY_CH1_CCA, -- AR_PHY_CH2_CCA, -- AR_PHY_EXT_CCA, -- AR_PHY_CH1_EXT_CCA, -- AR_PHY_CH2_EXT_CCA -- }; -- u8 chainmask, rx_chain_status; -- -- rx_chain_status = REG_READ(ah, AR_PHY_RX_CHAINMASK); -- if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) -- chainmask = 0x9; -- else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) { -- if ((rx_chain_status & 0x2) || (rx_chain_status & 0x4)) -- chainmask = 0x1B; -- else -- chainmask = 0x09; -- } else { -- if (rx_chain_status & 0x4) -- chainmask = 0x3F; -- else if (rx_chain_status & 0x2) -- chainmask = 0x1B; -- else -- chainmask = 0x09; -- } -- -- h = ah->nfCalHist; -- -- for (i = 0; i < NUM_NF_READINGS; i++) { -- if (chainmask & (1 << i)) { -- val = REG_READ(ah, ar5416_cca_regs[i]); -- val &= 0xFFFFFE00; -- val |= (((u32) (h[i].privNF) << 1) & 0x1ff); -- REG_WRITE(ah, ar5416_cca_regs[i], val); -- } -- } -- -- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, -- AR_PHY_AGC_CONTROL_ENABLE_NF); -- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, -- AR_PHY_AGC_CONTROL_NO_UPDATE_NF); -- REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); -- -- for (j = 0; j < 5; j++) { -- if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & -- AR_PHY_AGC_CONTROL_NF) == 0) -- break; -- udelay(50); -- } -- -- ENABLE_REGWRITE_BUFFER(ah); -- -- for (i = 0; i < NUM_NF_READINGS; i++) { -- if (chainmask & (1 << i)) { -- val = REG_READ(ah, ar5416_cca_regs[i]); -- val &= 0xFFFFFE00; -- val |= (((u32) (-50) << 1) & 0x1ff); -- REG_WRITE(ah, ar5416_cca_regs[i], val); -- } -- } -- -- REGWRITE_BUFFER_FLUSH(ah); -- DISABLE_REGWRITE_BUFFER(ah); --} -- - /* - * Initialize the ANI register values with default (ini) values. - * This routine is called during a (full) hardware reset after -@@ -1666,6 +1595,14 @@ static void ar5008_hw_set_nf_limits(stru - void ar5008_hw_attach_phy_ops(struct ath_hw *ah) - { - struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); -+ const u32 ar5416_cca_regs[6] = { -+ AR_PHY_CCA, -+ AR_PHY_CH1_CCA, -+ AR_PHY_CH2_CCA, -+ AR_PHY_EXT_CCA, -+ AR_PHY_CH1_EXT_CCA, -+ AR_PHY_CH2_EXT_CCA -+ }; - - priv_ops->rf_set_freq = ar5008_hw_set_channel; - priv_ops->spur_mitigate_freq = ar5008_hw_spur_mitigate; -@@ -1685,7 +1622,6 @@ void ar5008_hw_attach_phy_ops(struct ath - priv_ops->restore_chainmask = ar5008_restore_chainmask; - priv_ops->set_diversity = ar5008_set_diversity; - priv_ops->do_getnf = ar5008_hw_do_getnf; -- priv_ops->loadnf = ar5008_hw_loadnf; - - if (modparam_force_new_ani) { - priv_ops->ani_control = ar5008_hw_ani_control_new; -@@ -1701,4 +1637,5 @@ void ar5008_hw_attach_phy_ops(struct ath - priv_ops->compute_pll_control = ar5008_hw_compute_pll_control; - - ar5008_hw_set_nf_limits(ah); -+ memcpy(ah->nf_regs, ar5416_cca_regs, sizeof(ah->nf_regs)); - } ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -1050,106 +1050,6 @@ static void ar9003_hw_set_nf_limits(stru - } - - /* -- * Find out which of the RX chains are enabled -- */ --static u32 ar9003_hw_get_rx_chainmask(struct ath_hw *ah) --{ -- u32 chain = REG_READ(ah, AR_PHY_RX_CHAINMASK); -- /* -- * The bits [2:0] indicate the rx chain mask and are to be -- * interpreted as follows: -- * 00x => Only chain 0 is enabled -- * 01x => Chain 1 and 0 enabled -- * 1xx => Chain 2,1 and 0 enabled -- */ -- return chain & 0x7; --} -- --static void ar9003_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) --{ -- struct ath9k_nfcal_hist *h; -- unsigned i, j; -- int32_t val; -- const u32 ar9300_cca_regs[6] = { -- AR_PHY_CCA_0, -- AR_PHY_CCA_1, -- AR_PHY_CCA_2, -- AR_PHY_EXT_CCA, -- AR_PHY_EXT_CCA_1, -- AR_PHY_EXT_CCA_2, -- }; -- u8 chainmask, rx_chain_status; -- struct ath_common *common = ath9k_hw_common(ah); -- -- rx_chain_status = ar9003_hw_get_rx_chainmask(ah); -- -- chainmask = 0x3F; -- h = ah->nfCalHist; -- -- for (i = 0; i < NUM_NF_READINGS; i++) { -- if (chainmask & (1 << i)) { -- val = REG_READ(ah, ar9300_cca_regs[i]); -- val &= 0xFFFFFE00; -- val |= (((u32) (h[i].privNF) << 1) & 0x1ff); -- REG_WRITE(ah, ar9300_cca_regs[i], val); -- } -- } -- -- /* -- * Load software filtered NF value into baseband internal minCCApwr -- * variable. -- */ -- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, -- AR_PHY_AGC_CONTROL_ENABLE_NF); -- REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, -- AR_PHY_AGC_CONTROL_NO_UPDATE_NF); -- REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); -- -- /* -- * Wait for load to complete, should be fast, a few 10s of us. -- * The max delay was changed from an original 250us to 10000us -- * since 250us often results in NF load timeout and causes deaf -- * condition during stress testing 12/12/2009 -- */ -- for (j = 0; j < 1000; j++) { -- if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & -- AR_PHY_AGC_CONTROL_NF) == 0) -- break; -- udelay(10); -- } -- -- /* -- * We timed out waiting for the noisefloor to load, probably due to an -- * in-progress rx. Simply return here and allow the load plenty of time -- * to complete before the next calibration interval. We need to avoid -- * trying to load -50 (which happens below) while the previous load is -- * still in progress as this can cause rx deafness. Instead by returning -- * here, the baseband nf cal will just be capped by our present -- * noisefloor until the next calibration timer. -- */ -- if (j == 1000) { -- ath_print(common, ATH_DBG_ANY, "Timeout while waiting for nf " -- "to load: AR_PHY_AGC_CONTROL=0x%x\n", -- REG_READ(ah, AR_PHY_AGC_CONTROL)); -- return; -- } -- -- /* -- * Restore maxCCAPower register parameter again so that we're not capped -- * by the median we just loaded. This will be initial (and max) value -- * of next noise floor calibration the baseband does. -- */ -- for (i = 0; i < NUM_NF_READINGS; i++) { -- if (chainmask & (1 << i)) { -- val = REG_READ(ah, ar9300_cca_regs[i]); -- val &= 0xFFFFFE00; -- val |= (((u32) (-50) << 1) & 0x1ff); -- REG_WRITE(ah, ar9300_cca_regs[i], val); -- } -- } --} -- --/* - * Initialize the ANI register values with default (ini) values. - * This routine is called during a (full) hardware reset after - * all the registers are initialised from the INI. -@@ -1216,6 +1116,14 @@ static void ar9003_hw_ani_cache_ini_regs - void ar9003_hw_attach_phy_ops(struct ath_hw *ah) - { - struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); -+ const u32 ar9300_cca_regs[6] = { -+ AR_PHY_CCA_0, -+ AR_PHY_CCA_1, -+ AR_PHY_CCA_2, -+ AR_PHY_EXT_CCA, -+ AR_PHY_EXT_CCA_1, -+ AR_PHY_EXT_CCA_2, -+ }; - - priv_ops->rf_set_freq = ar9003_hw_set_channel; - priv_ops->spur_mitigate_freq = ar9003_hw_spur_mitigate; -@@ -1232,10 +1140,10 @@ void ar9003_hw_attach_phy_ops(struct ath - priv_ops->set_diversity = ar9003_hw_set_diversity; - priv_ops->ani_control = ar9003_hw_ani_control; - priv_ops->do_getnf = ar9003_hw_do_getnf; -- priv_ops->loadnf = ar9003_hw_loadnf; - priv_ops->ani_cache_ini_regs = ar9003_hw_ani_cache_ini_regs; - - ar9003_hw_set_nf_limits(ah); -+ memcpy(ah->nf_regs, ar9300_cca_regs, sizeof(ah->nf_regs)); - } - - void ar9003_hw_bb_watchdog_config(struct ath_hw *ah) ---- a/drivers/net/wireless/ath/ath9k/calib.c -+++ b/drivers/net/wireless/ath/ath9k/calib.c -@@ -167,6 +167,100 @@ void ath9k_hw_start_nfcal(struct ath_hw - REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); - } - -+void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) -+{ -+ struct ath9k_nfcal_hist *h; -+ unsigned i, j; -+ int32_t val; -+ u8 chainmask; -+ struct ath_common *common = ath9k_hw_common(ah); -+ -+ if (AR_SREV_9300_20_OR_LATER(ah)) -+ chainmask = 0x3F; -+ else if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) -+ chainmask = 0x9; -+ else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) { -+ if ((ah->rxchainmask & 0x2) || (ah->rxchainmask & 0x4)) -+ chainmask = 0x1B; -+ else -+ chainmask = 0x09; -+ } else { -+ if (ah->rxchainmask & 0x4) -+ chainmask = 0x3F; -+ else if (ah->rxchainmask & 0x2) -+ chainmask = 0x1B; -+ else -+ chainmask = 0x09; -+ } -+ h = ah->nfCalHist; -+ -+ for (i = 0; i < NUM_NF_READINGS; i++) { -+ if (chainmask & (1 << i)) { -+ val = REG_READ(ah, ah->nf_regs[i]); -+ val &= 0xFFFFFE00; -+ val |= (((u32) (h[i].privNF) << 1) & 0x1ff); -+ REG_WRITE(ah, ah->nf_regs[i], val); -+ } -+ } -+ -+ /* -+ * Load software filtered NF value into baseband internal minCCApwr -+ * variable. -+ */ -+ REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, -+ AR_PHY_AGC_CONTROL_ENABLE_NF); -+ REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, -+ AR_PHY_AGC_CONTROL_NO_UPDATE_NF); -+ REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); -+ -+ /* -+ * Wait for load to complete, should be fast, a few 10s of us. -+ * The max delay was changed from an original 250us to 10000us -+ * since 250us often results in NF load timeout and causes deaf -+ * condition during stress testing 12/12/2009 -+ */ -+ for (j = 0; j < 1000; j++) { -+ if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & -+ AR_PHY_AGC_CONTROL_NF) == 0) -+ break; -+ udelay(10); -+ } -+ -+ /* -+ * We timed out waiting for the noisefloor to load, probably due to an -+ * in-progress rx. Simply return here and allow the load plenty of time -+ * to complete before the next calibration interval. We need to avoid -+ * trying to load -50 (which happens below) while the previous load is -+ * still in progress as this can cause rx deafness. Instead by returning -+ * here, the baseband nf cal will just be capped by our present -+ * noisefloor until the next calibration timer. -+ */ -+ if (j == 1000) { -+ ath_print(common, ATH_DBG_ANY, "Timeout while waiting for nf " -+ "to load: AR_PHY_AGC_CONTROL=0x%x\n", -+ REG_READ(ah, AR_PHY_AGC_CONTROL)); -+ return; -+ } -+ -+ /* -+ * Restore maxCCAPower register parameter again so that we're not capped -+ * by the median we just loaded. This will be initial (and max) value -+ * of next noise floor calibration the baseband does. -+ */ -+ ENABLE_REGWRITE_BUFFER(ah); -+ for (i = 0; i < NUM_NF_READINGS; i++) { -+ if (chainmask & (1 << i)) { -+ val = REG_READ(ah, ah->nf_regs[i]); -+ val &= 0xFFFFFE00; -+ val |= (((u32) (-50) << 1) & 0x1ff); -+ REG_WRITE(ah, ah->nf_regs[i], val); -+ } -+ } -+ REGWRITE_BUFFER_FLUSH(ah); -+ DISABLE_REGWRITE_BUFFER(ah); -+} -+ -+ - static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf) - { - struct ath_common *common = ath9k_hw_common(ah); ---- a/drivers/net/wireless/ath/ath9k/calib.h -+++ b/drivers/net/wireless/ath/ath9k/calib.h -@@ -109,6 +109,7 @@ struct ath9k_pacal_info{ - - bool ath9k_hw_reset_calvalid(struct ath_hw *ah); - void ath9k_hw_start_nfcal(struct ath_hw *ah); -+void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan); - int16_t ath9k_hw_getnf(struct ath_hw *ah, - struct ath9k_channel *chan); - void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah); ---- a/drivers/net/wireless/ath/ath9k/hw-ops.h -+++ b/drivers/net/wireless/ath/ath9k/hw-ops.h -@@ -264,12 +264,6 @@ static inline void ath9k_hw_do_getnf(str - ath9k_hw_private_ops(ah)->do_getnf(ah, nfarray); - } - --static inline void ath9k_hw_loadnf(struct ath_hw *ah, -- struct ath9k_channel *chan) --{ -- ath9k_hw_private_ops(ah)->loadnf(ah, chan); --} -- - static inline bool ath9k_hw_init_cal(struct ath_hw *ah, - struct ath9k_channel *chan) - { ---- a/drivers/net/wireless/ath/ath9k/hw.h -+++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -510,7 +510,6 @@ struct ath_gen_timer_table { - * AR_RTC_PLL_CONTROL for a given channel - * @setup_calibration: set up calibration - * @iscal_supported: used to query if a type of calibration is supported -- * @loadnf: load noise floor read from each chain on the CCA registers - * - * @ani_reset: reset ANI parameters to default values - * @ani_lower_immunity: lower the noise immunity level. The level controls -@@ -564,7 +563,6 @@ struct ath_hw_private_ops { - bool (*ani_control)(struct ath_hw *ah, enum ath9k_ani_cmd cmd, - int param); - void (*do_getnf)(struct ath_hw *ah, int16_t nfarray[NUM_NF_READINGS]); -- void (*loadnf)(struct ath_hw *ah, struct ath9k_channel *chan); - - /* ANI */ - void (*ani_reset)(struct ath_hw *ah, bool is_scanning); -@@ -658,6 +656,7 @@ struct ath_hw { - bool need_an_top2_fixup; - u16 tx_trig_level; - -+ u32 nf_regs[6]; - struct ath_nf_limits nf_2g; - struct ath_nf_limits nf_5g; - u16 rfsilent; diff --git a/package/mac80211/patches/530-ath9k_aggr_fix.patch b/package/mac80211/patches/530-ath9k_aggr_fix.patch deleted file mode 100644 index 0c9d887ac..000000000 --- a/package/mac80211/patches/530-ath9k_aggr_fix.patch +++ /dev/null @@ -1,35 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -329,7 +329,6 @@ static void ath_tx_complete_aggr(struct - int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0; - bool rc_update = true; - struct ieee80211_tx_rate rates[4]; -- unsigned long flags; - - skb = bf->bf_mpdu; - hdr = (struct ieee80211_hdr *)skb->data; -@@ -346,9 +345,21 @@ static void ath_tx_complete_aggr(struct - if (!sta) { - rcu_read_unlock(); - -- spin_lock_irqsave(&sc->tx.txbuflock, flags); -- list_splice_tail_init(bf_q, &sc->tx.txbuf); -- spin_unlock_irqrestore(&sc->tx.txbuflock, flags); -+ INIT_LIST_HEAD(&bf_head); -+ while (bf) { -+ bf_next = bf->bf_next; -+ -+ bf->bf_state.bf_type |= BUF_XRETRY; -+ if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) || -+ !bf->bf_stale || bf_next != NULL) -+ list_move_tail(&bf->list, &bf_head); -+ -+ ath_tx_rc_status(bf, ts, 0, 0, false); -+ ath_tx_complete_buf(sc, bf, txq, &bf_head, ts, -+ 0, 0); -+ -+ bf = bf_next; -+ } - return; - } - diff --git a/package/mac80211/patches/530-ath9k_nf_fix.patch b/package/mac80211/patches/530-ath9k_nf_fix.patch new file mode 100644 index 000000000..081c2ab74 --- /dev/null +++ b/package/mac80211/patches/530-ath9k_nf_fix.patch @@ -0,0 +1,46 @@ +--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c +@@ -1508,6 +1508,9 @@ static void ar5008_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); + nfarray[2] = sign_extend(nf, 9); + ++ if (!IS_CHAN_HT40(ah->curchan)) ++ return; ++ + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); + nfarray[3] = sign_extend(nf, 9); + +--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c +@@ -477,7 +477,8 @@ static void ar9002_hw_do_getnf(struct at + nfarray[0] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR); +- nfarray[3] = sign_extend(nf, 9); ++ if (IS_CHAN_HT40(ah->curchan)) ++ nfarray[3] = sign_extend(nf, 9); + + if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) + return; +@@ -486,7 +487,8 @@ static void ar9002_hw_do_getnf(struct at + nfarray[1] = sign_extend(nf, 9); + + nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR); +- nfarray[4] = sign_extend(nf, 9); ++ if (IS_CHAN_HT40(ah->curchan)) ++ nfarray[4] = sign_extend(nf, 9); + } + + static void ar9002_hw_set_nf_limits(struct ath_hw *ah) +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -1029,6 +1029,9 @@ static void ar9003_hw_do_getnf(struct at + nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); + nfarray[2] = sign_extend(nf, 9); + ++ if (!IS_CHAN_HT40(ah->curchan)) ++ return; ++ + nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); + nfarray[3] = sign_extend(nf, 9); + diff --git a/package/mac80211/patches/531-ath9k_nf_cleanup.patch b/package/mac80211/patches/531-ath9k_nf_cleanup.patch new file mode 100644 index 000000000..f038559a4 --- /dev/null +++ b/package/mac80211/patches/531-ath9k_nf_cleanup.patch @@ -0,0 +1,30 @@ +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -172,26 +172,9 @@ void ath9k_hw_loadnf(struct ath_hw *ah, + struct ath9k_nfcal_hist *h; + unsigned i, j; + int32_t val; +- u8 chainmask; ++ u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; + struct ath_common *common = ath9k_hw_common(ah); + +- if (AR_SREV_9300_20_OR_LATER(ah)) +- chainmask = 0x3F; +- else if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) +- chainmask = 0x9; +- else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) { +- if ((ah->rxchainmask & 0x2) || (ah->rxchainmask & 0x4)) +- chainmask = 0x1B; +- else +- chainmask = 0x09; +- } else { +- if (ah->rxchainmask & 0x4) +- chainmask = 0x3F; +- else if (ah->rxchainmask & 0x2) +- chainmask = 0x1B; +- else +- chainmask = 0x09; +- } + h = ah->nfCalHist; + + for (i = 0; i < NUM_NF_READINGS; i++) { 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 37d7b847a..3364b8bcc 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 @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c -@@ -188,6 +188,7 @@ void rt2x00pci_uninitialize(struct rt2x0 +@@ -202,6 +202,7 @@ void rt2x00pci_uninitialize(struct rt2x0 } EXPORT_SYMBOL_GPL(rt2x00pci_uninitialize); @@ -8,7 +8,7 @@ /* * PCI driver handlers. */ -@@ -365,6 +366,7 @@ int rt2x00pci_resume(struct pci_dev *pci +@@ -382,6 +383,7 @@ int rt2x00pci_resume(struct pci_dev *pci } EXPORT_SYMBOL_GPL(rt2x00pci_resume); #endif /* CONFIG_PM */ diff --git a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch deleted file mode 100644 index 5b1ae415a..000000000 --- a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 27ed5ec6924c17b76d65b697a162bafee7bd8e4e Mon Sep 17 00:00:00 2001 -From: Helmut Schaa -Date: Mon, 21 Jun 2010 10:03:05 +0200 -Subject: [PATCH] rt2x00: fix rt2800pci hang on ifdown - -rt2800pci hangs the system on rt305x SoC devices on ifdown. Work around -this issue by disabling TX DMA prior to restting the TX queue indices. - -This patch is not suitable for upstream inclusion but is just meant as -a workaround until a proper solution is implemented. - -Signed-off-by: Helmut Schaa ---- - drivers/net/wireless/rt2x00/rt2800pci.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - ---- a/drivers/net/wireless/rt2x00/rt2800pci.c -+++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -749,6 +749,10 @@ static void rt2800pci_kill_tx_queue(stru - rt2800_register_write(rt2x00dev, BCN_TIME_CFG, 0); - return; - } -+ -+ rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); -+ rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); -+ rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); - - rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, ®); - rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, (qid == QID_AC_BE)); diff --git a/package/mac80211/patches/750-set_pci_mwi.patch b/package/mac80211/patches/610-set_pci_mwi.patch similarity index 84% rename from package/mac80211/patches/750-set_pci_mwi.patch rename to package/mac80211/patches/610-set_pci_mwi.patch index 3cc5bdb62..06933e571 100644 --- a/package/mac80211/patches/750-set_pci_mwi.patch +++ b/package/mac80211/patches/610-set_pci_mwi.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c -@@ -253,8 +253,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ +@@ -270,8 +270,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ pci_set_master(pci_dev); diff --git a/package/mac80211/patches/800-mac80211_aggr_fix.patch b/package/mac80211/patches/800-mac80211_aggr_fix.patch new file mode 100644 index 000000000..564bfac06 --- /dev/null +++ b/package/mac80211/patches/800-mac80211_aggr_fix.patch @@ -0,0 +1,20 @@ +--- a/net/mac80211/iface.c ++++ b/net/mac80211/iface.c +@@ -756,7 +756,7 @@ static void ieee80211_iface_work(struct + int len = skb->len; + + mutex_lock(&local->sta_mtx); +- sta = sta_info_get(sdata, mgmt->sa); ++ sta = sta_info_get_bss(sdata, mgmt->sa); + if (sta) { + switch (mgmt->u.action.u.addba_req.action_code) { + case WLAN_ACTION_ADDBA_REQ: +@@ -797,7 +797,7 @@ static void ieee80211_iface_work(struct + * right, so terminate the session. + */ + mutex_lock(&local->sta_mtx); +- sta = sta_info_get(sdata, mgmt->sa); ++ sta = sta_info_get_bss(sdata, mgmt->sa); + if (sta) { + u16 tid = *ieee80211_get_qos_ctl(hdr) & + IEEE80211_QOS_CTL_TID_MASK; From c49d54b604d00f806f7051ade93ea56ea0f3b1a4 Mon Sep 17 00:00:00 2001 From: nico Date: Sun, 1 Aug 2010 14:40:17 +0000 Subject: [PATCH 82/90] [backfire] merge r22453 * fix typo git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22454 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Config.in b/Config.in index 61a46b453..daecd171e 100644 --- a/Config.in +++ b/Config.in @@ -157,7 +157,7 @@ menu "Global build settings" config COLLECT_KERNEL_DEBUG bool - prompt "Colllect kernel debug information" + prompt "Collect kernel debug information" select KERNEL_DEBUG_INFO default n help From 0b00ddfee9d49ee08279735c58c7be3e8f0e7e42 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 4 Aug 2010 17:29:05 +0000 Subject: [PATCH 83/90] mac80211: merge changes from latest trunk into backfire git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22494 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/Makefile | 4 +- .../patches/100-disable_pcmcia_compat.patch | 6 +- .../mac80211/patches/120-pm_qos_params.patch | 2 +- .../patches/130-printk_debug_revert.patch | 69 ++ .../mac80211/patches/520-ath9k_leak_fix.patch | 32 - .../mac80211/patches/520-pending_work.patch | 993 ++++++++++++++++++ .../patches/530-ath9k_aggr_state_fix.patch | 72 ++ .../mac80211/patches/530-ath9k_nf_fix.patch | 46 - .../patches/531-ath9k_nf_cleanup.patch | 30 - .../patches/540-ath9k_bstuck_debug.patch | 43 + .../patches/541-ath9k_nf_validate.patch | 101 ++ .../542-ath9k_bstuck_nf_calibrate.patch | 129 +++ .../543-ath9k_interference_nf_cal.patch | 35 + .../mac80211/patches/550-ath9k_tsf_fix.patch | 44 + ...700-mwl8k-missing-pci-id-for-WNR854T.patch | 2 +- .../patches/800-mac80211_aggr_fix.patch | 20 - 16 files changed, 1492 insertions(+), 136 deletions(-) create mode 100644 package/mac80211/patches/130-printk_debug_revert.patch delete mode 100644 package/mac80211/patches/520-ath9k_leak_fix.patch create mode 100644 package/mac80211/patches/520-pending_work.patch create mode 100644 package/mac80211/patches/530-ath9k_aggr_state_fix.patch delete mode 100644 package/mac80211/patches/530-ath9k_nf_fix.patch delete mode 100644 package/mac80211/patches/531-ath9k_nf_cleanup.patch create mode 100644 package/mac80211/patches/540-ath9k_bstuck_debug.patch create mode 100644 package/mac80211/patches/541-ath9k_nf_validate.patch create mode 100644 package/mac80211/patches/542-ath9k_bstuck_nf_calibrate.patch create mode 100644 package/mac80211/patches/543-ath9k_interference_nf_cal.patch create mode 100644 package/mac80211/patches/550-ath9k_tsf_fix.patch delete mode 100644 package/mac80211/patches/800-mac80211_aggr_fix.patch diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 7dd953882..e2451b395 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=2010-07-16 +PKG_VERSION:=2010-07-29 PKG_RELEASE:=1 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources # http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \ # http://wireless.kernel.org/download/compat-wireless-2.6 -PKG_MD5SUM:=f0eb07a207d1f3675787a466c838b777 +PKG_MD5SUM:=fcfb757939c4718efbf9c87ca59c6932 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) diff --git a/package/mac80211/patches/100-disable_pcmcia_compat.patch b/package/mac80211/patches/100-disable_pcmcia_compat.patch index 8b366ff93..ebfe5ce65 100644 --- a/package/mac80211/patches/100-disable_pcmcia_compat.patch +++ b/package/mac80211/patches/100-disable_pcmcia_compat.patch @@ -42,18 +42,16 @@ #include --- a/include/linux/compat-2.6.33.h +++ b/include/linux/compat-2.6.33.h -@@ -6,8 +6,8 @@ +@@ -6,7 +6,7 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) #include -#if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE) --#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE) -+#if 0 +#if 0 #include #include #include -@@ -67,9 +67,9 @@ static inline struct sk_buff *netdev_all +@@ -65,9 +65,9 @@ static inline struct sk_buff *netdev_all return skb; } diff --git a/package/mac80211/patches/120-pm_qos_params.patch b/package/mac80211/patches/120-pm_qos_params.patch index 8562992a5..ca4b7bfe3 100644 --- a/package/mac80211/patches/120-pm_qos_params.patch +++ b/package/mac80211/patches/120-pm_qos_params.patch @@ -5,7 +5,7 @@ #define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation" +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) - struct pm_qos_request_list *ipw2100_pm_qos_req; + static struct pm_qos_request_list *ipw2100_pm_qos_req; +#endif /* Debugging stuff */ diff --git a/package/mac80211/patches/130-printk_debug_revert.patch b/package/mac80211/patches/130-printk_debug_revert.patch new file mode 100644 index 000000000..232902e8c --- /dev/null +++ b/package/mac80211/patches/130-printk_debug_revert.patch @@ -0,0 +1,69 @@ +--- a/include/net/cfg80211.h ++++ b/include/net/cfg80211.h +@@ -2443,9 +2443,8 @@ void cfg80211_cqm_rssi_notify(struct net + wiphy_printk(KERN_NOTICE, wiphy, format, ##args) + #define wiphy_info(wiphy, format, args...) \ + wiphy_printk(KERN_INFO, wiphy, format, ##args) +- +-int wiphy_debug(const struct wiphy *wiphy, const char *format, ...) +- __attribute__ ((format (printf, 2, 3))); ++#define wiphy_debug(wiphy, format, args...) \ ++ wiphy_printk(KERN_DEBUG, wiphy, format, ##args) + + #if defined(DEBUG) + #define wiphy_dbg(wiphy, format, args...) \ +--- a/net/wireless/core.c ++++ b/net/wireless/core.c +@@ -921,52 +921,3 @@ static void __exit cfg80211_exit(void) + destroy_workqueue(cfg80211_wq); + } + module_exit(cfg80211_exit); +- +-static int ___wiphy_printk(const char *level, const struct wiphy *wiphy, +- struct va_format *vaf) +-{ +- if (!wiphy) +- return printk("%s(NULL wiphy *): %pV", level, vaf); +- +- return printk("%s%s: %pV", level, wiphy_name(wiphy), vaf); +-} +- +-int __wiphy_printk(const char *level, const struct wiphy *wiphy, +- const char *fmt, ...) +-{ +- struct va_format vaf; +- va_list args; +- int r; +- +- va_start(args, fmt); +- +- vaf.fmt = fmt; +- vaf.va = &args; +- +- r = ___wiphy_printk(level, wiphy, &vaf); +- va_end(args); +- +- return r; +-} +-EXPORT_SYMBOL(__wiphy_printk); +- +-#define define_wiphy_printk_level(func, kern_level) \ +-int func(const struct wiphy *wiphy, const char *fmt, ...) \ +-{ \ +- struct va_format vaf; \ +- va_list args; \ +- int r; \ +- \ +- va_start(args, fmt); \ +- \ +- vaf.fmt = fmt; \ +- vaf.va = &args; \ +- \ +- r = ___wiphy_printk(kern_level, wiphy, &vaf); \ +- va_end(args); \ +- \ +- return r; \ +-} \ +-EXPORT_SYMBOL(func); +- +-define_wiphy_printk_level(wiphy_debug, KERN_DEBUG); diff --git a/package/mac80211/patches/520-ath9k_leak_fix.patch b/package/mac80211/patches/520-ath9k_leak_fix.patch deleted file mode 100644 index acf7efd87..000000000 --- a/package/mac80211/patches/520-ath9k_leak_fix.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -518,6 +518,14 @@ static void ath_tx_complete_aggr(struct - bf = bf_next; - } - -+ /* prepend un-acked frames to the beginning of the pending frame queue */ -+ if (!list_empty(&bf_pending)) { -+ spin_lock_bh(&txq->axq_lock); -+ list_splice(&bf_pending, &tid->buf_q); -+ ath_tx_queue_tid(txq, tid); -+ spin_unlock_bh(&txq->axq_lock); -+ } -+ - if (tid->state & AGGR_CLEANUP) { - if (tid->baw_head == tid->baw_tail) { - tid->state &= ~AGGR_ADDBA_COMPLETE; -@@ -530,14 +538,6 @@ static void ath_tx_complete_aggr(struct - return; - } - -- /* prepend un-acked frames to the beginning of the pending frame queue */ -- if (!list_empty(&bf_pending)) { -- spin_lock_bh(&txq->axq_lock); -- list_splice(&bf_pending, &tid->buf_q); -- ath_tx_queue_tid(txq, tid); -- spin_unlock_bh(&txq->axq_lock); -- } -- - rcu_read_unlock(); - - if (needreset) diff --git a/package/mac80211/patches/520-pending_work.patch b/package/mac80211/patches/520-pending_work.patch new file mode 100644 index 000000000..bcbbaf66b --- /dev/null +++ b/package/mac80211/patches/520-pending_work.patch @@ -0,0 +1,993 @@ +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -103,11 +103,13 @@ int ieee80211_hw_config(struct ieee80211 + int ret = 0; + int power; + enum nl80211_channel_type channel_type; ++ u32 offchannel_flag; + + might_sleep(); + + scan_chan = local->scan_channel; + ++ offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL; + if (scan_chan) { + chan = scan_chan; + channel_type = NL80211_CHAN_NO_HT; +@@ -121,8 +123,9 @@ int ieee80211_hw_config(struct ieee80211 + channel_type = local->_oper_channel_type; + local->hw.conf.flags &= ~IEEE80211_CONF_OFFCHANNEL; + } ++ offchannel_flag ^= local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL; + +- if (chan != local->hw.conf.channel || ++ if (offchannel_flag || chan != local->hw.conf.channel || + channel_type != local->hw.conf.channel_type) { + local->hw.conf.channel = chan; + local->hw.conf.channel_type = channel_type; +--- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c ++++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c +@@ -63,6 +63,7 @@ static bool ar9002_hw_per_calibration(st + u8 rxchainmask, + struct ath9k_cal_list *currCal) + { ++ struct ath9k_hw_cal_data *caldata = ah->caldata; + bool iscaldone = false; + + if (currCal->calState == CAL_RUNNING) { +@@ -81,14 +82,14 @@ static bool ar9002_hw_per_calibration(st + } + + currCal->calData->calPostProc(ah, numChains); +- ichan->CalValid |= currCal->calData->calType; ++ caldata->CalValid |= currCal->calData->calType; + currCal->calState = CAL_DONE; + iscaldone = true; + } else { + ar9002_hw_setup_calibration(ah, currCal); + } + } +- } else if (!(ichan->CalValid & currCal->calData->calType)) { ++ } else if (!(caldata->CalValid & currCal->calData->calType)) { + ath9k_hw_reset_calibration(ah, currCal); + } + +@@ -686,8 +687,13 @@ static bool ar9002_hw_calibrate(struct a + { + bool iscaldone = true; + struct ath9k_cal_list *currCal = ah->cal_list_curr; ++ bool nfcal, nfcal_pending = false; + +- if (currCal && ++ nfcal = !!(REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF); ++ if (ah->caldata) ++ nfcal_pending = ah->caldata->nfcal_pending; ++ ++ if (currCal && !nfcal && + (currCal->calState == CAL_RUNNING || + currCal->calState == CAL_WAITING)) { + iscaldone = ar9002_hw_per_calibration(ah, chan, +@@ -703,7 +709,7 @@ static bool ar9002_hw_calibrate(struct a + } + + /* Do NF cal only at longer intervals */ +- if (longcal) { ++ if (longcal || nfcal_pending) { + /* Do periodic PAOffset Cal */ + ar9002_hw_pa_cal(ah, false); + ar9002_hw_olc_temp_compensation(ah); +@@ -712,16 +718,18 @@ static bool ar9002_hw_calibrate(struct a + * Get the value from the previous NF cal and update + * history buffer. + */ +- ath9k_hw_getnf(ah, chan); +- +- /* +- * Load the NF from history buffer of the current channel. +- * NF is slow time-variant, so it is OK to use a historical +- * value. +- */ +- ath9k_hw_loadnf(ah, ah->curchan); ++ if (ath9k_hw_getnf(ah, chan)) { ++ /* ++ * Load the NF from history buffer of the current ++ * channel. ++ * NF is slow time-variant, so it is OK to use a ++ * historical value. ++ */ ++ ath9k_hw_loadnf(ah, ah->curchan); ++ } + +- ath9k_hw_start_nfcal(ah); ++ if (longcal) ++ ath9k_hw_start_nfcal(ah, false); + } + + return iscaldone; +@@ -869,8 +877,10 @@ static bool ar9002_hw_init_cal(struct at + ar9002_hw_pa_cal(ah, true); + + /* Do NF Calibration after DC offset and other calibrations */ +- REG_WRITE(ah, AR_PHY_AGC_CONTROL, +- REG_READ(ah, AR_PHY_AGC_CONTROL) | AR_PHY_AGC_CONTROL_NF); ++ ath9k_hw_start_nfcal(ah, true); ++ ++ if (ah->caldata) ++ ah->caldata->nfcal_pending = true; + + ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL; + +@@ -901,7 +911,8 @@ static bool ar9002_hw_init_cal(struct at + ath9k_hw_reset_calibration(ah, ah->cal_list_curr); + } + +- chan->CalValid = 0; ++ if (ah->caldata) ++ ah->caldata->CalValid = 0; + + return true; + } +--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c +@@ -68,6 +68,7 @@ static bool ar9003_hw_per_calibration(st + u8 rxchainmask, + struct ath9k_cal_list *currCal) + { ++ struct ath9k_hw_cal_data *caldata = ah->caldata; + /* Cal is assumed not done until explicitly set below */ + bool iscaldone = false; + +@@ -95,7 +96,7 @@ static bool ar9003_hw_per_calibration(st + currCal->calData->calPostProc(ah, numChains); + + /* Calibration has finished. */ +- ichan->CalValid |= currCal->calData->calType; ++ caldata->CalValid |= currCal->calData->calType; + currCal->calState = CAL_DONE; + iscaldone = true; + } else { +@@ -106,7 +107,7 @@ static bool ar9003_hw_per_calibration(st + ar9003_hw_setup_calibration(ah, currCal); + } + } +- } else if (!(ichan->CalValid & currCal->calData->calType)) { ++ } else if (!(caldata->CalValid & currCal->calData->calType)) { + /* If current cal is marked invalid in channel, kick it off */ + ath9k_hw_reset_calibration(ah, currCal); + } +@@ -149,6 +150,12 @@ static bool ar9003_hw_calibrate(struct a + /* Do NF cal only at longer intervals */ + if (longcal) { + /* ++ * Get the value from the previous NF cal and update ++ * history buffer. ++ */ ++ ath9k_hw_getnf(ah, chan); ++ ++ /* + * Load the NF from history buffer of the current channel. + * NF is slow time-variant, so it is OK to use a historical + * value. +@@ -156,7 +163,7 @@ static bool ar9003_hw_calibrate(struct a + ath9k_hw_loadnf(ah, ah->curchan); + + /* start NF calibration, without updating BB NF register */ +- ath9k_hw_start_nfcal(ah); ++ ath9k_hw_start_nfcal(ah, false); + } + + return iscaldone; +@@ -762,6 +769,8 @@ static bool ar9003_hw_init_cal(struct at + /* Revert chainmasks to their original values before NF cal */ + ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask); + ++ ath9k_hw_start_nfcal(ah, true); ++ + /* Initialize list pointers */ + ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL; + +@@ -785,7 +794,8 @@ static bool ar9003_hw_init_cal(struct at + if (ah->cal_list_curr) + ath9k_hw_reset_calibration(ah, ah->cal_list_curr); + +- chan->CalValid = 0; ++ if (ah->caldata) ++ ah->caldata->CalValid = 0; + + return true; + } +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -542,7 +542,11 @@ static void ar9003_hw_prog_ini(struct at + u32 reg = INI_RA(iniArr, i, 0); + u32 val = INI_RA(iniArr, i, column); + +- REG_WRITE(ah, reg, val); ++ if (reg >= 0x16000 && reg < 0x17000) ++ ath9k_hw_analog_shift_regwrite(ah, reg, val); ++ else ++ REG_WRITE(ah, reg, val); ++ + DO_DELAY(regWrites); + } + } +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -22,23 +22,6 @@ + /* We can tune this as we go by monitoring really low values */ + #define ATH9K_NF_TOO_LOW -60 + +-/* AR5416 may return very high value (like -31 dBm), in those cases the nf +- * is incorrect and we should use the static NF value. Later we can try to +- * find out why they are reporting these values */ +- +-static bool ath9k_hw_nf_in_range(struct ath_hw *ah, s16 nf) +-{ +- if (nf > ATH9K_NF_TOO_LOW) { +- ath_print(ath9k_hw_common(ah), ATH_DBG_CALIBRATE, +- "noise floor value detected (%d) is " +- "lower than what we think is a " +- "reasonable value (%d)\n", +- nf, ATH9K_NF_TOO_LOW); +- return false; +- } +- return true; +-} +- + static int16_t ath9k_hw_get_nf_hist_mid(int16_t *nfCalBuffer) + { + int16_t nfval; +@@ -121,6 +104,19 @@ void ath9k_hw_reset_calibration(struct a + ah->cal_samples = 0; + } + ++static s16 ath9k_hw_get_default_nf(struct ath_hw *ah, ++ struct ath9k_channel *chan) ++{ ++ struct ath_nf_limits *limit; ++ ++ if (!chan || IS_CHAN_2GHZ(chan)) ++ limit = &ah->nf_2g; ++ else ++ limit = &ah->nf_5g; ++ ++ return limit->nominal; ++} ++ + /* This is done for the currently configured channel */ + bool ath9k_hw_reset_calvalid(struct ath_hw *ah) + { +@@ -128,7 +124,7 @@ bool ath9k_hw_reset_calvalid(struct ath_ + struct ieee80211_conf *conf = &common->hw->conf; + struct ath9k_cal_list *currCal = ah->cal_list_curr; + +- if (!ah->curchan) ++ if (!ah->caldata) + return true; + + if (!AR_SREV_9100(ah) && !AR_SREV_9160_10_OR_LATER(ah)) +@@ -151,37 +147,55 @@ bool ath9k_hw_reset_calvalid(struct ath_ + "Resetting Cal %d state for channel %u\n", + currCal->calData->calType, conf->channel->center_freq); + +- ah->curchan->CalValid &= ~currCal->calData->calType; ++ ah->caldata->CalValid &= ~currCal->calData->calType; + currCal->calState = CAL_WAITING; + + return false; + } + EXPORT_SYMBOL(ath9k_hw_reset_calvalid); + +-void ath9k_hw_start_nfcal(struct ath_hw *ah) ++void ath9k_hw_start_nfcal(struct ath_hw *ah, bool update) + { ++ if (ah->caldata) ++ ah->caldata->nfcal_pending = true; ++ + REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, + AR_PHY_AGC_CONTROL_ENABLE_NF); +- REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, ++ ++ if (update) ++ REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, ++ AR_PHY_AGC_CONTROL_NO_UPDATE_NF); ++ else ++ REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, + AR_PHY_AGC_CONTROL_NO_UPDATE_NF); ++ + REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); + } + + void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) + { +- struct ath9k_nfcal_hist *h; ++ struct ath9k_nfcal_hist *h = NULL; + unsigned i, j; + int32_t val; + u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; + struct ath_common *common = ath9k_hw_common(ah); ++ s16 default_nf = ath9k_hw_get_default_nf(ah, chan); + +- h = ah->nfCalHist; ++ if (ah->caldata) ++ h = ah->caldata->nfCalHist; + + for (i = 0; i < NUM_NF_READINGS; i++) { + if (chainmask & (1 << i)) { ++ s16 nfval; ++ ++ if (h) ++ nfval = h[i].privNF; ++ else ++ nfval = default_nf; ++ + val = REG_READ(ah, ah->nf_regs[i]); + val &= 0xFFFFFE00; +- val |= (((u32) (h[i].privNF) << 1) & 0x1ff); ++ val |= (((u32) nfval << 1) & 0x1ff); + REG_WRITE(ah, ah->nf_regs[i], val); + } + } +@@ -277,22 +291,25 @@ static void ath9k_hw_nf_sanitize(struct + } + } + +-int16_t ath9k_hw_getnf(struct ath_hw *ah, +- struct ath9k_channel *chan) ++bool ath9k_hw_getnf(struct ath_hw *ah, struct ath9k_channel *chan) + { + struct ath_common *common = ath9k_hw_common(ah); + int16_t nf, nfThresh; + int16_t nfarray[NUM_NF_READINGS] = { 0 }; + struct ath9k_nfcal_hist *h; + struct ieee80211_channel *c = chan->chan; ++ struct ath9k_hw_cal_data *caldata = ah->caldata; ++ ++ if (!caldata) ++ return false; + + chan->channelFlags &= (~CHANNEL_CW_INT); + if (REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF) { + ath_print(common, ATH_DBG_CALIBRATE, + "NF did not complete in calibration window\n"); + nf = 0; +- chan->rawNoiseFloor = nf; +- return chan->rawNoiseFloor; ++ caldata->rawNoiseFloor = nf; ++ return false; + } else { + ath9k_hw_do_getnf(ah, nfarray); + ath9k_hw_nf_sanitize(ah, nfarray); +@@ -307,47 +324,40 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah + } + } + +- h = ah->nfCalHist; +- ++ h = caldata->nfCalHist; ++ caldata->nfcal_pending = false; + ath9k_hw_update_nfcal_hist_buffer(h, nfarray); +- chan->rawNoiseFloor = h[0].privNF; +- +- return chan->rawNoiseFloor; ++ caldata->rawNoiseFloor = h[0].privNF; ++ return true; + } + +-void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah) ++void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah, ++ struct ath9k_channel *chan) + { +- struct ath_nf_limits *limit; ++ struct ath9k_nfcal_hist *h; ++ s16 default_nf; + int i, j; + +- if (!ah->curchan || IS_CHAN_2GHZ(ah->curchan)) +- limit = &ah->nf_2g; +- else +- limit = &ah->nf_5g; ++ if (!ah->caldata) ++ return; + ++ h = ah->caldata->nfCalHist; ++ default_nf = ath9k_hw_get_default_nf(ah, chan); + for (i = 0; i < NUM_NF_READINGS; i++) { +- ah->nfCalHist[i].currIndex = 0; +- ah->nfCalHist[i].privNF = limit->nominal; +- ah->nfCalHist[i].invalidNFcount = +- AR_PHY_CCA_FILTERWINDOW_LENGTH; ++ h[i].currIndex = 0; ++ h[i].privNF = default_nf; ++ h[i].invalidNFcount = AR_PHY_CCA_FILTERWINDOW_LENGTH; + for (j = 0; j < ATH9K_NF_CAL_HIST_MAX; j++) { +- ah->nfCalHist[i].nfCalBuffer[j] = limit->nominal; ++ h[i].nfCalBuffer[j] = default_nf; + } + } + } + + s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan) + { +- s16 nf; +- +- if (chan->rawNoiseFloor == 0) +- nf = -96; +- else +- nf = chan->rawNoiseFloor; +- +- if (!ath9k_hw_nf_in_range(ah, nf)) +- nf = ATH_DEFAULT_NOISE_FLOOR; ++ if (!ah->caldata || !ah->caldata->rawNoiseFloor) ++ return ath9k_hw_get_default_nf(ah, chan); + +- return nf; ++ return ah->caldata->rawNoiseFloor; + } + EXPORT_SYMBOL(ath9k_hw_getchan_noise); +--- a/drivers/net/wireless/ath/ath9k/calib.h ++++ b/drivers/net/wireless/ath/ath9k/calib.h +@@ -108,11 +108,11 @@ struct ath9k_pacal_info{ + }; + + bool ath9k_hw_reset_calvalid(struct ath_hw *ah); +-void ath9k_hw_start_nfcal(struct ath_hw *ah); ++void ath9k_hw_start_nfcal(struct ath_hw *ah, bool update); + void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan); +-int16_t ath9k_hw_getnf(struct ath_hw *ah, +- struct ath9k_channel *chan); +-void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah); ++bool ath9k_hw_getnf(struct ath_hw *ah, struct ath9k_channel *chan); ++void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah, ++ struct ath9k_channel *chan); + s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan); + void ath9k_hw_reset_calibration(struct ath_hw *ah, + struct ath9k_cal_list *currCal); +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -622,7 +622,6 @@ static int __ath9k_hw_init(struct ath_hw + else + ah->tx_trig_level = (AR_FTRIG_512B >> AR_FTRIG_S); + +- ath9k_init_nfcal_hist_buffer(ah); + ah->bb_watchdog_timeout_ms = 25; + + common->state = ATH_HW_INITIALIZED; +@@ -1195,9 +1194,6 @@ static bool ath9k_hw_channel_change(stru + + ath9k_hw_spur_mitigate_freq(ah, chan); + +- if (!chan->oneTimeCalsDone) +- chan->oneTimeCalsDone = true; +- + return true; + } + +@@ -1230,7 +1226,7 @@ bool ath9k_hw_check_alive(struct ath_hw + EXPORT_SYMBOL(ath9k_hw_check_alive); + + int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, +- bool bChannelChange) ++ struct ath9k_hw_cal_data *caldata, bool bChannelChange) + { + struct ath_common *common = ath9k_hw_common(ah); + u32 saveLedState; +@@ -1255,9 +1251,19 @@ int ath9k_hw_reset(struct ath_hw *ah, st + if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) + return -EIO; + +- if (curchan && !ah->chip_fullsleep) ++ if (curchan && !ah->chip_fullsleep && ah->caldata) + ath9k_hw_getnf(ah, curchan); + ++ ah->caldata = caldata; ++ if (caldata && ++ (chan->channel != caldata->channel || ++ (chan->channelFlags & ~CHANNEL_CW_INT) != ++ (caldata->channelFlags & ~CHANNEL_CW_INT))) { ++ /* Operating channel changed, reset channel calibration data */ ++ memset(caldata, 0, sizeof(*caldata)); ++ ath9k_init_nfcal_hist_buffer(ah, chan); ++ } ++ + if (bChannelChange && + (ah->chip_fullsleep != true) && + (ah->curchan != NULL) && +@@ -1268,7 +1274,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st + + if (ath9k_hw_channel_change(ah, chan)) { + ath9k_hw_loadnf(ah, ah->curchan); +- ath9k_hw_start_nfcal(ah); ++ ath9k_hw_start_nfcal(ah, true); + return 0; + } + } +@@ -1473,11 +1479,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st + if (ah->btcoex_hw.enabled) + ath9k_hw_btcoex_enable(ah); + +- if (AR_SREV_9300_20_OR_LATER(ah)) { +- ath9k_hw_loadnf(ah, curchan); +- ath9k_hw_start_nfcal(ah); ++ if (AR_SREV_9300_20_OR_LATER(ah)) + ar9003_hw_bb_watchdog_config(ah); +- } + + return 0; + } +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -155,6 +155,27 @@ void ath9k_ps_restore(struct ath_softc * + spin_unlock_irqrestore(&sc->sc_pm_lock, flags); + } + ++static void ath_start_ani(struct ath_common *common) ++{ ++ struct ath_hw *ah = common->ah; ++ unsigned long timestamp = jiffies_to_msecs(jiffies); ++ struct ath_softc *sc = (struct ath_softc *) common->priv; ++ ++ if (!(sc->sc_flags & SC_OP_ANI_RUN)) ++ return; ++ ++ if (sc->sc_flags & SC_OP_OFFCHANNEL) ++ return; ++ ++ common->ani.longcal_timer = timestamp; ++ common->ani.shortcal_timer = timestamp; ++ common->ani.checkani_timer = timestamp; ++ ++ mod_timer(&common->ani.timer, ++ jiffies + ++ msecs_to_jiffies((u32)ah->config.ani_poll_interval)); ++} ++ + /* + * Set/change channels. If the channel is really being changed, it's done + * by reseting the chip. To accomplish this we must first cleanup any pending +@@ -163,16 +184,23 @@ void ath9k_ps_restore(struct ath_softc * + int ath_set_channel(struct ath_softc *sc, struct ieee80211_hw *hw, + struct ath9k_channel *hchan) + { ++ struct ath_wiphy *aphy = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ieee80211_conf *conf = &common->hw->conf; + bool fastcc = true, stopped; + struct ieee80211_channel *channel = hw->conf.channel; ++ struct ath9k_hw_cal_data *caldata = NULL; + int r; + + if (sc->sc_flags & SC_OP_INVALID) + return -EIO; + ++ del_timer_sync(&common->ani.timer); ++ cancel_work_sync(&sc->paprd_work); ++ cancel_work_sync(&sc->hw_check_work); ++ cancel_delayed_work_sync(&sc->tx_complete_work); ++ + ath9k_ps_wakeup(sc); + + /* +@@ -192,9 +220,12 @@ int ath_set_channel(struct ath_softc *sc + * to flush data frames already in queue because of + * changing channel. */ + +- if (!stopped || (sc->sc_flags & SC_OP_FULL_RESET)) ++ if (!stopped || !(sc->sc_flags & SC_OP_OFFCHANNEL)) + fastcc = false; + ++ if (!(sc->sc_flags & SC_OP_OFFCHANNEL)) ++ caldata = &aphy->caldata; ++ + ath_print(common, ATH_DBG_CONFIG, + "(%u MHz) -> (%u MHz), conf_is_ht40: %d\n", + sc->sc_ah->curchan->channel, +@@ -202,7 +233,7 @@ int ath_set_channel(struct ath_softc *sc + + spin_lock_bh(&sc->sc_resetlock); + +- r = ath9k_hw_reset(ah, hchan, fastcc); ++ r = ath9k_hw_reset(ah, hchan, caldata, fastcc); + if (r) { + ath_print(common, ATH_DBG_FATAL, + "Unable to reset channel (%u MHz), " +@@ -213,8 +244,6 @@ int ath_set_channel(struct ath_softc *sc + } + spin_unlock_bh(&sc->sc_resetlock); + +- sc->sc_flags &= ~SC_OP_FULL_RESET; +- + if (ath_startrecv(sc) != 0) { + ath_print(common, ATH_DBG_FATAL, + "Unable to restart recv logic\n"); +@@ -226,6 +255,12 @@ int ath_set_channel(struct ath_softc *sc + ath_update_txpow(sc); + ath9k_hw_set_interrupts(ah, ah->imask); + ++ if (!(sc->sc_flags & (SC_OP_OFFCHANNEL | SC_OP_SCANNING))) { ++ ath_start_ani(common); ++ ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0); ++ ath_beacon_config(sc, NULL); ++ } ++ + ps_restore: + ath9k_ps_restore(sc); + return r; +@@ -234,17 +269,19 @@ int ath_set_channel(struct ath_softc *sc + static void ath_paprd_activate(struct ath_softc *sc) + { + struct ath_hw *ah = sc->sc_ah; ++ struct ath9k_hw_cal_data *caldata = ah->caldata; + int chain; + +- if (!ah->curchan->paprd_done) ++ if (!caldata || !caldata->paprd_done) + return; + + ath9k_ps_wakeup(sc); ++ ar9003_paprd_enable(ah, false); + for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) { + if (!(ah->caps.tx_chainmask & BIT(chain))) + continue; + +- ar9003_paprd_populate_single_table(ah, ah->curchan, chain); ++ ar9003_paprd_populate_single_table(ah, caldata, chain); + } + + ar9003_paprd_enable(ah, true); +@@ -262,6 +299,7 @@ void ath_paprd_calibrate(struct work_str + int band = hw->conf.channel->band; + struct ieee80211_supported_band *sband = &sc->sbands[band]; + struct ath_tx_control txctl; ++ struct ath9k_hw_cal_data *caldata = ah->caldata; + int qnum, ftype; + int chain_ok = 0; + int chain; +@@ -269,6 +307,9 @@ void ath_paprd_calibrate(struct work_str + int time_left; + int i; + ++ if (!caldata) ++ return; ++ + skb = alloc_skb(len, GFP_KERNEL); + if (!skb) + return; +@@ -323,7 +364,7 @@ void ath_paprd_calibrate(struct work_str + if (!ar9003_paprd_is_done(ah)) + break; + +- if (ar9003_paprd_create_curve(ah, ah->curchan, chain) != 0) ++ if (ar9003_paprd_create_curve(ah, caldata, chain) != 0) + break; + + chain_ok = 1; +@@ -331,7 +372,7 @@ void ath_paprd_calibrate(struct work_str + kfree_skb(skb); + + if (chain_ok) { +- ah->curchan->paprd_done = true; ++ caldata->paprd_done = true; + ath_paprd_activate(sc); + } + +@@ -440,33 +481,14 @@ set_timer: + cal_interval = min(cal_interval, (u32)short_cal_interval); + + mod_timer(&common->ani.timer, jiffies + msecs_to_jiffies(cal_interval)); +- if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_PAPRD) && +- !(sc->sc_flags & SC_OP_SCANNING)) { +- if (!sc->sc_ah->curchan->paprd_done) ++ if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_PAPRD) && ah->caldata) { ++ if (!ah->caldata->paprd_done) + ieee80211_queue_work(sc->hw, &sc->paprd_work); + else + ath_paprd_activate(sc); + } + } + +-static void ath_start_ani(struct ath_common *common) +-{ +- struct ath_hw *ah = common->ah; +- unsigned long timestamp = jiffies_to_msecs(jiffies); +- struct ath_softc *sc = (struct ath_softc *) common->priv; +- +- if (!(sc->sc_flags & SC_OP_ANI_RUN)) +- return; +- +- common->ani.longcal_timer = timestamp; +- common->ani.shortcal_timer = timestamp; +- common->ani.checkani_timer = timestamp; +- +- mod_timer(&common->ani.timer, +- jiffies + +- msecs_to_jiffies((u32)ah->config.ani_poll_interval)); +-} +- + /* + * Update tx/rx chainmask. For legacy association, + * hard code chainmask to 1x1, for 11n association, use +@@ -478,7 +500,7 @@ void ath_update_chainmask(struct ath_sof + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + +- if ((sc->sc_flags & SC_OP_SCANNING) || is_ht || ++ if ((sc->sc_flags & SC_OP_OFFCHANNEL) || is_ht || + (ah->btcoex_hw.scheme != ATH_BTCOEX_CFG_NONE)) { + common->tx_chainmask = ah->caps.tx_chainmask; + common->rx_chainmask = ah->caps.rx_chainmask; +@@ -818,7 +840,7 @@ void ath_radio_enable(struct ath_softc * + ah->curchan = ath_get_curchannel(sc, sc->hw); + + spin_lock_bh(&sc->sc_resetlock); +- r = ath9k_hw_reset(ah, ah->curchan, false); ++ r = ath9k_hw_reset(ah, ah->curchan, ah->caldata, false); + if (r) { + ath_print(common, ATH_DBG_FATAL, + "Unable to reset channel (%u MHz), " +@@ -878,7 +900,7 @@ void ath_radio_disable(struct ath_softc + ah->curchan = ath_get_curchannel(sc, hw); + + spin_lock_bh(&sc->sc_resetlock); +- r = ath9k_hw_reset(ah, ah->curchan, false); ++ r = ath9k_hw_reset(ah, ah->curchan, ah->caldata, false); + if (r) { + ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_FATAL, + "Unable to reset channel (%u MHz), " +@@ -911,7 +933,7 @@ int ath_reset(struct ath_softc *sc, bool + ath_flushrecv(sc); + + spin_lock_bh(&sc->sc_resetlock); +- r = ath9k_hw_reset(ah, sc->sc_ah->curchan, false); ++ r = ath9k_hw_reset(ah, sc->sc_ah->curchan, ah->caldata, false); + if (r) + ath_print(common, ATH_DBG_FATAL, + "Unable to reset hardware; reset status %d\n", r); +@@ -1086,7 +1108,7 @@ static int ath9k_start(struct ieee80211_ + * and then setup of the interrupt mask. + */ + spin_lock_bh(&sc->sc_resetlock); +- r = ath9k_hw_reset(ah, init_channel, false); ++ r = ath9k_hw_reset(ah, init_channel, ah->caldata, false); + if (r) { + ath_print(common, ATH_DBG_FATAL, + "Unable to reset hardware; reset status %d " +@@ -1580,6 +1602,10 @@ static int ath9k_config(struct ieee80211 + + aphy->chan_idx = pos; + aphy->chan_is_ht = conf_is_ht(conf); ++ if (hw->conf.flags & IEEE80211_CONF_OFFCHANNEL) ++ sc->sc_flags |= SC_OP_OFFCHANNEL; ++ else ++ sc->sc_flags &= ~SC_OP_OFFCHANNEL; + + if (aphy->state == ATH_WIPHY_SCAN || + aphy->state == ATH_WIPHY_ACTIVE) +@@ -1991,7 +2017,6 @@ static void ath9k_sw_scan_start(struct i + { + struct ath_wiphy *aphy = hw->priv; + struct ath_softc *sc = aphy->sc; +- struct ath_common *common = ath9k_hw_common(sc->sc_ah); + + mutex_lock(&sc->mutex); + if (ath9k_wiphy_scanning(sc)) { +@@ -2009,10 +2034,6 @@ static void ath9k_sw_scan_start(struct i + aphy->state = ATH_WIPHY_SCAN; + ath9k_wiphy_pause_all_forced(sc, aphy); + sc->sc_flags |= SC_OP_SCANNING; +- del_timer_sync(&common->ani.timer); +- cancel_work_sync(&sc->paprd_work); +- cancel_work_sync(&sc->hw_check_work); +- cancel_delayed_work_sync(&sc->tx_complete_work); + mutex_unlock(&sc->mutex); + } + +@@ -2024,15 +2045,10 @@ static void ath9k_sw_scan_complete(struc + { + struct ath_wiphy *aphy = hw->priv; + struct ath_softc *sc = aphy->sc; +- struct ath_common *common = ath9k_hw_common(sc->sc_ah); + + mutex_lock(&sc->mutex); + aphy->state = ATH_WIPHY_ACTIVE; + sc->sc_flags &= ~SC_OP_SCANNING; +- sc->sc_flags |= SC_OP_FULL_RESET; +- ath_start_ani(common); +- ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0); +- ath_beacon_config(sc, NULL); + mutex_unlock(&sc->mutex); + } + +--- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c +@@ -577,10 +577,11 @@ static bool create_pa_curve(u32 *data_L, + } + + void ar9003_paprd_populate_single_table(struct ath_hw *ah, +- struct ath9k_channel *chan, int chain) ++ struct ath9k_hw_cal_data *caldata, ++ int chain) + { +- u32 *paprd_table_val = chan->pa_table[chain]; +- u32 small_signal_gain = chan->small_signal_gain[chain]; ++ u32 *paprd_table_val = caldata->pa_table[chain]; ++ u32 small_signal_gain = caldata->small_signal_gain[chain]; + u32 training_power; + u32 reg = 0; + int i; +@@ -654,17 +655,17 @@ int ar9003_paprd_setup_gain_table(struct + } + EXPORT_SYMBOL(ar9003_paprd_setup_gain_table); + +-int ar9003_paprd_create_curve(struct ath_hw *ah, struct ath9k_channel *chan, +- int chain) ++int ar9003_paprd_create_curve(struct ath_hw *ah, ++ struct ath9k_hw_cal_data *caldata, int chain) + { +- u16 *small_signal_gain = &chan->small_signal_gain[chain]; +- u32 *pa_table = chan->pa_table[chain]; ++ u16 *small_signal_gain = &caldata->small_signal_gain[chain]; ++ u32 *pa_table = caldata->pa_table[chain]; + u32 *data_L, *data_U; + int i, status = 0; + u32 *buf; + u32 reg; + +- memset(chan->pa_table[chain], 0, sizeof(chan->pa_table[chain])); ++ memset(caldata->pa_table[chain], 0, sizeof(caldata->pa_table[chain])); + + buf = kmalloc(2 * 48 * sizeof(u32), GFP_ATOMIC); + if (!buf) +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -511,7 +511,7 @@ void ath_deinit_leds(struct ath_softc *s + #define SC_OP_BEACONS BIT(1) + #define SC_OP_RXAGGR BIT(2) + #define SC_OP_TXAGGR BIT(3) +-#define SC_OP_FULL_RESET BIT(4) ++#define SC_OP_OFFCHANNEL BIT(4) + #define SC_OP_PREAMBLE_SHORT BIT(5) + #define SC_OP_PROTECT_ENABLE BIT(6) + #define SC_OP_RXFLUSH BIT(7) +@@ -612,6 +612,7 @@ struct ath_softc { + struct ath_wiphy { + struct ath_softc *sc; /* shared for all virtual wiphys */ + struct ieee80211_hw *hw; ++ struct ath9k_hw_cal_data caldata; + enum ath_wiphy_state { + ATH_WIPHY_INACTIVE, + ATH_WIPHY_ACTIVE, +--- a/drivers/net/wireless/ath/ath9k/htc.h ++++ b/drivers/net/wireless/ath/ath9k/htc.h +@@ -353,6 +353,8 @@ struct ath9k_htc_priv { + u16 seq_no; + u32 bmiss_cnt; + ++ struct ath9k_hw_cal_data caldata[38]; ++ + spinlock_t beacon_lock; + + bool tx_queues_stop; +--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c +@@ -125,6 +125,7 @@ static int ath9k_htc_set_channel(struct + struct ieee80211_conf *conf = &common->hw->conf; + bool fastcc = true; + struct ieee80211_channel *channel = hw->conf.channel; ++ struct ath9k_hw_cal_data *caldata; + enum htc_phymode mode; + __be16 htc_mode; + u8 cmd_rsp; +@@ -149,7 +150,8 @@ static int ath9k_htc_set_channel(struct + priv->ah->curchan->channel, + channel->center_freq, conf_is_ht(conf), conf_is_ht40(conf)); + +- ret = ath9k_hw_reset(ah, hchan, fastcc); ++ caldata = &priv->caldata[channel->hw_value]; ++ ret = ath9k_hw_reset(ah, hchan, caldata, fastcc); + if (ret) { + ath_print(common, ATH_DBG_FATAL, + "Unable to reset channel (%u Mhz) " +@@ -1028,7 +1030,7 @@ static void ath9k_htc_radio_enable(struc + ah->curchan = ath9k_cmn_get_curchannel(hw, ah); + + /* Reset the HW */ +- ret = ath9k_hw_reset(ah, ah->curchan, false); ++ ret = ath9k_hw_reset(ah, ah->curchan, ah->caldata, false); + if (ret) { + ath_print(common, ATH_DBG_FATAL, + "Unable to reset hardware; reset status %d " +@@ -1091,7 +1093,7 @@ static void ath9k_htc_radio_disable(stru + ah->curchan = ath9k_cmn_get_curchannel(hw, ah); + + /* Reset the HW */ +- ret = ath9k_hw_reset(ah, ah->curchan, false); ++ ret = ath9k_hw_reset(ah, ah->curchan, ah->caldata, false); + if (ret) { + ath_print(common, ATH_DBG_FATAL, + "Unable to reset hardware; reset status %d " +@@ -1179,7 +1181,7 @@ static int ath9k_htc_start(struct ieee80 + ath9k_hw_configpcipowersave(ah, 0, 0); + + ath9k_hw_htc_resetinit(ah); +- ret = ath9k_hw_reset(ah, init_channel, false); ++ ret = ath9k_hw_reset(ah, init_channel, ah->caldata, false); + if (ret) { + ath_print(common, ATH_DBG_FATAL, + "Unable to reset hardware; reset status %d " +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -346,19 +346,25 @@ enum ath9k_int { + CHANNEL_HT40PLUS | \ + CHANNEL_HT40MINUS) + +-struct ath9k_channel { +- struct ieee80211_channel *chan; ++struct ath9k_hw_cal_data { + u16 channel; + u32 channelFlags; +- u32 chanmode; + int32_t CalValid; +- bool oneTimeCalsDone; + int8_t iCoff; + int8_t qCoff; + int16_t rawNoiseFloor; + bool paprd_done; ++ bool nfcal_pending; + u16 small_signal_gain[AR9300_MAX_CHAINS]; + u32 pa_table[AR9300_MAX_CHAINS][PAPRD_TABLE_SZ]; ++ struct ath9k_nfcal_hist nfCalHist[NUM_NF_READINGS]; ++}; ++ ++struct ath9k_channel { ++ struct ieee80211_channel *chan; ++ u16 channel; ++ u32 channelFlags; ++ u32 chanmode; + }; + + #define IS_CHAN_G(_c) ((((_c)->channelFlags & (CHANNEL_G)) == CHANNEL_G) || \ +@@ -669,7 +675,7 @@ struct ath_hw { + enum nl80211_iftype opmode; + enum ath9k_power_mode power_mode; + +- struct ath9k_nfcal_hist nfCalHist[NUM_NF_READINGS]; ++ struct ath9k_hw_cal_data *caldata; + struct ath9k_pacal_info pacal_info; + struct ar5416Stats stats; + struct ath9k_tx_queue_info txq[ATH9K_NUM_TX_QUEUES]; +@@ -863,7 +869,7 @@ const char *ath9k_hw_probe(u16 vendorid, + void ath9k_hw_deinit(struct ath_hw *ah); + int ath9k_hw_init(struct ath_hw *ah); + int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, +- bool bChannelChange); ++ struct ath9k_hw_cal_data *caldata, bool bChannelChange); + int ath9k_hw_fill_cap_info(struct ath_hw *ah); + u32 ath9k_regd_get_ctl(struct ath_regulatory *reg, struct ath9k_channel *chan); + +@@ -958,9 +964,10 @@ void ar9003_hw_bb_watchdog_read(struct a + void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah); + void ar9003_paprd_enable(struct ath_hw *ah, bool val); + void ar9003_paprd_populate_single_table(struct ath_hw *ah, +- struct ath9k_channel *chan, int chain); +-int ar9003_paprd_create_curve(struct ath_hw *ah, struct ath9k_channel *chan, +- int chain); ++ struct ath9k_hw_cal_data *caldata, ++ int chain); ++int ar9003_paprd_create_curve(struct ath_hw *ah, ++ struct ath9k_hw_cal_data *caldata, int chain); + int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain); + int ar9003_paprd_init_table(struct ath_hw *ah); + bool ar9003_paprd_is_done(struct ath_hw *ah); +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -1181,7 +1181,7 @@ void ath_drain_all_txq(struct ath_softc + "Failed to stop TX DMA. Resetting hardware!\n"); + + spin_lock_bh(&sc->sc_resetlock); +- r = ath9k_hw_reset(ah, sc->sc_ah->curchan, false); ++ r = ath9k_hw_reset(ah, sc->sc_ah->curchan, ah->caldata, false); + if (r) + ath_print(common, ATH_DBG_FATAL, + "Unable to reset hardware; reset status %d\n", diff --git a/package/mac80211/patches/530-ath9k_aggr_state_fix.patch b/package/mac80211/patches/530-ath9k_aggr_state_fix.patch new file mode 100644 index 000000000..d3a784948 --- /dev/null +++ b/package/mac80211/patches/530-ath9k_aggr_state_fix.patch @@ -0,0 +1,72 @@ +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -120,26 +120,14 @@ static void ath_tx_queue_tid(struct ath_ + list_add_tail(&ac->list, &txq->axq_acq); + } + +-static void ath_tx_pause_tid(struct ath_softc *sc, struct ath_atx_tid *tid) +-{ +- struct ath_txq *txq = &sc->tx.txq[tid->ac->qnum]; +- +- spin_lock_bh(&txq->axq_lock); +- tid->paused++; +- spin_unlock_bh(&txq->axq_lock); +-} +- + static void ath_tx_resume_tid(struct ath_softc *sc, struct ath_atx_tid *tid) + { + struct ath_txq *txq = &sc->tx.txq[tid->ac->qnum]; + +- BUG_ON(tid->paused <= 0); +- spin_lock_bh(&txq->axq_lock); +- +- tid->paused--; ++ WARN_ON(!tid->paused); + +- if (tid->paused > 0) +- goto unlock; ++ spin_lock_bh(&txq->axq_lock); ++ tid->paused = false; + + if (list_empty(&tid->buf_q)) + goto unlock; +@@ -157,15 +145,10 @@ static void ath_tx_flush_tid(struct ath_ + struct list_head bf_head; + INIT_LIST_HEAD(&bf_head); + +- BUG_ON(tid->paused <= 0); +- spin_lock_bh(&txq->axq_lock); ++ WARN_ON(!tid->paused); + +- tid->paused--; +- +- if (tid->paused > 0) { +- spin_unlock_bh(&txq->axq_lock); +- return; +- } ++ spin_lock_bh(&txq->axq_lock); ++ tid->paused = false; + + while (!list_empty(&tid->buf_q)) { + bf = list_first_entry(&tid->buf_q, struct ath_buf, list); +@@ -811,7 +794,7 @@ void ath_tx_aggr_start(struct ath_softc + an = (struct ath_node *)sta->drv_priv; + txtid = ATH_AN_2_TID(an, tid); + txtid->state |= AGGR_ADDBA_PROGRESS; +- ath_tx_pause_tid(sc, txtid); ++ txtid->paused = true; + *ssn = txtid->seq_start; + } + +@@ -835,10 +818,9 @@ void ath_tx_aggr_stop(struct ath_softc * + return; + } + +- ath_tx_pause_tid(sc, txtid); +- + /* drop all software retried frames and mark this TID */ + spin_lock_bh(&txq->axq_lock); ++ txtid->paused = true; + while (!list_empty(&txtid->buf_q)) { + bf = list_first_entry(&txtid->buf_q, struct ath_buf, list); + if (!bf_isretried(bf)) { diff --git a/package/mac80211/patches/530-ath9k_nf_fix.patch b/package/mac80211/patches/530-ath9k_nf_fix.patch deleted file mode 100644 index 081c2ab74..000000000 --- a/package/mac80211/patches/530-ath9k_nf_fix.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c -@@ -1508,6 +1508,9 @@ static void ar5008_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); - nfarray[2] = sign_extend(nf, 9); - -+ if (!IS_CHAN_HT40(ah->curchan)) -+ return; -+ - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); - nfarray[3] = sign_extend(nf, 9); - ---- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c -@@ -477,7 +477,8 @@ static void ar9002_hw_do_getnf(struct at - nfarray[0] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR); -- nfarray[3] = sign_extend(nf, 9); -+ if (IS_CHAN_HT40(ah->curchan)) -+ nfarray[3] = sign_extend(nf, 9); - - if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) - return; -@@ -486,7 +487,8 @@ static void ar9002_hw_do_getnf(struct at - nfarray[1] = sign_extend(nf, 9); - - nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR); -- nfarray[4] = sign_extend(nf, 9); -+ if (IS_CHAN_HT40(ah->curchan)) -+ nfarray[4] = sign_extend(nf, 9); - } - - static void ar9002_hw_set_nf_limits(struct ath_hw *ah) ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -1029,6 +1029,9 @@ static void ar9003_hw_do_getnf(struct at - nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); - nfarray[2] = sign_extend(nf, 9); - -+ if (!IS_CHAN_HT40(ah->curchan)) -+ return; -+ - nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); - nfarray[3] = sign_extend(nf, 9); - diff --git a/package/mac80211/patches/531-ath9k_nf_cleanup.patch b/package/mac80211/patches/531-ath9k_nf_cleanup.patch deleted file mode 100644 index f038559a4..000000000 --- a/package/mac80211/patches/531-ath9k_nf_cleanup.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/calib.c -+++ b/drivers/net/wireless/ath/ath9k/calib.c -@@ -172,26 +172,9 @@ void ath9k_hw_loadnf(struct ath_hw *ah, - struct ath9k_nfcal_hist *h; - unsigned i, j; - int32_t val; -- u8 chainmask; -+ u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; - struct ath_common *common = ath9k_hw_common(ah); - -- if (AR_SREV_9300_20_OR_LATER(ah)) -- chainmask = 0x3F; -- else if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) -- chainmask = 0x9; -- else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) { -- if ((ah->rxchainmask & 0x2) || (ah->rxchainmask & 0x4)) -- chainmask = 0x1B; -- else -- chainmask = 0x09; -- } else { -- if (ah->rxchainmask & 0x4) -- chainmask = 0x3F; -- else if (ah->rxchainmask & 0x2) -- chainmask = 0x1B; -- else -- chainmask = 0x09; -- } - h = ah->nfCalHist; - - for (i = 0; i < NUM_NF_READINGS; i++) { diff --git a/package/mac80211/patches/540-ath9k_bstuck_debug.patch b/package/mac80211/patches/540-ath9k_bstuck_debug.patch new file mode 100644 index 000000000..b2d44c5bb --- /dev/null +++ b/package/mac80211/patches/540-ath9k_bstuck_debug.patch @@ -0,0 +1,43 @@ +--- a/drivers/net/wireless/ath/debug.h ++++ b/drivers/net/wireless/ath/debug.h +@@ -36,6 +36,7 @@ + * @ATH_DBG_PS: power save processing + * @ATH_DBG_HWTIMER: hardware timer handling + * @ATH_DBG_BTCOEX: bluetooth coexistance ++ * @ATH_DBG_BSTUCK: stuck beacons + * @ATH_DBG_ANY: enable all debugging + * + * The debug level is used to control the amount and type of debugging output +@@ -60,6 +61,7 @@ enum ATH_DEBUG { + ATH_DBG_HWTIMER = 0x00001000, + ATH_DBG_BTCOEX = 0x00002000, + ATH_DBG_WMI = 0x00004000, ++ ATH_DBG_BSTUCK = 0x00008000, + ATH_DBG_ANY = 0xffffffff + }; + +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -359,11 +359,11 @@ void ath_beacon_tasklet(unsigned long da + sc->beacon.bmisscnt++; + + if (sc->beacon.bmisscnt < BSTUCK_THRESH) { +- ath_print(common, ATH_DBG_BEACON, ++ ath_print(common, ATH_DBG_BSTUCK, + "missed %u consecutive beacons\n", + sc->beacon.bmisscnt); + } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) { +- ath_print(common, ATH_DBG_BEACON, ++ ath_print(common, ATH_DBG_BSTUCK, + "beacon is officially stuck\n"); + sc->sc_flags |= SC_OP_TSF_RESET; + ath_reset(sc, false); +@@ -373,7 +373,7 @@ void ath_beacon_tasklet(unsigned long da + } + + if (sc->beacon.bmisscnt != 0) { +- ath_print(common, ATH_DBG_BEACON, ++ ath_print(common, ATH_DBG_BSTUCK, + "resume beacon xmit after %u misses\n", + sc->beacon.bmisscnt); + sc->beacon.bmisscnt = 0; diff --git a/package/mac80211/patches/541-ath9k_nf_validate.patch b/package/mac80211/patches/541-ath9k_nf_validate.patch new file mode 100644 index 000000000..7e3cb350f --- /dev/null +++ b/package/mac80211/patches/541-ath9k_nf_validate.patch @@ -0,0 +1,101 @@ +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -19,8 +19,7 @@ + + /* Common calibration code */ + +-/* We can tune this as we go by monitoring really low values */ +-#define ATH9K_NF_TOO_LOW -60 ++#define ATH9K_NF_TOO_HIGH -60 + + static int16_t ath9k_hw_get_nf_hist_mid(int16_t *nfCalBuffer) + { +@@ -45,11 +44,35 @@ static int16_t ath9k_hw_get_nf_hist_mid( + return nfval; + } + +-static void ath9k_hw_update_nfcal_hist_buffer(struct ath9k_nfcal_hist *h, ++static struct ath_nf_limits *ath9k_hw_get_nf_limits(struct ath_hw *ah, ++ struct ath9k_channel *chan) ++{ ++ struct ath_nf_limits *limit; ++ ++ if (!chan || IS_CHAN_2GHZ(chan)) ++ limit = &ah->nf_2g; ++ else ++ limit = &ah->nf_5g; ++ ++ return limit; ++} ++ ++static s16 ath9k_hw_get_default_nf(struct ath_hw *ah, ++ struct ath9k_channel *chan) ++{ ++ return ath9k_hw_get_nf_limits(ah, chan)->nominal; ++} ++ ++ ++static void ath9k_hw_update_nfcal_hist_buffer(struct ath_hw *ah, ++ struct ath9k_nfcal_hist *h, + int16_t *nfarray) + { ++ struct ath_nf_limits *limit; + int i; + ++ limit = ath9k_hw_get_nf_limits(ah, ah->curchan); ++ + for (i = 0; i < NUM_NF_READINGS; i++) { + h[i].nfCalBuffer[h[i].currIndex] = nfarray[i]; + +@@ -63,6 +86,9 @@ static void ath9k_hw_update_nfcal_hist_b + h[i].privNF = + ath9k_hw_get_nf_hist_mid(h[i].nfCalBuffer); + } ++ ++ if (h[i].privNF > limit->max) ++ h[i].privNF = limit->max; + } + } + +@@ -104,19 +130,6 @@ void ath9k_hw_reset_calibration(struct a + ah->cal_samples = 0; + } + +-static s16 ath9k_hw_get_default_nf(struct ath_hw *ah, +- struct ath9k_channel *chan) +-{ +- struct ath_nf_limits *limit; +- +- if (!chan || IS_CHAN_2GHZ(chan)) +- limit = &ah->nf_2g; +- else +- limit = &ah->nf_5g; +- +- return limit->nominal; +-} +- + /* This is done for the currently configured channel */ + bool ath9k_hw_reset_calvalid(struct ath_hw *ah) + { +@@ -277,10 +290,10 @@ static void ath9k_hw_nf_sanitize(struct + "NF calibrated [%s] [chain %d] is %d\n", + (i >= 3 ? "ext" : "ctl"), i % 3, nf[i]); + +- if (nf[i] > limit->max) { ++ if (nf[i] > ATH9K_NF_TOO_HIGH) { + ath_print(common, ATH_DBG_CALIBRATE, + "NF[%d] (%d) > MAX (%d), correcting to MAX", +- i, nf[i], limit->max); ++ i, nf[i], ATH9K_NF_TOO_HIGH); + nf[i] = limit->max; + } else if (nf[i] < limit->min) { + ath_print(common, ATH_DBG_CALIBRATE, +@@ -326,7 +339,7 @@ bool ath9k_hw_getnf(struct ath_hw *ah, s + + h = caldata->nfCalHist; + caldata->nfcal_pending = false; +- ath9k_hw_update_nfcal_hist_buffer(h, nfarray); ++ ath9k_hw_update_nfcal_hist_buffer(ah, h, nfarray); + caldata->rawNoiseFloor = h[0].privNF; + return true; + } diff --git a/package/mac80211/patches/542-ath9k_bstuck_nf_calibrate.patch b/package/mac80211/patches/542-ath9k_bstuck_nf_calibrate.patch new file mode 100644 index 000000000..4ac4ab210 --- /dev/null +++ b/package/mac80211/patches/542-ath9k_bstuck_nf_calibrate.patch @@ -0,0 +1,129 @@ +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -362,6 +362,7 @@ void ath_beacon_tasklet(unsigned long da + ath_print(common, ATH_DBG_BSTUCK, + "missed %u consecutive beacons\n", + sc->beacon.bmisscnt); ++ ath9k_hw_bstuck_nfcal(ah); + } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) { + ath_print(common, ATH_DBG_BSTUCK, + "beacon is officially stuck\n"); +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -65,12 +65,16 @@ static s16 ath9k_hw_get_default_nf(struc + + + static void ath9k_hw_update_nfcal_hist_buffer(struct ath_hw *ah, +- struct ath9k_nfcal_hist *h, ++ struct ath9k_hw_cal_data *cal, + int16_t *nfarray) + { ++ struct ath_common *common = ath9k_hw_common(ah); + struct ath_nf_limits *limit; ++ struct ath9k_nfcal_hist *h; ++ bool high_nf_mid = false; + int i; + ++ h = cal->nfCalHist; + limit = ath9k_hw_get_nf_limits(ah, ah->curchan); + + for (i = 0; i < NUM_NF_READINGS; i++) { +@@ -87,9 +91,38 @@ static void ath9k_hw_update_nfcal_hist_b + ath9k_hw_get_nf_hist_mid(h[i].nfCalBuffer); + } + +- if (h[i].privNF > limit->max) +- h[i].privNF = limit->max; ++ if (!h[i].privNF) ++ continue; ++ ++ if (h[i].privNF > limit->max) { ++ high_nf_mid = true; ++ ++ ath_print(common, ATH_DBG_CALIBRATE, ++ "NFmid[%d] (%d) > MAX (%d), %s\n", ++ i, h[i].privNF, limit->max, ++ (cal->nfcal_interference ? ++ "not corrected (due to interference)" : ++ "correcting to MAX")); ++ ++ /* ++ * Normally we limit the average noise floor by the ++ * hardware specific maximum here. However if we have ++ * encountered stuck beacons because of interference, ++ * we bypass this limit here in order to better deal ++ * with our environment. ++ */ ++ if (!cal->nfcal_interference) ++ h[i].privNF = limit->max; ++ } + } ++ ++ /* ++ * If the noise floor seems normal for all chains, assume that ++ * there is no significant interference in the environment anymore. ++ * Re-enable the enforcement of the NF maximum again. ++ */ ++ if (!high_nf_mid) ++ cal->nfcal_interference = false; + } + + static bool ath9k_hw_get_nf_thresh(struct ath_hw *ah, +@@ -339,7 +372,7 @@ bool ath9k_hw_getnf(struct ath_hw *ah, s + + h = caldata->nfCalHist; + caldata->nfcal_pending = false; +- ath9k_hw_update_nfcal_hist_buffer(ah, h, nfarray); ++ ath9k_hw_update_nfcal_hist_buffer(ah, caldata, nfarray); + caldata->rawNoiseFloor = h[0].privNF; + return true; + } +@@ -374,3 +407,28 @@ s16 ath9k_hw_getchan_noise(struct ath_hw + return ah->caldata->rawNoiseFloor; + } + EXPORT_SYMBOL(ath9k_hw_getchan_noise); ++ ++void ath9k_hw_bstuck_nfcal(struct ath_hw *ah) ++{ ++ struct ath9k_hw_cal_data *caldata = ah->caldata; ++ ++ if (unlikely(!caldata)) ++ return; ++ ++ /* ++ * If beacons are stuck, the most likely cause is interference. ++ * Triggering a noise floor calibration at this point helps the ++ * hardware adapt to a noisy environment much faster. ++ * To ensure that we recover from stuck beacons quickly, let ++ * the baseband update the internal NF value itself, similar to ++ * what is being done after a full reset. ++ */ ++ if (!caldata->nfcal_pending) ++ ath9k_hw_start_nfcal(ah, true); ++ else if (!(REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF)) ++ ath9k_hw_getnf(ah, ah->curchan); ++ ++ caldata->nfcal_interference = true; ++} ++EXPORT_SYMBOL(ath9k_hw_bstuck_nfcal); ++ +--- a/drivers/net/wireless/ath/ath9k/calib.h ++++ b/drivers/net/wireless/ath/ath9k/calib.h +@@ -113,6 +113,7 @@ void ath9k_hw_loadnf(struct ath_hw *ah, + bool ath9k_hw_getnf(struct ath_hw *ah, struct ath9k_channel *chan); + void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah, + struct ath9k_channel *chan); ++void ath9k_hw_bstuck_nfcal(struct ath_hw *ah); + s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan); + void ath9k_hw_reset_calibration(struct ath_hw *ah, + struct ath9k_cal_list *currCal); +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -355,6 +355,7 @@ struct ath9k_hw_cal_data { + int16_t rawNoiseFloor; + bool paprd_done; + bool nfcal_pending; ++ bool nfcal_interference; + u16 small_signal_gain[AR9300_MAX_CHAINS]; + u32 pa_table[AR9300_MAX_CHAINS][PAPRD_TABLE_SZ]; + struct ath9k_nfcal_hist nfCalHist[NUM_NF_READINGS]; diff --git a/package/mac80211/patches/543-ath9k_interference_nf_cal.patch b/package/mac80211/patches/543-ath9k_interference_nf_cal.patch new file mode 100644 index 000000000..74bee3e14 --- /dev/null +++ b/package/mac80211/patches/543-ath9k_interference_nf_cal.patch @@ -0,0 +1,35 @@ +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -423,6 +423,7 @@ int ath_beaconq_config(struct ath_softc + #define ATH_AP_SHORT_CALINTERVAL 100 /* 100 ms */ + #define ATH_ANI_POLLINTERVAL_OLD 100 /* 100 ms */ + #define ATH_ANI_POLLINTERVAL_NEW 1000 /* 1000 ms */ ++#define ATH_LONG_CALINTERVAL_INT 1000 /* 1000 ms */ + #define ATH_LONG_CALINTERVAL 30000 /* 30 seconds */ + #define ATH_RESTART_CALINTERVAL 1200000 /* 20 minutes */ + +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -396,7 +396,12 @@ void ath_ani_calibrate(unsigned long dat + bool shortcal = false; + bool aniflag = false; + unsigned int timestamp = jiffies_to_msecs(jiffies); +- u32 cal_interval, short_cal_interval; ++ u32 cal_interval, short_cal_interval, long_cal_interval; ++ ++ if (ah->caldata && ah->caldata->nfcal_interference) ++ long_cal_interval = ATH_LONG_CALINTERVAL_INT; ++ else ++ long_cal_interval = ATH_LONG_CALINTERVAL; + + short_cal_interval = (ah->opmode == NL80211_IFTYPE_AP) ? + ATH_AP_SHORT_CALINTERVAL : ATH_STA_SHORT_CALINTERVAL; +@@ -408,7 +413,7 @@ void ath_ani_calibrate(unsigned long dat + ath9k_ps_wakeup(sc); + + /* Long calibration runs independently of short calibration. */ +- if ((timestamp - common->ani.longcal_timer) >= ATH_LONG_CALINTERVAL) { ++ if ((timestamp - common->ani.longcal_timer) >= long_cal_interval) { + longcal = true; + ath_print(common, ATH_DBG_ANI, "longcal @%lu\n", jiffies); + common->ani.longcal_timer = timestamp; diff --git a/package/mac80211/patches/550-ath9k_tsf_fix.patch b/package/mac80211/patches/550-ath9k_tsf_fix.patch new file mode 100644 index 000000000..8a99ed7a2 --- /dev/null +++ b/package/mac80211/patches/550-ath9k_tsf_fix.patch @@ -0,0 +1,44 @@ +ath9k_rx_skb_preprocess nulls rxs and the mactime is never set again - +mactime is always 0. This causes problems in IBSS mode. + +ieee80211_rx_bss_info uses mactime to decide if an IBSS merge is needed. +Without this patch the merge is triggered by each beacon received. + +This can be recognized by the "beacon TSF higher than local TSF - IBSS +merge with BSSID" log message accompanying each beacon. + +This problem was not completely fixed in commit +a6d2055b02dde1067075795274672720baadd3ca and is not a stable kernel fix. +It is solely intended for wireless-testing. + +Signed-off-by: Jan Friedrich +--- + drivers/net/wireless/ath/ath9k/recv.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/net/wireless/ath/ath9k/recv.c ++++ b/drivers/net/wireless/ath/ath9k/recv.c +@@ -1140,6 +1140,11 @@ int ath_rx_tasklet(struct ath_softc *sc, + if (flush) + goto requeue; + ++ retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs, ++ rxs, &decrypt_error); ++ if (retval) ++ goto requeue; ++ + rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; + if (rs.rs_tstamp > tsf_lower && + unlikely(rs.rs_tstamp - tsf_lower > 0x10000000)) +@@ -1149,11 +1154,6 @@ int ath_rx_tasklet(struct ath_softc *sc, + unlikely(tsf_lower - rs.rs_tstamp > 0x10000000)) + rxs->mactime += 0x100000000ULL; + +- retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs, +- rxs, &decrypt_error); +- if (retval) +- goto requeue; +- + /* Ensure we always have an skb to requeue once we are done + * processing the current buffer's skb */ + requeue_skb = ath_rxbuf_alloc(common, common->rx_bufsize, GFP_ATOMIC); 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 cf8a4d510..b90539e5e 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 -@@ -3882,6 +3882,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw"); +@@ -3884,6 +3884,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw"); MODULE_FIRMWARE("mwl8k/fmimage_8366.fw"); static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { diff --git a/package/mac80211/patches/800-mac80211_aggr_fix.patch b/package/mac80211/patches/800-mac80211_aggr_fix.patch deleted file mode 100644 index 564bfac06..000000000 --- a/package/mac80211/patches/800-mac80211_aggr_fix.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/net/mac80211/iface.c -+++ b/net/mac80211/iface.c -@@ -756,7 +756,7 @@ static void ieee80211_iface_work(struct - int len = skb->len; - - mutex_lock(&local->sta_mtx); -- sta = sta_info_get(sdata, mgmt->sa); -+ sta = sta_info_get_bss(sdata, mgmt->sa); - if (sta) { - switch (mgmt->u.action.u.addba_req.action_code) { - case WLAN_ACTION_ADDBA_REQ: -@@ -797,7 +797,7 @@ static void ieee80211_iface_work(struct - * right, so terminate the session. - */ - mutex_lock(&local->sta_mtx); -- sta = sta_info_get(sdata, mgmt->sa); -+ sta = sta_info_get_bss(sdata, mgmt->sa); - if (sta) { - u16 tid = *ieee80211_get_qos_ctl(hdr) & - IEEE80211_QOS_CTL_TID_MASK; From 7cd9bd5b3d40deaed1270d2764a95445da8a51c8 Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 4 Aug 2010 21:48:08 +0000 Subject: [PATCH 84/90] [backfire] merge r22495 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22496 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/ppp/Makefile | 2 +- package/ppp/patches/320-custom_iface_names.patch | 4 +--- .../patches/330-retain_foreign_default_routes.patch | 10 ++++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 package/ppp/patches/330-retain_foreign_default_routes.patch diff --git a/package/ppp/Makefile b/package/ppp/Makefile index e0724fffa..168895544 100644 --- a/package/ppp/Makefile +++ b/package/ppp/Makefile @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ppp PKG_VERSION:=2.4.4 -PKG_RELEASE:=8 +PKG_RELEASE:=9 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/ppp/ diff --git a/package/ppp/patches/320-custom_iface_names.patch b/package/ppp/patches/320-custom_iface_names.patch index 16d90c4d7..ff9ef86dd 100644 --- a/package/ppp/patches/320-custom_iface_names.patch +++ b/package/ppp/patches/320-custom_iface_names.patch @@ -78,7 +78,7 @@ if (ppp_dev_fd >= 0) { dbglog("in make_ppp_unit, already had /dev/ppp open?"); -@@ -645,6 +650,32 @@ static int make_ppp_unit() +@@ -645,6 +650,30 @@ static int make_ppp_unit() } if (x < 0) error("Couldn't create new ppp unit: %m"); @@ -103,8 +103,6 @@ + error("Couldn't rename %s to %s", ifr.ifr_name, ifr.ifr_newname); + close(ppp_dev_fd); + ppp_dev_fd = -1; -+ } else { -+ info("Renamed %s to %s", ifr.ifr_name, ifr.ifr_newname); + } + } + diff --git a/package/ppp/patches/330-retain_foreign_default_routes.patch b/package/ppp/patches/330-retain_foreign_default_routes.patch new file mode 100644 index 000000000..d60ccae50 --- /dev/null +++ b/package/ppp/patches/330-retain_foreign_default_routes.patch @@ -0,0 +1,10 @@ +--- a/pppd/sys-linux.c ++++ b/pppd/sys-linux.c +@@ -1717,6 +1717,7 @@ int cifdefaultroute (int unit, u_int32_t + SIN_ADDR(rt.rt_genmask) = 0L; + } + ++ rt.rt_dev = ifname; + rt.rt_flags = RTF_UP; + if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) { + if (still_ppp()) { From c2d19b3eb95a007968908208002893a7ccd8615a Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 4 Aug 2010 21:51:25 +0000 Subject: [PATCH 85/90] [backfire] merge r22497 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22498 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/ppp/patches/330-retain_foreign_default_routes.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/ppp/patches/330-retain_foreign_default_routes.patch b/package/ppp/patches/330-retain_foreign_default_routes.patch index d60ccae50..3a98b6b98 100644 --- a/package/ppp/patches/330-retain_foreign_default_routes.patch +++ b/package/ppp/patches/330-retain_foreign_default_routes.patch @@ -4,7 +4,7 @@ SIN_ADDR(rt.rt_genmask) = 0L; } -+ rt.rt_dev = ifname; ++ rt.rt_dev = ifname; rt.rt_flags = RTF_UP; if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) { if (still_ppp()) { From 3ec88d68327a4d515492405becef7899e33b654f Mon Sep 17 00:00:00 2001 From: nbd Date: Sun, 8 Aug 2010 20:15:48 +0000 Subject: [PATCH 86/90] merge rtl8366 switch fix from r22545 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22546 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/net/phy/rtl8366rb.c | 50 +++++++++++++++++-- .../files/drivers/net/phy/rtl8366s.c | 50 +++++++++++++++++-- 2 files changed, 92 insertions(+), 8 deletions(-) diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c index 420a5523c..ed4834c69 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c @@ -284,11 +284,11 @@ static int rtl8366rb_hw_init(struct rtl8366_smi *smi) /* enable all ports */ REG_WR(smi, RTL8366RB_PECR, 0); - /* disable learning for all ports */ - REG_WR(smi, RTL8366RB_SSCR0, RTL8366RB_PORT_ALL); + /* enable learning for all ports */ + REG_WR(smi, RTL8366RB_SSCR0, 0); - /* disable auto ageing for all ports */ - REG_WR(smi, RTL8366RB_SSCR1, RTL8366RB_PORT_ALL); + /* enable auto ageing for all ports */ + REG_WR(smi, RTL8366RB_SSCR1, 0); /* * discard VLAN tagged packets if the port is not a member of @@ -752,6 +752,41 @@ static int rtl8366rb_sw_set_vlan_enable(struct switch_dev *dev, return rtl8366rb_vlan_set_4ktable(smi, val->value.i); } +static int rtl8366rb_sw_get_learning_enable(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val) +{ + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + u32 data; + + rtl8366_smi_read_reg(smi, RTL8366RB_SSCR0, &data); + val->value.i = !data; + + return 0; +} + + +static int rtl8366rb_sw_set_learning_enable(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val) +{ + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + u32 portmask = 0; + int err = 0; + + if (!val->value.i) + portmask = RTL8366RB_PORT_ALL; + + /* set learning for all ports */ + REG_WR(smi, RTL8366RB_SSCR0, portmask); + + /* set auto ageing for all ports */ + REG_WR(smi, RTL8366RB_SSCR1, portmask); + + return 0; +} + + static const char *rtl8366rb_speed_str(unsigned speed) { switch (speed) { @@ -1016,6 +1051,13 @@ static int rtl8366rb_sw_reset_switch(struct switch_dev *dev) static struct switch_attr rtl8366rb_globals[] = { { + .type = SWITCH_TYPE_INT, + .name = "enable_learning", + .description = "Enable learning, enable aging", + .set = rtl8366rb_sw_set_learning_enable, + .get = rtl8366rb_sw_get_learning_enable, + .max = 1 + }, { .type = SWITCH_TYPE_INT, .name = "enable_vlan", .description = "Enable VLAN mode", diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c index 45da8fd8e..59a5e1a27 100644 --- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c @@ -294,11 +294,11 @@ static int rtl8366s_hw_init(struct rtl8366_smi *smi) /* enable all ports */ REG_WR(smi, RTL8366S_PECR, 0); - /* disable learning for all ports */ - REG_WR(smi, RTL8366S_SSCR0, RTL8366S_PORT_ALL); + /* enable learning for all ports */ + REG_WR(smi, RTL8366S_SSCR0, 0); - /* disable auto ageing for all ports */ - REG_WR(smi, RTL8366S_SSCR1, RTL8366S_PORT_ALL); + /* enable auto ageing for all ports */ + REG_WR(smi, RTL8366S_SSCR1, 0); /* * discard VLAN tagged packets if the port is not a member of @@ -738,6 +738,41 @@ static int rtl8366s_sw_set_vlan_enable(struct switch_dev *dev, return rtl8366s_vlan_set_4ktable(smi, val->value.i); } +static int rtl8366s_sw_get_learning_enable(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val) +{ + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + u32 data; + + rtl8366_smi_read_reg(smi,RTL8366S_SSCR0, &data); + val->value.i = !data; + + return 0; +} + + +static int rtl8366s_sw_set_learning_enable(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val) +{ + struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); + u32 portmask = 0; + int err = 0; + + if (!val->value.i) + portmask = RTL8366S_PORT_ALL; + + /* set learning for all ports */ + REG_WR(smi, RTL8366S_SSCR0, portmask); + + /* set auto ageing for all ports */ + REG_WR(smi, RTL8366S_SSCR1, portmask); + + return 0; +} + + static const char *rtl8366s_speed_str(unsigned speed) { switch (speed) { @@ -1004,6 +1039,13 @@ static int rtl8366s_sw_reset_switch(struct switch_dev *dev) static struct switch_attr rtl8366s_globals[] = { { + .type = SWITCH_TYPE_INT, + .name = "enable_learning", + .description = "Enable learning, enable aging", + .set = rtl8366s_sw_set_learning_enable, + .get = rtl8366s_sw_get_learning_enable, + .max = 1, + }, { .type = SWITCH_TYPE_INT, .name = "enable_vlan", .description = "Enable VLAN mode", From c055f976bf144b176fba9960f9107e1e4e2b042d Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 8 Aug 2010 23:34:49 +0000 Subject: [PATCH 87/90] [backfire] merge r22397 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22551 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- tools/quilt/Makefile | 1 + tools/quilt/patches/100-patch_2.6.1_version.patch | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 tools/quilt/patches/100-patch_2.6.1_version.patch diff --git a/tools/quilt/Makefile b/tools/quilt/Makefile index a6f2a9e95..a57d8844f 100644 --- a/tools/quilt/Makefile +++ b/tools/quilt/Makefile @@ -16,6 +16,7 @@ PKG_MD5SUM:=d33d2442bd34387260b1c1db3e623af0 include $(INCLUDE_DIR)/host-build.mk define Host/Configure + cd $(HOST_BUILD_DIR) && autoconf $(call Host/Configure/Default) [ -f $(HOST_BUILD_DIR)/Makefile ] endef diff --git a/tools/quilt/patches/100-patch_2.6.1_version.patch b/tools/quilt/patches/100-patch_2.6.1_version.patch new file mode 100644 index 000000000..84f275318 --- /dev/null +++ b/tools/quilt/patches/100-patch_2.6.1_version.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -274,7 +274,7 @@ fi + AC_MSG_CHECKING([the version of $PATCH]) + if $PATCH --version 2> /dev/null | grep GNU >/dev/null; then + set -- `$PATCH --version 2> /dev/null` +- patch_version=$2 ++ test $2 == "patch" && patch_version=$3 || patch_version=$2 + AC_MSG_RESULT($patch_version) + saved_IFS=$IFS; IFS='.' + set -- $patch_version From 1c83c175fa7e32383d67828320ab5db071499f98 Mon Sep 17 00:00:00 2001 From: agb Date: Mon, 9 Aug 2010 04:44:34 +0000 Subject: [PATCH 88/90] [backfire] kernel: bump 2.6.32 targets to 2.6.32.16 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22554 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- include/kernel-version.mk | 4 ++-- target/linux/adm5120/Makefile | 2 +- target/linux/ar7/Makefile | 2 +- target/linux/ar71xx/Makefile | 2 +- target/linux/au1000/Makefile | 2 +- target/linux/avr32/Makefile | 2 +- target/linux/brcm47xx/Makefile | 2 +- target/linux/brcm63xx/Makefile | 2 +- target/linux/cobalt/Makefile | 2 +- target/linux/ixp4xx/Makefile | 2 +- target/linux/orion/Makefile | 2 +- target/linux/ppc40x/Makefile | 2 +- target/linux/ppc44x/Makefile | 2 +- target/linux/rb532/Makefile | 2 +- target/linux/x86/Makefile | 2 +- target/linux/xburst/Makefile | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/kernel-version.mk b/include/kernel-version.mk index e4f0b486f..5ec87d7ab 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -17,8 +17,8 @@ endif ifeq ($(LINUX_VERSION),2.6.31.12) LINUX_KERNEL_MD5SUM:=517be354b81b780e2f4b2ad614d030de endif -ifeq ($(LINUX_VERSION),2.6.32.10) - LINUX_KERNEL_MD5SUM:=5d996507ad482a3a8c8e6b2d48e7994b +ifeq ($(LINUX_VERSION),2.6.32.16) + LINUX_KERNEL_MD5SUM:=d94d91ef3be4eb76765401b4fa462759 endif ifeq ($(LINUX_VERSION),2.6.33) LINUX_KERNEL_MD5SUM:=c3883760b18d50e8d78819c54d579b00 diff --git a/target/linux/adm5120/Makefile b/target/linux/adm5120/Makefile index aed93250d..0eee0b494 100644 --- a/target/linux/adm5120/Makefile +++ b/target/linux/adm5120/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk BOARD:=adm5120 BOARDNAME:=Infineon/ADMtek ADM5120 -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 SUBTARGETS:=router_le router_be INITRAMFS_EXTRA_FILES:= diff --git a/target/linux/ar7/Makefile b/target/linux/ar7/Makefile index 38efd9278..72b3d5c4a 100644 --- a/target/linux/ar7/Makefile +++ b/target/linux/ar7/Makefile @@ -11,7 +11,7 @@ BOARD:=ar7 BOARDNAME:=TI AR7 FEATURES:=squashfs jffs2 atm -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/ar71xx/Makefile b/target/linux/ar71xx/Makefile index d1519feac..109b36e9c 100644 --- a/target/linux/ar71xx/Makefile +++ b/target/linux/ar71xx/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=Atheros AR71xx/AR7240/AR913x FEATURES:=squashfs jffs2 targz CFLAGS:=-Os -pipe -mips32r2 -mtune=mips32r2 -funit-at-a-time -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/au1000/Makefile b/target/linux/au1000/Makefile index f9011b227..f7cec30ca 100644 --- a/target/linux/au1000/Makefile +++ b/target/linux/au1000/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=RMI/AMD AU1x00 FEATURES:=jffs2 usb pci SUBTARGETS=au1500 au1550 -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk DEFAULT_PACKAGES += wpad-mini yamonenv diff --git a/target/linux/avr32/Makefile b/target/linux/avr32/Makefile index bfec9653f..1a8cd5535 100644 --- a/target/linux/avr32/Makefile +++ b/target/linux/avr32/Makefile @@ -10,7 +10,7 @@ ARCH:=avr32 BOARD:=avr32 BOARDNAME:=Atmel AVR32 FEATURES:=squashfs -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/brcm47xx/Makefile b/target/linux/brcm47xx/Makefile index f49392977..222f0758c 100644 --- a/target/linux/brcm47xx/Makefile +++ b/target/linux/brcm47xx/Makefile @@ -11,7 +11,7 @@ BOARD:=brcm47xx BOARDNAME:=Broadcom BCM947xx/953xx FEATURES:=squashfs usb pcmcia -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk DEFAULT_PACKAGES += wpad-mini kmod-switch kmod-diag nvram diff --git a/target/linux/brcm63xx/Makefile b/target/linux/brcm63xx/Makefile index d5285ba8a..94ee4c5fc 100644 --- a/target/linux/brcm63xx/Makefile +++ b/target/linux/brcm63xx/Makefile @@ -10,7 +10,7 @@ ARCH:=mips BOARD:=brcm63xx BOARDNAME:=Broadcom BCM63xx FEATURES:=squashfs jffs2 usb atm pci pcmcia -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/cobalt/Makefile b/target/linux/cobalt/Makefile index 6c0746cc2..53655e307 100644 --- a/target/linux/cobalt/Makefile +++ b/target/linux/cobalt/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=Cobalt Microservers FEATURES:=targz pci ext2 CFLAGS:=-O2 -pipe -mtune=r5000 -funit-at-a-time -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/ixp4xx/Makefile b/target/linux/ixp4xx/Makefile index 6f822e6b9..f65dc91d3 100644 --- a/target/linux/ixp4xx/Makefile +++ b/target/linux/ixp4xx/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=Intel IXP4xx FEATURES:=squashfs SUBTARGETS=generic harddisk -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/orion/Makefile b/target/linux/orion/Makefile index ea7cee3a7..84845d3be 100644 --- a/target/linux/orion/Makefile +++ b/target/linux/orion/Makefile @@ -13,7 +13,7 @@ FEATURES:=squashfs SUBTARGETS=generic harddisk CFLAGS=-Os -pipe -march=armv5t -mtune=xscale -funit-at-a-time -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/ppc40x/Makefile b/target/linux/ppc40x/Makefile index 905574b99..29d7f0d9b 100644 --- a/target/linux/ppc40x/Makefile +++ b/target/linux/ppc40x/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=AMCC/IBM PPC40x FEATURES:=squashfs CFLAGS:=-Os -pipe -funit-at-a-time -mcpu=405 -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/ppc44x/Makefile b/target/linux/ppc44x/Makefile index df67306ec..bd8157a19 100644 --- a/target/linux/ppc44x/Makefile +++ b/target/linux/ppc44x/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=AMCC/IBM PPC44x FEATURES:=squashfs CFLAGS:=-Os -pipe -funit-at-a-time -mcpu=440 -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/rb532/Makefile b/target/linux/rb532/Makefile index 23c7e7646..f400b77bd 100644 --- a/target/linux/rb532/Makefile +++ b/target/linux/rb532/Makefile @@ -11,7 +11,7 @@ BOARD:=rb532 BOARDNAME:=Mikrotik RouterBoard 532 FEATURES:=jffs2 pci targz -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk DEFAULT_PACKAGES += wpad-mini kmod-madwifi kmod-input-rb532 diff --git a/target/linux/x86/Makefile b/target/linux/x86/Makefile index 2870e19ce..9a7ea84a2 100644 --- a/target/linux/x86/Makefile +++ b/target/linux/x86/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=x86 FEATURES:=squashfs jffs2 ext2 vdi vmdk pcmcia targz SUBTARGETS=generic olpc xen_domu ep80579 -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/xburst/Makefile b/target/linux/xburst/Makefile index 4614eca94..c94d68c27 100644 --- a/target/linux/xburst/Makefile +++ b/target/linux/xburst/Makefile @@ -12,7 +12,7 @@ BOARDNAME:=Ingenic XBurst FEATURES:=jffs2 targz ubifs audio SUBTARGETS:=qi_lb60 n516 n526 -LINUX_VERSION:=2.6.32.10 +LINUX_VERSION:=2.6.32.16 DEVICE_TYPE=other From 002aa873af0327a5fe5927005c03544a6fbc38c1 Mon Sep 17 00:00:00 2001 From: agb Date: Mon, 9 Aug 2010 04:44:38 +0000 Subject: [PATCH 89/90] [backfire] merge r22552 [tools] qemu: build qemu-img for packaging vmdk and vdi images git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22555 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- tools/Makefile | 2 ++ tools/qemu/Makefile | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tools/qemu/Makefile diff --git a/tools/Makefile b/tools/Makefile index 808ea8412..94f7ce699 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -17,6 +17,7 @@ tools-y += m4 autoconf automake bison pkg-config sed mklibs tools-y += sstrip ipkg-utils genext2fs libuuid mtd-utils mkimage tools-y += firmware-utils patch-cmdline quilt yaffs2 tools-$(CONFIG_TARGET_orion) += wrt350nv2-builder upslug2 +tools-$(CONFIG_TARGET_x86) += qemu ifneq ($(CONFIG_LINUX_2_4)$(CONFIG_LINUX_2_6_25),) tools-y += squashfs lzma-old else @@ -43,6 +44,7 @@ $(curdir)/automake/compile := $(curdir)/m4/install $(curdir)/autoconf/install $(curdir)/mpfr/compile := $(curdir)/gmp/install $(curdir)/mtd-utils/compile := $(curdir)/libuuid/install $(curdir)/mkimage/compile := $(curdir)/sed/install +$(curdir)/upslug2/compile := $(curdir)/automake/install $(curdir)/builddirs := $(tools-y) $(tools-dep) $(tools-) $(curdir)/builddirs-default := $(tools-y) diff --git a/tools/qemu/Makefile b/tools/qemu/Makefile new file mode 100644 index 000000000..7d4eb0b30 --- /dev/null +++ b/tools/qemu/Makefile @@ -0,0 +1,40 @@ +# +# Copyright (C) 2010 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +include $(TOPDIR)/rules.mk + +PKG_NAME:=qemu +PKG_VERSION:=0.12.5 +PKG_RELEASE:=1 + +PKG_SOURCE_URL:=http://download.savannah.gnu.org/releases/qemu/ +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_MD5SUM:=1d02ee0a04dfae2894340273372c1de4 + +include $(INCLUDE_DIR)/host-build.mk + +define Host/Configure + (cd $(HOST_BUILD_DIR); \ + CFLAGS="$(HOST_CFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + $(HOST_CONFIGURE_CMD) \ + --extra-cflags="$(HOST_CFLAGS)" \ + --enable-uuid \ + ) +endef + +define Host/Compile + (cd $(HOST_BUILD_DIR); \ + make qemu-img \ + ) +endef + +define Host/Install + $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin + $(INSTALL_BIN) $(HOST_BUILD_DIR)/qemu-img $(STAGING_DIR_HOST)/bin +endef + +$(eval $(call HostBuild)) From 4db13eb19e52b80c192f4cfb75492c2859915200 Mon Sep 17 00:00:00 2001 From: agb Date: Mon, 9 Aug 2010 04:44:42 +0000 Subject: [PATCH 90/90] [backfire] merge r22553 [x86] image: use internal qemu-img for vmdk and vdi images drop host dependencies on qemu-utils and VirtualBox git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22556 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/x86/image/Config.in | 4 ---- target/linux/x86/image/Makefile | 14 +------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/target/linux/x86/image/Config.in b/target/linux/x86/image/Config.in index a76d8788a..28d708164 100644 --- a/target/linux/x86/image/Config.in +++ b/target/linux/x86/image/Config.in @@ -35,8 +35,6 @@ config X86_VDI_IMAGES depends TARGET_x86_generic depends TARGET_ROOTFS_EXT2FS select PACKAGE_kmod-pcnet32 - help - Requires VBoxManage installed on the build system. config X86_VMDK_IMAGES bool "Build VMware image files (VMDK)" @@ -44,8 +42,6 @@ config X86_VMDK_IMAGES depends TARGET_x86_generic depends TARGET_ROOTFS_EXT2FS select PACKAGE_kmod-e1000 - help - Requires qemu-img installed on the build system. config OLPC_BOOTSCRIPT_IMAGES diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index 4ede52051..c38b930ac 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -154,7 +154,7 @@ ifneq ($(CONFIG_X86_VDI_IMAGES),) # left here because the image builder doesnt need these ifeq ($(1),ext2) rm $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vdi || true - VBoxManage convertfromraw -format VDI \ + qemu-img convert -f raw -O vdi \ $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img \ $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vdi # XXX: VBoxManage insists on setting perms to 0600 @@ -202,15 +202,3 @@ define Image/Build endef $(eval $(call BuildImage)) - -ifneq ($(CONFIG_X86_VDI_IMAGES),) - $(eval $(call RequireCommand,VBoxManage, \ - You need VBoxManage to generate VirtualBox images. \ - )) -endif - -ifneq ($(CONFIG_X86_VMDK_IMAGES),) - $(eval $(call RequireCommand,qemu-img, \ - You need qemu-img to generate VMware images. \ - )) -endif