aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/adm8211.c5
-rw-r--r--drivers/net/wireless/ath/ath9k/ar5008_initvals.h1319
-rw-r--r--drivers/net/wireless/ath/ath9k/ar5008_phy.c129
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9001_initvals.h2479
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_calib.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_hw.c12
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_initvals.h10152
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_mac.c1
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_phy.c69
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_phy.h26
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_eeprom.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mac.h3
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_phy.c213
-rw-r--r--drivers/net/wireless/ath/ath9k/ath9k.h2
-rw-r--r--drivers/net/wireless/ath/ath9k/calib.c153
-rw-r--r--drivers/net/wireless/ath/ath9k/calib.h7
-rw-r--r--drivers/net/wireless/ath/ath9k/common.c4
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom.h2
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_4k.c4
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_9287.c4
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_def.c6
-rw-r--r--drivers/net/wireless/ath/ath9k/hif_usb.c8
-rw-r--r--drivers/net/wireless/ath/ath9k/hw-ops.h6
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c7
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h23
-rw-r--r--drivers/net/wireless/ath/ath9k/init.c1
-rw-r--r--drivers/net/wireless/ath/ath9k/mac.h3
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c27
-rw-r--r--drivers/net/wireless/ath/ath9k/xmit.c65
-rw-r--r--drivers/net/wireless/hostap/hostap_main.c2
-rw-r--r--drivers/net/wireless/iwlwifi/Kconfig9
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c12
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c44
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-calib.c133
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c82
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-tx.c7
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c209
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h85
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c31
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h5
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-csr.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-debugfs.c29
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-fh.h7
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-hcmd.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-rx.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.h11
-rw-r--r--drivers/net/wireless/libertas/README12
-rw-r--r--drivers/net/wireless/libertas/cmd.c61
-rw-r--r--drivers/net/wireless/libertas/cmd.h2
-rw-r--r--drivers/net/wireless/libertas/debugfs.c66
-rw-r--r--drivers/net/wireless/libertas/main.c34
-rw-r--r--drivers/net/wireless/prism54/isl_ioctl.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c69
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c71
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c14
-rw-r--r--drivers/net/wireless/rt2x00/rt2800.h30
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c434
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.h43
-rw-r--r--drivers/net/wireless/rt2x00/rt2800pci.c229
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c178
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h25
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00config.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c96
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00lib.h26
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00link.c65
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c50
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.h11
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00reg.h5
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c50
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.h10
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c68
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c7
-rw-r--r--drivers/net/wireless/wl12xx/Makefile2
-rw-r--r--drivers/net/wireless/wl12xx/wl1251_main.c1
-rw-r--r--drivers/net/wireless/wl12xx/wl1251_spi.c1
-rw-r--r--drivers/net/wireless/wl12xx/wl1271.h24
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_acx.c41
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_acx.h15
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_boot.c4
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_cmd.c248
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_cmd.h68
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_conf.h16
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_event.c99
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_event.h1
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_main.c174
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_rx.c6
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_scan.c257
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_scan.h109
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_spi.c1
95 files changed, 9680 insertions, 8483 deletions
diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c
index 880ad9d170c..bde2fa8bb63 100644
--- a/drivers/net/wireless/adm8211.c
+++ b/drivers/net/wireless/adm8211.c
@@ -1903,7 +1903,7 @@ static int __devinit adm8211_probe(struct pci_dev *pdev,
1903 if (err) { 1903 if (err) {
1904 printk(KERN_ERR "%s (adm8211): Cannot register device\n", 1904 printk(KERN_ERR "%s (adm8211): Cannot register device\n",
1905 pci_name(pdev)); 1905 pci_name(pdev));
1906 goto err_free_desc; 1906 goto err_free_eeprom;
1907 } 1907 }
1908 1908
1909 printk(KERN_INFO "%s: hwaddr %pM, Rev 0x%02x\n", 1909 printk(KERN_INFO "%s: hwaddr %pM, Rev 0x%02x\n",
@@ -1912,6 +1912,9 @@ static int __devinit adm8211_probe(struct pci_dev *pdev,
1912 1912
1913 return 0; 1913 return 0;
1914 1914
1915 err_free_eeprom:
1916 kfree(priv->eeprom);
1917
1915 err_free_desc: 1918 err_free_desc:
1916 pci_free_consistent(pdev, 1919 pci_free_consistent(pdev,
1917 sizeof(struct adm8211_desc) * priv->rx_ring_size + 1920 sizeof(struct adm8211_desc) * priv->rx_ring_size +
diff --git a/drivers/net/wireless/ath/ath9k/ar5008_initvals.h b/drivers/net/wireless/ath/ath9k/ar5008_initvals.h
index 025c31ac614..36f7d0639db 100644
--- a/drivers/net/wireless/ath/ath9k/ar5008_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar5008_initvals.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2008-2009 Atheros Communications Inc. 2 * Copyright (c) 2010 Atheros Communications Inc.
3 * 3 *
4 * Permission to use, copy, modify, and/or distribute this software for any 4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above 5 * purpose with or without fee is hereby granted, provided that the above
@@ -14,729 +14,660 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16 16
17#ifndef INITVALS_AR5008_H
18#define INITVALS_AR5008_H
19
20static const u32 ar5416Modes[][6] = { 17static const u32 ar5416Modes[][6] = {
21 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, 18 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
22 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, 19 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
23 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, 20 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
24 { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, 21 {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008},
25 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, 22 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
26 { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, 23 {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf},
27 { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, 24 {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810},
28 { 0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a }, 25 {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a},
29 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, 26 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
30 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, 27 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
31 { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 28 {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
32 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, 29 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
33 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 30 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
34 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, 31 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
35 { 0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0 }, 32 {0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0},
36 { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, 33 {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
37 { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, 34 {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
38 { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, 35 {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
39 { 0x00009850, 0x6c48b4e0, 0x6d48b4e0, 0x6d48b0de, 0x6c48b0de, 0x6c48b0de }, 36 {0x00009850, 0x6c48b4e0, 0x6d48b4e0, 0x6d48b0de, 0x6c48b0de, 0x6c48b0de},
40 { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, 37 {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e},
41 { 0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e }, 38 {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e},
42 { 0x00009860, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18 }, 39 {0x00009860, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18},
43 { 0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 40 {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
44 { 0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190 }, 41 {0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190},
45 { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, 42 {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081},
46 { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, 43 {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
47 { 0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000134 }, 44 {0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000134},
48 { 0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b }, 45 {0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b},
49 { 0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020 }, 46 {0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020},
50 { 0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, 47 {0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80},
51 { 0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, 48 {0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80},
52 { 0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80 }, 49 {0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80},
53 { 0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120 }, 50 {0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120},
54 { 0x000099bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00 }, 51 {0x000099bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00},
55 { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, 52 {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be},
56 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, 53 {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
57 { 0x000099c8, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c }, 54 {0x000099c8, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c},
58 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, 55 {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
59 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, 56 {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
60 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 57 {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
61 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 58 {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
62 { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, 59 {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880},
63 { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, 60 {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788},
64 { 0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, 61 {0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120},
65 { 0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, 62 {0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120},
66 { 0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 }, 63 {0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120},
67 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, 64 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
68 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 65 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
69 { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, 66 {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa},
70 { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, 67 {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000},
71 { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, 68 {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402},
72 { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, 69 {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06},
73 { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, 70 {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b},
74 { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, 71 {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b},
75 { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, 72 {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a},
76 { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, 73 {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf},
77 { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, 74 {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f},
78 { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, 75 {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f},
79 { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, 76 {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f},
80 { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, 77 {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000},
81 { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 78 {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
82 { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 79 {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
83 { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 80 {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
84}; 81};
85 82
86static const u32 ar5416Common[][2] = { 83static const u32 ar5416Common[][2] = {
87 { 0x0000000c, 0x00000000 }, 84 /* Addr allmodes */
88 { 0x00000030, 0x00020015 }, 85 {0x0000000c, 0x00000000},
89 { 0x00000034, 0x00000005 }, 86 {0x00000030, 0x00020015},
90 { 0x00000040, 0x00000000 }, 87 {0x00000034, 0x00000005},
91 { 0x00000044, 0x00000008 }, 88 {0x00000040, 0x00000000},
92 { 0x00000048, 0x00000008 }, 89 {0x00000044, 0x00000008},
93 { 0x0000004c, 0x00000010 }, 90 {0x00000048, 0x00000008},
94 { 0x00000050, 0x00000000 }, 91 {0x0000004c, 0x00000010},
95 { 0x00000054, 0x0000001f }, 92 {0x00000050, 0x00000000},
96 { 0x00000800, 0x00000000 }, 93 {0x00000054, 0x0000001f},
97 { 0x00000804, 0x00000000 }, 94 {0x00000800, 0x00000000},
98 { 0x00000808, 0x00000000 }, 95 {0x00000804, 0x00000000},
99 { 0x0000080c, 0x00000000 }, 96 {0x00000808, 0x00000000},
100 { 0x00000810, 0x00000000 }, 97 {0x0000080c, 0x00000000},
101 { 0x00000814, 0x00000000 }, 98 {0x00000810, 0x00000000},
102 { 0x00000818, 0x00000000 }, 99 {0x00000814, 0x00000000},
103 { 0x0000081c, 0x00000000 }, 100 {0x00000818, 0x00000000},
104 { 0x00000820, 0x00000000 }, 101 {0x0000081c, 0x00000000},
105 { 0x00000824, 0x00000000 }, 102 {0x00000820, 0x00000000},
106 { 0x00001040, 0x002ffc0f }, 103 {0x00000824, 0x00000000},
107 { 0x00001044, 0x002ffc0f }, 104 {0x00001040, 0x002ffc0f},
108 { 0x00001048, 0x002ffc0f }, 105 {0x00001044, 0x002ffc0f},
109 { 0x0000104c, 0x002ffc0f }, 106 {0x00001048, 0x002ffc0f},
110 { 0x00001050, 0x002ffc0f }, 107 {0x0000104c, 0x002ffc0f},
111 { 0x00001054, 0x002ffc0f }, 108 {0x00001050, 0x002ffc0f},
112 { 0x00001058, 0x002ffc0f }, 109 {0x00001054, 0x002ffc0f},
113 { 0x0000105c, 0x002ffc0f }, 110 {0x00001058, 0x002ffc0f},
114 { 0x00001060, 0x002ffc0f }, 111 {0x0000105c, 0x002ffc0f},
115 { 0x00001064, 0x002ffc0f }, 112 {0x00001060, 0x002ffc0f},
116 { 0x00001230, 0x00000000 }, 113 {0x00001064, 0x002ffc0f},
117 { 0x00001270, 0x00000000 }, 114 {0x00001230, 0x00000000},
118 { 0x00001038, 0x00000000 }, 115 {0x00001270, 0x00000000},
119 { 0x00001078, 0x00000000 }, 116 {0x00001038, 0x00000000},
120 { 0x000010b8, 0x00000000 }, 117 {0x00001078, 0x00000000},
121 { 0x000010f8, 0x00000000 }, 118 {0x000010b8, 0x00000000},
122 { 0x00001138, 0x00000000 }, 119 {0x000010f8, 0x00000000},
123 { 0x00001178, 0x00000000 }, 120 {0x00001138, 0x00000000},
124 { 0x000011b8, 0x00000000 }, 121 {0x00001178, 0x00000000},
125 { 0x000011f8, 0x00000000 }, 122 {0x000011b8, 0x00000000},
126 { 0x00001238, 0x00000000 }, 123 {0x000011f8, 0x00000000},
127 { 0x00001278, 0x00000000 }, 124 {0x00001238, 0x00000000},
128 { 0x000012b8, 0x00000000 }, 125 {0x00001278, 0x00000000},
129 { 0x000012f8, 0x00000000 }, 126 {0x000012b8, 0x00000000},
130 { 0x00001338, 0x00000000 }, 127 {0x000012f8, 0x00000000},
131 { 0x00001378, 0x00000000 }, 128 {0x00001338, 0x00000000},
132 { 0x000013b8, 0x00000000 }, 129 {0x00001378, 0x00000000},
133 { 0x000013f8, 0x00000000 }, 130 {0x000013b8, 0x00000000},
134 { 0x00001438, 0x00000000 }, 131 {0x000013f8, 0x00000000},
135 { 0x00001478, 0x00000000 }, 132 {0x00001438, 0x00000000},
136 { 0x000014b8, 0x00000000 }, 133 {0x00001478, 0x00000000},
137 { 0x000014f8, 0x00000000 }, 134 {0x000014b8, 0x00000000},
138 { 0x00001538, 0x00000000 }, 135 {0x000014f8, 0x00000000},
139 { 0x00001578, 0x00000000 }, 136 {0x00001538, 0x00000000},
140 { 0x000015b8, 0x00000000 }, 137 {0x00001578, 0x00000000},
141 { 0x000015f8, 0x00000000 }, 138 {0x000015b8, 0x00000000},
142 { 0x00001638, 0x00000000 }, 139 {0x000015f8, 0x00000000},
143 { 0x00001678, 0x00000000 }, 140 {0x00001638, 0x00000000},
144 { 0x000016b8, 0x00000000 }, 141 {0x00001678, 0x00000000},
145 { 0x000016f8, 0x00000000 }, 142 {0x000016b8, 0x00000000},
146 { 0x00001738, 0x00000000 }, 143 {0x000016f8, 0x00000000},
147 { 0x00001778, 0x00000000 }, 144 {0x00001738, 0x00000000},
148 { 0x000017b8, 0x00000000 }, 145 {0x00001778, 0x00000000},
149 { 0x000017f8, 0x00000000 }, 146 {0x000017b8, 0x00000000},
150 { 0x0000103c, 0x00000000 }, 147 {0x000017f8, 0x00000000},
151 { 0x0000107c, 0x00000000 }, 148 {0x0000103c, 0x00000000},
152 { 0x000010bc, 0x00000000 }, 149 {0x0000107c, 0x00000000},
153 { 0x000010fc, 0x00000000 }, 150 {0x000010bc, 0x00000000},
154 { 0x0000113c, 0x00000000 }, 151 {0x000010fc, 0x00000000},
155 { 0x0000117c, 0x00000000 }, 152 {0x0000113c, 0x00000000},
156 { 0x000011bc, 0x00000000 }, 153 {0x0000117c, 0x00000000},
157 { 0x000011fc, 0x00000000 }, 154 {0x000011bc, 0x00000000},
158 { 0x0000123c, 0x00000000 }, 155 {0x000011fc, 0x00000000},
159 { 0x0000127c, 0x00000000 }, 156 {0x0000123c, 0x00000000},
160 { 0x000012bc, 0x00000000 }, 157 {0x0000127c, 0x00000000},
161 { 0x000012fc, 0x00000000 }, 158 {0x000012bc, 0x00000000},
162 { 0x0000133c, 0x00000000 }, 159 {0x000012fc, 0x00000000},
163 { 0x0000137c, 0x00000000 }, 160 {0x0000133c, 0x00000000},
164 { 0x000013bc, 0x00000000 }, 161 {0x0000137c, 0x00000000},
165 { 0x000013fc, 0x00000000 }, 162 {0x000013bc, 0x00000000},
166 { 0x0000143c, 0x00000000 }, 163 {0x000013fc, 0x00000000},
167 { 0x0000147c, 0x00000000 }, 164 {0x0000143c, 0x00000000},
168 { 0x00004030, 0x00000002 }, 165 {0x0000147c, 0x00000000},
169 { 0x0000403c, 0x00000002 }, 166 {0x00004030, 0x00000002},
170 { 0x00007010, 0x00000000 }, 167 {0x0000403c, 0x00000002},
171 { 0x00007038, 0x000004c2 }, 168 {0x00007010, 0x00000000},
172 { 0x00008004, 0x00000000 }, 169 {0x00007038, 0x000004c2},
173 { 0x00008008, 0x00000000 }, 170 {0x00008004, 0x00000000},
174 { 0x0000800c, 0x00000000 }, 171 {0x00008008, 0x00000000},
175 { 0x00008018, 0x00000700 }, 172 {0x0000800c, 0x00000000},
176 { 0x00008020, 0x00000000 }, 173 {0x00008018, 0x00000700},
177 { 0x00008038, 0x00000000 }, 174 {0x00008020, 0x00000000},
178 { 0x0000803c, 0x00000000 }, 175 {0x00008038, 0x00000000},
179 { 0x00008048, 0x40000000 }, 176 {0x0000803c, 0x00000000},
180 { 0x00008054, 0x00000000 }, 177 {0x00008048, 0x40000000},
181 { 0x00008058, 0x00000000 }, 178 {0x00008054, 0x00000000},
182 { 0x0000805c, 0x000fc78f }, 179 {0x00008058, 0x00000000},
183 { 0x00008060, 0x0000000f }, 180 {0x0000805c, 0x000fc78f},
184 { 0x00008064, 0x00000000 }, 181 {0x00008060, 0x0000000f},
185 { 0x000080c0, 0x2a82301a }, 182 {0x00008064, 0x00000000},
186 { 0x000080c4, 0x05dc01e0 }, 183 {0x000080c0, 0x2a82301a},
187 { 0x000080c8, 0x1f402710 }, 184 {0x000080c4, 0x05dc01e0},
188 { 0x000080cc, 0x01f40000 }, 185 {0x000080c8, 0x1f402710},
189 { 0x000080d0, 0x00001e00 }, 186 {0x000080cc, 0x01f40000},
190 { 0x000080d4, 0x00000000 }, 187 {0x000080d0, 0x00001e00},
191 { 0x000080d8, 0x00400000 }, 188 {0x000080d4, 0x00000000},
192 { 0x000080e0, 0xffffffff }, 189 {0x000080d8, 0x00400000},
193 { 0x000080e4, 0x0000ffff }, 190 {0x000080e0, 0xffffffff},
194 { 0x000080e8, 0x003f3f3f }, 191 {0x000080e4, 0x0000ffff},
195 { 0x000080ec, 0x00000000 }, 192 {0x000080e8, 0x003f3f3f},
196 { 0x000080f0, 0x00000000 }, 193 {0x000080ec, 0x00000000},
197 { 0x000080f4, 0x00000000 }, 194 {0x000080f0, 0x00000000},
198 { 0x000080f8, 0x00000000 }, 195 {0x000080f4, 0x00000000},
199 { 0x000080fc, 0x00020000 }, 196 {0x000080f8, 0x00000000},
200 { 0x00008100, 0x00020000 }, 197 {0x000080fc, 0x00020000},
201 { 0x00008104, 0x00000001 }, 198 {0x00008100, 0x00020000},
202 { 0x00008108, 0x00000052 }, 199 {0x00008104, 0x00000001},
203 { 0x0000810c, 0x00000000 }, 200 {0x00008108, 0x00000052},
204 { 0x00008110, 0x00000168 }, 201 {0x0000810c, 0x00000000},
205 { 0x00008118, 0x000100aa }, 202 {0x00008110, 0x00000168},
206 { 0x0000811c, 0x00003210 }, 203 {0x00008118, 0x000100aa},
207 { 0x00008124, 0x00000000 }, 204 {0x0000811c, 0x00003210},
208 { 0x00008128, 0x00000000 }, 205 {0x00008124, 0x00000000},
209 { 0x0000812c, 0x00000000 }, 206 {0x00008128, 0x00000000},
210 { 0x00008130, 0x00000000 }, 207 {0x0000812c, 0x00000000},
211 { 0x00008134, 0x00000000 }, 208 {0x00008130, 0x00000000},
212 { 0x00008138, 0x00000000 }, 209 {0x00008134, 0x00000000},
213 { 0x0000813c, 0x00000000 }, 210 {0x00008138, 0x00000000},
214 { 0x00008144, 0xffffffff }, 211 {0x0000813c, 0x00000000},
215 { 0x00008168, 0x00000000 }, 212 {0x00008144, 0xffffffff},
216 { 0x0000816c, 0x00000000 }, 213 {0x00008168, 0x00000000},
217 { 0x00008170, 0x32143320 }, 214 {0x0000816c, 0x00000000},
218 { 0x00008174, 0xfaa4fa50 }, 215 {0x00008170, 0x32143320},
219 { 0x00008178, 0x00000100 }, 216 {0x00008174, 0xfaa4fa50},
220 { 0x0000817c, 0x00000000 }, 217 {0x00008178, 0x00000100},
221 { 0x000081c4, 0x00000000 }, 218 {0x0000817c, 0x00000000},
222 { 0x000081ec, 0x00000000 }, 219 {0x000081c4, 0x00000000},
223 { 0x000081f0, 0x00000000 }, 220 {0x000081ec, 0x00000000},
224 { 0x000081f4, 0x00000000 }, 221 {0x000081f0, 0x00000000},
225 { 0x000081f8, 0x00000000 }, 222 {0x000081f4, 0x00000000},
226 { 0x000081fc, 0x00000000 }, 223 {0x000081f8, 0x00000000},
227 { 0x00008200, 0x00000000 }, 224 {0x000081fc, 0x00000000},
228 { 0x00008204, 0x00000000 }, 225 {0x00008200, 0x00000000},
229 { 0x00008208, 0x00000000 }, 226 {0x00008204, 0x00000000},
230 { 0x0000820c, 0x00000000 }, 227 {0x00008208, 0x00000000},
231 { 0x00008210, 0x00000000 }, 228 {0x0000820c, 0x00000000},
232 { 0x00008214, 0x00000000 }, 229 {0x00008210, 0x00000000},
233 { 0x00008218, 0x00000000 }, 230 {0x00008214, 0x00000000},
234 { 0x0000821c, 0x00000000 }, 231 {0x00008218, 0x00000000},
235 { 0x00008220, 0x00000000 }, 232 {0x0000821c, 0x00000000},
236 { 0x00008224, 0x00000000 }, 233 {0x00008220, 0x00000000},
237 { 0x00008228, 0x00000000 }, 234 {0x00008224, 0x00000000},
238 { 0x0000822c, 0x00000000 }, 235 {0x00008228, 0x00000000},
239 { 0x00008230, 0x00000000 }, 236 {0x0000822c, 0x00000000},
240 { 0x00008234, 0x00000000 }, 237 {0x00008230, 0x00000000},
241 { 0x00008238, 0x00000000 }, 238 {0x00008234, 0x00000000},
242 { 0x0000823c, 0x00000000 }, 239 {0x00008238, 0x00000000},
243 { 0x00008240, 0x00100000 }, 240 {0x0000823c, 0x00000000},
244 { 0x00008244, 0x0010f400 }, 241 {0x00008240, 0x00100000},
245 { 0x00008248, 0x00000100 }, 242 {0x00008244, 0x0010f400},
246 { 0x0000824c, 0x0001e800 }, 243 {0x00008248, 0x00000100},
247 { 0x00008250, 0x00000000 }, 244 {0x0000824c, 0x0001e800},
248 { 0x00008254, 0x00000000 }, 245 {0x00008250, 0x00000000},
249 { 0x00008258, 0x00000000 }, 246 {0x00008254, 0x00000000},
250 { 0x0000825c, 0x400000ff }, 247 {0x00008258, 0x00000000},
251 { 0x00008260, 0x00080922 }, 248 {0x0000825c, 0x400000ff},
252 { 0x00008264, 0x88000010 }, 249 {0x00008260, 0x00080922},
253 { 0x00008270, 0x00000000 }, 250 {0x00008264, 0x88000010},
254 { 0x00008274, 0x40000000 }, 251 {0x00008270, 0x00000000},
255 { 0x00008278, 0x003e4180 }, 252 {0x00008274, 0x40000000},
256 { 0x0000827c, 0x00000000 }, 253 {0x00008278, 0x003e4180},
257 { 0x00008284, 0x0000002c }, 254 {0x0000827c, 0x00000000},
258 { 0x00008288, 0x0000002c }, 255 {0x00008284, 0x0000002c},
259 { 0x0000828c, 0x00000000 }, 256 {0x00008288, 0x0000002c},
260 { 0x00008294, 0x00000000 }, 257 {0x0000828c, 0x00000000},
261 { 0x00008298, 0x00000000 }, 258 {0x00008294, 0x00000000},
262 { 0x00008300, 0x00000000 }, 259 {0x00008298, 0x00000000},
263 { 0x00008304, 0x00000000 }, 260 {0x00008300, 0x00000000},
264 { 0x00008308, 0x00000000 }, 261 {0x00008304, 0x00000000},
265 { 0x0000830c, 0x00000000 }, 262 {0x00008308, 0x00000000},
266 { 0x00008310, 0x00000000 }, 263 {0x0000830c, 0x00000000},
267 { 0x00008314, 0x00000000 }, 264 {0x00008310, 0x00000000},
268 { 0x00008318, 0x00000000 }, 265 {0x00008314, 0x00000000},
269 { 0x00008328, 0x00000000 }, 266 {0x00008318, 0x00000000},
270 { 0x0000832c, 0x00000007 }, 267 {0x00008328, 0x00000000},
271 { 0x00008330, 0x00000302 }, 268 {0x0000832c, 0x00000007},
272 { 0x00008334, 0x00000e00 }, 269 {0x00008330, 0x00000302},
273 { 0x00008338, 0x00070000 }, 270 {0x00008334, 0x00000e00},
274 { 0x0000833c, 0x00000000 }, 271 {0x00008338, 0x00070000},
275 { 0x00008340, 0x000107ff }, 272 {0x0000833c, 0x00000000},
276 { 0x00009808, 0x00000000 }, 273 {0x00008340, 0x000107ff},
277 { 0x0000980c, 0xad848e19 }, 274 {0x00009808, 0x00000000},
278 { 0x00009810, 0x7d14e000 }, 275 {0x0000980c, 0xad848e19},
279 { 0x00009814, 0x9c0a9f6b }, 276 {0x00009810, 0x7d14e000},
280 { 0x0000981c, 0x00000000 }, 277 {0x00009814, 0x9c0a9f6b},
281 { 0x0000982c, 0x0000a000 }, 278 {0x0000981c, 0x00000000},
282 { 0x00009830, 0x00000000 }, 279 {0x0000982c, 0x0000a000},
283 { 0x0000983c, 0x00200400 }, 280 {0x00009830, 0x00000000},
284 { 0x00009840, 0x206a002e }, 281 {0x0000983c, 0x00200400},
285 { 0x0000984c, 0x1284233c }, 282 {0x00009840, 0x206a002e},
286 { 0x00009854, 0x00000859 }, 283 {0x0000984c, 0x1284233c},
287 { 0x00009900, 0x00000000 }, 284 {0x00009854, 0x00000859},
288 { 0x00009904, 0x00000000 }, 285 {0x00009900, 0x00000000},
289 { 0x00009908, 0x00000000 }, 286 {0x00009904, 0x00000000},
290 { 0x0000990c, 0x00000000 }, 287 {0x00009908, 0x00000000},
291 { 0x0000991c, 0x10000fff }, 288 {0x0000990c, 0x00000000},
292 { 0x00009920, 0x05100000 }, 289 {0x0000991c, 0x10000fff},
293 { 0x0000a920, 0x05100000 }, 290 {0x00009920, 0x05100000},
294 { 0x0000b920, 0x05100000 }, 291 {0x0000a920, 0x05100000},
295 { 0x00009928, 0x00000001 }, 292 {0x0000b920, 0x05100000},
296 { 0x0000992c, 0x00000004 }, 293 {0x00009928, 0x00000001},
297 { 0x00009934, 0x1e1f2022 }, 294 {0x0000992c, 0x00000004},
298 { 0x00009938, 0x0a0b0c0d }, 295 {0x00009934, 0x1e1f2022},
299 { 0x0000993c, 0x00000000 }, 296 {0x00009938, 0x0a0b0c0d},
300 { 0x00009948, 0x9280b212 }, 297 {0x0000993c, 0x00000000},
301 { 0x0000994c, 0x00020028 }, 298 {0x00009948, 0x9280b212},
302 { 0x00009954, 0x5d50e188 }, 299 {0x0000994c, 0x00020028},
303 { 0x00009958, 0x00081fff }, 300 {0x00009954, 0x5d50e188},
304 { 0x0000c95c, 0x004b6a8e }, 301 {0x00009958, 0x00081fff},
305 { 0x0000c968, 0x000003ce }, 302 {0x0000c95c, 0x004b6a8e},
306 { 0x00009970, 0x190fb515 }, 303 {0x0000c968, 0x000003ce},
307 { 0x00009974, 0x00000000 }, 304 {0x00009970, 0x190fb515},
308 { 0x00009978, 0x00000001 }, 305 {0x00009974, 0x00000000},
309 { 0x0000997c, 0x00000000 }, 306 {0x00009978, 0x00000001},
310 { 0x00009980, 0x00000000 }, 307 {0x0000997c, 0x00000000},
311 { 0x00009984, 0x00000000 }, 308 {0x00009980, 0x00000000},
312 { 0x00009988, 0x00000000 }, 309 {0x00009984, 0x00000000},
313 { 0x0000998c, 0x00000000 }, 310 {0x00009988, 0x00000000},
314 { 0x00009990, 0x00000000 }, 311 {0x0000998c, 0x00000000},
315 { 0x00009994, 0x00000000 }, 312 {0x00009990, 0x00000000},
316 { 0x00009998, 0x00000000 }, 313 {0x00009994, 0x00000000},
317 { 0x0000999c, 0x00000000 }, 314 {0x00009998, 0x00000000},
318 { 0x000099a0, 0x00000000 }, 315 {0x0000999c, 0x00000000},
319 { 0x000099a4, 0x00000001 }, 316 {0x000099a0, 0x00000000},
320 { 0x000099a8, 0x001fff00 }, 317 {0x000099a4, 0x00000001},
321 { 0x000099ac, 0x00000000 }, 318 {0x000099a8, 0x001fff00},
322 { 0x000099b0, 0x03051000 }, 319 {0x000099ac, 0x00000000},
323 { 0x000099dc, 0x00000000 }, 320 {0x000099b0, 0x03051000},
324 { 0x000099e0, 0x00000200 }, 321 {0x000099dc, 0x00000000},
325 { 0x000099e4, 0xaaaaaaaa }, 322 {0x000099e0, 0x00000200},
326 { 0x000099e8, 0x3c466478 }, 323 {0x000099e4, 0xaaaaaaaa},
327 { 0x000099ec, 0x000000aa }, 324 {0x000099e8, 0x3c466478},
328 { 0x000099fc, 0x00001042 }, 325 {0x000099ec, 0x000000aa},
329 { 0x00009b00, 0x00000000 }, 326 {0x000099fc, 0x00001042},
330 { 0x00009b04, 0x00000001 }, 327 {0x00009b00, 0x00000000},
331 { 0x00009b08, 0x00000002 }, 328 {0x00009b04, 0x00000001},
332 { 0x00009b0c, 0x00000003 }, 329 {0x00009b08, 0x00000002},
333 { 0x00009b10, 0x00000004 }, 330 {0x00009b0c, 0x00000003},
334 { 0x00009b14, 0x00000005 }, 331 {0x00009b10, 0x00000004},
335 { 0x00009b18, 0x00000008 }, 332 {0x00009b14, 0x00000005},
336 { 0x00009b1c, 0x00000009 }, 333 {0x00009b18, 0x00000008},
337 { 0x00009b20, 0x0000000a }, 334 {0x00009b1c, 0x00000009},
338 { 0x00009b24, 0x0000000b }, 335 {0x00009b20, 0x0000000a},
339 { 0x00009b28, 0x0000000c }, 336 {0x00009b24, 0x0000000b},
340 { 0x00009b2c, 0x0000000d }, 337 {0x00009b28, 0x0000000c},
341 { 0x00009b30, 0x00000010 }, 338 {0x00009b2c, 0x0000000d},
342 { 0x00009b34, 0x00000011 }, 339 {0x00009b30, 0x00000010},
343 { 0x00009b38, 0x00000012 }, 340 {0x00009b34, 0x00000011},
344 { 0x00009b3c, 0x00000013 }, 341 {0x00009b38, 0x00000012},
345 { 0x00009b40, 0x00000014 }, 342 {0x00009b3c, 0x00000013},
346 { 0x00009b44, 0x00000015 }, 343 {0x00009b40, 0x00000014},
347 { 0x00009b48, 0x00000018 }, 344 {0x00009b44, 0x00000015},
348 { 0x00009b4c, 0x00000019 }, 345 {0x00009b48, 0x00000018},
349 { 0x00009b50, 0x0000001a }, 346 {0x00009b4c, 0x00000019},
350 { 0x00009b54, 0x0000001b }, 347 {0x00009b50, 0x0000001a},
351 { 0x00009b58, 0x0000001c }, 348 {0x00009b54, 0x0000001b},
352 { 0x00009b5c, 0x0000001d }, 349 {0x00009b58, 0x0000001c},
353 { 0x00009b60, 0x00000020 }, 350 {0x00009b5c, 0x0000001d},
354 { 0x00009b64, 0x00000021 }, 351 {0x00009b60, 0x00000020},
355 { 0x00009b68, 0x00000022 }, 352 {0x00009b64, 0x00000021},
356 { 0x00009b6c, 0x00000023 }, 353 {0x00009b68, 0x00000022},
357 { 0x00009b70, 0x00000024 }, 354 {0x00009b6c, 0x00000023},
358 { 0x00009b74, 0x00000025 }, 355 {0x00009b70, 0x00000024},
359 { 0x00009b78, 0x00000028 }, 356 {0x00009b74, 0x00000025},
360 { 0x00009b7c, 0x00000029 }, 357 {0x00009b78, 0x00000028},
361 { 0x00009b80, 0x0000002a }, 358 {0x00009b7c, 0x00000029},
362 { 0x00009b84, 0x0000002b }, 359 {0x00009b80, 0x0000002a},
363 { 0x00009b88, 0x0000002c }, 360 {0x00009b84, 0x0000002b},
364 { 0x00009b8c, 0x0000002d }, 361 {0x00009b88, 0x0000002c},
365 { 0x00009b90, 0x00000030 }, 362 {0x00009b8c, 0x0000002d},
366 { 0x00009b94, 0x00000031 }, 363 {0x00009b90, 0x00000030},
367 { 0x00009b98, 0x00000032 }, 364 {0x00009b94, 0x00000031},
368 { 0x00009b9c, 0x00000033 }, 365 {0x00009b98, 0x00000032},
369 { 0x00009ba0, 0x00000034 }, 366 {0x00009b9c, 0x00000033},
370 { 0x00009ba4, 0x00000035 }, 367 {0x00009ba0, 0x00000034},
371 { 0x00009ba8, 0x00000035 }, 368 {0x00009ba4, 0x00000035},
372 { 0x00009bac, 0x00000035 }, 369 {0x00009ba8, 0x00000035},
373 { 0x00009bb0, 0x00000035 }, 370 {0x00009bac, 0x00000035},
374 { 0x00009bb4, 0x00000035 }, 371 {0x00009bb0, 0x00000035},
375 { 0x00009bb8, 0x00000035 }, 372 {0x00009bb4, 0x00000035},
376 { 0x00009bbc, 0x00000035 }, 373 {0x00009bb8, 0x00000035},
377 { 0x00009bc0, 0x00000035 }, 374 {0x00009bbc, 0x00000035},
378 { 0x00009bc4, 0x00000035 }, 375 {0x00009bc0, 0x00000035},
379 { 0x00009bc8, 0x00000035 }, 376 {0x00009bc4, 0x00000035},
380 { 0x00009bcc, 0x00000035 }, 377 {0x00009bc8, 0x00000035},
381 { 0x00009bd0, 0x00000035 }, 378 {0x00009bcc, 0x00000035},
382 { 0x00009bd4, 0x00000035 }, 379 {0x00009bd0, 0x00000035},
383 { 0x00009bd8, 0x00000035 }, 380 {0x00009bd4, 0x00000035},
384 { 0x00009bdc, 0x00000035 }, 381 {0x00009bd8, 0x00000035},
385 { 0x00009be0, 0x00000035 }, 382 {0x00009bdc, 0x00000035},
386 { 0x00009be4, 0x00000035 }, 383 {0x00009be0, 0x00000035},
387 { 0x00009be8, 0x00000035 }, 384 {0x00009be4, 0x00000035},
388 { 0x00009bec, 0x00000035 }, 385 {0x00009be8, 0x00000035},
389 { 0x00009bf0, 0x00000035 }, 386 {0x00009bec, 0x00000035},
390 { 0x00009bf4, 0x00000035 }, 387 {0x00009bf0, 0x00000035},
391 { 0x00009bf8, 0x00000010 }, 388 {0x00009bf4, 0x00000035},
392 { 0x00009bfc, 0x0000001a }, 389 {0x00009bf8, 0x00000010},
393 { 0x0000a210, 0x40806333 }, 390 {0x00009bfc, 0x0000001a},
394 { 0x0000a214, 0x00106c10 }, 391 {0x0000a210, 0x40806333},
395 { 0x0000a218, 0x009c4060 }, 392 {0x0000a214, 0x00106c10},
396 { 0x0000a220, 0x018830c6 }, 393 {0x0000a218, 0x009c4060},
397 { 0x0000a224, 0x00000400 }, 394 {0x0000a220, 0x018830c6},
398 { 0x0000a228, 0x00000bb5 }, 395 {0x0000a224, 0x00000400},
399 { 0x0000a22c, 0x00000011 }, 396 {0x0000a228, 0x00000bb5},
400 { 0x0000a234, 0x20202020 }, 397 {0x0000a22c, 0x00000011},
401 { 0x0000a238, 0x20202020 }, 398 {0x0000a234, 0x20202020},
402 { 0x0000a23c, 0x13c889af }, 399 {0x0000a238, 0x20202020},
403 { 0x0000a240, 0x38490a20 }, 400 {0x0000a23c, 0x13c889af},
404 { 0x0000a244, 0x00007bb6 }, 401 {0x0000a240, 0x38490a20},
405 { 0x0000a248, 0x0fff3ffc }, 402 {0x0000a244, 0x00007bb6},
406 { 0x0000a24c, 0x00000001 }, 403 {0x0000a248, 0x0fff3ffc},
407 { 0x0000a250, 0x0000a000 }, 404 {0x0000a24c, 0x00000001},
408 { 0x0000a254, 0x00000000 }, 405 {0x0000a250, 0x0000a000},
409 { 0x0000a258, 0x0cc75380 }, 406 {0x0000a254, 0x00000000},
410 { 0x0000a25c, 0x0f0f0f01 }, 407 {0x0000a258, 0x0cc75380},
411 { 0x0000a260, 0xdfa91f01 }, 408 {0x0000a25c, 0x0f0f0f01},
412 { 0x0000a268, 0x00000000 }, 409 {0x0000a260, 0xdfa91f01},
413 { 0x0000a26c, 0x0e79e5c6 }, 410 {0x0000a268, 0x00000000},
414 { 0x0000b26c, 0x0e79e5c6 }, 411 {0x0000a26c, 0x0e79e5c6},
415 { 0x0000c26c, 0x0e79e5c6 }, 412 {0x0000b26c, 0x0e79e5c6},
416 { 0x0000d270, 0x00820820 }, 413 {0x0000c26c, 0x0e79e5c6},
417 { 0x0000a278, 0x1ce739ce }, 414 {0x0000d270, 0x00820820},
418 { 0x0000a27c, 0x051701ce }, 415 {0x0000a278, 0x1ce739ce},
419 { 0x0000a338, 0x00000000 }, 416 {0x0000a27c, 0x051701ce},
420 { 0x0000a33c, 0x00000000 }, 417 {0x0000a338, 0x00000000},
421 { 0x0000a340, 0x00000000 }, 418 {0x0000a33c, 0x00000000},
422 { 0x0000a344, 0x00000000 }, 419 {0x0000a340, 0x00000000},
423 { 0x0000a348, 0x3fffffff }, 420 {0x0000a344, 0x00000000},
424 { 0x0000a34c, 0x3fffffff }, 421 {0x0000a348, 0x3fffffff},
425 { 0x0000a350, 0x3fffffff }, 422 {0x0000a34c, 0x3fffffff},
426 { 0x0000a354, 0x0003ffff }, 423 {0x0000a350, 0x3fffffff},
427 { 0x0000a358, 0x79a8aa1f }, 424 {0x0000a354, 0x0003ffff},
428 { 0x0000d35c, 0x07ffffef }, 425 {0x0000a358, 0x79a8aa1f},
429 { 0x0000d360, 0x0fffffe7 }, 426 {0x0000d35c, 0x07ffffef},
430 { 0x0000d364, 0x17ffffe5 }, 427 {0x0000d360, 0x0fffffe7},
431 { 0x0000d368, 0x1fffffe4 }, 428 {0x0000d364, 0x17ffffe5},
432 { 0x0000d36c, 0x37ffffe3 }, 429 {0x0000d368, 0x1fffffe4},
433 { 0x0000d370, 0x3fffffe3 }, 430 {0x0000d36c, 0x37ffffe3},
434 { 0x0000d374, 0x57ffffe3 }, 431 {0x0000d370, 0x3fffffe3},
435 { 0x0000d378, 0x5fffffe2 }, 432 {0x0000d374, 0x57ffffe3},
436 { 0x0000d37c, 0x7fffffe2 }, 433 {0x0000d378, 0x5fffffe2},
437 { 0x0000d380, 0x7f3c7bba }, 434 {0x0000d37c, 0x7fffffe2},
438 { 0x0000d384, 0xf3307ff0 }, 435 {0x0000d380, 0x7f3c7bba},
439 { 0x0000a388, 0x08000000 }, 436 {0x0000d384, 0xf3307ff0},
440 { 0x0000a38c, 0x20202020 }, 437 {0x0000a388, 0x08000000},
441 { 0x0000a390, 0x20202020 }, 438 {0x0000a38c, 0x20202020},
442 { 0x0000a394, 0x1ce739ce }, 439 {0x0000a390, 0x20202020},
443 { 0x0000a398, 0x000001ce }, 440 {0x0000a394, 0x1ce739ce},
444 { 0x0000a39c, 0x00000001 }, 441 {0x0000a398, 0x000001ce},
445 { 0x0000a3a0, 0x00000000 }, 442 {0x0000a39c, 0x00000001},
446 { 0x0000a3a4, 0x00000000 }, 443 {0x0000a3a0, 0x00000000},
447 { 0x0000a3a8, 0x00000000 }, 444 {0x0000a3a4, 0x00000000},
448 { 0x0000a3ac, 0x00000000 }, 445 {0x0000a3a8, 0x00000000},
449 { 0x0000a3b0, 0x00000000 }, 446 {0x0000a3ac, 0x00000000},
450 { 0x0000a3b4, 0x00000000 }, 447 {0x0000a3b0, 0x00000000},
451 { 0x0000a3b8, 0x00000000 }, 448 {0x0000a3b4, 0x00000000},
452 { 0x0000a3bc, 0x00000000 }, 449 {0x0000a3b8, 0x00000000},
453 { 0x0000a3c0, 0x00000000 }, 450 {0x0000a3bc, 0x00000000},
454 { 0x0000a3c4, 0x00000000 }, 451 {0x0000a3c0, 0x00000000},
455 { 0x0000a3c8, 0x00000246 }, 452 {0x0000a3c4, 0x00000000},
456 { 0x0000a3cc, 0x20202020 }, 453 {0x0000a3c8, 0x00000246},
457 { 0x0000a3d0, 0x20202020 }, 454 {0x0000a3cc, 0x20202020},
458 { 0x0000a3d4, 0x20202020 }, 455 {0x0000a3d0, 0x20202020},
459 { 0x0000a3dc, 0x1ce739ce }, 456 {0x0000a3d4, 0x20202020},
460 { 0x0000a3e0, 0x000001ce }, 457 {0x0000a3dc, 0x1ce739ce},
458 {0x0000a3e0, 0x000001ce},
461}; 459};
462 460
463static const u32 ar5416Bank0[][2] = { 461static const u32 ar5416Bank0[][2] = {
464 { 0x000098b0, 0x1e5795e5 }, 462 /* Addr allmodes */
465 { 0x000098e0, 0x02008020 }, 463 {0x000098b0, 0x1e5795e5},
464 {0x000098e0, 0x02008020},
466}; 465};
467 466
468static const u32 ar5416BB_RfGain[][3] = { 467static const u32 ar5416BB_RfGain[][3] = {
469 { 0x00009a00, 0x00000000, 0x00000000 }, 468 /* Addr 5G_HT20 5G_HT40 */
470 { 0x00009a04, 0x00000040, 0x00000040 }, 469 {0x00009a00, 0x00000000, 0x00000000},
471 { 0x00009a08, 0x00000080, 0x00000080 }, 470 {0x00009a04, 0x00000040, 0x00000040},
472 { 0x00009a0c, 0x000001a1, 0x00000141 }, 471 {0x00009a08, 0x00000080, 0x00000080},
473 { 0x00009a10, 0x000001e1, 0x00000181 }, 472 {0x00009a0c, 0x000001a1, 0x00000141},
474 { 0x00009a14, 0x00000021, 0x000001c1 }, 473 {0x00009a10, 0x000001e1, 0x00000181},
475 { 0x00009a18, 0x00000061, 0x00000001 }, 474 {0x00009a14, 0x00000021, 0x000001c1},
476 { 0x00009a1c, 0x00000168, 0x00000041 }, 475 {0x00009a18, 0x00000061, 0x00000001},
477 { 0x00009a20, 0x000001a8, 0x000001a8 }, 476 {0x00009a1c, 0x00000168, 0x00000041},
478 { 0x00009a24, 0x000001e8, 0x000001e8 }, 477 {0x00009a20, 0x000001a8, 0x000001a8},
479 { 0x00009a28, 0x00000028, 0x00000028 }, 478 {0x00009a24, 0x000001e8, 0x000001e8},
480 { 0x00009a2c, 0x00000068, 0x00000068 }, 479 {0x00009a28, 0x00000028, 0x00000028},
481 { 0x00009a30, 0x00000189, 0x000000a8 }, 480 {0x00009a2c, 0x00000068, 0x00000068},
482 { 0x00009a34, 0x000001c9, 0x00000169 }, 481 {0x00009a30, 0x00000189, 0x000000a8},
483 { 0x00009a38, 0x00000009, 0x000001a9 }, 482 {0x00009a34, 0x000001c9, 0x00000169},
484 { 0x00009a3c, 0x00000049, 0x000001e9 }, 483 {0x00009a38, 0x00000009, 0x000001a9},
485 { 0x00009a40, 0x00000089, 0x00000029 }, 484 {0x00009a3c, 0x00000049, 0x000001e9},
486 { 0x00009a44, 0x00000170, 0x00000069 }, 485 {0x00009a40, 0x00000089, 0x00000029},
487 { 0x00009a48, 0x000001b0, 0x00000190 }, 486 {0x00009a44, 0x00000170, 0x00000069},
488 { 0x00009a4c, 0x000001f0, 0x000001d0 }, 487 {0x00009a48, 0x000001b0, 0x00000190},
489 { 0x00009a50, 0x00000030, 0x00000010 }, 488 {0x00009a4c, 0x000001f0, 0x000001d0},
490 { 0x00009a54, 0x00000070, 0x00000050 }, 489 {0x00009a50, 0x00000030, 0x00000010},
491 { 0x00009a58, 0x00000191, 0x00000090 }, 490 {0x00009a54, 0x00000070, 0x00000050},
492 { 0x00009a5c, 0x000001d1, 0x00000151 }, 491 {0x00009a58, 0x00000191, 0x00000090},
493 { 0x00009a60, 0x00000011, 0x00000191 }, 492 {0x00009a5c, 0x000001d1, 0x00000151},
494 { 0x00009a64, 0x00000051, 0x000001d1 }, 493 {0x00009a60, 0x00000011, 0x00000191},
495 { 0x00009a68, 0x00000091, 0x00000011 }, 494 {0x00009a64, 0x00000051, 0x000001d1},
496 { 0x00009a6c, 0x000001b8, 0x00000051 }, 495 {0x00009a68, 0x00000091, 0x00000011},
497 { 0x00009a70, 0x000001f8, 0x00000198 }, 496 {0x00009a6c, 0x000001b8, 0x00000051},
498 { 0x00009a74, 0x00000038, 0x000001d8 }, 497 {0x00009a70, 0x000001f8, 0x00000198},
499 { 0x00009a78, 0x00000078, 0x00000018 }, 498 {0x00009a74, 0x00000038, 0x000001d8},
500 { 0x00009a7c, 0x00000199, 0x00000058 }, 499 {0x00009a78, 0x00000078, 0x00000018},
501 { 0x00009a80, 0x000001d9, 0x00000098 }, 500 {0x00009a7c, 0x00000199, 0x00000058},
502 { 0x00009a84, 0x00000019, 0x00000159 }, 501 {0x00009a80, 0x000001d9, 0x00000098},
503 { 0x00009a88, 0x00000059, 0x00000199 }, 502 {0x00009a84, 0x00000019, 0x00000159},
504 { 0x00009a8c, 0x00000099, 0x000001d9 }, 503 {0x00009a88, 0x00000059, 0x00000199},
505 { 0x00009a90, 0x000000d9, 0x00000019 }, 504 {0x00009a8c, 0x00000099, 0x000001d9},
506 { 0x00009a94, 0x000000f9, 0x00000059 }, 505 {0x00009a90, 0x000000d9, 0x00000019},
507 { 0x00009a98, 0x000000f9, 0x00000099 }, 506 {0x00009a94, 0x000000f9, 0x00000059},
508 { 0x00009a9c, 0x000000f9, 0x000000d9 }, 507 {0x00009a98, 0x000000f9, 0x00000099},
509 { 0x00009aa0, 0x000000f9, 0x000000f9 }, 508 {0x00009a9c, 0x000000f9, 0x000000d9},
510 { 0x00009aa4, 0x000000f9, 0x000000f9 }, 509 {0x00009aa0, 0x000000f9, 0x000000f9},
511 { 0x00009aa8, 0x000000f9, 0x000000f9 }, 510 {0x00009aa4, 0x000000f9, 0x000000f9},
512 { 0x00009aac, 0x000000f9, 0x000000f9 }, 511 {0x00009aa8, 0x000000f9, 0x000000f9},
513 { 0x00009ab0, 0x000000f9, 0x000000f9 }, 512 {0x00009aac, 0x000000f9, 0x000000f9},
514 { 0x00009ab4, 0x000000f9, 0x000000f9 }, 513 {0x00009ab0, 0x000000f9, 0x000000f9},
515 { 0x00009ab8, 0x000000f9, 0x000000f9 }, 514 {0x00009ab4, 0x000000f9, 0x000000f9},
516 { 0x00009abc, 0x000000f9, 0x000000f9 }, 515 {0x00009ab8, 0x000000f9, 0x000000f9},
517 { 0x00009ac0, 0x000000f9, 0x000000f9 }, 516 {0x00009abc, 0x000000f9, 0x000000f9},
518 { 0x00009ac4, 0x000000f9, 0x000000f9 }, 517 {0x00009ac0, 0x000000f9, 0x000000f9},
519 { 0x00009ac8, 0x000000f9, 0x000000f9 }, 518 {0x00009ac4, 0x000000f9, 0x000000f9},
520 { 0x00009acc, 0x000000f9, 0x000000f9 }, 519 {0x00009ac8, 0x000000f9, 0x000000f9},
521 { 0x00009ad0, 0x000000f9, 0x000000f9 }, 520 {0x00009acc, 0x000000f9, 0x000000f9},
522 { 0x00009ad4, 0x000000f9, 0x000000f9 }, 521 {0x00009ad0, 0x000000f9, 0x000000f9},
523 { 0x00009ad8, 0x000000f9, 0x000000f9 }, 522 {0x00009ad4, 0x000000f9, 0x000000f9},
524 { 0x00009adc, 0x000000f9, 0x000000f9 }, 523 {0x00009ad8, 0x000000f9, 0x000000f9},
525 { 0x00009ae0, 0x000000f9, 0x000000f9 }, 524 {0x00009adc, 0x000000f9, 0x000000f9},
526 { 0x00009ae4, 0x000000f9, 0x000000f9 }, 525 {0x00009ae0, 0x000000f9, 0x000000f9},
527 { 0x00009ae8, 0x000000f9, 0x000000f9 }, 526 {0x00009ae4, 0x000000f9, 0x000000f9},
528 { 0x00009aec, 0x000000f9, 0x000000f9 }, 527 {0x00009ae8, 0x000000f9, 0x000000f9},
529 { 0x00009af0, 0x000000f9, 0x000000f9 }, 528 {0x00009aec, 0x000000f9, 0x000000f9},
530 { 0x00009af4, 0x000000f9, 0x000000f9 }, 529 {0x00009af0, 0x000000f9, 0x000000f9},
531 { 0x00009af8, 0x000000f9, 0x000000f9 }, 530 {0x00009af4, 0x000000f9, 0x000000f9},
532 { 0x00009afc, 0x000000f9, 0x000000f9 }, 531 {0x00009af8, 0x000000f9, 0x000000f9},
532 {0x00009afc, 0x000000f9, 0x000000f9},
533}; 533};
534 534
535static const u32 ar5416Bank1[][2] = { 535static const u32 ar5416Bank1[][2] = {
536 { 0x000098b0, 0x02108421 }, 536 /* Addr allmodes */
537 { 0x000098ec, 0x00000008 }, 537 {0x000098b0, 0x02108421},
538 {0x000098ec, 0x00000008},
538}; 539};
539 540
540static const u32 ar5416Bank2[][2] = { 541static const u32 ar5416Bank2[][2] = {
541 { 0x000098b0, 0x0e73ff17 }, 542 /* Addr allmodes */
542 { 0x000098e0, 0x00000420 }, 543 {0x000098b0, 0x0e73ff17},
544 {0x000098e0, 0x00000420},
543}; 545};
544 546
545static const u32 ar5416Bank3[][3] = { 547static const u32 ar5416Bank3[][3] = {
546 { 0x000098f0, 0x01400018, 0x01c00018 }, 548 /* Addr 5G_HT20 5G_HT40 */
549 {0x000098f0, 0x01400018, 0x01c00018},
547}; 550};
548 551
549static const u32 ar5416Bank6[][3] = { 552static const u32 ar5416Bank6[][3] = {
550 553 /* Addr 5G_HT20 5G_HT40 */
551 { 0x0000989c, 0x00000000, 0x00000000 }, 554 {0x0000989c, 0x00000000, 0x00000000},
552 { 0x0000989c, 0x00000000, 0x00000000 }, 555 {0x0000989c, 0x00000000, 0x00000000},
553 { 0x0000989c, 0x00000000, 0x00000000 }, 556 {0x0000989c, 0x00000000, 0x00000000},
554 { 0x0000989c, 0x00e00000, 0x00e00000 }, 557 {0x0000989c, 0x00e00000, 0x00e00000},
555 { 0x0000989c, 0x005e0000, 0x005e0000 }, 558 {0x0000989c, 0x005e0000, 0x005e0000},
556 { 0x0000989c, 0x00120000, 0x00120000 }, 559 {0x0000989c, 0x00120000, 0x00120000},
557 { 0x0000989c, 0x00620000, 0x00620000 }, 560 {0x0000989c, 0x00620000, 0x00620000},
558 { 0x0000989c, 0x00020000, 0x00020000 }, 561 {0x0000989c, 0x00020000, 0x00020000},
559 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 562 {0x0000989c, 0x00ff0000, 0x00ff0000},
560 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 563 {0x0000989c, 0x00ff0000, 0x00ff0000},
561 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 564 {0x0000989c, 0x00ff0000, 0x00ff0000},
562 { 0x0000989c, 0x40ff0000, 0x40ff0000 }, 565 {0x0000989c, 0x40ff0000, 0x40ff0000},
563 { 0x0000989c, 0x005f0000, 0x005f0000 }, 566 {0x0000989c, 0x005f0000, 0x005f0000},
564 { 0x0000989c, 0x00870000, 0x00870000 }, 567 {0x0000989c, 0x00870000, 0x00870000},
565 { 0x0000989c, 0x00f90000, 0x00f90000 }, 568 {0x0000989c, 0x00f90000, 0x00f90000},
566 { 0x0000989c, 0x007b0000, 0x007b0000 }, 569 {0x0000989c, 0x007b0000, 0x007b0000},
567 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 570 {0x0000989c, 0x00ff0000, 0x00ff0000},
568 { 0x0000989c, 0x00f50000, 0x00f50000 }, 571 {0x0000989c, 0x00f50000, 0x00f50000},
569 { 0x0000989c, 0x00dc0000, 0x00dc0000 }, 572 {0x0000989c, 0x00dc0000, 0x00dc0000},
570 { 0x0000989c, 0x00110000, 0x00110000 }, 573 {0x0000989c, 0x00110000, 0x00110000},
571 { 0x0000989c, 0x006100a8, 0x006100a8 }, 574 {0x0000989c, 0x006100a8, 0x006100a8},
572 { 0x0000989c, 0x004210a2, 0x004210a2 }, 575 {0x0000989c, 0x004210a2, 0x004210a2},
573 { 0x0000989c, 0x0014008f, 0x0014008f }, 576 {0x0000989c, 0x0014008f, 0x0014008f},
574 { 0x0000989c, 0x00c40003, 0x00c40003 }, 577 {0x0000989c, 0x00c40003, 0x00c40003},
575 { 0x0000989c, 0x003000f2, 0x003000f2 }, 578 {0x0000989c, 0x003000f2, 0x003000f2},
576 { 0x0000989c, 0x00440016, 0x00440016 }, 579 {0x0000989c, 0x00440016, 0x00440016},
577 { 0x0000989c, 0x00410040, 0x00410040 }, 580 {0x0000989c, 0x00410040, 0x00410040},
578 { 0x0000989c, 0x0001805e, 0x0001805e }, 581 {0x0000989c, 0x0001805e, 0x0001805e},
579 { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, 582 {0x0000989c, 0x0000c0ab, 0x0000c0ab},
580 { 0x0000989c, 0x000000f1, 0x000000f1 }, 583 {0x0000989c, 0x000000f1, 0x000000f1},
581 { 0x0000989c, 0x00002081, 0x00002081 }, 584 {0x0000989c, 0x00002081, 0x00002081},
582 { 0x0000989c, 0x000000d4, 0x000000d4 }, 585 {0x0000989c, 0x000000d4, 0x000000d4},
583 { 0x000098d0, 0x0000000f, 0x0010000f }, 586 {0x000098d0, 0x0000000f, 0x0010000f},
584}; 587};
585 588
586static const u32 ar5416Bank6TPC[][3] = { 589static const u32 ar5416Bank6TPC[][3] = {
587 { 0x0000989c, 0x00000000, 0x00000000 }, 590 /* Addr 5G_HT20 5G_HT40 */
588 { 0x0000989c, 0x00000000, 0x00000000 }, 591 {0x0000989c, 0x00000000, 0x00000000},
589 { 0x0000989c, 0x00000000, 0x00000000 }, 592 {0x0000989c, 0x00000000, 0x00000000},
590 { 0x0000989c, 0x00e00000, 0x00e00000 }, 593 {0x0000989c, 0x00000000, 0x00000000},
591 { 0x0000989c, 0x005e0000, 0x005e0000 }, 594 {0x0000989c, 0x00e00000, 0x00e00000},
592 { 0x0000989c, 0x00120000, 0x00120000 }, 595 {0x0000989c, 0x005e0000, 0x005e0000},
593 { 0x0000989c, 0x00620000, 0x00620000 }, 596 {0x0000989c, 0x00120000, 0x00120000},
594 { 0x0000989c, 0x00020000, 0x00020000 }, 597 {0x0000989c, 0x00620000, 0x00620000},
595 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 598 {0x0000989c, 0x00020000, 0x00020000},
596 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 599 {0x0000989c, 0x00ff0000, 0x00ff0000},
597 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 600 {0x0000989c, 0x00ff0000, 0x00ff0000},
598 { 0x0000989c, 0x40ff0000, 0x40ff0000 }, 601 {0x0000989c, 0x00ff0000, 0x00ff0000},
599 { 0x0000989c, 0x005f0000, 0x005f0000 }, 602 {0x0000989c, 0x40ff0000, 0x40ff0000},
600 { 0x0000989c, 0x00870000, 0x00870000 }, 603 {0x0000989c, 0x005f0000, 0x005f0000},
601 { 0x0000989c, 0x00f90000, 0x00f90000 }, 604 {0x0000989c, 0x00870000, 0x00870000},
602 { 0x0000989c, 0x007b0000, 0x007b0000 }, 605 {0x0000989c, 0x00f90000, 0x00f90000},
603 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 606 {0x0000989c, 0x007b0000, 0x007b0000},
604 { 0x0000989c, 0x00f50000, 0x00f50000 }, 607 {0x0000989c, 0x00ff0000, 0x00ff0000},
605 { 0x0000989c, 0x00dc0000, 0x00dc0000 }, 608 {0x0000989c, 0x00f50000, 0x00f50000},
606 { 0x0000989c, 0x00110000, 0x00110000 }, 609 {0x0000989c, 0x00dc0000, 0x00dc0000},
607 { 0x0000989c, 0x006100a8, 0x006100a8 }, 610 {0x0000989c, 0x00110000, 0x00110000},
608 { 0x0000989c, 0x00423022, 0x00423022 }, 611 {0x0000989c, 0x006100a8, 0x006100a8},
609 { 0x0000989c, 0x201400df, 0x201400df }, 612 {0x0000989c, 0x00423022, 0x00423022},
610 { 0x0000989c, 0x00c40002, 0x00c40002 }, 613 {0x0000989c, 0x201400df, 0x201400df},
611 { 0x0000989c, 0x003000f2, 0x003000f2 }, 614 {0x0000989c, 0x00c40002, 0x00c40002},
612 { 0x0000989c, 0x00440016, 0x00440016 }, 615 {0x0000989c, 0x003000f2, 0x003000f2},
613 { 0x0000989c, 0x00410040, 0x00410040 }, 616 {0x0000989c, 0x00440016, 0x00440016},
614 { 0x0000989c, 0x0001805e, 0x0001805e }, 617 {0x0000989c, 0x00410040, 0x00410040},
615 { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, 618 {0x0000989c, 0x0001805e, 0x0001805e},
616 { 0x0000989c, 0x000000e1, 0x000000e1 }, 619 {0x0000989c, 0x0000c0ab, 0x0000c0ab},
617 { 0x0000989c, 0x00007081, 0x00007081 }, 620 {0x0000989c, 0x000000e1, 0x000000e1},
618 { 0x0000989c, 0x000000d4, 0x000000d4 }, 621 {0x0000989c, 0x00007081, 0x00007081},
619 { 0x000098d0, 0x0000000f, 0x0010000f }, 622 {0x0000989c, 0x000000d4, 0x000000d4},
623 {0x000098d0, 0x0000000f, 0x0010000f},
620}; 624};
621 625
622static const u32 ar5416Bank7[][2] = { 626static const u32 ar5416Bank7[][2] = {
623 { 0x0000989c, 0x00000500 }, 627 /* Addr allmodes */
624 { 0x0000989c, 0x00000800 }, 628 {0x0000989c, 0x00000500},
625 { 0x000098cc, 0x0000000e }, 629 {0x0000989c, 0x00000800},
630 {0x000098cc, 0x0000000e},
626}; 631};
627 632
628static const u32 ar5416Addac[][2] = { 633static const u32 ar5416Addac[][2] = {
629 {0x0000989c, 0x00000000 }, 634 /* Addr allmodes */
630 {0x0000989c, 0x00000003 }, 635 {0x0000989c, 0x00000000},
631 {0x0000989c, 0x00000000 }, 636 {0x0000989c, 0x00000003},
632 {0x0000989c, 0x0000000c }, 637 {0x0000989c, 0x00000000},
633 {0x0000989c, 0x00000000 }, 638 {0x0000989c, 0x0000000c},
634 {0x0000989c, 0x00000030 }, 639 {0x0000989c, 0x00000000},
635 {0x0000989c, 0x00000000 }, 640 {0x0000989c, 0x00000030},
636 {0x0000989c, 0x00000000 }, 641 {0x0000989c, 0x00000000},
637 {0x0000989c, 0x00000000 }, 642 {0x0000989c, 0x00000000},
638 {0x0000989c, 0x00000000 }, 643 {0x0000989c, 0x00000000},
639 {0x0000989c, 0x00000000 }, 644 {0x0000989c, 0x00000000},
640 {0x0000989c, 0x00000000 }, 645 {0x0000989c, 0x00000000},
641 {0x0000989c, 0x00000000 }, 646 {0x0000989c, 0x00000000},
642 {0x0000989c, 0x00000000 }, 647 {0x0000989c, 0x00000000},
643 {0x0000989c, 0x00000000 }, 648 {0x0000989c, 0x00000000},
644 {0x0000989c, 0x00000000 }, 649 {0x0000989c, 0x00000000},
645 {0x0000989c, 0x00000000 }, 650 {0x0000989c, 0x00000000},
646 {0x0000989c, 0x00000000 }, 651 {0x0000989c, 0x00000000},
647 {0x0000989c, 0x00000060 }, 652 {0x0000989c, 0x00000000},
648 {0x0000989c, 0x00000000 }, 653 {0x0000989c, 0x00000060},
649 {0x0000989c, 0x00000000 }, 654 {0x0000989c, 0x00000000},
650 {0x0000989c, 0x00000000 }, 655 {0x0000989c, 0x00000000},
651 {0x0000989c, 0x00000000 }, 656 {0x0000989c, 0x00000000},
652 {0x0000989c, 0x00000000 }, 657 {0x0000989c, 0x00000000},
653 {0x0000989c, 0x00000000 }, 658 {0x0000989c, 0x00000000},
654 {0x0000989c, 0x00000000 }, 659 {0x0000989c, 0x00000000},
655 {0x0000989c, 0x00000000 }, 660 {0x0000989c, 0x00000000},
656 {0x0000989c, 0x00000000 }, 661 {0x0000989c, 0x00000000},
657 {0x0000989c, 0x00000000 }, 662 {0x0000989c, 0x00000000},
658 {0x0000989c, 0x00000000 }, 663 {0x0000989c, 0x00000000},
659 {0x0000989c, 0x00000000 }, 664 {0x0000989c, 0x00000000},
660 {0x0000989c, 0x00000058 }, 665 {0x0000989c, 0x00000000},
661 {0x0000989c, 0x00000000 }, 666 {0x0000989c, 0x00000058},
662 {0x0000989c, 0x00000000 }, 667 {0x0000989c, 0x00000000},
663 {0x0000989c, 0x00000000 }, 668 {0x0000989c, 0x00000000},
664 {0x0000989c, 0x00000000 }, 669 {0x0000989c, 0x00000000},
665 {0x000098cc, 0x00000000 }, 670 {0x0000989c, 0x00000000},
666}; 671 {0x000098cc, 0x00000000},
667
668static const u32 ar5416Modes_9100[][6] = {
669 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 },
670 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 },
671 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 },
672 { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 },
673 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 },
674 { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf },
675 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 },
676 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 },
677 { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e },
678 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 },
679 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e },
680 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 },
681 { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 },
682 { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 },
683 { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 },
684 { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 },
685 { 0x00009850, 0x6d48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6d48b0e2, 0x6d48b0e2 },
686 { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec86d2e, 0x7ec84d2e, 0x7ec82d2e },
687 { 0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e },
688 { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 },
689 { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 },
690 { 0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0 },
691 { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 },
692 { 0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0 },
693 { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 },
694 { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a11, 0xd00a8a0d, 0xd00a8a0d },
695 { 0x00009940, 0x00754604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204 },
696 { 0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020 },
697 { 0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e },
698 { 0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff },
699#ifdef TB243
700 { 0x00009960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 },
701 { 0x0000a960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 },
702 { 0x0000b960, 0x00000900, 0x00000900, 0x00009b40, 0x00009b40, 0x00012d80 },
703 { 0x00009964, 0x00000000, 0x00000000, 0x00002210, 0x00002210, 0x00001120 },
704#else
705 { 0x00009960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 },
706 { 0x0000a960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 },
707 { 0x0000b960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0 },
708 { 0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120 },
709#endif
710 { 0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00 },
711 { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be },
712 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 },
713 { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 },
714 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 },
715 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 },
716 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
717 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
718 { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 },
719 { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 },
720 { 0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 },
721 { 0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 },
722 { 0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 },
723 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a },
724 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 },
725 { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa },
726 { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 },
727 { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 },
728 { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 },
729 { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b },
730 { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b },
731 { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a },
732 { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf },
733 { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f },
734 { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f },
735 { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f },
736 { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 },
737 { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
738 { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
739 { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
740}; 672};
741 673
742#endif /* INITVALS_AR5008_H */
diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
index ee34a495b0b..4a910b78de5 100644
--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
@@ -1495,121 +1495,25 @@ static bool ar5008_hw_ani_control_new(struct ath_hw *ah,
1495static void ar5008_hw_do_getnf(struct ath_hw *ah, 1495static void ar5008_hw_do_getnf(struct ath_hw *ah,
1496 int16_t nfarray[NUM_NF_READINGS]) 1496 int16_t nfarray[NUM_NF_READINGS])
1497{ 1497{
1498 struct ath_common *common = ath9k_hw_common(ah);
1499 int16_t nf; 1498 int16_t nf;
1500 1499
1501 nf = MS(REG_READ(ah, AR_PHY_CCA), AR_PHY_MINCCA_PWR); 1500 nf = MS(REG_READ(ah, AR_PHY_CCA), AR_PHY_MINCCA_PWR);
1502 if (nf & 0x100) 1501 nfarray[0] = sign_extend(nf, 9);
1503 nf = 0 - ((nf ^ 0x1ff) + 1);
1504 ath_print(common, ATH_DBG_CALIBRATE,
1505 "NF calibrated [ctl] [chain 0] is %d\n", nf);
1506 nfarray[0] = nf;
1507 1502
1508 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR_PHY_CH1_MINCCA_PWR); 1503 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR_PHY_CH1_MINCCA_PWR);
1509 if (nf & 0x100) 1504 nfarray[1] = sign_extend(nf, 9);
1510 nf = 0 - ((nf ^ 0x1ff) + 1);
1511 ath_print(common, ATH_DBG_CALIBRATE,
1512 "NF calibrated [ctl] [chain 1] is %d\n", nf);
1513 nfarray[1] = nf;
1514 1505
1515 nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); 1506 nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR);
1516 if (nf & 0x100) 1507 nfarray[2] = sign_extend(nf, 9);
1517 nf = 0 - ((nf ^ 0x1ff) + 1);
1518 ath_print(common, ATH_DBG_CALIBRATE,
1519 "NF calibrated [ctl] [chain 2] is %d\n", nf);
1520 nfarray[2] = nf;
1521 1508
1522 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); 1509 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
1523 if (nf & 0x100) 1510 nfarray[3] = sign_extend(nf, 9);
1524 nf = 0 - ((nf ^ 0x1ff) + 1);
1525 ath_print(common, ATH_DBG_CALIBRATE,
1526 "NF calibrated [ext] [chain 0] is %d\n", nf);
1527 nfarray[3] = nf;
1528 1511
1529 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR_PHY_CH1_EXT_MINCCA_PWR); 1512 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR_PHY_CH1_EXT_MINCCA_PWR);
1530 if (nf & 0x100) 1513 nfarray[4] = sign_extend(nf, 9);
1531 nf = 0 - ((nf ^ 0x1ff) + 1);
1532 ath_print(common, ATH_DBG_CALIBRATE,
1533 "NF calibrated [ext] [chain 1] is %d\n", nf);
1534 nfarray[4] = nf;
1535 1514
1536 nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA), AR_PHY_CH2_EXT_MINCCA_PWR); 1515 nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA), AR_PHY_CH2_EXT_MINCCA_PWR);
1537 if (nf & 0x100) 1516 nfarray[5] = sign_extend(nf, 9);
1538 nf = 0 - ((nf ^ 0x1ff) + 1);
1539 ath_print(common, ATH_DBG_CALIBRATE,
1540 "NF calibrated [ext] [chain 2] is %d\n", nf);
1541 nfarray[5] = nf;
1542}
1543
1544static void ar5008_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan)
1545{
1546 struct ath9k_nfcal_hist *h;
1547 int i, j;
1548 int32_t val;
1549 const u32 ar5416_cca_regs[6] = {
1550 AR_PHY_CCA,
1551 AR_PHY_CH1_CCA,
1552 AR_PHY_CH2_CCA,
1553 AR_PHY_EXT_CCA,
1554 AR_PHY_CH1_EXT_CCA,
1555 AR_PHY_CH2_EXT_CCA
1556 };
1557 u8 chainmask, rx_chain_status;
1558
1559 rx_chain_status = REG_READ(ah, AR_PHY_RX_CHAINMASK);
1560 if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
1561 chainmask = 0x9;
1562 else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) {
1563 if ((rx_chain_status & 0x2) || (rx_chain_status & 0x4))
1564 chainmask = 0x1B;
1565 else
1566 chainmask = 0x09;
1567 } else {
1568 if (rx_chain_status & 0x4)
1569 chainmask = 0x3F;
1570 else if (rx_chain_status & 0x2)
1571 chainmask = 0x1B;
1572 else
1573 chainmask = 0x09;
1574 }
1575
1576 h = ah->nfCalHist;
1577
1578 for (i = 0; i < NUM_NF_READINGS; i++) {
1579 if (chainmask & (1 << i)) {
1580 val = REG_READ(ah, ar5416_cca_regs[i]);
1581 val &= 0xFFFFFE00;
1582 val |= (((u32) (h[i].privNF) << 1) & 0x1ff);
1583 REG_WRITE(ah, ar5416_cca_regs[i], val);
1584 }
1585 }
1586
1587 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
1588 AR_PHY_AGC_CONTROL_ENABLE_NF);
1589 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
1590 AR_PHY_AGC_CONTROL_NO_UPDATE_NF);
1591 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF);
1592
1593 for (j = 0; j < 5; j++) {
1594 if ((REG_READ(ah, AR_PHY_AGC_CONTROL) &
1595 AR_PHY_AGC_CONTROL_NF) == 0)
1596 break;
1597 udelay(50);
1598 }
1599
1600 ENABLE_REGWRITE_BUFFER(ah);
1601
1602 for (i = 0; i < NUM_NF_READINGS; i++) {
1603 if (chainmask & (1 << i)) {
1604 val = REG_READ(ah, ar5416_cca_regs[i]);
1605 val &= 0xFFFFFE00;
1606 val |= (((u32) (-50) << 1) & 0x1ff);
1607 REG_WRITE(ah, ar5416_cca_regs[i], val);
1608 }
1609 }
1610
1611 REGWRITE_BUFFER_FLUSH(ah);
1612 DISABLE_REGWRITE_BUFFER(ah);
1613} 1517}
1614 1518
1615/* 1519/*
@@ -1676,10 +1580,27 @@ static void ar5008_hw_ani_cache_ini_regs(struct ath_hw *ah)
1676 aniState->cycleCount = 0; 1580 aniState->cycleCount = 0;
1677} 1581}
1678 1582
1583static void ar5008_hw_set_nf_limits(struct ath_hw *ah)
1584{
1585 ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_2GHZ;
1586 ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_2GHZ;
1587 ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_5416_2GHZ;
1588 ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_5GHZ;
1589 ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_5GHZ;
1590 ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_5416_5GHZ;
1591}
1679 1592
1680void ar5008_hw_attach_phy_ops(struct ath_hw *ah) 1593void ar5008_hw_attach_phy_ops(struct ath_hw *ah)
1681{ 1594{
1682 struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); 1595 struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah);
1596 const u32 ar5416_cca_regs[6] = {
1597 AR_PHY_CCA,
1598 AR_PHY_CH1_CCA,
1599 AR_PHY_CH2_CCA,
1600 AR_PHY_EXT_CCA,
1601 AR_PHY_CH1_EXT_CCA,
1602 AR_PHY_CH2_EXT_CCA
1603 };
1683 1604
1684 priv_ops->rf_set_freq = ar5008_hw_set_channel; 1605 priv_ops->rf_set_freq = ar5008_hw_set_channel;
1685 priv_ops->spur_mitigate_freq = ar5008_hw_spur_mitigate; 1606 priv_ops->spur_mitigate_freq = ar5008_hw_spur_mitigate;
@@ -1699,7 +1620,6 @@ void ar5008_hw_attach_phy_ops(struct ath_hw *ah)
1699 priv_ops->restore_chainmask = ar5008_restore_chainmask; 1620 priv_ops->restore_chainmask = ar5008_restore_chainmask;
1700 priv_ops->set_diversity = ar5008_set_diversity; 1621 priv_ops->set_diversity = ar5008_set_diversity;
1701 priv_ops->do_getnf = ar5008_hw_do_getnf; 1622 priv_ops->do_getnf = ar5008_hw_do_getnf;
1702 priv_ops->loadnf = ar5008_hw_loadnf;
1703 1623
1704 if (modparam_force_new_ani) { 1624 if (modparam_force_new_ani) {
1705 priv_ops->ani_control = ar5008_hw_ani_control_new; 1625 priv_ops->ani_control = ar5008_hw_ani_control_new;
@@ -1713,4 +1633,7 @@ void ar5008_hw_attach_phy_ops(struct ath_hw *ah)
1713 priv_ops->compute_pll_control = ar9160_hw_compute_pll_control; 1633 priv_ops->compute_pll_control = ar9160_hw_compute_pll_control;
1714 else 1634 else
1715 priv_ops->compute_pll_control = ar5008_hw_compute_pll_control; 1635 priv_ops->compute_pll_control = ar5008_hw_compute_pll_control;
1636
1637 ar5008_hw_set_nf_limits(ah);
1638 memcpy(ah->nf_regs, ar5416_cca_regs, sizeof(ah->nf_regs));
1716} 1639}
diff --git a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h
index 0b94bd385b0..69a94c7e45c 100644
--- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h
@@ -1,1254 +1,1357 @@
1/*
2 * Copyright (c) 2010 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17static const u32 ar5416Modes_9100[][6] = {
18 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
19 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
20 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
21 {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008},
22 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
23 {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf},
24 {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810},
25 {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a},
26 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
27 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
28 {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
29 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
30 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
31 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
32 {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0},
33 {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
34 {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
35 {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
36 {0x00009850, 0x6c48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6c48b0e2, 0x6c48b0e2},
37 {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e},
38 {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e},
39 {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18},
40 {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
41 {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0},
42 {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081},
43 {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
44 {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016},
45 {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d},
46 {0x00009940, 0x00750604, 0x00754604, 0xfff81204, 0xfff81204, 0xfff81204},
47 {0x00009944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020},
48 {0x00009954, 0x5f3ca3de, 0x5f3ca3de, 0xe250a51e, 0xe250a51e, 0xe250a51e},
49 {0x00009958, 0x2108ecff, 0x2108ecff, 0x3388ffff, 0x3388ffff, 0x3388ffff},
50 {0x00009960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0},
51 {0x0000a960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0},
52 {0x0000b960, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0, 0x0001bfc0},
53 {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120},
54 {0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a1000, 0x001a0c00, 0x001a0c00},
55 {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be},
56 {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
57 {0x000099c8, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329},
58 {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
59 {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
60 {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
61 {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
62 {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880},
63 {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788},
64 {0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120},
65 {0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120},
66 {0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120},
67 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
68 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
69 {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa},
70 {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000},
71 {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402},
72 {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06},
73 {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b},
74 {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b},
75 {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a},
76 {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf},
77 {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f},
78 {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f},
79 {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f},
80 {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000},
81 {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
82 {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
83 {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
84};
1 85
2static const u32 ar5416Common_9100[][2] = { 86static const u32 ar5416Common_9100[][2] = {
3 { 0x0000000c, 0x00000000 }, 87 /* Addr allmodes */
4 { 0x00000030, 0x00020015 }, 88 {0x0000000c, 0x00000000},
5 { 0x00000034, 0x00000005 }, 89 {0x00000030, 0x00020015},
6 { 0x00000040, 0x00000000 }, 90 {0x00000034, 0x00000005},
7 { 0x00000044, 0x00000008 }, 91 {0x00000040, 0x00000000},
8 { 0x00000048, 0x00000008 }, 92 {0x00000044, 0x00000008},
9 { 0x0000004c, 0x00000010 }, 93 {0x00000048, 0x00000008},
10 { 0x00000050, 0x00000000 }, 94 {0x0000004c, 0x00000010},
11 { 0x00000054, 0x0000001f }, 95 {0x00000050, 0x00000000},
12 { 0x00000800, 0x00000000 }, 96 {0x00000054, 0x0000001f},
13 { 0x00000804, 0x00000000 }, 97 {0x00000800, 0x00000000},
14 { 0x00000808, 0x00000000 }, 98 {0x00000804, 0x00000000},
15 { 0x0000080c, 0x00000000 }, 99 {0x00000808, 0x00000000},
16 { 0x00000810, 0x00000000 }, 100 {0x0000080c, 0x00000000},
17 { 0x00000814, 0x00000000 }, 101 {0x00000810, 0x00000000},
18 { 0x00000818, 0x00000000 }, 102 {0x00000814, 0x00000000},
19 { 0x0000081c, 0x00000000 }, 103 {0x00000818, 0x00000000},
20 { 0x00000820, 0x00000000 }, 104 {0x0000081c, 0x00000000},
21 { 0x00000824, 0x00000000 }, 105 {0x00000820, 0x00000000},
22 { 0x00001040, 0x002ffc0f }, 106 {0x00000824, 0x00000000},
23 { 0x00001044, 0x002ffc0f }, 107 {0x00001040, 0x002ffc0f},
24 { 0x00001048, 0x002ffc0f }, 108 {0x00001044, 0x002ffc0f},
25 { 0x0000104c, 0x002ffc0f }, 109 {0x00001048, 0x002ffc0f},
26 { 0x00001050, 0x002ffc0f }, 110 {0x0000104c, 0x002ffc0f},
27 { 0x00001054, 0x002ffc0f }, 111 {0x00001050, 0x002ffc0f},
28 { 0x00001058, 0x002ffc0f }, 112 {0x00001054, 0x002ffc0f},
29 { 0x0000105c, 0x002ffc0f }, 113 {0x00001058, 0x002ffc0f},
30 { 0x00001060, 0x002ffc0f }, 114 {0x0000105c, 0x002ffc0f},
31 { 0x00001064, 0x002ffc0f }, 115 {0x00001060, 0x002ffc0f},
32 { 0x00001230, 0x00000000 }, 116 {0x00001064, 0x002ffc0f},
33 { 0x00001270, 0x00000000 }, 117 {0x00001230, 0x00000000},
34 { 0x00001038, 0x00000000 }, 118 {0x00001270, 0x00000000},
35 { 0x00001078, 0x00000000 }, 119 {0x00001038, 0x00000000},
36 { 0x000010b8, 0x00000000 }, 120 {0x00001078, 0x00000000},
37 { 0x000010f8, 0x00000000 }, 121 {0x000010b8, 0x00000000},
38 { 0x00001138, 0x00000000 }, 122 {0x000010f8, 0x00000000},
39 { 0x00001178, 0x00000000 }, 123 {0x00001138, 0x00000000},
40 { 0x000011b8, 0x00000000 }, 124 {0x00001178, 0x00000000},
41 { 0x000011f8, 0x00000000 }, 125 {0x000011b8, 0x00000000},
42 { 0x00001238, 0x00000000 }, 126 {0x000011f8, 0x00000000},
43 { 0x00001278, 0x00000000 }, 127 {0x00001238, 0x00000000},
44 { 0x000012b8, 0x00000000 }, 128 {0x00001278, 0x00000000},
45 { 0x000012f8, 0x00000000 }, 129 {0x000012b8, 0x00000000},
46 { 0x00001338, 0x00000000 }, 130 {0x000012f8, 0x00000000},
47 { 0x00001378, 0x00000000 }, 131 {0x00001338, 0x00000000},
48 { 0x000013b8, 0x00000000 }, 132 {0x00001378, 0x00000000},
49 { 0x000013f8, 0x00000000 }, 133 {0x000013b8, 0x00000000},
50 { 0x00001438, 0x00000000 }, 134 {0x000013f8, 0x00000000},
51 { 0x00001478, 0x00000000 }, 135 {0x00001438, 0x00000000},
52 { 0x000014b8, 0x00000000 }, 136 {0x00001478, 0x00000000},
53 { 0x000014f8, 0x00000000 }, 137 {0x000014b8, 0x00000000},
54 { 0x00001538, 0x00000000 }, 138 {0x000014f8, 0x00000000},
55 { 0x00001578, 0x00000000 }, 139 {0x00001538, 0x00000000},
56 { 0x000015b8, 0x00000000 }, 140 {0x00001578, 0x00000000},
57 { 0x000015f8, 0x00000000 }, 141 {0x000015b8, 0x00000000},
58 { 0x00001638, 0x00000000 }, 142 {0x000015f8, 0x00000000},
59 { 0x00001678, 0x00000000 }, 143 {0x00001638, 0x00000000},
60 { 0x000016b8, 0x00000000 }, 144 {0x00001678, 0x00000000},
61 { 0x000016f8, 0x00000000 }, 145 {0x000016b8, 0x00000000},
62 { 0x00001738, 0x00000000 }, 146 {0x000016f8, 0x00000000},
63 { 0x00001778, 0x00000000 }, 147 {0x00001738, 0x00000000},
64 { 0x000017b8, 0x00000000 }, 148 {0x00001778, 0x00000000},
65 { 0x000017f8, 0x00000000 }, 149 {0x000017b8, 0x00000000},
66 { 0x0000103c, 0x00000000 }, 150 {0x000017f8, 0x00000000},
67 { 0x0000107c, 0x00000000 }, 151 {0x0000103c, 0x00000000},
68 { 0x000010bc, 0x00000000 }, 152 {0x0000107c, 0x00000000},
69 { 0x000010fc, 0x00000000 }, 153 {0x000010bc, 0x00000000},
70 { 0x0000113c, 0x00000000 }, 154 {0x000010fc, 0x00000000},
71 { 0x0000117c, 0x00000000 }, 155 {0x0000113c, 0x00000000},
72 { 0x000011bc, 0x00000000 }, 156 {0x0000117c, 0x00000000},
73 { 0x000011fc, 0x00000000 }, 157 {0x000011bc, 0x00000000},
74 { 0x0000123c, 0x00000000 }, 158 {0x000011fc, 0x00000000},
75 { 0x0000127c, 0x00000000 }, 159 {0x0000123c, 0x00000000},
76 { 0x000012bc, 0x00000000 }, 160 {0x0000127c, 0x00000000},
77 { 0x000012fc, 0x00000000 }, 161 {0x000012bc, 0x00000000},
78 { 0x0000133c, 0x00000000 }, 162 {0x000012fc, 0x00000000},
79 { 0x0000137c, 0x00000000 }, 163 {0x0000133c, 0x00000000},
80 { 0x000013bc, 0x00000000 }, 164 {0x0000137c, 0x00000000},
81 { 0x000013fc, 0x00000000 }, 165 {0x000013bc, 0x00000000},
82 { 0x0000143c, 0x00000000 }, 166 {0x000013fc, 0x00000000},
83 { 0x0000147c, 0x00000000 }, 167 {0x0000143c, 0x00000000},
84 { 0x00020010, 0x00000003 }, 168 {0x0000147c, 0x00000000},
85 { 0x00020038, 0x000004c2 }, 169 {0x00020010, 0x00000003},
86 { 0x00008004, 0x00000000 }, 170 {0x00020038, 0x000004c2},
87 { 0x00008008, 0x00000000 }, 171 {0x00008004, 0x00000000},
88 { 0x0000800c, 0x00000000 }, 172 {0x00008008, 0x00000000},
89 { 0x00008018, 0x00000700 }, 173 {0x0000800c, 0x00000000},
90 { 0x00008020, 0x00000000 }, 174 {0x00008018, 0x00000700},
91 { 0x00008038, 0x00000000 }, 175 {0x00008020, 0x00000000},
92 { 0x0000803c, 0x00000000 }, 176 {0x00008038, 0x00000000},
93 { 0x00008048, 0x40000000 }, 177 {0x0000803c, 0x00000000},
94 { 0x00008054, 0x00004000 }, 178 {0x00008048, 0x40000000},
95 { 0x00008058, 0x00000000 }, 179 {0x00008054, 0x00004000},
96 { 0x0000805c, 0x000fc78f }, 180 {0x00008058, 0x00000000},
97 { 0x00008060, 0x0000000f }, 181 {0x0000805c, 0x000fc78f},
98 { 0x00008064, 0x00000000 }, 182 {0x00008060, 0x0000000f},
99 { 0x000080c0, 0x2a82301a }, 183 {0x00008064, 0x00000000},
100 { 0x000080c4, 0x05dc01e0 }, 184 {0x000080c0, 0x2a82301a},
101 { 0x000080c8, 0x1f402710 }, 185 {0x000080c4, 0x05dc01e0},
102 { 0x000080cc, 0x01f40000 }, 186 {0x000080c8, 0x1f402710},
103 { 0x000080d0, 0x00001e00 }, 187 {0x000080cc, 0x01f40000},
104 { 0x000080d4, 0x00000000 }, 188 {0x000080d0, 0x00001e00},
105 { 0x000080d8, 0x00400000 }, 189 {0x000080d4, 0x00000000},
106 { 0x000080e0, 0xffffffff }, 190 {0x000080d8, 0x00400000},
107 { 0x000080e4, 0x0000ffff }, 191 {0x000080e0, 0xffffffff},
108 { 0x000080e8, 0x003f3f3f }, 192 {0x000080e4, 0x0000ffff},
109 { 0x000080ec, 0x00000000 }, 193 {0x000080e8, 0x003f3f3f},
110 { 0x000080f0, 0x00000000 }, 194 {0x000080ec, 0x00000000},
111 { 0x000080f4, 0x00000000 }, 195 {0x000080f0, 0x00000000},
112 { 0x000080f8, 0x00000000 }, 196 {0x000080f4, 0x00000000},
113 { 0x000080fc, 0x00020000 }, 197 {0x000080f8, 0x00000000},
114 { 0x00008100, 0x00020000 }, 198 {0x000080fc, 0x00020000},
115 { 0x00008104, 0x00000001 }, 199 {0x00008100, 0x00020000},
116 { 0x00008108, 0x00000052 }, 200 {0x00008104, 0x00000001},
117 { 0x0000810c, 0x00000000 }, 201 {0x00008108, 0x00000052},
118 { 0x00008110, 0x00000168 }, 202 {0x0000810c, 0x00000000},
119 { 0x00008118, 0x000100aa }, 203 {0x00008110, 0x00000168},
120 { 0x0000811c, 0x00003210 }, 204 {0x00008118, 0x000100aa},
121 { 0x00008120, 0x08f04800 }, 205 {0x0000811c, 0x00003210},
122 { 0x00008124, 0x00000000 }, 206 {0x00008120, 0x08f04800},
123 { 0x00008128, 0x00000000 }, 207 {0x00008124, 0x00000000},
124 { 0x0000812c, 0x00000000 }, 208 {0x00008128, 0x00000000},
125 { 0x00008130, 0x00000000 }, 209 {0x0000812c, 0x00000000},
126 { 0x00008134, 0x00000000 }, 210 {0x00008130, 0x00000000},
127 { 0x00008138, 0x00000000 }, 211 {0x00008134, 0x00000000},
128 { 0x0000813c, 0x00000000 }, 212 {0x00008138, 0x00000000},
129 { 0x00008144, 0x00000000 }, 213 {0x0000813c, 0x00000000},
130 { 0x00008168, 0x00000000 }, 214 {0x00008144, 0x00000000},
131 { 0x0000816c, 0x00000000 }, 215 {0x00008168, 0x00000000},
132 { 0x00008170, 0x32143320 }, 216 {0x0000816c, 0x00000000},
133 { 0x00008174, 0xfaa4fa50 }, 217 {0x00008170, 0x32143320},
134 { 0x00008178, 0x00000100 }, 218 {0x00008174, 0xfaa4fa50},
135 { 0x0000817c, 0x00000000 }, 219 {0x00008178, 0x00000100},
136 { 0x000081c4, 0x00000000 }, 220 {0x0000817c, 0x00000000},
137 { 0x000081d0, 0x00003210 }, 221 {0x000081c4, 0x00000000},
138 { 0x000081ec, 0x00000000 }, 222 {0x000081d0, 0x00003210},
139 { 0x000081f0, 0x00000000 }, 223 {0x000081ec, 0x00000000},
140 { 0x000081f4, 0x00000000 }, 224 {0x000081f0, 0x00000000},
141 { 0x000081f8, 0x00000000 }, 225 {0x000081f4, 0x00000000},
142 { 0x000081fc, 0x00000000 }, 226 {0x000081f8, 0x00000000},
143 { 0x00008200, 0x00000000 }, 227 {0x000081fc, 0x00000000},
144 { 0x00008204, 0x00000000 }, 228 {0x00008200, 0x00000000},
145 { 0x00008208, 0x00000000 }, 229 {0x00008204, 0x00000000},
146 { 0x0000820c, 0x00000000 }, 230 {0x00008208, 0x00000000},
147 { 0x00008210, 0x00000000 }, 231 {0x0000820c, 0x00000000},
148 { 0x00008214, 0x00000000 }, 232 {0x00008210, 0x00000000},
149 { 0x00008218, 0x00000000 }, 233 {0x00008214, 0x00000000},
150 { 0x0000821c, 0x00000000 }, 234 {0x00008218, 0x00000000},
151 { 0x00008220, 0x00000000 }, 235 {0x0000821c, 0x00000000},
152 { 0x00008224, 0x00000000 }, 236 {0x00008220, 0x00000000},
153 { 0x00008228, 0x00000000 }, 237 {0x00008224, 0x00000000},
154 { 0x0000822c, 0x00000000 }, 238 {0x00008228, 0x00000000},
155 { 0x00008230, 0x00000000 }, 239 {0x0000822c, 0x00000000},
156 { 0x00008234, 0x00000000 }, 240 {0x00008230, 0x00000000},
157 { 0x00008238, 0x00000000 }, 241 {0x00008234, 0x00000000},
158 { 0x0000823c, 0x00000000 }, 242 {0x00008238, 0x00000000},
159 { 0x00008240, 0x00100000 }, 243 {0x0000823c, 0x00000000},
160 { 0x00008244, 0x0010f400 }, 244 {0x00008240, 0x00100000},
161 { 0x00008248, 0x00000100 }, 245 {0x00008244, 0x0010f400},
162 { 0x0000824c, 0x0001e800 }, 246 {0x00008248, 0x00000100},
163 { 0x00008250, 0x00000000 }, 247 {0x0000824c, 0x0001e800},
164 { 0x00008254, 0x00000000 }, 248 {0x00008250, 0x00000000},
165 { 0x00008258, 0x00000000 }, 249 {0x00008254, 0x00000000},
166 { 0x0000825c, 0x400000ff }, 250 {0x00008258, 0x00000000},
167 { 0x00008260, 0x00080922 }, 251 {0x0000825c, 0x400000ff},
168 { 0x00008270, 0x00000000 }, 252 {0x00008260, 0x00080922},
169 { 0x00008274, 0x40000000 }, 253 {0x00008270, 0x00000000},
170 { 0x00008278, 0x003e4180 }, 254 {0x00008274, 0x40000000},
171 { 0x0000827c, 0x00000000 }, 255 {0x00008278, 0x003e4180},
172 { 0x00008284, 0x0000002c }, 256 {0x0000827c, 0x00000000},
173 { 0x00008288, 0x0000002c }, 257 {0x00008284, 0x0000002c},
174 { 0x0000828c, 0x00000000 }, 258 {0x00008288, 0x0000002c},
175 { 0x00008294, 0x00000000 }, 259 {0x0000828c, 0x00000000},
176 { 0x00008298, 0x00000000 }, 260 {0x00008294, 0x00000000},
177 { 0x00008300, 0x00000000 }, 261 {0x00008298, 0x00000000},
178 { 0x00008304, 0x00000000 }, 262 {0x00008300, 0x00000000},
179 { 0x00008308, 0x00000000 }, 263 {0x00008304, 0x00000000},
180 { 0x0000830c, 0x00000000 }, 264 {0x00008308, 0x00000000},
181 { 0x00008310, 0x00000000 }, 265 {0x0000830c, 0x00000000},
182 { 0x00008314, 0x00000000 }, 266 {0x00008310, 0x00000000},
183 { 0x00008318, 0x00000000 }, 267 {0x00008314, 0x00000000},
184 { 0x00008328, 0x00000000 }, 268 {0x00008318, 0x00000000},
185 { 0x0000832c, 0x00000007 }, 269 {0x00008328, 0x00000000},
186 { 0x00008330, 0x00000302 }, 270 {0x0000832c, 0x00000007},
187 { 0x00008334, 0x00000e00 }, 271 {0x00008330, 0x00000302},
188 { 0x00008338, 0x00000000 }, 272 {0x00008334, 0x00000e00},
189 { 0x0000833c, 0x00000000 }, 273 {0x00008338, 0x00000000},
190 { 0x00008340, 0x000107ff }, 274 {0x0000833c, 0x00000000},
191 { 0x00009808, 0x00000000 }, 275 {0x00008340, 0x000107ff},
192 { 0x0000980c, 0xad848e19 }, 276 {0x00009808, 0x00000000},
193 { 0x00009810, 0x7d14e000 }, 277 {0x0000980c, 0xad848e19},
194 { 0x00009814, 0x9c0a9f6b }, 278 {0x00009810, 0x7d14e000},
195 { 0x0000981c, 0x00000000 }, 279 {0x00009814, 0x9c0a9f6b},
196 { 0x0000982c, 0x0000a000 }, 280 {0x0000981c, 0x00000000},
197 { 0x00009830, 0x00000000 }, 281 {0x0000982c, 0x0000a000},
198 { 0x0000983c, 0x00200400 }, 282 {0x00009830, 0x00000000},
199 { 0x00009840, 0x206a01ae }, 283 {0x0000983c, 0x00200400},
200 { 0x0000984c, 0x1284233c }, 284 {0x00009840, 0x206a01ae},
201 { 0x00009854, 0x00000859 }, 285 {0x0000984c, 0x1284233c},
202 { 0x00009900, 0x00000000 }, 286 {0x00009854, 0x00000859},
203 { 0x00009904, 0x00000000 }, 287 {0x00009900, 0x00000000},
204 { 0x00009908, 0x00000000 }, 288 {0x00009904, 0x00000000},
205 { 0x0000990c, 0x00000000 }, 289 {0x00009908, 0x00000000},
206 { 0x0000991c, 0x10000fff }, 290 {0x0000990c, 0x00000000},
207 { 0x00009920, 0x05100000 }, 291 {0x0000991c, 0x10000fff},
208 { 0x0000a920, 0x05100000 }, 292 {0x00009920, 0x05100000},
209 { 0x0000b920, 0x05100000 }, 293 {0x0000a920, 0x05100000},
210 { 0x00009928, 0x00000001 }, 294 {0x0000b920, 0x05100000},
211 { 0x0000992c, 0x00000004 }, 295 {0x00009928, 0x00000001},
212 { 0x00009934, 0x1e1f2022 }, 296 {0x0000992c, 0x00000004},
213 { 0x00009938, 0x0a0b0c0d }, 297 {0x00009934, 0x1e1f2022},
214 { 0x0000993c, 0x00000000 }, 298 {0x00009938, 0x0a0b0c0d},
215 { 0x00009948, 0x9280b212 }, 299 {0x0000993c, 0x00000000},
216 { 0x0000994c, 0x00020028 }, 300 {0x00009948, 0x9280b212},
217 { 0x0000c95c, 0x004b6a8e }, 301 {0x0000994c, 0x00020028},
218 { 0x0000c968, 0x000003ce }, 302 {0x0000c95c, 0x004b6a8e},
219 { 0x00009970, 0x190fb515 }, 303 {0x0000c968, 0x000003ce},
220 { 0x00009974, 0x00000000 }, 304 {0x00009970, 0x190fb515},
221 { 0x00009978, 0x00000001 }, 305 {0x00009974, 0x00000000},
222 { 0x0000997c, 0x00000000 }, 306 {0x00009978, 0x00000001},
223 { 0x00009980, 0x00000000 }, 307 {0x0000997c, 0x00000000},
224 { 0x00009984, 0x00000000 }, 308 {0x00009980, 0x00000000},
225 { 0x00009988, 0x00000000 }, 309 {0x00009984, 0x00000000},
226 { 0x0000998c, 0x00000000 }, 310 {0x00009988, 0x00000000},
227 { 0x00009990, 0x00000000 }, 311 {0x0000998c, 0x00000000},
228 { 0x00009994, 0x00000000 }, 312 {0x00009990, 0x00000000},
229 { 0x00009998, 0x00000000 }, 313 {0x00009994, 0x00000000},
230 { 0x0000999c, 0x00000000 }, 314 {0x00009998, 0x00000000},
231 { 0x000099a0, 0x00000000 }, 315 {0x0000999c, 0x00000000},
232 { 0x000099a4, 0x00000001 }, 316 {0x000099a0, 0x00000000},
233 { 0x000099a8, 0x201fff00 }, 317 {0x000099a4, 0x00000001},
234 { 0x000099ac, 0x006f0000 }, 318 {0x000099a8, 0x201fff00},
235 { 0x000099b0, 0x03051000 }, 319 {0x000099ac, 0x006f0000},
236 { 0x000099dc, 0x00000000 }, 320 {0x000099b0, 0x03051000},
237 { 0x000099e0, 0x00000200 }, 321 {0x000099dc, 0x00000000},
238 { 0x000099e4, 0xaaaaaaaa }, 322 {0x000099e0, 0x00000200},
239 { 0x000099e8, 0x3c466478 }, 323 {0x000099e4, 0xaaaaaaaa},
240 { 0x000099ec, 0x0cc80caa }, 324 {0x000099e8, 0x3c466478},
241 { 0x000099fc, 0x00001042 }, 325 {0x000099ec, 0x0cc80caa},
242 { 0x00009b00, 0x00000000 }, 326 {0x000099fc, 0x00001042},
243 { 0x00009b04, 0x00000001 }, 327 {0x00009b00, 0x00000000},
244 { 0x00009b08, 0x00000002 }, 328 {0x00009b04, 0x00000001},
245 { 0x00009b0c, 0x00000003 }, 329 {0x00009b08, 0x00000002},
246 { 0x00009b10, 0x00000004 }, 330 {0x00009b0c, 0x00000003},
247 { 0x00009b14, 0x00000005 }, 331 {0x00009b10, 0x00000004},
248 { 0x00009b18, 0x00000008 }, 332 {0x00009b14, 0x00000005},
249 { 0x00009b1c, 0x00000009 }, 333 {0x00009b18, 0x00000008},
250 { 0x00009b20, 0x0000000a }, 334 {0x00009b1c, 0x00000009},
251 { 0x00009b24, 0x0000000b }, 335 {0x00009b20, 0x0000000a},
252 { 0x00009b28, 0x0000000c }, 336 {0x00009b24, 0x0000000b},
253 { 0x00009b2c, 0x0000000d }, 337 {0x00009b28, 0x0000000c},
254 { 0x00009b30, 0x00000010 }, 338 {0x00009b2c, 0x0000000d},
255 { 0x00009b34, 0x00000011 }, 339 {0x00009b30, 0x00000010},
256 { 0x00009b38, 0x00000012 }, 340 {0x00009b34, 0x00000011},
257 { 0x00009b3c, 0x00000013 }, 341 {0x00009b38, 0x00000012},
258 { 0x00009b40, 0x00000014 }, 342 {0x00009b3c, 0x00000013},
259 { 0x00009b44, 0x00000015 }, 343 {0x00009b40, 0x00000014},
260 { 0x00009b48, 0x00000018 }, 344 {0x00009b44, 0x00000015},
261 { 0x00009b4c, 0x00000019 }, 345 {0x00009b48, 0x00000018},
262 { 0x00009b50, 0x0000001a }, 346 {0x00009b4c, 0x00000019},
263 { 0x00009b54, 0x0000001b }, 347 {0x00009b50, 0x0000001a},
264 { 0x00009b58, 0x0000001c }, 348 {0x00009b54, 0x0000001b},
265 { 0x00009b5c, 0x0000001d }, 349 {0x00009b58, 0x0000001c},
266 { 0x00009b60, 0x00000020 }, 350 {0x00009b5c, 0x0000001d},
267 { 0x00009b64, 0x00000021 }, 351 {0x00009b60, 0x00000020},
268 { 0x00009b68, 0x00000022 }, 352 {0x00009b64, 0x00000021},
269 { 0x00009b6c, 0x00000023 }, 353 {0x00009b68, 0x00000022},
270 { 0x00009b70, 0x00000024 }, 354 {0x00009b6c, 0x00000023},
271 { 0x00009b74, 0x00000025 }, 355 {0x00009b70, 0x00000024},
272 { 0x00009b78, 0x00000028 }, 356 {0x00009b74, 0x00000025},
273 { 0x00009b7c, 0x00000029 }, 357 {0x00009b78, 0x00000028},
274 { 0x00009b80, 0x0000002a }, 358 {0x00009b7c, 0x00000029},
275 { 0x00009b84, 0x0000002b }, 359 {0x00009b80, 0x0000002a},
276 { 0x00009b88, 0x0000002c }, 360 {0x00009b84, 0x0000002b},
277 { 0x00009b8c, 0x0000002d }, 361 {0x00009b88, 0x0000002c},
278 { 0x00009b90, 0x00000030 }, 362 {0x00009b8c, 0x0000002d},
279 { 0x00009b94, 0x00000031 }, 363 {0x00009b90, 0x00000030},
280 { 0x00009b98, 0x00000032 }, 364 {0x00009b94, 0x00000031},
281 { 0x00009b9c, 0x00000033 }, 365 {0x00009b98, 0x00000032},
282 { 0x00009ba0, 0x00000034 }, 366 {0x00009b9c, 0x00000033},
283 { 0x00009ba4, 0x00000035 }, 367 {0x00009ba0, 0x00000034},
284 { 0x00009ba8, 0x00000035 }, 368 {0x00009ba4, 0x00000035},
285 { 0x00009bac, 0x00000035 }, 369 {0x00009ba8, 0x00000035},
286 { 0x00009bb0, 0x00000035 }, 370 {0x00009bac, 0x00000035},
287 { 0x00009bb4, 0x00000035 }, 371 {0x00009bb0, 0x00000035},
288 { 0x00009bb8, 0x00000035 }, 372 {0x00009bb4, 0x00000035},
289 { 0x00009bbc, 0x00000035 }, 373 {0x00009bb8, 0x00000035},
290 { 0x00009bc0, 0x00000035 }, 374 {0x00009bbc, 0x00000035},
291 { 0x00009bc4, 0x00000035 }, 375 {0x00009bc0, 0x00000035},
292 { 0x00009bc8, 0x00000035 }, 376 {0x00009bc4, 0x00000035},
293 { 0x00009bcc, 0x00000035 }, 377 {0x00009bc8, 0x00000035},
294 { 0x00009bd0, 0x00000035 }, 378 {0x00009bcc, 0x00000035},
295 { 0x00009bd4, 0x00000035 }, 379 {0x00009bd0, 0x00000035},
296 { 0x00009bd8, 0x00000035 }, 380 {0x00009bd4, 0x00000035},
297 { 0x00009bdc, 0x00000035 }, 381 {0x00009bd8, 0x00000035},
298 { 0x00009be0, 0x00000035 }, 382 {0x00009bdc, 0x00000035},
299 { 0x00009be4, 0x00000035 }, 383 {0x00009be0, 0x00000035},
300 { 0x00009be8, 0x00000035 }, 384 {0x00009be4, 0x00000035},
301 { 0x00009bec, 0x00000035 }, 385 {0x00009be8, 0x00000035},
302 { 0x00009bf0, 0x00000035 }, 386 {0x00009bec, 0x00000035},
303 { 0x00009bf4, 0x00000035 }, 387 {0x00009bf0, 0x00000035},
304 { 0x00009bf8, 0x00000010 }, 388 {0x00009bf4, 0x00000035},
305 { 0x00009bfc, 0x0000001a }, 389 {0x00009bf8, 0x00000010},
306 { 0x0000a210, 0x40806333 }, 390 {0x00009bfc, 0x0000001a},
307 { 0x0000a214, 0x00106c10 }, 391 {0x0000a210, 0x40806333},
308 { 0x0000a218, 0x009c4060 }, 392 {0x0000a214, 0x00106c10},
309 { 0x0000a220, 0x018830c6 }, 393 {0x0000a218, 0x009c4060},
310 { 0x0000a224, 0x00000400 }, 394 {0x0000a220, 0x018830c6},
311 { 0x0000a228, 0x001a0bb5 }, 395 {0x0000a224, 0x00000400},
312 { 0x0000a22c, 0x00000000 }, 396 {0x0000a228, 0x001a0bb5},
313 { 0x0000a234, 0x20202020 }, 397 {0x0000a22c, 0x00000000},
314 { 0x0000a238, 0x20202020 }, 398 {0x0000a234, 0x20202020},
315 { 0x0000a23c, 0x13c889ae }, 399 {0x0000a238, 0x20202020},
316 { 0x0000a240, 0x38490a20 }, 400 {0x0000a23c, 0x13c889af},
317 { 0x0000a244, 0x00007bb6 }, 401 {0x0000a240, 0x38490a20},
318 { 0x0000a248, 0x0fff3ffc }, 402 {0x0000a244, 0x00007bb6},
319 { 0x0000a24c, 0x00000001 }, 403 {0x0000a248, 0x0fff3ffc},
320 { 0x0000a250, 0x0000a000 }, 404 {0x0000a24c, 0x00000001},
321 { 0x0000a254, 0x00000000 }, 405 {0x0000a250, 0x0000e000},
322 { 0x0000a258, 0x0cc75380 }, 406 {0x0000a254, 0x00000000},
323 { 0x0000a25c, 0x0f0f0f01 }, 407 {0x0000a258, 0x0cc75380},
324 { 0x0000a260, 0xdfa91f01 }, 408 {0x0000a25c, 0x0f0f0f01},
325 { 0x0000a268, 0x00000001 }, 409 {0x0000a260, 0xdfa91f01},
326 { 0x0000a26c, 0x0ebae9c6 }, 410 {0x0000a268, 0x00000001},
327 { 0x0000b26c, 0x0ebae9c6 }, 411 {0x0000a26c, 0x0ebae9c6},
328 { 0x0000c26c, 0x0ebae9c6 }, 412 {0x0000b26c, 0x0ebae9c6},
329 { 0x0000d270, 0x00820820 }, 413 {0x0000c26c, 0x0ebae9c6},
330 { 0x0000a278, 0x1ce739ce }, 414 {0x0000d270, 0x00820820},
331 { 0x0000a27c, 0x050701ce }, 415 {0x0000a278, 0x1ce739ce},
332 { 0x0000a338, 0x00000000 }, 416 {0x0000a27c, 0x050701ce},
333 { 0x0000a33c, 0x00000000 }, 417 {0x0000a338, 0x00000000},
334 { 0x0000a340, 0x00000000 }, 418 {0x0000a33c, 0x00000000},
335 { 0x0000a344, 0x00000000 }, 419 {0x0000a340, 0x00000000},
336 { 0x0000a348, 0x3fffffff }, 420 {0x0000a344, 0x00000000},
337 { 0x0000a34c, 0x3fffffff }, 421 {0x0000a348, 0x3fffffff},
338 { 0x0000a350, 0x3fffffff }, 422 {0x0000a34c, 0x3fffffff},
339 { 0x0000a354, 0x0003ffff }, 423 {0x0000a350, 0x3fffffff},
340 { 0x0000a358, 0x79a8aa33 }, 424 {0x0000a354, 0x0003ffff},
341 { 0x0000d35c, 0x07ffffef }, 425 {0x0000a358, 0x79a8aa33},
342 { 0x0000d360, 0x0fffffe7 }, 426 {0x0000d35c, 0x07ffffef},
343 { 0x0000d364, 0x17ffffe5 }, 427 {0x0000d360, 0x0fffffe7},
344 { 0x0000d368, 0x1fffffe4 }, 428 {0x0000d364, 0x17ffffe5},
345 { 0x0000d36c, 0x37ffffe3 }, 429 {0x0000d368, 0x1fffffe4},
346 { 0x0000d370, 0x3fffffe3 }, 430 {0x0000d36c, 0x37ffffe3},
347 { 0x0000d374, 0x57ffffe3 }, 431 {0x0000d370, 0x3fffffe3},
348 { 0x0000d378, 0x5fffffe2 }, 432 {0x0000d374, 0x57ffffe3},
349 { 0x0000d37c, 0x7fffffe2 }, 433 {0x0000d378, 0x5fffffe2},
350 { 0x0000d380, 0x7f3c7bba }, 434 {0x0000d37c, 0x7fffffe2},
351 { 0x0000d384, 0xf3307ff0 }, 435 {0x0000d380, 0x7f3c7bba},
352 { 0x0000a388, 0x0c000000 }, 436 {0x0000d384, 0xf3307ff0},
353 { 0x0000a38c, 0x20202020 }, 437 {0x0000a388, 0x0c000000},
354 { 0x0000a390, 0x20202020 }, 438 {0x0000a38c, 0x20202020},
355 { 0x0000a394, 0x1ce739ce }, 439 {0x0000a390, 0x20202020},
356 { 0x0000a398, 0x000001ce }, 440 {0x0000a394, 0x1ce739ce},
357 { 0x0000a39c, 0x00000001 }, 441 {0x0000a398, 0x000001ce},
358 { 0x0000a3a0, 0x00000000 }, 442 {0x0000a39c, 0x00000001},
359 { 0x0000a3a4, 0x00000000 }, 443 {0x0000a3a0, 0x00000000},
360 { 0x0000a3a8, 0x00000000 }, 444 {0x0000a3a4, 0x00000000},
361 { 0x0000a3ac, 0x00000000 }, 445 {0x0000a3a8, 0x00000000},
362 { 0x0000a3b0, 0x00000000 }, 446 {0x0000a3ac, 0x00000000},
363 { 0x0000a3b4, 0x00000000 }, 447 {0x0000a3b0, 0x00000000},
364 { 0x0000a3b8, 0x00000000 }, 448 {0x0000a3b4, 0x00000000},
365 { 0x0000a3bc, 0x00000000 }, 449 {0x0000a3b8, 0x00000000},
366 { 0x0000a3c0, 0x00000000 }, 450 {0x0000a3bc, 0x00000000},
367 { 0x0000a3c4, 0x00000000 }, 451 {0x0000a3c0, 0x00000000},
368 { 0x0000a3c8, 0x00000246 }, 452 {0x0000a3c4, 0x00000000},
369 { 0x0000a3cc, 0x20202020 }, 453 {0x0000a3c8, 0x00000246},
370 { 0x0000a3d0, 0x20202020 }, 454 {0x0000a3cc, 0x20202020},
371 { 0x0000a3d4, 0x20202020 }, 455 {0x0000a3d0, 0x20202020},
372 { 0x0000a3dc, 0x1ce739ce }, 456 {0x0000a3d4, 0x20202020},
373 { 0x0000a3e0, 0x000001ce }, 457 {0x0000a3dc, 0x1ce739ce},
458 {0x0000a3e0, 0x000001ce},
374}; 459};
375 460
376static const u32 ar5416Bank0_9100[][2] = { 461static const u32 ar5416Bank0_9100[][2] = {
377 { 0x000098b0, 0x1e5795e5 }, 462 /* Addr allmodes */
378 { 0x000098e0, 0x02008020 }, 463 {0x000098b0, 0x1e5795e5},
464 {0x000098e0, 0x02008020},
379}; 465};
380 466
381static const u32 ar5416BB_RfGain_9100[][3] = { 467static const u32 ar5416BB_RfGain_9100[][3] = {
382 { 0x00009a00, 0x00000000, 0x00000000 }, 468 /* Addr 5G_HT20 5G_HT40 */
383 { 0x00009a04, 0x00000040, 0x00000040 }, 469 {0x00009a00, 0x00000000, 0x00000000},
384 { 0x00009a08, 0x00000080, 0x00000080 }, 470 {0x00009a04, 0x00000040, 0x00000040},
385 { 0x00009a0c, 0x000001a1, 0x00000141 }, 471 {0x00009a08, 0x00000080, 0x00000080},
386 { 0x00009a10, 0x000001e1, 0x00000181 }, 472 {0x00009a0c, 0x000001a1, 0x00000141},
387 { 0x00009a14, 0x00000021, 0x000001c1 }, 473 {0x00009a10, 0x000001e1, 0x00000181},
388 { 0x00009a18, 0x00000061, 0x00000001 }, 474 {0x00009a14, 0x00000021, 0x000001c1},
389 { 0x00009a1c, 0x00000168, 0x00000041 }, 475 {0x00009a18, 0x00000061, 0x00000001},
390 { 0x00009a20, 0x000001a8, 0x000001a8 }, 476 {0x00009a1c, 0x00000168, 0x00000041},
391 { 0x00009a24, 0x000001e8, 0x000001e8 }, 477 {0x00009a20, 0x000001a8, 0x000001a8},
392 { 0x00009a28, 0x00000028, 0x00000028 }, 478 {0x00009a24, 0x000001e8, 0x000001e8},
393 { 0x00009a2c, 0x00000068, 0x00000068 }, 479 {0x00009a28, 0x00000028, 0x00000028},
394 { 0x00009a30, 0x00000189, 0x000000a8 }, 480 {0x00009a2c, 0x00000068, 0x00000068},
395 { 0x00009a34, 0x000001c9, 0x00000169 }, 481 {0x00009a30, 0x00000189, 0x000000a8},
396 { 0x00009a38, 0x00000009, 0x000001a9 }, 482 {0x00009a34, 0x000001c9, 0x00000169},
397 { 0x00009a3c, 0x00000049, 0x000001e9 }, 483 {0x00009a38, 0x00000009, 0x000001a9},
398 { 0x00009a40, 0x00000089, 0x00000029 }, 484 {0x00009a3c, 0x00000049, 0x000001e9},
399 { 0x00009a44, 0x00000170, 0x00000069 }, 485 {0x00009a40, 0x00000089, 0x00000029},
400 { 0x00009a48, 0x000001b0, 0x00000190 }, 486 {0x00009a44, 0x00000170, 0x00000069},
401 { 0x00009a4c, 0x000001f0, 0x000001d0 }, 487 {0x00009a48, 0x000001b0, 0x00000190},
402 { 0x00009a50, 0x00000030, 0x00000010 }, 488 {0x00009a4c, 0x000001f0, 0x000001d0},
403 { 0x00009a54, 0x00000070, 0x00000050 }, 489 {0x00009a50, 0x00000030, 0x00000010},
404 { 0x00009a58, 0x00000191, 0x00000090 }, 490 {0x00009a54, 0x00000070, 0x00000050},
405 { 0x00009a5c, 0x000001d1, 0x00000151 }, 491 {0x00009a58, 0x00000191, 0x00000090},
406 { 0x00009a60, 0x00000011, 0x00000191 }, 492 {0x00009a5c, 0x000001d1, 0x00000151},
407 { 0x00009a64, 0x00000051, 0x000001d1 }, 493 {0x00009a60, 0x00000011, 0x00000191},
408 { 0x00009a68, 0x00000091, 0x00000011 }, 494 {0x00009a64, 0x00000051, 0x000001d1},
409 { 0x00009a6c, 0x000001b8, 0x00000051 }, 495 {0x00009a68, 0x00000091, 0x00000011},
410 { 0x00009a70, 0x000001f8, 0x00000198 }, 496 {0x00009a6c, 0x000001b8, 0x00000051},
411 { 0x00009a74, 0x00000038, 0x000001d8 }, 497 {0x00009a70, 0x000001f8, 0x00000198},
412 { 0x00009a78, 0x00000078, 0x00000018 }, 498 {0x00009a74, 0x00000038, 0x000001d8},
413 { 0x00009a7c, 0x00000199, 0x00000058 }, 499 {0x00009a78, 0x00000078, 0x00000018},
414 { 0x00009a80, 0x000001d9, 0x00000098 }, 500 {0x00009a7c, 0x00000199, 0x00000058},
415 { 0x00009a84, 0x00000019, 0x00000159 }, 501 {0x00009a80, 0x000001d9, 0x00000098},
416 { 0x00009a88, 0x00000059, 0x00000199 }, 502 {0x00009a84, 0x00000019, 0x00000159},
417 { 0x00009a8c, 0x00000099, 0x000001d9 }, 503 {0x00009a88, 0x00000059, 0x00000199},
418 { 0x00009a90, 0x000000d9, 0x00000019 }, 504 {0x00009a8c, 0x00000099, 0x000001d9},
419 { 0x00009a94, 0x000000f9, 0x00000059 }, 505 {0x00009a90, 0x000000d9, 0x00000019},
420 { 0x00009a98, 0x000000f9, 0x00000099 }, 506 {0x00009a94, 0x000000f9, 0x00000059},
421 { 0x00009a9c, 0x000000f9, 0x000000d9 }, 507 {0x00009a98, 0x000000f9, 0x00000099},
422 { 0x00009aa0, 0x000000f9, 0x000000f9 }, 508 {0x00009a9c, 0x000000f9, 0x000000d9},
423 { 0x00009aa4, 0x000000f9, 0x000000f9 }, 509 {0x00009aa0, 0x000000f9, 0x000000f9},
424 { 0x00009aa8, 0x000000f9, 0x000000f9 }, 510 {0x00009aa4, 0x000000f9, 0x000000f9},
425 { 0x00009aac, 0x000000f9, 0x000000f9 }, 511 {0x00009aa8, 0x000000f9, 0x000000f9},
426 { 0x00009ab0, 0x000000f9, 0x000000f9 }, 512 {0x00009aac, 0x000000f9, 0x000000f9},
427 { 0x00009ab4, 0x000000f9, 0x000000f9 }, 513 {0x00009ab0, 0x000000f9, 0x000000f9},
428 { 0x00009ab8, 0x000000f9, 0x000000f9 }, 514 {0x00009ab4, 0x000000f9, 0x000000f9},
429 { 0x00009abc, 0x000000f9, 0x000000f9 }, 515 {0x00009ab8, 0x000000f9, 0x000000f9},
430 { 0x00009ac0, 0x000000f9, 0x000000f9 }, 516 {0x00009abc, 0x000000f9, 0x000000f9},
431 { 0x00009ac4, 0x000000f9, 0x000000f9 }, 517 {0x00009ac0, 0x000000f9, 0x000000f9},
432 { 0x00009ac8, 0x000000f9, 0x000000f9 }, 518 {0x00009ac4, 0x000000f9, 0x000000f9},
433 { 0x00009acc, 0x000000f9, 0x000000f9 }, 519 {0x00009ac8, 0x000000f9, 0x000000f9},
434 { 0x00009ad0, 0x000000f9, 0x000000f9 }, 520 {0x00009acc, 0x000000f9, 0x000000f9},
435 { 0x00009ad4, 0x000000f9, 0x000000f9 }, 521 {0x00009ad0, 0x000000f9, 0x000000f9},
436 { 0x00009ad8, 0x000000f9, 0x000000f9 }, 522 {0x00009ad4, 0x000000f9, 0x000000f9},
437 { 0x00009adc, 0x000000f9, 0x000000f9 }, 523 {0x00009ad8, 0x000000f9, 0x000000f9},
438 { 0x00009ae0, 0x000000f9, 0x000000f9 }, 524 {0x00009adc, 0x000000f9, 0x000000f9},
439 { 0x00009ae4, 0x000000f9, 0x000000f9 }, 525 {0x00009ae0, 0x000000f9, 0x000000f9},
440 { 0x00009ae8, 0x000000f9, 0x000000f9 }, 526 {0x00009ae4, 0x000000f9, 0x000000f9},
441 { 0x00009aec, 0x000000f9, 0x000000f9 }, 527 {0x00009ae8, 0x000000f9, 0x000000f9},
442 { 0x00009af0, 0x000000f9, 0x000000f9 }, 528 {0x00009aec, 0x000000f9, 0x000000f9},
443 { 0x00009af4, 0x000000f9, 0x000000f9 }, 529 {0x00009af0, 0x000000f9, 0x000000f9},
444 { 0x00009af8, 0x000000f9, 0x000000f9 }, 530 {0x00009af4, 0x000000f9, 0x000000f9},
445 { 0x00009afc, 0x000000f9, 0x000000f9 }, 531 {0x00009af8, 0x000000f9, 0x000000f9},
532 {0x00009afc, 0x000000f9, 0x000000f9},
446}; 533};
447 534
448static const u32 ar5416Bank1_9100[][2] = { 535static const u32 ar5416Bank1_9100[][2] = {
449 { 0x000098b0, 0x02108421}, 536 /* Addr allmodes */
450 { 0x000098ec, 0x00000008}, 537 {0x000098b0, 0x02108421},
538 {0x000098ec, 0x00000008},
451}; 539};
452 540
453static const u32 ar5416Bank2_9100[][2] = { 541static const u32 ar5416Bank2_9100[][2] = {
454 { 0x000098b0, 0x0e73ff17}, 542 /* Addr allmodes */
455 { 0x000098e0, 0x00000420}, 543 {0x000098b0, 0x0e73ff17},
544 {0x000098e0, 0x00000420},
456}; 545};
457 546
458static const u32 ar5416Bank3_9100[][3] = { 547static const u32 ar5416Bank3_9100[][3] = {
459 { 0x000098f0, 0x01400018, 0x01c00018 }, 548 /* Addr 5G_HT20 5G_HT40 */
549 {0x000098f0, 0x01400018, 0x01c00018},
460}; 550};
461 551
462static const u32 ar5416Bank6_9100[][3] = { 552static const u32 ar5416Bank6_9100[][3] = {
463 553 /* Addr 5G_HT20 5G_HT40 */
464 { 0x0000989c, 0x00000000, 0x00000000 }, 554 {0x0000989c, 0x00000000, 0x00000000},
465 { 0x0000989c, 0x00000000, 0x00000000 }, 555 {0x0000989c, 0x00000000, 0x00000000},
466 { 0x0000989c, 0x00000000, 0x00000000 }, 556 {0x0000989c, 0x00000000, 0x00000000},
467 { 0x0000989c, 0x00e00000, 0x00e00000 }, 557 {0x0000989c, 0x00e00000, 0x00e00000},
468 { 0x0000989c, 0x005e0000, 0x005e0000 }, 558 {0x0000989c, 0x005e0000, 0x005e0000},
469 { 0x0000989c, 0x00120000, 0x00120000 }, 559 {0x0000989c, 0x00120000, 0x00120000},
470 { 0x0000989c, 0x00620000, 0x00620000 }, 560 {0x0000989c, 0x00620000, 0x00620000},
471 { 0x0000989c, 0x00020000, 0x00020000 }, 561 {0x0000989c, 0x00020000, 0x00020000},
472 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 562 {0x0000989c, 0x00ff0000, 0x00ff0000},
473 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 563 {0x0000989c, 0x00ff0000, 0x00ff0000},
474 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 564 {0x0000989c, 0x00ff0000, 0x00ff0000},
475 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 565 {0x0000989c, 0x00ff0000, 0x00ff0000},
476 { 0x0000989c, 0x005f0000, 0x005f0000 }, 566 {0x0000989c, 0x005f0000, 0x005f0000},
477 { 0x0000989c, 0x00870000, 0x00870000 }, 567 {0x0000989c, 0x00870000, 0x00870000},
478 { 0x0000989c, 0x00f90000, 0x00f90000 }, 568 {0x0000989c, 0x00f90000, 0x00f90000},
479 { 0x0000989c, 0x007b0000, 0x007b0000 }, 569 {0x0000989c, 0x007b0000, 0x007b0000},
480 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 570 {0x0000989c, 0x00ff0000, 0x00ff0000},
481 { 0x0000989c, 0x00f50000, 0x00f50000 }, 571 {0x0000989c, 0x00f50000, 0x00f50000},
482 { 0x0000989c, 0x00dc0000, 0x00dc0000 }, 572 {0x0000989c, 0x00dc0000, 0x00dc0000},
483 { 0x0000989c, 0x00110000, 0x00110000 }, 573 {0x0000989c, 0x00110000, 0x00110000},
484 { 0x0000989c, 0x006100a8, 0x006100a8 }, 574 {0x0000989c, 0x006100a8, 0x006100a8},
485 { 0x0000989c, 0x004210a2, 0x004210a2 }, 575 {0x0000989c, 0x004210a2, 0x004210a2},
486 { 0x0000989c, 0x0014000f, 0x0014000f }, 576 {0x0000989c, 0x0014000f, 0x0014000f},
487 { 0x0000989c, 0x00c40002, 0x00c40002 }, 577 {0x0000989c, 0x00c40002, 0x00c40002},
488 { 0x0000989c, 0x003000f2, 0x003000f2 }, 578 {0x0000989c, 0x003000f2, 0x003000f2},
489 { 0x0000989c, 0x00440016, 0x00440016 }, 579 {0x0000989c, 0x00440016, 0x00440016},
490 { 0x0000989c, 0x00410040, 0x00410040 }, 580 {0x0000989c, 0x00410040, 0x00410040},
491 { 0x0000989c, 0x000180d6, 0x000180d6 }, 581 {0x0000989c, 0x000180d6, 0x000180d6},
492 { 0x0000989c, 0x0000c0aa, 0x0000c0aa }, 582 {0x0000989c, 0x0000c0aa, 0x0000c0aa},
493 { 0x0000989c, 0x000000b1, 0x000000b1 }, 583 {0x0000989c, 0x000000b1, 0x000000b1},
494 { 0x0000989c, 0x00002000, 0x00002000 }, 584 {0x0000989c, 0x00002000, 0x00002000},
495 { 0x0000989c, 0x000000d4, 0x000000d4 }, 585 {0x0000989c, 0x000000d4, 0x000000d4},
496 { 0x000098d0, 0x0000000f, 0x0010000f }, 586 {0x000098d0, 0x0000000f, 0x0010000f},
497}; 587};
498 588
499
500static const u32 ar5416Bank6TPC_9100[][3] = { 589static const u32 ar5416Bank6TPC_9100[][3] = {
501 590 /* Addr 5G_HT20 5G_HT40 */
502 { 0x0000989c, 0x00000000, 0x00000000 }, 591 {0x0000989c, 0x00000000, 0x00000000},
503 { 0x0000989c, 0x00000000, 0x00000000 }, 592 {0x0000989c, 0x00000000, 0x00000000},
504 { 0x0000989c, 0x00000000, 0x00000000 }, 593 {0x0000989c, 0x00000000, 0x00000000},
505 { 0x0000989c, 0x00e00000, 0x00e00000 }, 594 {0x0000989c, 0x00e00000, 0x00e00000},
506 { 0x0000989c, 0x005e0000, 0x005e0000 }, 595 {0x0000989c, 0x005e0000, 0x005e0000},
507 { 0x0000989c, 0x00120000, 0x00120000 }, 596 {0x0000989c, 0x00120000, 0x00120000},
508 { 0x0000989c, 0x00620000, 0x00620000 }, 597 {0x0000989c, 0x00620000, 0x00620000},
509 { 0x0000989c, 0x00020000, 0x00020000 }, 598 {0x0000989c, 0x00020000, 0x00020000},
510 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 599 {0x0000989c, 0x00ff0000, 0x00ff0000},
511 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 600 {0x0000989c, 0x00ff0000, 0x00ff0000},
512 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 601 {0x0000989c, 0x00ff0000, 0x00ff0000},
513 { 0x0000989c, 0x40ff0000, 0x40ff0000 }, 602 {0x0000989c, 0x40ff0000, 0x40ff0000},
514 { 0x0000989c, 0x005f0000, 0x005f0000 }, 603 {0x0000989c, 0x005f0000, 0x005f0000},
515 { 0x0000989c, 0x00870000, 0x00870000 }, 604 {0x0000989c, 0x00870000, 0x00870000},
516 { 0x0000989c, 0x00f90000, 0x00f90000 }, 605 {0x0000989c, 0x00f90000, 0x00f90000},
517 { 0x0000989c, 0x007b0000, 0x007b0000 }, 606 {0x0000989c, 0x007b0000, 0x007b0000},
518 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 607 {0x0000989c, 0x00ff0000, 0x00ff0000},
519 { 0x0000989c, 0x00f50000, 0x00f50000 }, 608 {0x0000989c, 0x00f50000, 0x00f50000},
520 { 0x0000989c, 0x00dc0000, 0x00dc0000 }, 609 {0x0000989c, 0x00dc0000, 0x00dc0000},
521 { 0x0000989c, 0x00110000, 0x00110000 }, 610 {0x0000989c, 0x00110000, 0x00110000},
522 { 0x0000989c, 0x006100a8, 0x006100a8 }, 611 {0x0000989c, 0x006100a8, 0x006100a8},
523 { 0x0000989c, 0x00423022, 0x00423022 }, 612 {0x0000989c, 0x00423022, 0x00423022},
524 { 0x0000989c, 0x2014008f, 0x2014008f }, 613 {0x0000989c, 0x2014008f, 0x2014008f},
525 { 0x0000989c, 0x00c40002, 0x00c40002 }, 614 {0x0000989c, 0x00c40002, 0x00c40002},
526 { 0x0000989c, 0x003000f2, 0x003000f2 }, 615 {0x0000989c, 0x003000f2, 0x003000f2},
527 { 0x0000989c, 0x00440016, 0x00440016 }, 616 {0x0000989c, 0x00440016, 0x00440016},
528 { 0x0000989c, 0x00410040, 0x00410040 }, 617 {0x0000989c, 0x00410040, 0x00410040},
529 { 0x0000989c, 0x0001805e, 0x0001805e }, 618 {0x0000989c, 0x0001805e, 0x0001805e},
530 { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, 619 {0x0000989c, 0x0000c0ab, 0x0000c0ab},
531 { 0x0000989c, 0x000000e1, 0x000000e1 }, 620 {0x0000989c, 0x000000e1, 0x000000e1},
532 { 0x0000989c, 0x00007080, 0x00007080 }, 621 {0x0000989c, 0x00007080, 0x00007080},
533 { 0x0000989c, 0x000000d4, 0x000000d4 }, 622 {0x0000989c, 0x000000d4, 0x000000d4},
534 { 0x000098d0, 0x0000000f, 0x0010000f }, 623 {0x000098d0, 0x0000000f, 0x0010000f},
535}; 624};
536 625
537static const u32 ar5416Bank7_9100[][2] = { 626static const u32 ar5416Bank7_9100[][2] = {
538 { 0x0000989c, 0x00000500 }, 627 /* Addr allmodes */
539 { 0x0000989c, 0x00000800 }, 628 {0x0000989c, 0x00000500},
540 { 0x000098cc, 0x0000000e }, 629 {0x0000989c, 0x00000800},
630 {0x000098cc, 0x0000000e},
541}; 631};
542 632
543static const u32 ar5416Addac_9100[][2] = { 633static const u32 ar5416Addac_9100[][2] = {
544 {0x0000989c, 0x00000000 }, 634 /* Addr allmodes */
545 {0x0000989c, 0x00000000 }, 635 {0x0000989c, 0x00000000},
546 {0x0000989c, 0x00000000 }, 636 {0x0000989c, 0x00000000},
547 {0x0000989c, 0x00000000 }, 637 {0x0000989c, 0x00000000},
548 {0x0000989c, 0x00000000 }, 638 {0x0000989c, 0x00000000},
549 {0x0000989c, 0x00000000 }, 639 {0x0000989c, 0x00000000},
550 {0x0000989c, 0x00000000 }, 640 {0x0000989c, 0x00000000},
551 {0x0000989c, 0x00000010 }, 641 {0x0000989c, 0x00000000},
552 {0x0000989c, 0x00000000 }, 642 {0x0000989c, 0x00000010},
553 {0x0000989c, 0x00000000 }, 643 {0x0000989c, 0x00000000},
554 {0x0000989c, 0x00000000 }, 644 {0x0000989c, 0x00000000},
555 {0x0000989c, 0x00000000 }, 645 {0x0000989c, 0x00000000},
556 {0x0000989c, 0x00000000 }, 646 {0x0000989c, 0x00000000},
557 {0x0000989c, 0x00000000 }, 647 {0x0000989c, 0x00000000},
558 {0x0000989c, 0x00000000 }, 648 {0x0000989c, 0x00000000},
559 {0x0000989c, 0x00000000 }, 649 {0x0000989c, 0x00000000},
560 {0x0000989c, 0x00000000 }, 650 {0x0000989c, 0x00000000},
561 {0x0000989c, 0x00000000 }, 651 {0x0000989c, 0x00000000},
562 {0x0000989c, 0x00000000 }, 652 {0x0000989c, 0x00000000},
563 {0x0000989c, 0x00000000 }, 653 {0x0000989c, 0x00000000},
564 {0x0000989c, 0x00000000 }, 654 {0x0000989c, 0x00000000},
565 {0x0000989c, 0x000000c0 }, 655 {0x0000989c, 0x00000000},
566 {0x0000989c, 0x00000015 }, 656 {0x0000989c, 0x000000c0},
567 {0x0000989c, 0x00000000 }, 657 {0x0000989c, 0x00000015},
568 {0x0000989c, 0x00000000 }, 658 {0x0000989c, 0x00000000},
569 {0x0000989c, 0x00000000 }, 659 {0x0000989c, 0x00000000},
570 {0x0000989c, 0x00000000 }, 660 {0x0000989c, 0x00000000},
571 {0x0000989c, 0x00000000 }, 661 {0x0000989c, 0x00000000},
572 {0x0000989c, 0x00000000 }, 662 {0x0000989c, 0x00000000},
573 {0x0000989c, 0x00000000 }, 663 {0x0000989c, 0x00000000},
574 {0x0000989c, 0x00000000 }, 664 {0x0000989c, 0x00000000},
575 {0x000098cc, 0x00000000 }, 665 {0x0000989c, 0x00000000},
666 {0x000098cc, 0x00000000},
576}; 667};
577 668
578static const u32 ar5416Modes_9160[][6] = { 669static const u32 ar5416Modes_9160[][6] = {
579 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, 670 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
580 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, 671 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
581 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, 672 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
582 { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, 673 {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008},
583 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, 674 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
584 { 0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf }, 675 {0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf},
585 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, 676 {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810},
586 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, 677 {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a},
587 { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 678 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
588 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, 679 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
589 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 680 {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
590 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, 681 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
591 { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, 682 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
592 { 0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, 683 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
593 { 0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, 684 {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0},
594 { 0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68 }, 685 {0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
595 { 0x00009850, 0x6c48b4e2, 0x6c48b4e2, 0x6c48b0e2, 0x6c48b0e2, 0x6c48b0e2 }, 686 {0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
596 { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, 687 {0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
597 { 0x0000985c, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e, 0x31395d5e }, 688 {0x00009850, 0x6c48b4e2, 0x6d48b4e2, 0x6d48b0e2, 0x6c48b0e2, 0x6c48b0e2},
598 { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, 689 {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e},
599 { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 690 {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e},
600 { 0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0 }, 691 {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18},
601 { 0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 }, 692 {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
602 { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, 693 {0x00009868, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0, 0x409a40d0},
603 { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, 694 {0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081},
604 { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, 695 {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
605 { 0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020 }, 696 {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016},
606 { 0x00009960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, 697 {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d},
607 { 0x0000a960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, 698 {0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020},
608 { 0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40 }, 699 {0x00009960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40},
609 { 0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120 }, 700 {0x0000a960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40},
610 { 0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce }, 701 {0x0000b960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40},
611 { 0x0000c9bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00 }, 702 {0x00009964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0x00001120},
612 { 0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be }, 703 {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce},
613 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, 704 {0x000099bc, 0x001a0600, 0x001a0600, 0x001a0c00, 0x001a0c00, 0x001a0c00},
614 { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, 705 {0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be},
615 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, 706 {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
616 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, 707 {0x000099c8, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329, 0x6af65329},
617 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 708 {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
618 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 709 {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
619 { 0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880 }, 710 {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
620 { 0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788 }, 711 {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
621 { 0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, 712 {0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880},
622 { 0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, 713 {0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788},
623 { 0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120 }, 714 {0x0000a20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120},
624 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, 715 {0x0000b20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120},
625 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 716 {0x0000c20c, 0x002fc160, 0x002fc160, 0x002ac120, 0x002ac120, 0x002ac120},
626 { 0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa }, 717 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
627 { 0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 }, 718 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
628 { 0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402 }, 719 {0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa},
629 { 0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06 }, 720 {0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000},
630 { 0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b }, 721 {0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402},
631 { 0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b }, 722 {0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06},
632 { 0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a }, 723 {0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b},
633 { 0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf }, 724 {0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b},
634 { 0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f }, 725 {0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a},
635 { 0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f }, 726 {0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf},
636 { 0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f }, 727 {0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f},
637 { 0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000 }, 728 {0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f},
638 { 0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 729 {0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f},
639 { 0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 730 {0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000},
640 { 0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 731 {0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
732 {0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
733 {0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
641}; 734};
642 735
643static const u32 ar5416Common_9160[][2] = { 736static const u32 ar5416Common_9160[][2] = {
644 { 0x0000000c, 0x00000000 }, 737 /* Addr allmodes */
645 { 0x00000030, 0x00020015 }, 738 {0x0000000c, 0x00000000},
646 { 0x00000034, 0x00000005 }, 739 {0x00000030, 0x00020015},
647 { 0x00000040, 0x00000000 }, 740 {0x00000034, 0x00000005},
648 { 0x00000044, 0x00000008 }, 741 {0x00000040, 0x00000000},
649 { 0x00000048, 0x00000008 }, 742 {0x00000044, 0x00000008},
650 { 0x0000004c, 0x00000010 }, 743 {0x00000048, 0x00000008},
651 { 0x00000050, 0x00000000 }, 744 {0x0000004c, 0x00000010},
652 { 0x00000054, 0x0000001f }, 745 {0x00000050, 0x00000000},
653 { 0x00000800, 0x00000000 }, 746 {0x00000054, 0x0000001f},
654 { 0x00000804, 0x00000000 }, 747 {0x00000800, 0x00000000},
655 { 0x00000808, 0x00000000 }, 748 {0x00000804, 0x00000000},
656 { 0x0000080c, 0x00000000 }, 749 {0x00000808, 0x00000000},
657 { 0x00000810, 0x00000000 }, 750 {0x0000080c, 0x00000000},
658 { 0x00000814, 0x00000000 }, 751 {0x00000810, 0x00000000},
659 { 0x00000818, 0x00000000 }, 752 {0x00000814, 0x00000000},
660 { 0x0000081c, 0x00000000 }, 753 {0x00000818, 0x00000000},
661 { 0x00000820, 0x00000000 }, 754 {0x0000081c, 0x00000000},
662 { 0x00000824, 0x00000000 }, 755 {0x00000820, 0x00000000},
663 { 0x00001040, 0x002ffc0f }, 756 {0x00000824, 0x00000000},
664 { 0x00001044, 0x002ffc0f }, 757 {0x00001040, 0x002ffc0f},
665 { 0x00001048, 0x002ffc0f }, 758 {0x00001044, 0x002ffc0f},
666 { 0x0000104c, 0x002ffc0f }, 759 {0x00001048, 0x002ffc0f},
667 { 0x00001050, 0x002ffc0f }, 760 {0x0000104c, 0x002ffc0f},
668 { 0x00001054, 0x002ffc0f }, 761 {0x00001050, 0x002ffc0f},
669 { 0x00001058, 0x002ffc0f }, 762 {0x00001054, 0x002ffc0f},
670 { 0x0000105c, 0x002ffc0f }, 763 {0x00001058, 0x002ffc0f},
671 { 0x00001060, 0x002ffc0f }, 764 {0x0000105c, 0x002ffc0f},
672 { 0x00001064, 0x002ffc0f }, 765 {0x00001060, 0x002ffc0f},
673 { 0x00001230, 0x00000000 }, 766 {0x00001064, 0x002ffc0f},
674 { 0x00001270, 0x00000000 }, 767 {0x00001230, 0x00000000},
675 { 0x00001038, 0x00000000 }, 768 {0x00001270, 0x00000000},
676 { 0x00001078, 0x00000000 }, 769 {0x00001038, 0x00000000},
677 { 0x000010b8, 0x00000000 }, 770 {0x00001078, 0x00000000},
678 { 0x000010f8, 0x00000000 }, 771 {0x000010b8, 0x00000000},
679 { 0x00001138, 0x00000000 }, 772 {0x000010f8, 0x00000000},
680 { 0x00001178, 0x00000000 }, 773 {0x00001138, 0x00000000},
681 { 0x000011b8, 0x00000000 }, 774 {0x00001178, 0x00000000},
682 { 0x000011f8, 0x00000000 }, 775 {0x000011b8, 0x00000000},
683 { 0x00001238, 0x00000000 }, 776 {0x000011f8, 0x00000000},
684 { 0x00001278, 0x00000000 }, 777 {0x00001238, 0x00000000},
685 { 0x000012b8, 0x00000000 }, 778 {0x00001278, 0x00000000},
686 { 0x000012f8, 0x00000000 }, 779 {0x000012b8, 0x00000000},
687 { 0x00001338, 0x00000000 }, 780 {0x000012f8, 0x00000000},
688 { 0x00001378, 0x00000000 }, 781 {0x00001338, 0x00000000},
689 { 0x000013b8, 0x00000000 }, 782 {0x00001378, 0x00000000},
690 { 0x000013f8, 0x00000000 }, 783 {0x000013b8, 0x00000000},
691 { 0x00001438, 0x00000000 }, 784 {0x000013f8, 0x00000000},
692 { 0x00001478, 0x00000000 }, 785 {0x00001438, 0x00000000},
693 { 0x000014b8, 0x00000000 }, 786 {0x00001478, 0x00000000},
694 { 0x000014f8, 0x00000000 }, 787 {0x000014b8, 0x00000000},
695 { 0x00001538, 0x00000000 }, 788 {0x000014f8, 0x00000000},
696 { 0x00001578, 0x00000000 }, 789 {0x00001538, 0x00000000},
697 { 0x000015b8, 0x00000000 }, 790 {0x00001578, 0x00000000},
698 { 0x000015f8, 0x00000000 }, 791 {0x000015b8, 0x00000000},
699 { 0x00001638, 0x00000000 }, 792 {0x000015f8, 0x00000000},
700 { 0x00001678, 0x00000000 }, 793 {0x00001638, 0x00000000},
701 { 0x000016b8, 0x00000000 }, 794 {0x00001678, 0x00000000},
702 { 0x000016f8, 0x00000000 }, 795 {0x000016b8, 0x00000000},
703 { 0x00001738, 0x00000000 }, 796 {0x000016f8, 0x00000000},
704 { 0x00001778, 0x00000000 }, 797 {0x00001738, 0x00000000},
705 { 0x000017b8, 0x00000000 }, 798 {0x00001778, 0x00000000},
706 { 0x000017f8, 0x00000000 }, 799 {0x000017b8, 0x00000000},
707 { 0x0000103c, 0x00000000 }, 800 {0x000017f8, 0x00000000},
708 { 0x0000107c, 0x00000000 }, 801 {0x0000103c, 0x00000000},
709 { 0x000010bc, 0x00000000 }, 802 {0x0000107c, 0x00000000},
710 { 0x000010fc, 0x00000000 }, 803 {0x000010bc, 0x00000000},
711 { 0x0000113c, 0x00000000 }, 804 {0x000010fc, 0x00000000},
712 { 0x0000117c, 0x00000000 }, 805 {0x0000113c, 0x00000000},
713 { 0x000011bc, 0x00000000 }, 806 {0x0000117c, 0x00000000},
714 { 0x000011fc, 0x00000000 }, 807 {0x000011bc, 0x00000000},
715 { 0x0000123c, 0x00000000 }, 808 {0x000011fc, 0x00000000},
716 { 0x0000127c, 0x00000000 }, 809 {0x0000123c, 0x00000000},
717 { 0x000012bc, 0x00000000 }, 810 {0x0000127c, 0x00000000},
718 { 0x000012fc, 0x00000000 }, 811 {0x000012bc, 0x00000000},
719 { 0x0000133c, 0x00000000 }, 812 {0x000012fc, 0x00000000},
720 { 0x0000137c, 0x00000000 }, 813 {0x0000133c, 0x00000000},
721 { 0x000013bc, 0x00000000 }, 814 {0x0000137c, 0x00000000},
722 { 0x000013fc, 0x00000000 }, 815 {0x000013bc, 0x00000000},
723 { 0x0000143c, 0x00000000 }, 816 {0x000013fc, 0x00000000},
724 { 0x0000147c, 0x00000000 }, 817 {0x0000143c, 0x00000000},
725 { 0x00004030, 0x00000002 }, 818 {0x0000147c, 0x00000000},
726 { 0x0000403c, 0x00000002 }, 819 {0x00004030, 0x00000002},
727 { 0x00007010, 0x00000020 }, 820 {0x0000403c, 0x00000002},
728 { 0x00007038, 0x000004c2 }, 821 {0x00007010, 0x00000020},
729 { 0x00008004, 0x00000000 }, 822 {0x00007038, 0x000004c2},
730 { 0x00008008, 0x00000000 }, 823 {0x00008004, 0x00000000},
731 { 0x0000800c, 0x00000000 }, 824 {0x00008008, 0x00000000},
732 { 0x00008018, 0x00000700 }, 825 {0x0000800c, 0x00000000},
733 { 0x00008020, 0x00000000 }, 826 {0x00008018, 0x00000700},
734 { 0x00008038, 0x00000000 }, 827 {0x00008020, 0x00000000},
735 { 0x0000803c, 0x00000000 }, 828 {0x00008038, 0x00000000},
736 { 0x00008048, 0x40000000 }, 829 {0x0000803c, 0x00000000},
737 { 0x00008054, 0x00000000 }, 830 {0x00008048, 0x40000000},
738 { 0x00008058, 0x00000000 }, 831 {0x00008054, 0x00000000},
739 { 0x0000805c, 0x000fc78f }, 832 {0x00008058, 0x00000000},
740 { 0x00008060, 0x0000000f }, 833 {0x0000805c, 0x000fc78f},
741 { 0x00008064, 0x00000000 }, 834 {0x00008060, 0x0000000f},
742 { 0x000080c0, 0x2a82301a }, 835 {0x00008064, 0x00000000},
743 { 0x000080c4, 0x05dc01e0 }, 836 {0x000080c0, 0x2a82301a},
744 { 0x000080c8, 0x1f402710 }, 837 {0x000080c4, 0x05dc01e0},
745 { 0x000080cc, 0x01f40000 }, 838 {0x000080c8, 0x1f402710},
746 { 0x000080d0, 0x00001e00 }, 839 {0x000080cc, 0x01f40000},
747 { 0x000080d4, 0x00000000 }, 840 {0x000080d0, 0x00001e00},
748 { 0x000080d8, 0x00400000 }, 841 {0x000080d4, 0x00000000},
749 { 0x000080e0, 0xffffffff }, 842 {0x000080d8, 0x00400000},
750 { 0x000080e4, 0x0000ffff }, 843 {0x000080e0, 0xffffffff},
751 { 0x000080e8, 0x003f3f3f }, 844 {0x000080e4, 0x0000ffff},
752 { 0x000080ec, 0x00000000 }, 845 {0x000080e8, 0x003f3f3f},
753 { 0x000080f0, 0x00000000 }, 846 {0x000080ec, 0x00000000},
754 { 0x000080f4, 0x00000000 }, 847 {0x000080f0, 0x00000000},
755 { 0x000080f8, 0x00000000 }, 848 {0x000080f4, 0x00000000},
756 { 0x000080fc, 0x00020000 }, 849 {0x000080f8, 0x00000000},
757 { 0x00008100, 0x00020000 }, 850 {0x000080fc, 0x00020000},
758 { 0x00008104, 0x00000001 }, 851 {0x00008100, 0x00020000},
759 { 0x00008108, 0x00000052 }, 852 {0x00008104, 0x00000001},
760 { 0x0000810c, 0x00000000 }, 853 {0x00008108, 0x00000052},
761 { 0x00008110, 0x00000168 }, 854 {0x0000810c, 0x00000000},
762 { 0x00008118, 0x000100aa }, 855 {0x00008110, 0x00000168},
763 { 0x0000811c, 0x00003210 }, 856 {0x00008118, 0x000100aa},
764 { 0x00008120, 0x08f04800 }, 857 {0x0000811c, 0x00003210},
765 { 0x00008124, 0x00000000 }, 858 {0x00008124, 0x00000000},
766 { 0x00008128, 0x00000000 }, 859 {0x00008128, 0x00000000},
767 { 0x0000812c, 0x00000000 }, 860 {0x0000812c, 0x00000000},
768 { 0x00008130, 0x00000000 }, 861 {0x00008130, 0x00000000},
769 { 0x00008134, 0x00000000 }, 862 {0x00008134, 0x00000000},
770 { 0x00008138, 0x00000000 }, 863 {0x00008138, 0x00000000},
771 { 0x0000813c, 0x00000000 }, 864 {0x0000813c, 0x00000000},
772 { 0x00008144, 0xffffffff }, 865 {0x00008144, 0xffffffff},
773 { 0x00008168, 0x00000000 }, 866 {0x00008168, 0x00000000},
774 { 0x0000816c, 0x00000000 }, 867 {0x0000816c, 0x00000000},
775 { 0x00008170, 0x32143320 }, 868 {0x00008170, 0x32143320},
776 { 0x00008174, 0xfaa4fa50 }, 869 {0x00008174, 0xfaa4fa50},
777 { 0x00008178, 0x00000100 }, 870 {0x00008178, 0x00000100},
778 { 0x0000817c, 0x00000000 }, 871 {0x0000817c, 0x00000000},
779 { 0x000081c4, 0x00000000 }, 872 {0x000081c4, 0x00000000},
780 { 0x000081d0, 0x00003210 }, 873 {0x000081ec, 0x00000000},
781 { 0x000081ec, 0x00000000 }, 874 {0x000081f0, 0x00000000},
782 { 0x000081f0, 0x00000000 }, 875 {0x000081f4, 0x00000000},
783 { 0x000081f4, 0x00000000 }, 876 {0x000081f8, 0x00000000},
784 { 0x000081f8, 0x00000000 }, 877 {0x000081fc, 0x00000000},
785 { 0x000081fc, 0x00000000 }, 878 {0x00008200, 0x00000000},
786 { 0x00008200, 0x00000000 }, 879 {0x00008204, 0x00000000},
787 { 0x00008204, 0x00000000 }, 880 {0x00008208, 0x00000000},
788 { 0x00008208, 0x00000000 }, 881 {0x0000820c, 0x00000000},
789 { 0x0000820c, 0x00000000 }, 882 {0x00008210, 0x00000000},
790 { 0x00008210, 0x00000000 }, 883 {0x00008214, 0x00000000},
791 { 0x00008214, 0x00000000 }, 884 {0x00008218, 0x00000000},
792 { 0x00008218, 0x00000000 }, 885 {0x0000821c, 0x00000000},
793 { 0x0000821c, 0x00000000 }, 886 {0x00008220, 0x00000000},
794 { 0x00008220, 0x00000000 }, 887 {0x00008224, 0x00000000},
795 { 0x00008224, 0x00000000 }, 888 {0x00008228, 0x00000000},
796 { 0x00008228, 0x00000000 }, 889 {0x0000822c, 0x00000000},
797 { 0x0000822c, 0x00000000 }, 890 {0x00008230, 0x00000000},
798 { 0x00008230, 0x00000000 }, 891 {0x00008234, 0x00000000},
799 { 0x00008234, 0x00000000 }, 892 {0x00008238, 0x00000000},
800 { 0x00008238, 0x00000000 }, 893 {0x0000823c, 0x00000000},
801 { 0x0000823c, 0x00000000 }, 894 {0x00008240, 0x00100000},
802 { 0x00008240, 0x00100000 }, 895 {0x00008244, 0x0010f400},
803 { 0x00008244, 0x0010f400 }, 896 {0x00008248, 0x00000100},
804 { 0x00008248, 0x00000100 }, 897 {0x0000824c, 0x0001e800},
805 { 0x0000824c, 0x0001e800 }, 898 {0x00008250, 0x00000000},
806 { 0x00008250, 0x00000000 }, 899 {0x00008254, 0x00000000},
807 { 0x00008254, 0x00000000 }, 900 {0x00008258, 0x00000000},
808 { 0x00008258, 0x00000000 }, 901 {0x0000825c, 0x400000ff},
809 { 0x0000825c, 0x400000ff }, 902 {0x00008260, 0x00080922},
810 { 0x00008260, 0x00080922 }, 903 {0x00008264, 0x88a00010},
811 { 0x00008270, 0x00000000 }, 904 {0x00008270, 0x00000000},
812 { 0x00008274, 0x40000000 }, 905 {0x00008274, 0x40000000},
813 { 0x00008278, 0x003e4180 }, 906 {0x00008278, 0x003e4180},
814 { 0x0000827c, 0x00000000 }, 907 {0x0000827c, 0x00000000},
815 { 0x00008284, 0x0000002c }, 908 {0x00008284, 0x0000002c},
816 { 0x00008288, 0x0000002c }, 909 {0x00008288, 0x0000002c},
817 { 0x0000828c, 0x00000000 }, 910 {0x0000828c, 0x00000000},
818 { 0x00008294, 0x00000000 }, 911 {0x00008294, 0x00000000},
819 { 0x00008298, 0x00000000 }, 912 {0x00008298, 0x00000000},
820 { 0x00008300, 0x00000000 }, 913 {0x00008300, 0x00000000},
821 { 0x00008304, 0x00000000 }, 914 {0x00008304, 0x00000000},
822 { 0x00008308, 0x00000000 }, 915 {0x00008308, 0x00000000},
823 { 0x0000830c, 0x00000000 }, 916 {0x0000830c, 0x00000000},
824 { 0x00008310, 0x00000000 }, 917 {0x00008310, 0x00000000},
825 { 0x00008314, 0x00000000 }, 918 {0x00008314, 0x00000000},
826 { 0x00008318, 0x00000000 }, 919 {0x00008318, 0x00000000},
827 { 0x00008328, 0x00000000 }, 920 {0x00008328, 0x00000000},
828 { 0x0000832c, 0x00000007 }, 921 {0x0000832c, 0x00000007},
829 { 0x00008330, 0x00000302 }, 922 {0x00008330, 0x00000302},
830 { 0x00008334, 0x00000e00 }, 923 {0x00008334, 0x00000e00},
831 { 0x00008338, 0x00ff0000 }, 924 {0x00008338, 0x00ff0000},
832 { 0x0000833c, 0x00000000 }, 925 {0x0000833c, 0x00000000},
833 { 0x00008340, 0x000107ff }, 926 {0x00008340, 0x000107ff},
834 { 0x00009808, 0x00000000 }, 927 {0x00009808, 0x00000000},
835 { 0x0000980c, 0xad848e19 }, 928 {0x0000980c, 0xad848e19},
836 { 0x00009810, 0x7d14e000 }, 929 {0x00009810, 0x7d14e000},
837 { 0x00009814, 0x9c0a9f6b }, 930 {0x00009814, 0x9c0a9f6b},
838 { 0x0000981c, 0x00000000 }, 931 {0x0000981c, 0x00000000},
839 { 0x0000982c, 0x0000a000 }, 932 {0x0000982c, 0x0000a000},
840 { 0x00009830, 0x00000000 }, 933 {0x00009830, 0x00000000},
841 { 0x0000983c, 0x00200400 }, 934 {0x0000983c, 0x00200400},
842 { 0x00009840, 0x206a01ae }, 935 {0x00009840, 0x206a01ae},
843 { 0x0000984c, 0x1284233c }, 936 {0x0000984c, 0x1284233c},
844 { 0x00009854, 0x00000859 }, 937 {0x00009854, 0x00000859},
845 { 0x00009900, 0x00000000 }, 938 {0x00009900, 0x00000000},
846 { 0x00009904, 0x00000000 }, 939 {0x00009904, 0x00000000},
847 { 0x00009908, 0x00000000 }, 940 {0x00009908, 0x00000000},
848 { 0x0000990c, 0x00000000 }, 941 {0x0000990c, 0x00000000},
849 { 0x0000991c, 0x10000fff }, 942 {0x0000991c, 0x10000fff},
850 { 0x00009920, 0x05100000 }, 943 {0x00009920, 0x05100000},
851 { 0x0000a920, 0x05100000 }, 944 {0x0000a920, 0x05100000},
852 { 0x0000b920, 0x05100000 }, 945 {0x0000b920, 0x05100000},
853 { 0x00009928, 0x00000001 }, 946 {0x00009928, 0x00000001},
854 { 0x0000992c, 0x00000004 }, 947 {0x0000992c, 0x00000004},
855 { 0x00009934, 0x1e1f2022 }, 948 {0x00009934, 0x1e1f2022},
856 { 0x00009938, 0x0a0b0c0d }, 949 {0x00009938, 0x0a0b0c0d},
857 { 0x0000993c, 0x00000000 }, 950 {0x0000993c, 0x00000000},
858 { 0x00009948, 0x9280b212 }, 951 {0x00009948, 0x9280b212},
859 { 0x0000994c, 0x00020028 }, 952 {0x0000994c, 0x00020028},
860 { 0x00009954, 0x5f3ca3de }, 953 {0x00009954, 0x5f3ca3de},
861 { 0x00009958, 0x2108ecff }, 954 {0x00009958, 0x2108ecff},
862 { 0x00009940, 0x00750604 }, 955 {0x00009940, 0x00750604},
863 { 0x0000c95c, 0x004b6a8e }, 956 {0x0000c95c, 0x004b6a8e},
864 { 0x00009970, 0x190fb515 }, 957 {0x00009970, 0x190fb515},
865 { 0x00009974, 0x00000000 }, 958 {0x00009974, 0x00000000},
866 { 0x00009978, 0x00000001 }, 959 {0x00009978, 0x00000001},
867 { 0x0000997c, 0x00000000 }, 960 {0x0000997c, 0x00000000},
868 { 0x00009980, 0x00000000 }, 961 {0x00009980, 0x00000000},
869 { 0x00009984, 0x00000000 }, 962 {0x00009984, 0x00000000},
870 { 0x00009988, 0x00000000 }, 963 {0x00009988, 0x00000000},
871 { 0x0000998c, 0x00000000 }, 964 {0x0000998c, 0x00000000},
872 { 0x00009990, 0x00000000 }, 965 {0x00009990, 0x00000000},
873 { 0x00009994, 0x00000000 }, 966 {0x00009994, 0x00000000},
874 { 0x00009998, 0x00000000 }, 967 {0x00009998, 0x00000000},
875 { 0x0000999c, 0x00000000 }, 968 {0x0000999c, 0x00000000},
876 { 0x000099a0, 0x00000000 }, 969 {0x000099a0, 0x00000000},
877 { 0x000099a4, 0x00000001 }, 970 {0x000099a4, 0x00000001},
878 { 0x000099a8, 0x201fff00 }, 971 {0x000099a8, 0x201fff00},
879 { 0x000099ac, 0x006f0000 }, 972 {0x000099ac, 0x006f0000},
880 { 0x000099b0, 0x03051000 }, 973 {0x000099b0, 0x03051000},
881 { 0x000099dc, 0x00000000 }, 974 {0x000099dc, 0x00000000},
882 { 0x000099e0, 0x00000200 }, 975 {0x000099e0, 0x00000200},
883 { 0x000099e4, 0xaaaaaaaa }, 976 {0x000099e4, 0xaaaaaaaa},
884 { 0x000099e8, 0x3c466478 }, 977 {0x000099e8, 0x3c466478},
885 { 0x000099ec, 0x0cc80caa }, 978 {0x000099ec, 0x0cc80caa},
886 { 0x000099fc, 0x00001042 }, 979 {0x000099fc, 0x00001042},
887 { 0x00009b00, 0x00000000 }, 980 {0x00009b00, 0x00000000},
888 { 0x00009b04, 0x00000001 }, 981 {0x00009b04, 0x00000001},
889 { 0x00009b08, 0x00000002 }, 982 {0x00009b08, 0x00000002},
890 { 0x00009b0c, 0x00000003 }, 983 {0x00009b0c, 0x00000003},
891 { 0x00009b10, 0x00000004 }, 984 {0x00009b10, 0x00000004},
892 { 0x00009b14, 0x00000005 }, 985 {0x00009b14, 0x00000005},
893 { 0x00009b18, 0x00000008 }, 986 {0x00009b18, 0x00000008},
894 { 0x00009b1c, 0x00000009 }, 987 {0x00009b1c, 0x00000009},
895 { 0x00009b20, 0x0000000a }, 988 {0x00009b20, 0x0000000a},
896 { 0x00009b24, 0x0000000b }, 989 {0x00009b24, 0x0000000b},
897 { 0x00009b28, 0x0000000c }, 990 {0x00009b28, 0x0000000c},
898 { 0x00009b2c, 0x0000000d }, 991 {0x00009b2c, 0x0000000d},
899 { 0x00009b30, 0x00000010 }, 992 {0x00009b30, 0x00000010},
900 { 0x00009b34, 0x00000011 }, 993 {0x00009b34, 0x00000011},
901 { 0x00009b38, 0x00000012 }, 994 {0x00009b38, 0x00000012},
902 { 0x00009b3c, 0x00000013 }, 995 {0x00009b3c, 0x00000013},
903 { 0x00009b40, 0x00000014 }, 996 {0x00009b40, 0x00000014},
904 { 0x00009b44, 0x00000015 }, 997 {0x00009b44, 0x00000015},
905 { 0x00009b48, 0x00000018 }, 998 {0x00009b48, 0x00000018},
906 { 0x00009b4c, 0x00000019 }, 999 {0x00009b4c, 0x00000019},
907 { 0x00009b50, 0x0000001a }, 1000 {0x00009b50, 0x0000001a},
908 { 0x00009b54, 0x0000001b }, 1001 {0x00009b54, 0x0000001b},
909 { 0x00009b58, 0x0000001c }, 1002 {0x00009b58, 0x0000001c},
910 { 0x00009b5c, 0x0000001d }, 1003 {0x00009b5c, 0x0000001d},
911 { 0x00009b60, 0x00000020 }, 1004 {0x00009b60, 0x00000020},
912 { 0x00009b64, 0x00000021 }, 1005 {0x00009b64, 0x00000021},
913 { 0x00009b68, 0x00000022 }, 1006 {0x00009b68, 0x00000022},
914 { 0x00009b6c, 0x00000023 }, 1007 {0x00009b6c, 0x00000023},
915 { 0x00009b70, 0x00000024 }, 1008 {0x00009b70, 0x00000024},
916 { 0x00009b74, 0x00000025 }, 1009 {0x00009b74, 0x00000025},
917 { 0x00009b78, 0x00000028 }, 1010 {0x00009b78, 0x00000028},
918 { 0x00009b7c, 0x00000029 }, 1011 {0x00009b7c, 0x00000029},
919 { 0x00009b80, 0x0000002a }, 1012 {0x00009b80, 0x0000002a},
920 { 0x00009b84, 0x0000002b }, 1013 {0x00009b84, 0x0000002b},
921 { 0x00009b88, 0x0000002c }, 1014 {0x00009b88, 0x0000002c},
922 { 0x00009b8c, 0x0000002d }, 1015 {0x00009b8c, 0x0000002d},
923 { 0x00009b90, 0x00000030 }, 1016 {0x00009b90, 0x00000030},
924 { 0x00009b94, 0x00000031 }, 1017 {0x00009b94, 0x00000031},
925 { 0x00009b98, 0x00000032 }, 1018 {0x00009b98, 0x00000032},
926 { 0x00009b9c, 0x00000033 }, 1019 {0x00009b9c, 0x00000033},
927 { 0x00009ba0, 0x00000034 }, 1020 {0x00009ba0, 0x00000034},
928 { 0x00009ba4, 0x00000035 }, 1021 {0x00009ba4, 0x00000035},
929 { 0x00009ba8, 0x00000035 }, 1022 {0x00009ba8, 0x00000035},
930 { 0x00009bac, 0x00000035 }, 1023 {0x00009bac, 0x00000035},
931 { 0x00009bb0, 0x00000035 }, 1024 {0x00009bb0, 0x00000035},
932 { 0x00009bb4, 0x00000035 }, 1025 {0x00009bb4, 0x00000035},
933 { 0x00009bb8, 0x00000035 }, 1026 {0x00009bb8, 0x00000035},
934 { 0x00009bbc, 0x00000035 }, 1027 {0x00009bbc, 0x00000035},
935 { 0x00009bc0, 0x00000035 }, 1028 {0x00009bc0, 0x00000035},
936 { 0x00009bc4, 0x00000035 }, 1029 {0x00009bc4, 0x00000035},
937 { 0x00009bc8, 0x00000035 }, 1030 {0x00009bc8, 0x00000035},
938 { 0x00009bcc, 0x00000035 }, 1031 {0x00009bcc, 0x00000035},
939 { 0x00009bd0, 0x00000035 }, 1032 {0x00009bd0, 0x00000035},
940 { 0x00009bd4, 0x00000035 }, 1033 {0x00009bd4, 0x00000035},
941 { 0x00009bd8, 0x00000035 }, 1034 {0x00009bd8, 0x00000035},
942 { 0x00009bdc, 0x00000035 }, 1035 {0x00009bdc, 0x00000035},
943 { 0x00009be0, 0x00000035 }, 1036 {0x00009be0, 0x00000035},
944 { 0x00009be4, 0x00000035 }, 1037 {0x00009be4, 0x00000035},
945 { 0x00009be8, 0x00000035 }, 1038 {0x00009be8, 0x00000035},
946 { 0x00009bec, 0x00000035 }, 1039 {0x00009bec, 0x00000035},
947 { 0x00009bf0, 0x00000035 }, 1040 {0x00009bf0, 0x00000035},
948 { 0x00009bf4, 0x00000035 }, 1041 {0x00009bf4, 0x00000035},
949 { 0x00009bf8, 0x00000010 }, 1042 {0x00009bf8, 0x00000010},
950 { 0x00009bfc, 0x0000001a }, 1043 {0x00009bfc, 0x0000001a},
951 { 0x0000a210, 0x40806333 }, 1044 {0x0000a210, 0x40806333},
952 { 0x0000a214, 0x00106c10 }, 1045 {0x0000a214, 0x00106c10},
953 { 0x0000a218, 0x009c4060 }, 1046 {0x0000a218, 0x009c4060},
954 { 0x0000a220, 0x018830c6 }, 1047 {0x0000a220, 0x018830c6},
955 { 0x0000a224, 0x00000400 }, 1048 {0x0000a224, 0x00000400},
956 { 0x0000a228, 0x001a0bb5 }, 1049 {0x0000a228, 0x001a0bb5},
957 { 0x0000a22c, 0x00000000 }, 1050 {0x0000a22c, 0x00000000},
958 { 0x0000a234, 0x20202020 }, 1051 {0x0000a234, 0x20202020},
959 { 0x0000a238, 0x20202020 }, 1052 {0x0000a238, 0x20202020},
960 { 0x0000a23c, 0x13c889af }, 1053 {0x0000a23c, 0x13c889af},
961 { 0x0000a240, 0x38490a20 }, 1054 {0x0000a240, 0x38490a20},
962 { 0x0000a244, 0x00007bb6 }, 1055 {0x0000a244, 0x00007bb6},
963 { 0x0000a248, 0x0fff3ffc }, 1056 {0x0000a248, 0x0fff3ffc},
964 { 0x0000a24c, 0x00000001 }, 1057 {0x0000a24c, 0x00000001},
965 { 0x0000a250, 0x0000e000 }, 1058 {0x0000a250, 0x0000e000},
966 { 0x0000a254, 0x00000000 }, 1059 {0x0000a254, 0x00000000},
967 { 0x0000a258, 0x0cc75380 }, 1060 {0x0000a258, 0x0cc75380},
968 { 0x0000a25c, 0x0f0f0f01 }, 1061 {0x0000a25c, 0x0f0f0f01},
969 { 0x0000a260, 0xdfa91f01 }, 1062 {0x0000a260, 0xdfa91f01},
970 { 0x0000a268, 0x00000001 }, 1063 {0x0000a268, 0x00000001},
971 { 0x0000a26c, 0x0ebae9c6 }, 1064 {0x0000a26c, 0x0e79e5c6},
972 { 0x0000b26c, 0x0ebae9c6 }, 1065 {0x0000b26c, 0x0e79e5c6},
973 { 0x0000c26c, 0x0ebae9c6 }, 1066 {0x0000c26c, 0x0e79e5c6},
974 { 0x0000d270, 0x00820820 }, 1067 {0x0000d270, 0x00820820},
975 { 0x0000a278, 0x1ce739ce }, 1068 {0x0000a278, 0x1ce739ce},
976 { 0x0000a27c, 0x050701ce }, 1069 {0x0000a27c, 0x050701ce},
977 { 0x0000a338, 0x00000000 }, 1070 {0x0000a338, 0x00000000},
978 { 0x0000a33c, 0x00000000 }, 1071 {0x0000a33c, 0x00000000},
979 { 0x0000a340, 0x00000000 }, 1072 {0x0000a340, 0x00000000},
980 { 0x0000a344, 0x00000000 }, 1073 {0x0000a344, 0x00000000},
981 { 0x0000a348, 0x3fffffff }, 1074 {0x0000a348, 0x3fffffff},
982 { 0x0000a34c, 0x3fffffff }, 1075 {0x0000a34c, 0x3fffffff},
983 { 0x0000a350, 0x3fffffff }, 1076 {0x0000a350, 0x3fffffff},
984 { 0x0000a354, 0x0003ffff }, 1077 {0x0000a354, 0x0003ffff},
985 { 0x0000a358, 0x79bfaa03 }, 1078 {0x0000a358, 0x79bfaa03},
986 { 0x0000d35c, 0x07ffffef }, 1079 {0x0000d35c, 0x07ffffef},
987 { 0x0000d360, 0x0fffffe7 }, 1080 {0x0000d360, 0x0fffffe7},
988 { 0x0000d364, 0x17ffffe5 }, 1081 {0x0000d364, 0x17ffffe5},
989 { 0x0000d368, 0x1fffffe4 }, 1082 {0x0000d368, 0x1fffffe4},
990 { 0x0000d36c, 0x37ffffe3 }, 1083 {0x0000d36c, 0x37ffffe3},
991 { 0x0000d370, 0x3fffffe3 }, 1084 {0x0000d370, 0x3fffffe3},
992 { 0x0000d374, 0x57ffffe3 }, 1085 {0x0000d374, 0x57ffffe3},
993 { 0x0000d378, 0x5fffffe2 }, 1086 {0x0000d378, 0x5fffffe2},
994 { 0x0000d37c, 0x7fffffe2 }, 1087 {0x0000d37c, 0x7fffffe2},
995 { 0x0000d380, 0x7f3c7bba }, 1088 {0x0000d380, 0x7f3c7bba},
996 { 0x0000d384, 0xf3307ff0 }, 1089 {0x0000d384, 0xf3307ff0},
997 { 0x0000a388, 0x0c000000 }, 1090 {0x0000a388, 0x0c000000},
998 { 0x0000a38c, 0x20202020 }, 1091 {0x0000a38c, 0x20202020},
999 { 0x0000a390, 0x20202020 }, 1092 {0x0000a390, 0x20202020},
1000 { 0x0000a394, 0x1ce739ce }, 1093 {0x0000a394, 0x1ce739ce},
1001 { 0x0000a398, 0x000001ce }, 1094 {0x0000a398, 0x000001ce},
1002 { 0x0000a39c, 0x00000001 }, 1095 {0x0000a39c, 0x00000001},
1003 { 0x0000a3a0, 0x00000000 }, 1096 {0x0000a3a0, 0x00000000},
1004 { 0x0000a3a4, 0x00000000 }, 1097 {0x0000a3a4, 0x00000000},
1005 { 0x0000a3a8, 0x00000000 }, 1098 {0x0000a3a8, 0x00000000},
1006 { 0x0000a3ac, 0x00000000 }, 1099 {0x0000a3ac, 0x00000000},
1007 { 0x0000a3b0, 0x00000000 }, 1100 {0x0000a3b0, 0x00000000},
1008 { 0x0000a3b4, 0x00000000 }, 1101 {0x0000a3b4, 0x00000000},
1009 { 0x0000a3b8, 0x00000000 }, 1102 {0x0000a3b8, 0x00000000},
1010 { 0x0000a3bc, 0x00000000 }, 1103 {0x0000a3bc, 0x00000000},
1011 { 0x0000a3c0, 0x00000000 }, 1104 {0x0000a3c0, 0x00000000},
1012 { 0x0000a3c4, 0x00000000 }, 1105 {0x0000a3c4, 0x00000000},
1013 { 0x0000a3c8, 0x00000246 }, 1106 {0x0000a3c8, 0x00000246},
1014 { 0x0000a3cc, 0x20202020 }, 1107 {0x0000a3cc, 0x20202020},
1015 { 0x0000a3d0, 0x20202020 }, 1108 {0x0000a3d0, 0x20202020},
1016 { 0x0000a3d4, 0x20202020 }, 1109 {0x0000a3d4, 0x20202020},
1017 { 0x0000a3dc, 0x1ce739ce }, 1110 {0x0000a3dc, 0x1ce739ce},
1018 { 0x0000a3e0, 0x000001ce }, 1111 {0x0000a3e0, 0x000001ce},
1019}; 1112};
1020 1113
1021static const u32 ar5416Bank0_9160[][2] = { 1114static const u32 ar5416Bank0_9160[][2] = {
1022 { 0x000098b0, 0x1e5795e5 }, 1115 /* Addr allmodes */
1023 { 0x000098e0, 0x02008020 }, 1116 {0x000098b0, 0x1e5795e5},
1117 {0x000098e0, 0x02008020},
1024}; 1118};
1025 1119
1026static const u32 ar5416BB_RfGain_9160[][3] = { 1120static const u32 ar5416BB_RfGain_9160[][3] = {
1027 { 0x00009a00, 0x00000000, 0x00000000 }, 1121 /* Addr 5G_HT20 5G_HT40 */
1028 { 0x00009a04, 0x00000040, 0x00000040 }, 1122 {0x00009a00, 0x00000000, 0x00000000},
1029 { 0x00009a08, 0x00000080, 0x00000080 }, 1123 {0x00009a04, 0x00000040, 0x00000040},
1030 { 0x00009a0c, 0x000001a1, 0x00000141 }, 1124 {0x00009a08, 0x00000080, 0x00000080},
1031 { 0x00009a10, 0x000001e1, 0x00000181 }, 1125 {0x00009a0c, 0x000001a1, 0x00000141},
1032 { 0x00009a14, 0x00000021, 0x000001c1 }, 1126 {0x00009a10, 0x000001e1, 0x00000181},
1033 { 0x00009a18, 0x00000061, 0x00000001 }, 1127 {0x00009a14, 0x00000021, 0x000001c1},
1034 { 0x00009a1c, 0x00000168, 0x00000041 }, 1128 {0x00009a18, 0x00000061, 0x00000001},
1035 { 0x00009a20, 0x000001a8, 0x000001a8 }, 1129 {0x00009a1c, 0x00000168, 0x00000041},
1036 { 0x00009a24, 0x000001e8, 0x000001e8 }, 1130 {0x00009a20, 0x000001a8, 0x000001a8},
1037 { 0x00009a28, 0x00000028, 0x00000028 }, 1131 {0x00009a24, 0x000001e8, 0x000001e8},
1038 { 0x00009a2c, 0x00000068, 0x00000068 }, 1132 {0x00009a28, 0x00000028, 0x00000028},
1039 { 0x00009a30, 0x00000189, 0x000000a8 }, 1133 {0x00009a2c, 0x00000068, 0x00000068},
1040 { 0x00009a34, 0x000001c9, 0x00000169 }, 1134 {0x00009a30, 0x00000189, 0x000000a8},
1041 { 0x00009a38, 0x00000009, 0x000001a9 }, 1135 {0x00009a34, 0x000001c9, 0x00000169},
1042 { 0x00009a3c, 0x00000049, 0x000001e9 }, 1136 {0x00009a38, 0x00000009, 0x000001a9},
1043 { 0x00009a40, 0x00000089, 0x00000029 }, 1137 {0x00009a3c, 0x00000049, 0x000001e9},
1044 { 0x00009a44, 0x00000170, 0x00000069 }, 1138 {0x00009a40, 0x00000089, 0x00000029},
1045 { 0x00009a48, 0x000001b0, 0x00000190 }, 1139 {0x00009a44, 0x00000170, 0x00000069},
1046 { 0x00009a4c, 0x000001f0, 0x000001d0 }, 1140 {0x00009a48, 0x000001b0, 0x00000190},
1047 { 0x00009a50, 0x00000030, 0x00000010 }, 1141 {0x00009a4c, 0x000001f0, 0x000001d0},
1048 { 0x00009a54, 0x00000070, 0x00000050 }, 1142 {0x00009a50, 0x00000030, 0x00000010},
1049 { 0x00009a58, 0x00000191, 0x00000090 }, 1143 {0x00009a54, 0x00000070, 0x00000050},
1050 { 0x00009a5c, 0x000001d1, 0x00000151 }, 1144 {0x00009a58, 0x00000191, 0x00000090},
1051 { 0x00009a60, 0x00000011, 0x00000191 }, 1145 {0x00009a5c, 0x000001d1, 0x00000151},
1052 { 0x00009a64, 0x00000051, 0x000001d1 }, 1146 {0x00009a60, 0x00000011, 0x00000191},
1053 { 0x00009a68, 0x00000091, 0x00000011 }, 1147 {0x00009a64, 0x00000051, 0x000001d1},
1054 { 0x00009a6c, 0x000001b8, 0x00000051 }, 1148 {0x00009a68, 0x00000091, 0x00000011},
1055 { 0x00009a70, 0x000001f8, 0x00000198 }, 1149 {0x00009a6c, 0x000001b8, 0x00000051},
1056 { 0x00009a74, 0x00000038, 0x000001d8 }, 1150 {0x00009a70, 0x000001f8, 0x00000198},
1057 { 0x00009a78, 0x00000078, 0x00000018 }, 1151 {0x00009a74, 0x00000038, 0x000001d8},
1058 { 0x00009a7c, 0x00000199, 0x00000058 }, 1152 {0x00009a78, 0x00000078, 0x00000018},
1059 { 0x00009a80, 0x000001d9, 0x00000098 }, 1153 {0x00009a7c, 0x00000199, 0x00000058},
1060 { 0x00009a84, 0x00000019, 0x00000159 }, 1154 {0x00009a80, 0x000001d9, 0x00000098},
1061 { 0x00009a88, 0x00000059, 0x00000199 }, 1155 {0x00009a84, 0x00000019, 0x00000159},
1062 { 0x00009a8c, 0x00000099, 0x000001d9 }, 1156 {0x00009a88, 0x00000059, 0x00000199},
1063 { 0x00009a90, 0x000000d9, 0x00000019 }, 1157 {0x00009a8c, 0x00000099, 0x000001d9},
1064 { 0x00009a94, 0x000000f9, 0x00000059 }, 1158 {0x00009a90, 0x000000d9, 0x00000019},
1065 { 0x00009a98, 0x000000f9, 0x00000099 }, 1159 {0x00009a94, 0x000000f9, 0x00000059},
1066 { 0x00009a9c, 0x000000f9, 0x000000d9 }, 1160 {0x00009a98, 0x000000f9, 0x00000099},
1067 { 0x00009aa0, 0x000000f9, 0x000000f9 }, 1161 {0x00009a9c, 0x000000f9, 0x000000d9},
1068 { 0x00009aa4, 0x000000f9, 0x000000f9 }, 1162 {0x00009aa0, 0x000000f9, 0x000000f9},
1069 { 0x00009aa8, 0x000000f9, 0x000000f9 }, 1163 {0x00009aa4, 0x000000f9, 0x000000f9},
1070 { 0x00009aac, 0x000000f9, 0x000000f9 }, 1164 {0x00009aa8, 0x000000f9, 0x000000f9},
1071 { 0x00009ab0, 0x000000f9, 0x000000f9 }, 1165 {0x00009aac, 0x000000f9, 0x000000f9},
1072 { 0x00009ab4, 0x000000f9, 0x000000f9 }, 1166 {0x00009ab0, 0x000000f9, 0x000000f9},
1073 { 0x00009ab8, 0x000000f9, 0x000000f9 }, 1167 {0x00009ab4, 0x000000f9, 0x000000f9},
1074 { 0x00009abc, 0x000000f9, 0x000000f9 }, 1168 {0x00009ab8, 0x000000f9, 0x000000f9},
1075 { 0x00009ac0, 0x000000f9, 0x000000f9 }, 1169 {0x00009abc, 0x000000f9, 0x000000f9},
1076 { 0x00009ac4, 0x000000f9, 0x000000f9 }, 1170 {0x00009ac0, 0x000000f9, 0x000000f9},
1077 { 0x00009ac8, 0x000000f9, 0x000000f9 }, 1171 {0x00009ac4, 0x000000f9, 0x000000f9},
1078 { 0x00009acc, 0x000000f9, 0x000000f9 }, 1172 {0x00009ac8, 0x000000f9, 0x000000f9},
1079 { 0x00009ad0, 0x000000f9, 0x000000f9 }, 1173 {0x00009acc, 0x000000f9, 0x000000f9},
1080 { 0x00009ad4, 0x000000f9, 0x000000f9 }, 1174 {0x00009ad0, 0x000000f9, 0x000000f9},
1081 { 0x00009ad8, 0x000000f9, 0x000000f9 }, 1175 {0x00009ad4, 0x000000f9, 0x000000f9},
1082 { 0x00009adc, 0x000000f9, 0x000000f9 }, 1176 {0x00009ad8, 0x000000f9, 0x000000f9},
1083 { 0x00009ae0, 0x000000f9, 0x000000f9 }, 1177 {0x00009adc, 0x000000f9, 0x000000f9},
1084 { 0x00009ae4, 0x000000f9, 0x000000f9 }, 1178 {0x00009ae0, 0x000000f9, 0x000000f9},
1085 { 0x00009ae8, 0x000000f9, 0x000000f9 }, 1179 {0x00009ae4, 0x000000f9, 0x000000f9},
1086 { 0x00009aec, 0x000000f9, 0x000000f9 }, 1180 {0x00009ae8, 0x000000f9, 0x000000f9},
1087 { 0x00009af0, 0x000000f9, 0x000000f9 }, 1181 {0x00009aec, 0x000000f9, 0x000000f9},
1088 { 0x00009af4, 0x000000f9, 0x000000f9 }, 1182 {0x00009af0, 0x000000f9, 0x000000f9},
1089 { 0x00009af8, 0x000000f9, 0x000000f9 }, 1183 {0x00009af4, 0x000000f9, 0x000000f9},
1090 { 0x00009afc, 0x000000f9, 0x000000f9 }, 1184 {0x00009af8, 0x000000f9, 0x000000f9},
1185 {0x00009afc, 0x000000f9, 0x000000f9},
1091}; 1186};
1092 1187
1093static const u32 ar5416Bank1_9160[][2] = { 1188static const u32 ar5416Bank1_9160[][2] = {
1094 { 0x000098b0, 0x02108421 }, 1189 /* Addr allmodes */
1095 { 0x000098ec, 0x00000008 }, 1190 {0x000098b0, 0x02108421},
1191 {0x000098ec, 0x00000008},
1096}; 1192};
1097 1193
1098static const u32 ar5416Bank2_9160[][2] = { 1194static const u32 ar5416Bank2_9160[][2] = {
1099 { 0x000098b0, 0x0e73ff17 }, 1195 /* Addr allmodes */
1100 { 0x000098e0, 0x00000420 }, 1196 {0x000098b0, 0x0e73ff17},
1197 {0x000098e0, 0x00000420},
1101}; 1198};
1102 1199
1103static const u32 ar5416Bank3_9160[][3] = { 1200static const u32 ar5416Bank3_9160[][3] = {
1104 { 0x000098f0, 0x01400018, 0x01c00018 }, 1201 /* Addr 5G_HT20 5G_HT40 */
1202 {0x000098f0, 0x01400018, 0x01c00018},
1105}; 1203};
1106 1204
1107static const u32 ar5416Bank6_9160[][3] = { 1205static const u32 ar5416Bank6_9160[][3] = {
1108 { 0x0000989c, 0x00000000, 0x00000000 }, 1206 /* Addr 5G_HT20 5G_HT40 */
1109 { 0x0000989c, 0x00000000, 0x00000000 }, 1207 {0x0000989c, 0x00000000, 0x00000000},
1110 { 0x0000989c, 0x00000000, 0x00000000 }, 1208 {0x0000989c, 0x00000000, 0x00000000},
1111 { 0x0000989c, 0x00e00000, 0x00e00000 }, 1209 {0x0000989c, 0x00000000, 0x00000000},
1112 { 0x0000989c, 0x005e0000, 0x005e0000 }, 1210 {0x0000989c, 0x00e00000, 0x00e00000},
1113 { 0x0000989c, 0x00120000, 0x00120000 }, 1211 {0x0000989c, 0x005e0000, 0x005e0000},
1114 { 0x0000989c, 0x00620000, 0x00620000 }, 1212 {0x0000989c, 0x00120000, 0x00120000},
1115 { 0x0000989c, 0x00020000, 0x00020000 }, 1213 {0x0000989c, 0x00620000, 0x00620000},
1116 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1214 {0x0000989c, 0x00020000, 0x00020000},
1117 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1215 {0x0000989c, 0x00ff0000, 0x00ff0000},
1118 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1216 {0x0000989c, 0x00ff0000, 0x00ff0000},
1119 { 0x0000989c, 0x40ff0000, 0x40ff0000 }, 1217 {0x0000989c, 0x00ff0000, 0x00ff0000},
1120 { 0x0000989c, 0x005f0000, 0x005f0000 }, 1218 {0x0000989c, 0x40ff0000, 0x40ff0000},
1121 { 0x0000989c, 0x00870000, 0x00870000 }, 1219 {0x0000989c, 0x005f0000, 0x005f0000},
1122 { 0x0000989c, 0x00f90000, 0x00f90000 }, 1220 {0x0000989c, 0x00870000, 0x00870000},
1123 { 0x0000989c, 0x007b0000, 0x007b0000 }, 1221 {0x0000989c, 0x00f90000, 0x00f90000},
1124 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1222 {0x0000989c, 0x007b0000, 0x007b0000},
1125 { 0x0000989c, 0x00f50000, 0x00f50000 }, 1223 {0x0000989c, 0x00ff0000, 0x00ff0000},
1126 { 0x0000989c, 0x00dc0000, 0x00dc0000 }, 1224 {0x0000989c, 0x00f50000, 0x00f50000},
1127 { 0x0000989c, 0x00110000, 0x00110000 }, 1225 {0x0000989c, 0x00dc0000, 0x00dc0000},
1128 { 0x0000989c, 0x006100a8, 0x006100a8 }, 1226 {0x0000989c, 0x00110000, 0x00110000},
1129 { 0x0000989c, 0x004210a2, 0x004210a2 }, 1227 {0x0000989c, 0x006100a8, 0x006100a8},
1130 { 0x0000989c, 0x0014008f, 0x0014008f }, 1228 {0x0000989c, 0x004210a2, 0x004210a2},
1131 { 0x0000989c, 0x00c40003, 0x00c40003 }, 1229 {0x0000989c, 0x0014008f, 0x0014008f},
1132 { 0x0000989c, 0x003000f2, 0x003000f2 }, 1230 {0x0000989c, 0x00c40003, 0x00c40003},
1133 { 0x0000989c, 0x00440016, 0x00440016 }, 1231 {0x0000989c, 0x003000f2, 0x003000f2},
1134 { 0x0000989c, 0x00410040, 0x00410040 }, 1232 {0x0000989c, 0x00440016, 0x00440016},
1135 { 0x0000989c, 0x0001805e, 0x0001805e }, 1233 {0x0000989c, 0x00410040, 0x00410040},
1136 { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, 1234 {0x0000989c, 0x0001805e, 0x0001805e},
1137 { 0x0000989c, 0x000000f1, 0x000000f1 }, 1235 {0x0000989c, 0x0000c0ab, 0x0000c0ab},
1138 { 0x0000989c, 0x00002081, 0x00002081 }, 1236 {0x0000989c, 0x000000f1, 0x000000f1},
1139 { 0x0000989c, 0x000000d4, 0x000000d4 }, 1237 {0x0000989c, 0x00002081, 0x00002081},
1140 { 0x000098d0, 0x0000000f, 0x0010000f }, 1238 {0x0000989c, 0x000000d4, 0x000000d4},
1239 {0x000098d0, 0x0000000f, 0x0010000f},
1141}; 1240};
1142 1241
1143static const u32 ar5416Bank6TPC_9160[][3] = { 1242static const u32 ar5416Bank6TPC_9160[][3] = {
1144 { 0x0000989c, 0x00000000, 0x00000000 }, 1243 /* Addr 5G_HT20 5G_HT40 */
1145 { 0x0000989c, 0x00000000, 0x00000000 }, 1244 {0x0000989c, 0x00000000, 0x00000000},
1146 { 0x0000989c, 0x00000000, 0x00000000 }, 1245 {0x0000989c, 0x00000000, 0x00000000},
1147 { 0x0000989c, 0x00e00000, 0x00e00000 }, 1246 {0x0000989c, 0x00000000, 0x00000000},
1148 { 0x0000989c, 0x005e0000, 0x005e0000 }, 1247 {0x0000989c, 0x00e00000, 0x00e00000},
1149 { 0x0000989c, 0x00120000, 0x00120000 }, 1248 {0x0000989c, 0x005e0000, 0x005e0000},
1150 { 0x0000989c, 0x00620000, 0x00620000 }, 1249 {0x0000989c, 0x00120000, 0x00120000},
1151 { 0x0000989c, 0x00020000, 0x00020000 }, 1250 {0x0000989c, 0x00620000, 0x00620000},
1152 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1251 {0x0000989c, 0x00020000, 0x00020000},
1153 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1252 {0x0000989c, 0x00ff0000, 0x00ff0000},
1154 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1253 {0x0000989c, 0x00ff0000, 0x00ff0000},
1155 { 0x0000989c, 0x40ff0000, 0x40ff0000 }, 1254 {0x0000989c, 0x00ff0000, 0x00ff0000},
1156 { 0x0000989c, 0x005f0000, 0x005f0000 }, 1255 {0x0000989c, 0x40ff0000, 0x40ff0000},
1157 { 0x0000989c, 0x00870000, 0x00870000 }, 1256 {0x0000989c, 0x005f0000, 0x005f0000},
1158 { 0x0000989c, 0x00f90000, 0x00f90000 }, 1257 {0x0000989c, 0x00870000, 0x00870000},
1159 { 0x0000989c, 0x007b0000, 0x007b0000 }, 1258 {0x0000989c, 0x00f90000, 0x00f90000},
1160 { 0x0000989c, 0x00ff0000, 0x00ff0000 }, 1259 {0x0000989c, 0x007b0000, 0x007b0000},
1161 { 0x0000989c, 0x00f50000, 0x00f50000 }, 1260 {0x0000989c, 0x00ff0000, 0x00ff0000},
1162 { 0x0000989c, 0x00dc0000, 0x00dc0000 }, 1261 {0x0000989c, 0x00f50000, 0x00f50000},
1163 { 0x0000989c, 0x00110000, 0x00110000 }, 1262 {0x0000989c, 0x00dc0000, 0x00dc0000},
1164 { 0x0000989c, 0x006100a8, 0x006100a8 }, 1263 {0x0000989c, 0x00110000, 0x00110000},
1165 { 0x0000989c, 0x00423022, 0x00423022 }, 1264 {0x0000989c, 0x006100a8, 0x006100a8},
1166 { 0x0000989c, 0x2014008f, 0x2014008f }, 1265 {0x0000989c, 0x00423022, 0x00423022},
1167 { 0x0000989c, 0x00c40002, 0x00c40002 }, 1266 {0x0000989c, 0x2014008f, 0x2014008f},
1168 { 0x0000989c, 0x003000f2, 0x003000f2 }, 1267 {0x0000989c, 0x00c40002, 0x00c40002},
1169 { 0x0000989c, 0x00440016, 0x00440016 }, 1268 {0x0000989c, 0x003000f2, 0x003000f2},
1170 { 0x0000989c, 0x00410040, 0x00410040 }, 1269 {0x0000989c, 0x00440016, 0x00440016},
1171 { 0x0000989c, 0x0001805e, 0x0001805e }, 1270 {0x0000989c, 0x00410040, 0x00410040},
1172 { 0x0000989c, 0x0000c0ab, 0x0000c0ab }, 1271 {0x0000989c, 0x0001805e, 0x0001805e},
1173 { 0x0000989c, 0x000000e1, 0x000000e1 }, 1272 {0x0000989c, 0x0000c0ab, 0x0000c0ab},
1174 { 0x0000989c, 0x00007080, 0x00007080 }, 1273 {0x0000989c, 0x000000e1, 0x000000e1},
1175 { 0x0000989c, 0x000000d4, 0x000000d4 }, 1274 {0x0000989c, 0x00007080, 0x00007080},
1176 { 0x000098d0, 0x0000000f, 0x0010000f }, 1275 {0x0000989c, 0x000000d4, 0x000000d4},
1276 {0x000098d0, 0x0000000f, 0x0010000f},
1177}; 1277};
1178 1278
1179static const u32 ar5416Bank7_9160[][2] = { 1279static const u32 ar5416Bank7_9160[][2] = {
1180 { 0x0000989c, 0x00000500 }, 1280 /* Addr allmodes */
1181 { 0x0000989c, 0x00000800 }, 1281 {0x0000989c, 0x00000500},
1182 { 0x000098cc, 0x0000000e }, 1282 {0x0000989c, 0x00000800},
1283 {0x000098cc, 0x0000000e},
1183}; 1284};
1184 1285
1185static const u32 ar5416Addac_9160[][2] = { 1286static const u32 ar5416Addac_9160[][2] = {
1186 {0x0000989c, 0x00000000 }, 1287 /* Addr allmodes */
1187 {0x0000989c, 0x00000000 }, 1288 {0x0000989c, 0x00000000},
1188 {0x0000989c, 0x00000000 }, 1289 {0x0000989c, 0x00000000},
1189 {0x0000989c, 0x00000000 }, 1290 {0x0000989c, 0x00000000},
1190 {0x0000989c, 0x00000000 }, 1291 {0x0000989c, 0x00000000},
1191 {0x0000989c, 0x00000000 }, 1292 {0x0000989c, 0x00000000},
1192 {0x0000989c, 0x000000c0 }, 1293 {0x0000989c, 0x00000000},
1193 {0x0000989c, 0x00000018 }, 1294 {0x0000989c, 0x000000c0},
1194 {0x0000989c, 0x00000004 }, 1295 {0x0000989c, 0x00000018},
1195 {0x0000989c, 0x00000000 }, 1296 {0x0000989c, 0x00000004},
1196 {0x0000989c, 0x00000000 }, 1297 {0x0000989c, 0x00000000},
1197 {0x0000989c, 0x00000000 }, 1298 {0x0000989c, 0x00000000},
1198 {0x0000989c, 0x00000000 }, 1299 {0x0000989c, 0x00000000},
1199 {0x0000989c, 0x00000000 }, 1300 {0x0000989c, 0x00000000},
1200 {0x0000989c, 0x00000000 }, 1301 {0x0000989c, 0x00000000},
1201 {0x0000989c, 0x00000000 }, 1302 {0x0000989c, 0x00000000},
1202 {0x0000989c, 0x00000000 }, 1303 {0x0000989c, 0x00000000},
1203 {0x0000989c, 0x00000000 }, 1304 {0x0000989c, 0x00000000},
1204 {0x0000989c, 0x00000000 }, 1305 {0x0000989c, 0x00000000},
1205 {0x0000989c, 0x00000000 }, 1306 {0x0000989c, 0x00000000},
1206 {0x0000989c, 0x00000000 }, 1307 {0x0000989c, 0x00000000},
1207 {0x0000989c, 0x000000c0 }, 1308 {0x0000989c, 0x00000000},
1208 {0x0000989c, 0x00000019 }, 1309 {0x0000989c, 0x000000c0},
1209 {0x0000989c, 0x00000004 }, 1310 {0x0000989c, 0x00000019},
1210 {0x0000989c, 0x00000000 }, 1311 {0x0000989c, 0x00000004},
1211 {0x0000989c, 0x00000000 }, 1312 {0x0000989c, 0x00000000},
1212 {0x0000989c, 0x00000000 }, 1313 {0x0000989c, 0x00000000},
1213 {0x0000989c, 0x00000004 }, 1314 {0x0000989c, 0x00000000},
1214 {0x0000989c, 0x00000003 }, 1315 {0x0000989c, 0x00000004},
1215 {0x0000989c, 0x00000008 }, 1316 {0x0000989c, 0x00000003},
1216 {0x0000989c, 0x00000000 }, 1317 {0x0000989c, 0x00000008},
1217 {0x000098cc, 0x00000000 }, 1318 {0x0000989c, 0x00000000},
1319 {0x000098cc, 0x00000000},
1218}; 1320};
1219 1321
1220static const u32 ar5416Addac_91601_1[][2] = { 1322static const u32 ar5416Addac_9160_1_1[][2] = {
1221 {0x0000989c, 0x00000000 }, 1323 /* Addr allmodes */
1222 {0x0000989c, 0x00000000 }, 1324 {0x0000989c, 0x00000000},
1223 {0x0000989c, 0x00000000 }, 1325 {0x0000989c, 0x00000000},
1224 {0x0000989c, 0x00000000 }, 1326 {0x0000989c, 0x00000000},
1225 {0x0000989c, 0x00000000 }, 1327 {0x0000989c, 0x00000000},
1226 {0x0000989c, 0x00000000 }, 1328 {0x0000989c, 0x00000000},
1227 {0x0000989c, 0x000000c0 }, 1329 {0x0000989c, 0x00000000},
1228 {0x0000989c, 0x00000018 }, 1330 {0x0000989c, 0x000000c0},
1229 {0x0000989c, 0x00000004 }, 1331 {0x0000989c, 0x00000018},
1230 {0x0000989c, 0x00000000 }, 1332 {0x0000989c, 0x00000004},
1231 {0x0000989c, 0x00000000 }, 1333 {0x0000989c, 0x00000000},
1232 {0x0000989c, 0x00000000 }, 1334 {0x0000989c, 0x00000000},
1233 {0x0000989c, 0x00000000 }, 1335 {0x0000989c, 0x00000000},
1234 {0x0000989c, 0x00000000 }, 1336 {0x0000989c, 0x00000000},
1235 {0x0000989c, 0x00000000 }, 1337 {0x0000989c, 0x00000000},
1236 {0x0000989c, 0x00000000 }, 1338 {0x0000989c, 0x00000000},
1237 {0x0000989c, 0x00000000 }, 1339 {0x0000989c, 0x00000000},
1238 {0x0000989c, 0x00000000 }, 1340 {0x0000989c, 0x00000000},
1239 {0x0000989c, 0x00000000 }, 1341 {0x0000989c, 0x00000000},
1240 {0x0000989c, 0x00000000 }, 1342 {0x0000989c, 0x00000000},
1241 {0x0000989c, 0x00000000 }, 1343 {0x0000989c, 0x00000000},
1242 {0x0000989c, 0x000000c0 }, 1344 {0x0000989c, 0x00000000},
1243 {0x0000989c, 0x00000019 }, 1345 {0x0000989c, 0x000000c0},
1244 {0x0000989c, 0x00000004 }, 1346 {0x0000989c, 0x00000019},
1245 {0x0000989c, 0x00000000 }, 1347 {0x0000989c, 0x00000004},
1246 {0x0000989c, 0x00000000 }, 1348 {0x0000989c, 0x00000000},
1247 {0x0000989c, 0x00000000 }, 1349 {0x0000989c, 0x00000000},
1248 {0x0000989c, 0x00000000 }, 1350 {0x0000989c, 0x00000000},
1249 {0x0000989c, 0x00000000 }, 1351 {0x0000989c, 0x00000000},
1250 {0x0000989c, 0x00000000 }, 1352 {0x0000989c, 0x00000000},
1251 {0x0000989c, 0x00000000 }, 1353 {0x0000989c, 0x00000000},
1252 {0x000098cc, 0x00000000 }, 1354 {0x0000989c, 0x00000000},
1355 {0x000098cc, 0x00000000},
1253}; 1356};
1254 1357
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_calib.c b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
index 5fdbb53b47e..dabafb874c3 100644
--- 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 ath_hw *ah, u8 numChains)
239 if (qCoff > 15) 239 if (qCoff > 15)
240 qCoff = 15; 240 qCoff = 15;
241 else if (qCoff <= -16) 241 else if (qCoff <= -16)
242 qCoff = 16; 242 qCoff = -16;
243 243
244 ath_print(common, ATH_DBG_CALIBRATE, 244 ath_print(common, ATH_DBG_CALIBRATE,
245 "Chn %d : iCoff = 0x%x qCoff = 0x%x\n", 245 "Chn %d : iCoff = 0x%x qCoff = 0x%x\n",
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
index 0317ac9fc1b..75b80d13ff9 100644
--- 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(struct ath_hw *ah)
179 ARRAY_SIZE(ar5416Bank7_9160), 2); 179 ARRAY_SIZE(ar5416Bank7_9160), 2);
180 if (AR_SREV_9160_11(ah)) { 180 if (AR_SREV_9160_11(ah)) {
181 INIT_INI_ARRAY(&ah->iniAddac, 181 INIT_INI_ARRAY(&ah->iniAddac,
182 ar5416Addac_91601_1, 182 ar5416Addac_9160_1_1,
183 ARRAY_SIZE(ar5416Addac_91601_1), 2); 183 ARRAY_SIZE(ar5416Addac_9160_1_1), 2);
184 } else { 184 } else {
185 INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac_9160, 185 INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac_9160,
186 ARRAY_SIZE(ar5416Addac_9160), 2); 186 ARRAY_SIZE(ar5416Addac_9160), 2);
@@ -239,12 +239,12 @@ void ar9002_hw_cck_chan14_spread(struct ath_hw *ah)
239{ 239{
240 if (AR_SREV_9287_11_OR_LATER(ah)) { 240 if (AR_SREV_9287_11_OR_LATER(ah)) {
241 INIT_INI_ARRAY(&ah->iniCckfirNormal, 241 INIT_INI_ARRAY(&ah->iniCckfirNormal,
242 ar9287Common_normal_cck_fir_coeff_92871_1, 242 ar9287Common_normal_cck_fir_coeff_9287_1_1,
243 ARRAY_SIZE(ar9287Common_normal_cck_fir_coeff_92871_1), 243 ARRAY_SIZE(ar9287Common_normal_cck_fir_coeff_9287_1_1),
244 2); 244 2);
245 INIT_INI_ARRAY(&ah->iniCckfirJapan2484, 245 INIT_INI_ARRAY(&ah->iniCckfirJapan2484,
246 ar9287Common_japan_2484_cck_fir_coeff_92871_1, 246 ar9287Common_japan_2484_cck_fir_coeff_9287_1_1,
247 ARRAY_SIZE(ar9287Common_japan_2484_cck_fir_coeff_92871_1), 247 ARRAY_SIZE(ar9287Common_japan_2484_cck_fir_coeff_9287_1_1),
248 2); 248 2);
249 } 249 }
250} 250}
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h
index 8ab24ee8564..13b5e484c2e 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h
@@ -14,5217 +14,5213 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16 16
17#ifndef INITVALS_9002_10_H
18#define INITVALS_9002_10_H
19
20static const u32 ar9280Modes_9280[][6] = { 17static const u32 ar9280Modes_9280[][6] = {
21 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, 18 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
22 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, 19 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
23 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, 20 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
24 { 0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008 }, 21 {0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008},
25 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801080, 0x08400840, 0x06e006e0 }, 22 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801080, 0x08400840, 0x06e006e0},
26 { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, 23 {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f},
27 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, 24 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
28 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, 25 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
29 { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 26 {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
30 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, 27 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
31 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 28 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
32 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, 29 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
33 { 0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0 }, 30 {0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0},
34 { 0x00009848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563 }, 31 {0x00009848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563},
35 { 0x0000a848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563 }, 32 {0x0000a848, 0x00028566, 0x00028566, 0x00028563, 0x00028563, 0x00028563},
36 { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, 33 {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2},
37 { 0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e }, 34 {0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e},
38 { 0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e }, 35 {0x0000985c, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e},
39 { 0x00009860, 0x00049d18, 0x00049d18, 0x00049d20, 0x00049d20, 0x00049d18 }, 36 {0x00009860, 0x00049d18, 0x00049d18, 0x00049d20, 0x00049d20, 0x00049d18},
40 { 0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 37 {0x0000c864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
41 { 0x00009868, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190 }, 38 {0x00009868, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190, 0x5ac64190},
42 { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, 39 {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881},
43 { 0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0 }, 40 {0x00009914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0x000007d0},
44 { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, 41 {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016},
45 { 0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, 42 {0x00009924, 0xd00a8a07, 0xd00a8a07, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d},
46 { 0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010 }, 43 {0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010, 0xdfbc1010},
47 { 0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, 44 {0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010},
48 { 0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, 45 {0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010},
49 { 0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210 }, 46 {0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210},
50 { 0x0000c9b8, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a }, 47 {0x0000c9b8, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a},
51 { 0x0000c9bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, 48 {0x0000c9bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00},
52 { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 49 {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
53 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, 50 {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
54 { 0x000099c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c }, 51 {0x000099c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c},
55 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, 52 {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
56 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, 53 {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
57 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 54 {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
58 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 55 {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
59 { 0x00009a00, 0x00008184, 0x00008184, 0x00000214, 0x00000214, 0x00000214 }, 56 {0x00009a00, 0x00008184, 0x00008184, 0x00000214, 0x00000214, 0x00000214},
60 { 0x00009a04, 0x00008188, 0x00008188, 0x00000218, 0x00000218, 0x00000218 }, 57 {0x00009a04, 0x00008188, 0x00008188, 0x00000218, 0x00000218, 0x00000218},
61 { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000224, 0x00000224, 0x00000224 }, 58 {0x00009a08, 0x0000818c, 0x0000818c, 0x00000224, 0x00000224, 0x00000224},
62 { 0x00009a0c, 0x00008190, 0x00008190, 0x00000228, 0x00000228, 0x00000228 }, 59 {0x00009a0c, 0x00008190, 0x00008190, 0x00000228, 0x00000228, 0x00000228},
63 { 0x00009a10, 0x00008194, 0x00008194, 0x0000022c, 0x0000022c, 0x0000022c }, 60 {0x00009a10, 0x00008194, 0x00008194, 0x0000022c, 0x0000022c, 0x0000022c},
64 { 0x00009a14, 0x00008200, 0x00008200, 0x00000230, 0x00000230, 0x00000230 }, 61 {0x00009a14, 0x00008200, 0x00008200, 0x00000230, 0x00000230, 0x00000230},
65 { 0x00009a18, 0x00008204, 0x00008204, 0x000002a4, 0x000002a4, 0x000002a4 }, 62 {0x00009a18, 0x00008204, 0x00008204, 0x000002a4, 0x000002a4, 0x000002a4},
66 { 0x00009a1c, 0x00008208, 0x00008208, 0x000002a8, 0x000002a8, 0x000002a8 }, 63 {0x00009a1c, 0x00008208, 0x00008208, 0x000002a8, 0x000002a8, 0x000002a8},
67 { 0x00009a20, 0x0000820c, 0x0000820c, 0x000002ac, 0x000002ac, 0x000002ac }, 64 {0x00009a20, 0x0000820c, 0x0000820c, 0x000002ac, 0x000002ac, 0x000002ac},
68 { 0x00009a24, 0x00008210, 0x00008210, 0x000002b0, 0x000002b0, 0x000002b0 }, 65 {0x00009a24, 0x00008210, 0x00008210, 0x000002b0, 0x000002b0, 0x000002b0},
69 { 0x00009a28, 0x00008214, 0x00008214, 0x000002b4, 0x000002b4, 0x000002b4 }, 66 {0x00009a28, 0x00008214, 0x00008214, 0x000002b4, 0x000002b4, 0x000002b4},
70 { 0x00009a2c, 0x00008280, 0x00008280, 0x000002b8, 0x000002b8, 0x000002b8 }, 67 {0x00009a2c, 0x00008280, 0x00008280, 0x000002b8, 0x000002b8, 0x000002b8},
71 { 0x00009a30, 0x00008284, 0x00008284, 0x00000390, 0x00000390, 0x00000390 }, 68 {0x00009a30, 0x00008284, 0x00008284, 0x00000390, 0x00000390, 0x00000390},
72 { 0x00009a34, 0x00008288, 0x00008288, 0x00000394, 0x00000394, 0x00000394 }, 69 {0x00009a34, 0x00008288, 0x00008288, 0x00000394, 0x00000394, 0x00000394},
73 { 0x00009a38, 0x0000828c, 0x0000828c, 0x00000398, 0x00000398, 0x00000398 }, 70 {0x00009a38, 0x0000828c, 0x0000828c, 0x00000398, 0x00000398, 0x00000398},
74 { 0x00009a3c, 0x00008290, 0x00008290, 0x00000334, 0x00000334, 0x00000334 }, 71 {0x00009a3c, 0x00008290, 0x00008290, 0x00000334, 0x00000334, 0x00000334},
75 { 0x00009a40, 0x00008300, 0x00008300, 0x00000338, 0x00000338, 0x00000338 }, 72 {0x00009a40, 0x00008300, 0x00008300, 0x00000338, 0x00000338, 0x00000338},
76 { 0x00009a44, 0x00008304, 0x00008304, 0x000003ac, 0x000003ac, 0x000003ac }, 73 {0x00009a44, 0x00008304, 0x00008304, 0x000003ac, 0x000003ac, 0x000003ac},
77 { 0x00009a48, 0x00008308, 0x00008308, 0x000003b0, 0x000003b0, 0x000003b0 }, 74 {0x00009a48, 0x00008308, 0x00008308, 0x000003b0, 0x000003b0, 0x000003b0},
78 { 0x00009a4c, 0x0000830c, 0x0000830c, 0x000003b4, 0x000003b4, 0x000003b4 }, 75 {0x00009a4c, 0x0000830c, 0x0000830c, 0x000003b4, 0x000003b4, 0x000003b4},
79 { 0x00009a50, 0x00008310, 0x00008310, 0x000003b8, 0x000003b8, 0x000003b8 }, 76 {0x00009a50, 0x00008310, 0x00008310, 0x000003b8, 0x000003b8, 0x000003b8},
80 { 0x00009a54, 0x00008314, 0x00008314, 0x000003a5, 0x000003a5, 0x000003a5 }, 77 {0x00009a54, 0x00008314, 0x00008314, 0x000003a5, 0x000003a5, 0x000003a5},
81 { 0x00009a58, 0x00008380, 0x00008380, 0x000003a9, 0x000003a9, 0x000003a9 }, 78 {0x00009a58, 0x00008380, 0x00008380, 0x000003a9, 0x000003a9, 0x000003a9},
82 { 0x00009a5c, 0x00008384, 0x00008384, 0x000003ad, 0x000003ad, 0x000003ad }, 79 {0x00009a5c, 0x00008384, 0x00008384, 0x000003ad, 0x000003ad, 0x000003ad},
83 { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, 80 {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194},
84 { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, 81 {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0},
85 { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, 82 {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c},
86 { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, 83 {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8},
87 { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, 84 {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284},
88 { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, 85 {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288},
89 { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, 86 {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224},
90 { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, 87 {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290},
91 { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, 88 {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300},
92 { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, 89 {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304},
93 { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, 90 {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308},
94 { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, 91 {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c},
95 { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, 92 {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380},
96 { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, 93 {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384},
97 { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, 94 {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700},
98 { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, 95 {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704},
99 { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, 96 {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708},
100 { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, 97 {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c},
101 { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, 98 {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780},
102 { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, 99 {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784},
103 { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, 100 {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00},
104 { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, 101 {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04},
105 { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, 102 {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08},
106 { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, 103 {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c},
107 { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, 104 {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80},
108 { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, 105 {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84},
109 { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, 106 {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88},
110 { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, 107 {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c},
111 { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, 108 {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90},
112 { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, 109 {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80},
113 { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, 110 {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84},
114 { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, 111 {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88},
115 { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, 112 {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c},
116 { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, 113 {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90},
117 { 0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c }, 114 {0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c},
118 { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310 }, 115 {0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310},
119 { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384 }, 116 {0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384},
120 { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388 }, 117 {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388},
121 { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324 }, 118 {0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324},
122 { 0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704 }, 119 {0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704},
123 { 0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4 }, 120 {0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4},
124 { 0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8 }, 121 {0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8},
125 { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710 }, 122 {0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710},
126 { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714 }, 123 {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714},
127 { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720 }, 124 {0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720},
128 { 0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724 }, 125 {0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724},
129 { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728 }, 126 {0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728},
130 { 0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c }, 127 {0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c},
131 { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0 }, 128 {0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0},
132 { 0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4 }, 129 {0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4},
133 { 0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8 }, 130 {0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8},
134 { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0 }, 131 {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0},
135 { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4 }, 132 {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4},
136 { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8 }, 133 {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8},
137 { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5 }, 134 {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5},
138 { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9 }, 135 {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9},
139 { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad }, 136 {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad},
140 { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1 }, 137 {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1},
141 { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5 }, 138 {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5},
142 { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9 }, 139 {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9},
143 { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5 }, 140 {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5},
144 { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9 }, 141 {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9},
145 { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1 }, 142 {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1},
146 { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5 }, 143 {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5},
147 { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9 }, 144 {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9},
148 { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6 }, 145 {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6},
149 { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca }, 146 {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca},
150 { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce }, 147 {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce},
151 { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2 }, 148 {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2},
152 { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6 }, 149 {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6},
153 { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3 }, 150 {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3},
154 { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7 }, 151 {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7},
155 { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb }, 152 {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb},
156 { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf }, 153 {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf},
157 { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7 }, 154 {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7},
158 { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db }, 155 {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db},
159 { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db }, 156 {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db},
160 { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db }, 157 {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db},
161 { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 158 {0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
162 { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 159 {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
163 { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 160 {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
164 { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 161 {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
165 { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 162 {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
166 { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 163 {0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
167 { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 164 {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
168 { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 165 {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
169 { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 166 {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
170 { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 167 {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
171 { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 168 {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
172 { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 169 {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
173 { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 170 {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
174 { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 171 {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
175 { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 172 {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
176 { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 173 {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
177 { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 174 {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
178 { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 175 {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
179 { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 176 {0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
180 { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 177 {0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
181 { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 178 {0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
182 { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 179 {0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
183 { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 180 {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
184 { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 181 {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
185 { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 182 {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
186 { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 183 {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
187 { 0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444 }, 184 {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444},
188 { 0x0000a208, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788 }, 185 {0x0000a208, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788, 0x803e4788},
189 { 0x0000a20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019 }, 186 {0x0000a20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019},
190 { 0x0000b20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019 }, 187 {0x0000b20c, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019, 0x000c6019},
191 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, 188 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
192 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 189 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
193 { 0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, 190 {0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652},
194 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 191 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
195 { 0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002 }, 192 {0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002},
196 { 0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009 }, 193 {0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009},
197 { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b }, 194 {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b},
198 { 0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012 }, 195 {0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012},
199 { 0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048 }, 196 {0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048},
200 { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a }, 197 {0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a},
201 { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211 }, 198 {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211},
202 { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, 199 {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213},
203 { 0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b }, 200 {0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b},
204 { 0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412 }, 201 {0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412},
205 { 0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414 }, 202 {0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414},
206 { 0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a }, 203 {0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a},
207 { 0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649 }, 204 {0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649},
208 { 0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b }, 205 {0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b},
209 { 0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49 }, 206 {0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49},
210 { 0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48 }, 207 {0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48},
211 { 0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a }, 208 {0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a},
212 { 0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88 }, 209 {0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88},
213 { 0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a }, 210 {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a},
214 { 0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9 }, 211 {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9},
215 { 0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42 }, 212 {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42},
216 { 0x0000784c, 0x0e4f048c, 0x0e4f048c, 0x0e4d048c, 0x0e4d048c, 0x0e4d048c }, 213 {0x0000784c, 0x0e4f048c, 0x0e4f048c, 0x0e4d048c, 0x0e4d048c, 0x0e4d048c},
217 { 0x00007854, 0x12031828, 0x12031828, 0x12035828, 0x12035828, 0x12035828 }, 214 {0x00007854, 0x12031828, 0x12031828, 0x12035828, 0x12035828, 0x12035828},
218 { 0x00007870, 0x807ec400, 0x807ec400, 0x807ec000, 0x807ec000, 0x807ec000 }, 215 {0x00007870, 0x807ec400, 0x807ec400, 0x807ec000, 0x807ec000, 0x807ec000},
219 { 0x0000788c, 0x00010000, 0x00010000, 0x00110000, 0x00110000, 0x00110000 }, 216 {0x0000788c, 0x00010000, 0x00010000, 0x00110000, 0x00110000, 0x00110000},
220}; 217};
221 218
222static const u32 ar9280Common_9280[][2] = { 219static const u32 ar9280Common_9280[][2] = {
223 { 0x0000000c, 0x00000000 }, 220 /* Addr allmodes */
224 { 0x00000030, 0x00020015 }, 221 {0x0000000c, 0x00000000},
225 { 0x00000034, 0x00000005 }, 222 {0x00000030, 0x00020015},
226 { 0x00000040, 0x00000000 }, 223 {0x00000034, 0x00000005},
227 { 0x00000044, 0x00000008 }, 224 {0x00000040, 0x00000000},
228 { 0x00000048, 0x00000008 }, 225 {0x00000044, 0x00000008},
229 { 0x0000004c, 0x00000010 }, 226 {0x00000048, 0x00000008},
230 { 0x00000050, 0x00000000 }, 227 {0x0000004c, 0x00000010},
231 { 0x00000054, 0x0000001f }, 228 {0x00000050, 0x00000000},
232 { 0x00000800, 0x00000000 }, 229 {0x00000054, 0x0000001f},
233 { 0x00000804, 0x00000000 }, 230 {0x00000800, 0x00000000},
234 { 0x00000808, 0x00000000 }, 231 {0x00000804, 0x00000000},
235 { 0x0000080c, 0x00000000 }, 232 {0x00000808, 0x00000000},
236 { 0x00000810, 0x00000000 }, 233 {0x0000080c, 0x00000000},
237 { 0x00000814, 0x00000000 }, 234 {0x00000810, 0x00000000},
238 { 0x00000818, 0x00000000 }, 235 {0x00000814, 0x00000000},
239 { 0x0000081c, 0x00000000 }, 236 {0x00000818, 0x00000000},
240 { 0x00000820, 0x00000000 }, 237 {0x0000081c, 0x00000000},
241 { 0x00000824, 0x00000000 }, 238 {0x00000820, 0x00000000},
242 { 0x00001040, 0x002ffc0f }, 239 {0x00000824, 0x00000000},
243 { 0x00001044, 0x002ffc0f }, 240 {0x00001040, 0x002ffc0f},
244 { 0x00001048, 0x002ffc0f }, 241 {0x00001044, 0x002ffc0f},
245 { 0x0000104c, 0x002ffc0f }, 242 {0x00001048, 0x002ffc0f},
246 { 0x00001050, 0x002ffc0f }, 243 {0x0000104c, 0x002ffc0f},
247 { 0x00001054, 0x002ffc0f }, 244 {0x00001050, 0x002ffc0f},
248 { 0x00001058, 0x002ffc0f }, 245 {0x00001054, 0x002ffc0f},
249 { 0x0000105c, 0x002ffc0f }, 246 {0x00001058, 0x002ffc0f},
250 { 0x00001060, 0x002ffc0f }, 247 {0x0000105c, 0x002ffc0f},
251 { 0x00001064, 0x002ffc0f }, 248 {0x00001060, 0x002ffc0f},
252 { 0x00001230, 0x00000000 }, 249 {0x00001064, 0x002ffc0f},
253 { 0x00001270, 0x00000000 }, 250 {0x00001230, 0x00000000},
254 { 0x00001038, 0x00000000 }, 251 {0x00001270, 0x00000000},
255 { 0x00001078, 0x00000000 }, 252 {0x00001038, 0x00000000},
256 { 0x000010b8, 0x00000000 }, 253 {0x00001078, 0x00000000},
257 { 0x000010f8, 0x00000000 }, 254 {0x000010b8, 0x00000000},
258 { 0x00001138, 0x00000000 }, 255 {0x000010f8, 0x00000000},
259 { 0x00001178, 0x00000000 }, 256 {0x00001138, 0x00000000},
260 { 0x000011b8, 0x00000000 }, 257 {0x00001178, 0x00000000},
261 { 0x000011f8, 0x00000000 }, 258 {0x000011b8, 0x00000000},
262 { 0x00001238, 0x00000000 }, 259 {0x000011f8, 0x00000000},
263 { 0x00001278, 0x00000000 }, 260 {0x00001238, 0x00000000},
264 { 0x000012b8, 0x00000000 }, 261 {0x00001278, 0x00000000},
265 { 0x000012f8, 0x00000000 }, 262 {0x000012b8, 0x00000000},
266 { 0x00001338, 0x00000000 }, 263 {0x000012f8, 0x00000000},
267 { 0x00001378, 0x00000000 }, 264 {0x00001338, 0x00000000},
268 { 0x000013b8, 0x00000000 }, 265 {0x00001378, 0x00000000},
269 { 0x000013f8, 0x00000000 }, 266 {0x000013b8, 0x00000000},
270 { 0x00001438, 0x00000000 }, 267 {0x000013f8, 0x00000000},
271 { 0x00001478, 0x00000000 }, 268 {0x00001438, 0x00000000},
272 { 0x000014b8, 0x00000000 }, 269 {0x00001478, 0x00000000},
273 { 0x000014f8, 0x00000000 }, 270 {0x000014b8, 0x00000000},
274 { 0x00001538, 0x00000000 }, 271 {0x000014f8, 0x00000000},
275 { 0x00001578, 0x00000000 }, 272 {0x00001538, 0x00000000},
276 { 0x000015b8, 0x00000000 }, 273 {0x00001578, 0x00000000},
277 { 0x000015f8, 0x00000000 }, 274 {0x000015b8, 0x00000000},
278 { 0x00001638, 0x00000000 }, 275 {0x000015f8, 0x00000000},
279 { 0x00001678, 0x00000000 }, 276 {0x00001638, 0x00000000},
280 { 0x000016b8, 0x00000000 }, 277 {0x00001678, 0x00000000},
281 { 0x000016f8, 0x00000000 }, 278 {0x000016b8, 0x00000000},
282 { 0x00001738, 0x00000000 }, 279 {0x000016f8, 0x00000000},
283 { 0x00001778, 0x00000000 }, 280 {0x00001738, 0x00000000},
284 { 0x000017b8, 0x00000000 }, 281 {0x00001778, 0x00000000},
285 { 0x000017f8, 0x00000000 }, 282 {0x000017b8, 0x00000000},
286 { 0x0000103c, 0x00000000 }, 283 {0x000017f8, 0x00000000},
287 { 0x0000107c, 0x00000000 }, 284 {0x0000103c, 0x00000000},
288 { 0x000010bc, 0x00000000 }, 285 {0x0000107c, 0x00000000},
289 { 0x000010fc, 0x00000000 }, 286 {0x000010bc, 0x00000000},
290 { 0x0000113c, 0x00000000 }, 287 {0x000010fc, 0x00000000},
291 { 0x0000117c, 0x00000000 }, 288 {0x0000113c, 0x00000000},
292 { 0x000011bc, 0x00000000 }, 289 {0x0000117c, 0x00000000},
293 { 0x000011fc, 0x00000000 }, 290 {0x000011bc, 0x00000000},
294 { 0x0000123c, 0x00000000 }, 291 {0x000011fc, 0x00000000},
295 { 0x0000127c, 0x00000000 }, 292 {0x0000123c, 0x00000000},
296 { 0x000012bc, 0x00000000 }, 293 {0x0000127c, 0x00000000},
297 { 0x000012fc, 0x00000000 }, 294 {0x000012bc, 0x00000000},
298 { 0x0000133c, 0x00000000 }, 295 {0x000012fc, 0x00000000},
299 { 0x0000137c, 0x00000000 }, 296 {0x0000133c, 0x00000000},
300 { 0x000013bc, 0x00000000 }, 297 {0x0000137c, 0x00000000},
301 { 0x000013fc, 0x00000000 }, 298 {0x000013bc, 0x00000000},
302 { 0x0000143c, 0x00000000 }, 299 {0x000013fc, 0x00000000},
303 { 0x0000147c, 0x00000000 }, 300 {0x0000143c, 0x00000000},
304 { 0x00004030, 0x00000002 }, 301 {0x0000147c, 0x00000000},
305 { 0x0000403c, 0x00000002 }, 302 {0x00004030, 0x00000002},
306 { 0x00004024, 0x0000001f }, 303 {0x0000403c, 0x00000002},
307 { 0x00007010, 0x00000033 }, 304 {0x00004024, 0x0000001f},
308 { 0x00007038, 0x000004c2 }, 305 {0x00007010, 0x00000033},
309 { 0x00008004, 0x00000000 }, 306 {0x00007038, 0x000004c2},
310 { 0x00008008, 0x00000000 }, 307 {0x00008004, 0x00000000},
311 { 0x0000800c, 0x00000000 }, 308 {0x00008008, 0x00000000},
312 { 0x00008018, 0x00000700 }, 309 {0x0000800c, 0x00000000},
313 { 0x00008020, 0x00000000 }, 310 {0x00008018, 0x00000700},
314 { 0x00008038, 0x00000000 }, 311 {0x00008020, 0x00000000},
315 { 0x0000803c, 0x00000000 }, 312 {0x00008038, 0x00000000},
316 { 0x00008048, 0x40000000 }, 313 {0x0000803c, 0x00000000},
317 { 0x00008054, 0x00000000 }, 314 {0x00008048, 0x40000000},
318 { 0x00008058, 0x00000000 }, 315 {0x00008054, 0x00000000},
319 { 0x0000805c, 0x000fc78f }, 316 {0x00008058, 0x00000000},
320 { 0x00008060, 0x0000000f }, 317 {0x0000805c, 0x000fc78f},
321 { 0x00008064, 0x00000000 }, 318 {0x00008060, 0x0000000f},
322 { 0x00008070, 0x00000000 }, 319 {0x00008064, 0x00000000},
323 { 0x000080c0, 0x2a82301a }, 320 {0x00008070, 0x00000000},
324 { 0x000080c4, 0x05dc01e0 }, 321 {0x000080c0, 0x2a82301a},
325 { 0x000080c8, 0x1f402710 }, 322 {0x000080c4, 0x05dc01e0},
326 { 0x000080cc, 0x01f40000 }, 323 {0x000080c8, 0x1f402710},
327 { 0x000080d0, 0x00001e00 }, 324 {0x000080cc, 0x01f40000},
328 { 0x000080d4, 0x00000000 }, 325 {0x000080d0, 0x00001e00},
329 { 0x000080d8, 0x00400000 }, 326 {0x000080d4, 0x00000000},
330 { 0x000080e0, 0xffffffff }, 327 {0x000080d8, 0x00400000},
331 { 0x000080e4, 0x0000ffff }, 328 {0x000080e0, 0xffffffff},
332 { 0x000080e8, 0x003f3f3f }, 329 {0x000080e4, 0x0000ffff},
333 { 0x000080ec, 0x00000000 }, 330 {0x000080e8, 0x003f3f3f},
334 { 0x000080f0, 0x00000000 }, 331 {0x000080ec, 0x00000000},
335 { 0x000080f4, 0x00000000 }, 332 {0x000080f0, 0x00000000},
336 { 0x000080f8, 0x00000000 }, 333 {0x000080f4, 0x00000000},
337 { 0x000080fc, 0x00020000 }, 334 {0x000080f8, 0x00000000},
338 { 0x00008100, 0x00020000 }, 335 {0x000080fc, 0x00020000},
339 { 0x00008104, 0x00000001 }, 336 {0x00008100, 0x00020000},
340 { 0x00008108, 0x00000052 }, 337 {0x00008104, 0x00000001},
341 { 0x0000810c, 0x00000000 }, 338 {0x00008108, 0x00000052},
342 { 0x00008110, 0x00000168 }, 339 {0x0000810c, 0x00000000},
343 { 0x00008118, 0x000100aa }, 340 {0x00008110, 0x00000168},
344 { 0x0000811c, 0x00003210 }, 341 {0x00008118, 0x000100aa},
345 { 0x00008120, 0x08f04800 }, 342 {0x0000811c, 0x00003210},
346 { 0x00008124, 0x00000000 }, 343 {0x00008120, 0x08f04800},
347 { 0x00008128, 0x00000000 }, 344 {0x00008124, 0x00000000},
348 { 0x0000812c, 0x00000000 }, 345 {0x00008128, 0x00000000},
349 { 0x00008130, 0x00000000 }, 346 {0x0000812c, 0x00000000},
350 { 0x00008134, 0x00000000 }, 347 {0x00008130, 0x00000000},
351 { 0x00008138, 0x00000000 }, 348 {0x00008134, 0x00000000},
352 { 0x0000813c, 0x00000000 }, 349 {0x00008138, 0x00000000},
353 { 0x00008144, 0x00000000 }, 350 {0x0000813c, 0x00000000},
354 { 0x00008168, 0x00000000 }, 351 {0x00008144, 0x00000000},
355 { 0x0000816c, 0x00000000 }, 352 {0x00008168, 0x00000000},
356 { 0x00008170, 0x32143320 }, 353 {0x0000816c, 0x00000000},
357 { 0x00008174, 0xfaa4fa50 }, 354 {0x00008170, 0x32143320},
358 { 0x00008178, 0x00000100 }, 355 {0x00008174, 0xfaa4fa50},
359 { 0x0000817c, 0x00000000 }, 356 {0x00008178, 0x00000100},
360 { 0x000081c4, 0x00000000 }, 357 {0x0000817c, 0x00000000},
361 { 0x000081d0, 0x00003210 }, 358 {0x000081c4, 0x00000000},
362 { 0x000081ec, 0x00000000 }, 359 {0x000081d0, 0x00003210},
363 { 0x000081f0, 0x00000000 }, 360 {0x000081ec, 0x00000000},
364 { 0x000081f4, 0x00000000 }, 361 {0x000081f0, 0x00000000},
365 { 0x000081f8, 0x00000000 }, 362 {0x000081f4, 0x00000000},
366 { 0x000081fc, 0x00000000 }, 363 {0x000081f8, 0x00000000},
367 { 0x00008200, 0x00000000 }, 364 {0x000081fc, 0x00000000},
368 { 0x00008204, 0x00000000 }, 365 {0x00008200, 0x00000000},
369 { 0x00008208, 0x00000000 }, 366 {0x00008204, 0x00000000},
370 { 0x0000820c, 0x00000000 }, 367 {0x00008208, 0x00000000},
371 { 0x00008210, 0x00000000 }, 368 {0x0000820c, 0x00000000},
372 { 0x00008214, 0x00000000 }, 369 {0x00008210, 0x00000000},
373 { 0x00008218, 0x00000000 }, 370 {0x00008214, 0x00000000},
374 { 0x0000821c, 0x00000000 }, 371 {0x00008218, 0x00000000},
375 { 0x00008220, 0x00000000 }, 372 {0x0000821c, 0x00000000},
376 { 0x00008224, 0x00000000 }, 373 {0x00008220, 0x00000000},
377 { 0x00008228, 0x00000000 }, 374 {0x00008224, 0x00000000},
378 { 0x0000822c, 0x00000000 }, 375 {0x00008228, 0x00000000},
379 { 0x00008230, 0x00000000 }, 376 {0x0000822c, 0x00000000},
380 { 0x00008234, 0x00000000 }, 377 {0x00008230, 0x00000000},
381 { 0x00008238, 0x00000000 }, 378 {0x00008234, 0x00000000},
382 { 0x0000823c, 0x00000000 }, 379 {0x00008238, 0x00000000},
383 { 0x00008240, 0x00100000 }, 380 {0x0000823c, 0x00000000},
384 { 0x00008244, 0x0010f400 }, 381 {0x00008240, 0x00100000},
385 { 0x00008248, 0x00000100 }, 382 {0x00008244, 0x0010f400},
386 { 0x0000824c, 0x0001e800 }, 383 {0x00008248, 0x00000100},
387 { 0x00008250, 0x00000000 }, 384 {0x0000824c, 0x0001e800},
388 { 0x00008254, 0x00000000 }, 385 {0x00008250, 0x00000000},
389 { 0x00008258, 0x00000000 }, 386 {0x00008254, 0x00000000},
390 { 0x0000825c, 0x400000ff }, 387 {0x00008258, 0x00000000},
391 { 0x00008260, 0x00080922 }, 388 {0x0000825c, 0x400000ff},
392 { 0x00008270, 0x00000000 }, 389 {0x00008260, 0x00080922},
393 { 0x00008274, 0x40000000 }, 390 {0x00008270, 0x00000000},
394 { 0x00008278, 0x003e4180 }, 391 {0x00008274, 0x40000000},
395 { 0x0000827c, 0x00000000 }, 392 {0x00008278, 0x003e4180},
396 { 0x00008284, 0x0000002c }, 393 {0x0000827c, 0x00000000},
397 { 0x00008288, 0x0000002c }, 394 {0x00008284, 0x0000002c},
398 { 0x0000828c, 0x00000000 }, 395 {0x00008288, 0x0000002c},
399 { 0x00008294, 0x00000000 }, 396 {0x0000828c, 0x00000000},
400 { 0x00008298, 0x00000000 }, 397 {0x00008294, 0x00000000},
401 { 0x00008300, 0x00000000 }, 398 {0x00008298, 0x00000000},
402 { 0x00008304, 0x00000000 }, 399 {0x00008300, 0x00000000},
403 { 0x00008308, 0x00000000 }, 400 {0x00008304, 0x00000000},
404 { 0x0000830c, 0x00000000 }, 401 {0x00008308, 0x00000000},
405 { 0x00008310, 0x00000000 }, 402 {0x0000830c, 0x00000000},
406 { 0x00008314, 0x00000000 }, 403 {0x00008310, 0x00000000},
407 { 0x00008318, 0x00000000 }, 404 {0x00008314, 0x00000000},
408 { 0x00008328, 0x00000000 }, 405 {0x00008318, 0x00000000},
409 { 0x0000832c, 0x00000007 }, 406 {0x00008328, 0x00000000},
410 { 0x00008330, 0x00000302 }, 407 {0x0000832c, 0x00000007},
411 { 0x00008334, 0x00000e00 }, 408 {0x00008330, 0x00000302},
412 { 0x00008338, 0x00000000 }, 409 {0x00008334, 0x00000e00},
413 { 0x0000833c, 0x00000000 }, 410 {0x00008338, 0x00000000},
414 { 0x00008340, 0x000107ff }, 411 {0x0000833c, 0x00000000},
415 { 0x00008344, 0x00000000 }, 412 {0x00008340, 0x000107ff},
416 { 0x00009808, 0x00000000 }, 413 {0x00008344, 0x00000000},
417 { 0x0000980c, 0xaf268e30 }, 414 {0x00009808, 0x00000000},
418 { 0x00009810, 0xfd14e000 }, 415 {0x0000980c, 0xaf268e30},
419 { 0x00009814, 0x9c0a9f6b }, 416 {0x00009810, 0xfd14e000},
420 { 0x0000981c, 0x00000000 }, 417 {0x00009814, 0x9c0a9f6b},
421 { 0x0000982c, 0x0000a000 }, 418 {0x0000981c, 0x00000000},
422 { 0x00009830, 0x00000000 }, 419 {0x0000982c, 0x0000a000},
423 { 0x0000983c, 0x00200400 }, 420 {0x00009830, 0x00000000},
424 { 0x00009840, 0x206a01ae }, 421 {0x0000983c, 0x00200400},
425 { 0x0000984c, 0x0040233c }, 422 {0x00009840, 0x206a01ae},
426 { 0x0000a84c, 0x0040233c }, 423 {0x0000984c, 0x0040233c},
427 { 0x00009854, 0x00000044 }, 424 {0x0000a84c, 0x0040233c},
428 { 0x00009900, 0x00000000 }, 425 {0x00009854, 0x00000044},
429 { 0x00009904, 0x00000000 }, 426 {0x00009900, 0x00000000},
430 { 0x00009908, 0x00000000 }, 427 {0x00009904, 0x00000000},
431 { 0x0000990c, 0x00000000 }, 428 {0x00009908, 0x00000000},
432 { 0x0000991c, 0x10000fff }, 429 {0x0000990c, 0x00000000},
433 { 0x00009920, 0x04900000 }, 430 {0x0000991c, 0x10000fff},
434 { 0x0000a920, 0x04900000 }, 431 {0x00009920, 0x04900000},
435 { 0x00009928, 0x00000001 }, 432 {0x0000a920, 0x04900000},
436 { 0x0000992c, 0x00000004 }, 433 {0x00009928, 0x00000001},
437 { 0x00009934, 0x1e1f2022 }, 434 {0x0000992c, 0x00000004},
438 { 0x00009938, 0x0a0b0c0d }, 435 {0x00009934, 0x1e1f2022},
439 { 0x0000993c, 0x00000000 }, 436 {0x00009938, 0x0a0b0c0d},
440 { 0x00009948, 0x9280c00a }, 437 {0x0000993c, 0x00000000},
441 { 0x0000994c, 0x00020028 }, 438 {0x00009948, 0x9280c00a},
442 { 0x00009954, 0xe250a51e }, 439 {0x0000994c, 0x00020028},
443 { 0x00009958, 0x3388ffff }, 440 {0x00009954, 0xe250a51e},
444 { 0x00009940, 0x00781204 }, 441 {0x00009958, 0x3388ffff},
445 { 0x0000c95c, 0x004b6a8e }, 442 {0x00009940, 0x00781204},
446 { 0x0000c968, 0x000003ce }, 443 {0x0000c95c, 0x004b6a8e},
447 { 0x00009970, 0x190fb514 }, 444 {0x0000c968, 0x000003ce},
448 { 0x00009974, 0x00000000 }, 445 {0x00009970, 0x190fb514},
449 { 0x00009978, 0x00000001 }, 446 {0x00009974, 0x00000000},
450 { 0x0000997c, 0x00000000 }, 447 {0x00009978, 0x00000001},
451 { 0x00009980, 0x00000000 }, 448 {0x0000997c, 0x00000000},
452 { 0x00009984, 0x00000000 }, 449 {0x00009980, 0x00000000},
453 { 0x00009988, 0x00000000 }, 450 {0x00009984, 0x00000000},
454 { 0x0000998c, 0x00000000 }, 451 {0x00009988, 0x00000000},
455 { 0x00009990, 0x00000000 }, 452 {0x0000998c, 0x00000000},
456 { 0x00009994, 0x00000000 }, 453 {0x00009990, 0x00000000},
457 { 0x00009998, 0x00000000 }, 454 {0x00009994, 0x00000000},
458 { 0x0000999c, 0x00000000 }, 455 {0x00009998, 0x00000000},
459 { 0x000099a0, 0x00000000 }, 456 {0x0000999c, 0x00000000},
460 { 0x000099a4, 0x00000001 }, 457 {0x000099a0, 0x00000000},
461 { 0x000099a8, 0x201fff00 }, 458 {0x000099a4, 0x00000001},
462 { 0x000099ac, 0x006f00c4 }, 459 {0x000099a8, 0x201fff00},
463 { 0x000099b0, 0x03051000 }, 460 {0x000099ac, 0x006f00c4},
464 { 0x000099b4, 0x00000820 }, 461 {0x000099b0, 0x03051000},
465 { 0x000099dc, 0x00000000 }, 462 {0x000099b4, 0x00000820},
466 { 0x000099e0, 0x00000000 }, 463 {0x000099dc, 0x00000000},
467 { 0x000099e4, 0xaaaaaaaa }, 464 {0x000099e0, 0x00000000},
468 { 0x000099e8, 0x3c466478 }, 465 {0x000099e4, 0xaaaaaaaa},
469 { 0x000099ec, 0x0cc80caa }, 466 {0x000099e8, 0x3c466478},
470 { 0x000099fc, 0x00001042 }, 467 {0x000099ec, 0x0cc80caa},
471 { 0x0000a210, 0x4080a333 }, 468 {0x000099fc, 0x00001042},
472 { 0x0000a214, 0x40206c10 }, 469 {0x0000a210, 0x4080a333},
473 { 0x0000a218, 0x009c4060 }, 470 {0x0000a214, 0x40206c10},
474 { 0x0000a220, 0x01834061 }, 471 {0x0000a218, 0x009c4060},
475 { 0x0000a224, 0x00000400 }, 472 {0x0000a220, 0x01834061},
476 { 0x0000a228, 0x000003b5 }, 473 {0x0000a224, 0x00000400},
477 { 0x0000a22c, 0x23277200 }, 474 {0x0000a228, 0x000003b5},
478 { 0x0000a234, 0x20202020 }, 475 {0x0000a22c, 0x23277200},
479 { 0x0000a238, 0x20202020 }, 476 {0x0000a234, 0x20202020},
480 { 0x0000a23c, 0x13c889af }, 477 {0x0000a238, 0x20202020},
481 { 0x0000a240, 0x38490a20 }, 478 {0x0000a23c, 0x13c889af},
482 { 0x0000a244, 0x00007bb6 }, 479 {0x0000a240, 0x38490a20},
483 { 0x0000a248, 0x0fff3ffc }, 480 {0x0000a244, 0x00007bb6},
484 { 0x0000a24c, 0x00000001 }, 481 {0x0000a248, 0x0fff3ffc},
485 { 0x0000a250, 0x001da000 }, 482 {0x0000a24c, 0x00000001},
486 { 0x0000a254, 0x00000000 }, 483 {0x0000a250, 0x001da000},
487 { 0x0000a258, 0x0cdbd380 }, 484 {0x0000a254, 0x00000000},
488 { 0x0000a25c, 0x0f0f0f01 }, 485 {0x0000a258, 0x0cdbd380},
489 { 0x0000a260, 0xdfa91f01 }, 486 {0x0000a25c, 0x0f0f0f01},
490 { 0x0000a268, 0x00000000 }, 487 {0x0000a260, 0xdfa91f01},
491 { 0x0000a26c, 0x0ebae9c6 }, 488 {0x0000a268, 0x00000000},
492 { 0x0000b26c, 0x0ebae9c6 }, 489 {0x0000a26c, 0x0ebae9c6},
493 { 0x0000d270, 0x00820820 }, 490 {0x0000b26c, 0x0ebae9c6},
494 { 0x0000a278, 0x1ce739ce }, 491 {0x0000d270, 0x00820820},
495 { 0x0000a27c, 0x050701ce }, 492 {0x0000a278, 0x1ce739ce},
496 { 0x0000a358, 0x7999aa0f }, 493 {0x0000a27c, 0x050701ce},
497 { 0x0000d35c, 0x07ffffef }, 494 {0x0000a358, 0x7999aa0f},
498 { 0x0000d360, 0x0fffffe7 }, 495 {0x0000d35c, 0x07ffffef},
499 { 0x0000d364, 0x17ffffe5 }, 496 {0x0000d360, 0x0fffffe7},
500 { 0x0000d368, 0x1fffffe4 }, 497 {0x0000d364, 0x17ffffe5},
501 { 0x0000d36c, 0x37ffffe3 }, 498 {0x0000d368, 0x1fffffe4},
502 { 0x0000d370, 0x3fffffe3 }, 499 {0x0000d36c, 0x37ffffe3},
503 { 0x0000d374, 0x57ffffe3 }, 500 {0x0000d370, 0x3fffffe3},
504 { 0x0000d378, 0x5fffffe2 }, 501 {0x0000d374, 0x57ffffe3},
505 { 0x0000d37c, 0x7fffffe2 }, 502 {0x0000d378, 0x5fffffe2},
506 { 0x0000d380, 0x7f3c7bba }, 503 {0x0000d37c, 0x7fffffe2},
507 { 0x0000d384, 0xf3307ff0 }, 504 {0x0000d380, 0x7f3c7bba},
508 { 0x0000a388, 0x0c000000 }, 505 {0x0000d384, 0xf3307ff0},
509 { 0x0000a38c, 0x20202020 }, 506 {0x0000a388, 0x0c000000},
510 { 0x0000a390, 0x20202020 }, 507 {0x0000a38c, 0x20202020},
511 { 0x0000a394, 0x1ce739ce }, 508 {0x0000a390, 0x20202020},
512 { 0x0000a398, 0x000001ce }, 509 {0x0000a394, 0x1ce739ce},
513 { 0x0000a39c, 0x00000001 }, 510 {0x0000a398, 0x000001ce},
514 { 0x0000a3a0, 0x00000000 }, 511 {0x0000a39c, 0x00000001},
515 { 0x0000a3a4, 0x00000000 }, 512 {0x0000a3a0, 0x00000000},
516 { 0x0000a3a8, 0x00000000 }, 513 {0x0000a3a4, 0x00000000},
517 { 0x0000a3ac, 0x00000000 }, 514 {0x0000a3a8, 0x00000000},
518 { 0x0000a3b0, 0x00000000 }, 515 {0x0000a3ac, 0x00000000},
519 { 0x0000a3b4, 0x00000000 }, 516 {0x0000a3b0, 0x00000000},
520 { 0x0000a3b8, 0x00000000 }, 517 {0x0000a3b4, 0x00000000},
521 { 0x0000a3bc, 0x00000000 }, 518 {0x0000a3b8, 0x00000000},
522 { 0x0000a3c0, 0x00000000 }, 519 {0x0000a3bc, 0x00000000},
523 { 0x0000a3c4, 0x00000000 }, 520 {0x0000a3c0, 0x00000000},
524 { 0x0000a3c8, 0x00000246 }, 521 {0x0000a3c4, 0x00000000},
525 { 0x0000a3cc, 0x20202020 }, 522 {0x0000a3c8, 0x00000246},
526 { 0x0000a3d0, 0x20202020 }, 523 {0x0000a3cc, 0x20202020},
527 { 0x0000a3d4, 0x20202020 }, 524 {0x0000a3d0, 0x20202020},
528 { 0x0000a3dc, 0x1ce739ce }, 525 {0x0000a3d4, 0x20202020},
529 { 0x0000a3e0, 0x000001ce }, 526 {0x0000a3dc, 0x1ce739ce},
530 { 0x0000a3e4, 0x00000000 }, 527 {0x0000a3e0, 0x000001ce},
531 { 0x0000a3e8, 0x18c43433 }, 528 {0x0000a3e4, 0x00000000},
532 { 0x0000a3ec, 0x00f38081 }, 529 {0x0000a3e8, 0x18c43433},
533 { 0x00007800, 0x00040000 }, 530 {0x0000a3ec, 0x00f38081},
534 { 0x00007804, 0xdb005012 }, 531 {0x00007800, 0x00040000},
535 { 0x00007808, 0x04924914 }, 532 {0x00007804, 0xdb005012},
536 { 0x0000780c, 0x21084210 }, 533 {0x00007808, 0x04924914},
537 { 0x00007810, 0x6d801300 }, 534 {0x0000780c, 0x21084210},
538 { 0x00007814, 0x0019beff }, 535 {0x00007810, 0x6d801300},
539 { 0x00007818, 0x07e40000 }, 536 {0x00007814, 0x0019beff},
540 { 0x0000781c, 0x00492000 }, 537 {0x00007818, 0x07e40000},
541 { 0x00007820, 0x92492480 }, 538 {0x0000781c, 0x00492000},
542 { 0x00007824, 0x00040000 }, 539 {0x00007820, 0x92492480},
543 { 0x00007828, 0xdb005012 }, 540 {0x00007824, 0x00040000},
544 { 0x0000782c, 0x04924914 }, 541 {0x00007828, 0xdb005012},
545 { 0x00007830, 0x21084210 }, 542 {0x0000782c, 0x04924914},
546 { 0x00007834, 0x6d801300 }, 543 {0x00007830, 0x21084210},
547 { 0x00007838, 0x0019beff }, 544 {0x00007834, 0x6d801300},
548 { 0x0000783c, 0x07e40000 }, 545 {0x00007838, 0x0019beff},
549 { 0x00007840, 0x00492000 }, 546 {0x0000783c, 0x07e40000},
550 { 0x00007844, 0x92492480 }, 547 {0x00007840, 0x00492000},
551 { 0x00007848, 0x00120000 }, 548 {0x00007844, 0x92492480},
552 { 0x00007850, 0x54214514 }, 549 {0x00007848, 0x00120000},
553 { 0x00007858, 0x92592692 }, 550 {0x00007850, 0x54214514},
554 { 0x00007860, 0x52802000 }, 551 {0x00007858, 0x92592692},
555 { 0x00007864, 0x0a8e370e }, 552 {0x00007860, 0x52802000},
556 { 0x00007868, 0xc0102850 }, 553 {0x00007864, 0x0a8e370e},
557 { 0x0000786c, 0x812d4000 }, 554 {0x00007868, 0xc0102850},
558 { 0x00007874, 0x001b6db0 }, 555 {0x0000786c, 0x812d4000},
559 { 0x00007878, 0x00376b63 }, 556 {0x00007874, 0x001b6db0},
560 { 0x0000787c, 0x06db6db6 }, 557 {0x00007878, 0x00376b63},
561 { 0x00007880, 0x006d8000 }, 558 {0x0000787c, 0x06db6db6},
562 { 0x00007884, 0xffeffffe }, 559 {0x00007880, 0x006d8000},
563 { 0x00007888, 0xffeffffe }, 560 {0x00007884, 0xffeffffe},
564 { 0x00007890, 0x00060aeb }, 561 {0x00007888, 0xffeffffe},
565 { 0x00007894, 0x5a108000 }, 562 {0x00007890, 0x00060aeb},
566 { 0x00007898, 0x2a850160 }, 563 {0x00007894, 0x5a108000},
564 {0x00007898, 0x2a850160},
567}; 565};
568 566
569/* XXX 9280 2 */
570static const u32 ar9280Modes_9280_2[][6] = { 567static const u32 ar9280Modes_9280_2[][6] = {
571 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, 568 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
572 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, 569 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
573 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, 570 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
574 { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, 571 {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008},
575 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, 572 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
576 { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, 573 {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f},
577 { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, 574 {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810},
578 { 0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a }, 575 {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a},
579 { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, 576 {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880},
580 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, 577 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
581 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, 578 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
582 { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, 579 {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
583 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, 580 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
584 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 581 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
585 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, 582 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
586 { 0x00009840, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e, 0x206a012e }, 583 {0x00009840, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e, 0x206a012e},
587 { 0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0 }, 584 {0x00009844, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0, 0x037216a0},
588 { 0x00009850, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, 585 {0x00009850, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2},
589 { 0x00009858, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, 586 {0x00009858, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e},
590 { 0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e }, 587 {0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e},
591 { 0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18 }, 588 {0x00009860, 0x00048d18, 0x00048d18, 0x00048d20, 0x00048d20, 0x00048d18},
592 { 0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 589 {0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
593 { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, 590 {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
594 { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, 591 {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881},
595 { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, 592 {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
596 { 0x00009918, 0x0000000a, 0x00000014, 0x00000268, 0x0000000b, 0x00000016 }, 593 {0x00009918, 0x0000000a, 0x00000014, 0x00000268, 0x0000000b, 0x00000016},
597 { 0x00009924, 0xd00a8a0b, 0xd00a8a0b, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, 594 {0x00009924, 0xd00a8a0b, 0xd00a8a0b, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d},
598 { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010 }, 595 {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010, 0xffbc1010},
599 { 0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, 596 {0x00009960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010},
600 { 0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 }, 597 {0x0000a960, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010},
601 { 0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210 }, 598 {0x00009964, 0x00000210, 0x00000210, 0x00000210, 0x00000210, 0x00000210},
602 { 0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce }, 599 {0x0000c968, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce, 0x000003ce},
603 { 0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c }, 600 {0x000099b8, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c},
604 { 0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00 }, 601 {0x000099bc, 0x00000a00, 0x00000a00, 0x00000c00, 0x00000c00, 0x00000c00},
605 { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 602 {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
606 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, 603 {0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444},
607 { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, 604 {0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019},
608 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, 605 {0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019},
609 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, 606 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
610 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 607 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
611 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 608 {0x0000a23c, 0x13c88000, 0x13c88000, 0x13c88001, 0x13c88000, 0x13c88000},
612 { 0x0000a204, 0x00000444, 0x00000444, 0x00000444, 0x00000444, 0x00000444 }, 609 {0x0000a250, 0x001ff000, 0x001ff000, 0x0004a000, 0x0004a000, 0x0004a000},
613 { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019 }, 610 {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e},
614 { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f019, 0x0001f019, 0x0001f019 }, 611 {0x0000a388, 0x0c000000, 0x0c000000, 0x08000000, 0x0c000000, 0x0c000000},
615 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, 612 {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
616 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 613 {0x00007894, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000},
617 { 0x0000a23c, 0x13c88000, 0x13c88000, 0x13c88001, 0x13c88000, 0x13c88000 },
618 { 0x0000a250, 0x001ff000, 0x001ff000, 0x0004a000, 0x0004a000, 0x0004a000 },
619 { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e },
620 { 0x0000a388, 0x0c000000, 0x0c000000, 0x08000000, 0x0c000000, 0x0c000000 },
621 { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
622 { 0x00007894, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000, 0x5a508000 },
623}; 614};
624 615
625static const u32 ar9280Common_9280_2[][2] = { 616static const u32 ar9280Common_9280_2[][2] = {
626 { 0x0000000c, 0x00000000 }, 617 /* Addr allmodes */
627 { 0x00000030, 0x00020015 }, 618 {0x0000000c, 0x00000000},
628 { 0x00000034, 0x00000005 }, 619 {0x00000030, 0x00020015},
629 { 0x00000040, 0x00000000 }, 620 {0x00000034, 0x00000005},
630 { 0x00000044, 0x00000008 }, 621 {0x00000040, 0x00000000},
631 { 0x00000048, 0x00000008 }, 622 {0x00000044, 0x00000008},
632 { 0x0000004c, 0x00000010 }, 623 {0x00000048, 0x00000008},
633 { 0x00000050, 0x00000000 }, 624 {0x0000004c, 0x00000010},
634 { 0x00000054, 0x0000001f }, 625 {0x00000050, 0x00000000},
635 { 0x00000800, 0x00000000 }, 626 {0x00000054, 0x0000001f},
636 { 0x00000804, 0x00000000 }, 627 {0x00000800, 0x00000000},
637 { 0x00000808, 0x00000000 }, 628 {0x00000804, 0x00000000},
638 { 0x0000080c, 0x00000000 }, 629 {0x00000808, 0x00000000},
639 { 0x00000810, 0x00000000 }, 630 {0x0000080c, 0x00000000},
640 { 0x00000814, 0x00000000 }, 631 {0x00000810, 0x00000000},
641 { 0x00000818, 0x00000000 }, 632 {0x00000814, 0x00000000},
642 { 0x0000081c, 0x00000000 }, 633 {0x00000818, 0x00000000},
643 { 0x00000820, 0x00000000 }, 634 {0x0000081c, 0x00000000},
644 { 0x00000824, 0x00000000 }, 635 {0x00000820, 0x00000000},
645 { 0x00001040, 0x002ffc0f }, 636 {0x00000824, 0x00000000},
646 { 0x00001044, 0x002ffc0f }, 637 {0x00001040, 0x002ffc0f},
647 { 0x00001048, 0x002ffc0f }, 638 {0x00001044, 0x002ffc0f},
648 { 0x0000104c, 0x002ffc0f }, 639 {0x00001048, 0x002ffc0f},
649 { 0x00001050, 0x002ffc0f }, 640 {0x0000104c, 0x002ffc0f},
650 { 0x00001054, 0x002ffc0f }, 641 {0x00001050, 0x002ffc0f},
651 { 0x00001058, 0x002ffc0f }, 642 {0x00001054, 0x002ffc0f},
652 { 0x0000105c, 0x002ffc0f }, 643 {0x00001058, 0x002ffc0f},
653 { 0x00001060, 0x002ffc0f }, 644 {0x0000105c, 0x002ffc0f},
654 { 0x00001064, 0x002ffc0f }, 645 {0x00001060, 0x002ffc0f},
655 { 0x00001230, 0x00000000 }, 646 {0x00001064, 0x002ffc0f},
656 { 0x00001270, 0x00000000 }, 647 {0x00001230, 0x00000000},
657 { 0x00001038, 0x00000000 }, 648 {0x00001270, 0x00000000},
658 { 0x00001078, 0x00000000 }, 649 {0x00001038, 0x00000000},
659 { 0x000010b8, 0x00000000 }, 650 {0x00001078, 0x00000000},
660 { 0x000010f8, 0x00000000 }, 651 {0x000010b8, 0x00000000},
661 { 0x00001138, 0x00000000 }, 652 {0x000010f8, 0x00000000},
662 { 0x00001178, 0x00000000 }, 653 {0x00001138, 0x00000000},
663 { 0x000011b8, 0x00000000 }, 654 {0x00001178, 0x00000000},
664 { 0x000011f8, 0x00000000 }, 655 {0x000011b8, 0x00000000},
665 { 0x00001238, 0x00000000 }, 656 {0x000011f8, 0x00000000},
666 { 0x00001278, 0x00000000 }, 657 {0x00001238, 0x00000000},
667 { 0x000012b8, 0x00000000 }, 658 {0x00001278, 0x00000000},
668 { 0x000012f8, 0x00000000 }, 659 {0x000012b8, 0x00000000},
669 { 0x00001338, 0x00000000 }, 660 {0x000012f8, 0x00000000},
670 { 0x00001378, 0x00000000 }, 661 {0x00001338, 0x00000000},
671 { 0x000013b8, 0x00000000 }, 662 {0x00001378, 0x00000000},
672 { 0x000013f8, 0x00000000 }, 663 {0x000013b8, 0x00000000},
673 { 0x00001438, 0x00000000 }, 664 {0x000013f8, 0x00000000},
674 { 0x00001478, 0x00000000 }, 665 {0x00001438, 0x00000000},
675 { 0x000014b8, 0x00000000 }, 666 {0x00001478, 0x00000000},
676 { 0x000014f8, 0x00000000 }, 667 {0x000014b8, 0x00000000},
677 { 0x00001538, 0x00000000 }, 668 {0x000014f8, 0x00000000},
678 { 0x00001578, 0x00000000 }, 669 {0x00001538, 0x00000000},
679 { 0x000015b8, 0x00000000 }, 670 {0x00001578, 0x00000000},
680 { 0x000015f8, 0x00000000 }, 671 {0x000015b8, 0x00000000},
681 { 0x00001638, 0x00000000 }, 672 {0x000015f8, 0x00000000},
682 { 0x00001678, 0x00000000 }, 673 {0x00001638, 0x00000000},
683 { 0x000016b8, 0x00000000 }, 674 {0x00001678, 0x00000000},
684 { 0x000016f8, 0x00000000 }, 675 {0x000016b8, 0x00000000},
685 { 0x00001738, 0x00000000 }, 676 {0x000016f8, 0x00000000},
686 { 0x00001778, 0x00000000 }, 677 {0x00001738, 0x00000000},
687 { 0x000017b8, 0x00000000 }, 678 {0x00001778, 0x00000000},
688 { 0x000017f8, 0x00000000 }, 679 {0x000017b8, 0x00000000},
689 { 0x0000103c, 0x00000000 }, 680 {0x000017f8, 0x00000000},
690 { 0x0000107c, 0x00000000 }, 681 {0x0000103c, 0x00000000},
691 { 0x000010bc, 0x00000000 }, 682 {0x0000107c, 0x00000000},
692 { 0x000010fc, 0x00000000 }, 683 {0x000010bc, 0x00000000},
693 { 0x0000113c, 0x00000000 }, 684 {0x000010fc, 0x00000000},
694 { 0x0000117c, 0x00000000 }, 685 {0x0000113c, 0x00000000},
695 { 0x000011bc, 0x00000000 }, 686 {0x0000117c, 0x00000000},
696 { 0x000011fc, 0x00000000 }, 687 {0x000011bc, 0x00000000},
697 { 0x0000123c, 0x00000000 }, 688 {0x000011fc, 0x00000000},
698 { 0x0000127c, 0x00000000 }, 689 {0x0000123c, 0x00000000},
699 { 0x000012bc, 0x00000000 }, 690 {0x0000127c, 0x00000000},
700 { 0x000012fc, 0x00000000 }, 691 {0x000012bc, 0x00000000},
701 { 0x0000133c, 0x00000000 }, 692 {0x000012fc, 0x00000000},
702 { 0x0000137c, 0x00000000 }, 693 {0x0000133c, 0x00000000},
703 { 0x000013bc, 0x00000000 }, 694 {0x0000137c, 0x00000000},
704 { 0x000013fc, 0x00000000 }, 695 {0x000013bc, 0x00000000},
705 { 0x0000143c, 0x00000000 }, 696 {0x000013fc, 0x00000000},
706 { 0x0000147c, 0x00000000 }, 697 {0x0000143c, 0x00000000},
707 { 0x00004030, 0x00000002 }, 698 {0x0000147c, 0x00000000},
708 { 0x0000403c, 0x00000002 }, 699 {0x00004030, 0x00000002},
709 { 0x00004024, 0x0000001f }, 700 {0x0000403c, 0x00000002},
710 { 0x00004060, 0x00000000 }, 701 {0x00004024, 0x0000001f},
711 { 0x00004064, 0x00000000 }, 702 {0x00004060, 0x00000000},
712 { 0x00007010, 0x00000033 }, 703 {0x00004064, 0x00000000},
713 { 0x00007034, 0x00000002 }, 704 {0x00007010, 0x00000033},
714 { 0x00007038, 0x000004c2 }, 705 {0x00007034, 0x00000002},
715 { 0x00008004, 0x00000000 }, 706 {0x00007038, 0x000004c2},
716 { 0x00008008, 0x00000000 }, 707 {0x00008004, 0x00000000},
717 { 0x0000800c, 0x00000000 }, 708 {0x00008008, 0x00000000},
718 { 0x00008018, 0x00000700 }, 709 {0x0000800c, 0x00000000},
719 { 0x00008020, 0x00000000 }, 710 {0x00008018, 0x00000700},
720 { 0x00008038, 0x00000000 }, 711 {0x00008020, 0x00000000},
721 { 0x0000803c, 0x00000000 }, 712 {0x00008038, 0x00000000},
722 { 0x00008048, 0x40000000 }, 713 {0x0000803c, 0x00000000},
723 { 0x00008054, 0x00000000 }, 714 {0x00008048, 0x40000000},
724 { 0x00008058, 0x00000000 }, 715 {0x00008054, 0x00000000},
725 { 0x0000805c, 0x000fc78f }, 716 {0x00008058, 0x00000000},
726 { 0x00008060, 0x0000000f }, 717 {0x0000805c, 0x000fc78f},
727 { 0x00008064, 0x00000000 }, 718 {0x00008060, 0x0000000f},
728 { 0x00008070, 0x00000000 }, 719 {0x00008064, 0x00000000},
729 { 0x000080c0, 0x2a80001a }, 720 {0x00008070, 0x00000000},
730 { 0x000080c4, 0x05dc01e0 }, 721 {0x000080c0, 0x2a80001a},
731 { 0x000080c8, 0x1f402710 }, 722 {0x000080c4, 0x05dc01e0},
732 { 0x000080cc, 0x01f40000 }, 723 {0x000080c8, 0x1f402710},
733 { 0x000080d0, 0x00001e00 }, 724 {0x000080cc, 0x01f40000},
734 { 0x000080d4, 0x00000000 }, 725 {0x000080d0, 0x00001e00},
735 { 0x000080d8, 0x00400000 }, 726 {0x000080d4, 0x00000000},
736 { 0x000080e0, 0xffffffff }, 727 {0x000080d8, 0x00400000},
737 { 0x000080e4, 0x0000ffff }, 728 {0x000080e0, 0xffffffff},
738 { 0x000080e8, 0x003f3f3f }, 729 {0x000080e4, 0x0000ffff},
739 { 0x000080ec, 0x00000000 }, 730 {0x000080e8, 0x003f3f3f},
740 { 0x000080f0, 0x00000000 }, 731 {0x000080ec, 0x00000000},
741 { 0x000080f4, 0x00000000 }, 732 {0x000080f0, 0x00000000},
742 { 0x000080f8, 0x00000000 }, 733 {0x000080f4, 0x00000000},
743 { 0x000080fc, 0x00020000 }, 734 {0x000080f8, 0x00000000},
744 { 0x00008100, 0x00020000 }, 735 {0x000080fc, 0x00020000},
745 { 0x00008104, 0x00000001 }, 736 {0x00008100, 0x00020000},
746 { 0x00008108, 0x00000052 }, 737 {0x00008104, 0x00000001},
747 { 0x0000810c, 0x00000000 }, 738 {0x00008108, 0x00000052},
748 { 0x00008110, 0x00000168 }, 739 {0x0000810c, 0x00000000},
749 { 0x00008118, 0x000100aa }, 740 {0x00008110, 0x00000168},
750 { 0x0000811c, 0x00003210 }, 741 {0x00008118, 0x000100aa},
751 { 0x00008124, 0x00000000 }, 742 {0x0000811c, 0x00003210},
752 { 0x00008128, 0x00000000 }, 743 {0x00008124, 0x00000000},
753 { 0x0000812c, 0x00000000 }, 744 {0x00008128, 0x00000000},
754 { 0x00008130, 0x00000000 }, 745 {0x0000812c, 0x00000000},
755 { 0x00008134, 0x00000000 }, 746 {0x00008130, 0x00000000},
756 { 0x00008138, 0x00000000 }, 747 {0x00008134, 0x00000000},
757 { 0x0000813c, 0x00000000 }, 748 {0x00008138, 0x00000000},
758 { 0x00008144, 0xffffffff }, 749 {0x0000813c, 0x00000000},
759 { 0x00008168, 0x00000000 }, 750 {0x00008144, 0xffffffff},
760 { 0x0000816c, 0x00000000 }, 751 {0x00008168, 0x00000000},
761 { 0x00008170, 0x32143320 }, 752 {0x0000816c, 0x00000000},
762 { 0x00008174, 0xfaa4fa50 }, 753 {0x00008170, 0x32143320},
763 { 0x00008178, 0x00000100 }, 754 {0x00008174, 0xfaa4fa50},
764 { 0x0000817c, 0x00000000 }, 755 {0x00008178, 0x00000100},
765 { 0x000081c0, 0x00000000 }, 756 {0x0000817c, 0x00000000},
766 { 0x000081ec, 0x00000000 }, 757 {0x000081c0, 0x00000000},
767 { 0x000081f0, 0x00000000 }, 758 {0x000081ec, 0x00000000},
768 { 0x000081f4, 0x00000000 }, 759 {0x000081f0, 0x00000000},
769 { 0x000081f8, 0x00000000 }, 760 {0x000081f4, 0x00000000},
770 { 0x000081fc, 0x00000000 }, 761 {0x000081f8, 0x00000000},
771 { 0x00008200, 0x00000000 }, 762 {0x000081fc, 0x00000000},
772 { 0x00008204, 0x00000000 }, 763 {0x00008200, 0x00000000},
773 { 0x00008208, 0x00000000 }, 764 {0x00008204, 0x00000000},
774 { 0x0000820c, 0x00000000 }, 765 {0x00008208, 0x00000000},
775 { 0x00008210, 0x00000000 }, 766 {0x0000820c, 0x00000000},
776 { 0x00008214, 0x00000000 }, 767 {0x00008210, 0x00000000},
777 { 0x00008218, 0x00000000 }, 768 {0x00008214, 0x00000000},
778 { 0x0000821c, 0x00000000 }, 769 {0x00008218, 0x00000000},
779 { 0x00008220, 0x00000000 }, 770 {0x0000821c, 0x00000000},
780 { 0x00008224, 0x00000000 }, 771 {0x00008220, 0x00000000},
781 { 0x00008228, 0x00000000 }, 772 {0x00008224, 0x00000000},
782 { 0x0000822c, 0x00000000 }, 773 {0x00008228, 0x00000000},
783 { 0x00008230, 0x00000000 }, 774 {0x0000822c, 0x00000000},
784 { 0x00008234, 0x00000000 }, 775 {0x00008230, 0x00000000},
785 { 0x00008238, 0x00000000 }, 776 {0x00008234, 0x00000000},
786 { 0x0000823c, 0x00000000 }, 777 {0x00008238, 0x00000000},
787 { 0x00008240, 0x00100000 }, 778 {0x0000823c, 0x00000000},
788 { 0x00008244, 0x0010f400 }, 779 {0x00008240, 0x00100000},
789 { 0x00008248, 0x00000100 }, 780 {0x00008244, 0x0010f400},
790 { 0x0000824c, 0x0001e800 }, 781 {0x00008248, 0x00000100},
791 { 0x00008250, 0x00000000 }, 782 {0x0000824c, 0x0001e800},
792 { 0x00008254, 0x00000000 }, 783 {0x00008250, 0x00000000},
793 { 0x00008258, 0x00000000 }, 784 {0x00008254, 0x00000000},
794 { 0x0000825c, 0x400000ff }, 785 {0x00008258, 0x00000000},
795 { 0x00008260, 0x00080922 }, 786 {0x0000825c, 0x400000ff},
796 { 0x00008264, 0x88a00010 }, 787 {0x00008260, 0x00080922},
797 { 0x00008270, 0x00000000 }, 788 {0x00008264, 0x88a00010},
798 { 0x00008274, 0x40000000 }, 789 {0x00008270, 0x00000000},
799 { 0x00008278, 0x003e4180 }, 790 {0x00008274, 0x40000000},
800 { 0x0000827c, 0x00000000 }, 791 {0x00008278, 0x003e4180},
801 { 0x00008284, 0x0000002c }, 792 {0x0000827c, 0x00000000},
802 { 0x00008288, 0x0000002c }, 793 {0x00008284, 0x0000002c},
803 { 0x0000828c, 0x00000000 }, 794 {0x00008288, 0x0000002c},
804 { 0x00008294, 0x00000000 }, 795 {0x0000828c, 0x00000000},
805 { 0x00008298, 0x00000000 }, 796 {0x00008294, 0x00000000},
806 { 0x0000829c, 0x00000000 }, 797 {0x00008298, 0x00000000},
807 { 0x00008300, 0x00000040 }, 798 {0x0000829c, 0x00000000},
808 { 0x00008314, 0x00000000 }, 799 {0x00008300, 0x00000040},
809 { 0x00008328, 0x00000000 }, 800 {0x00008314, 0x00000000},
810 { 0x0000832c, 0x00000007 }, 801 {0x00008328, 0x00000000},
811 { 0x00008330, 0x00000302 }, 802 {0x0000832c, 0x00000007},
812 { 0x00008334, 0x00000e00 }, 803 {0x00008330, 0x00000302},
813 { 0x00008338, 0x00ff0000 }, 804 {0x00008334, 0x00000e00},
814 { 0x0000833c, 0x00000000 }, 805 {0x00008338, 0x00ff0000},
815 { 0x00008340, 0x000107ff }, 806 {0x0000833c, 0x00000000},
816 { 0x00008344, 0x00481043 }, 807 {0x00008340, 0x000107ff},
817 { 0x00009808, 0x00000000 }, 808 {0x00008344, 0x00481043},
818 { 0x0000980c, 0xafa68e30 }, 809 {0x00009808, 0x00000000},
819 { 0x00009810, 0xfd14e000 }, 810 {0x0000980c, 0xafa68e30},
820 { 0x00009814, 0x9c0a9f6b }, 811 {0x00009810, 0xfd14e000},
821 { 0x0000981c, 0x00000000 }, 812 {0x00009814, 0x9c0a9f6b},
822 { 0x0000982c, 0x0000a000 }, 813 {0x0000981c, 0x00000000},
823 { 0x00009830, 0x00000000 }, 814 {0x0000982c, 0x0000a000},
824 { 0x0000983c, 0x00200400 }, 815 {0x00009830, 0x00000000},
825 { 0x0000984c, 0x0040233c }, 816 {0x0000983c, 0x00200400},
826 { 0x0000a84c, 0x0040233c }, 817 {0x0000984c, 0x0040233c},
827 { 0x00009854, 0x00000044 }, 818 {0x0000a84c, 0x0040233c},
828 { 0x00009900, 0x00000000 }, 819 {0x00009854, 0x00000044},
829 { 0x00009904, 0x00000000 }, 820 {0x00009900, 0x00000000},
830 { 0x00009908, 0x00000000 }, 821 {0x00009904, 0x00000000},
831 { 0x0000990c, 0x00000000 }, 822 {0x00009908, 0x00000000},
832 { 0x00009910, 0x01002310 }, 823 {0x0000990c, 0x00000000},
833 { 0x0000991c, 0x10000fff }, 824 {0x00009910, 0x01002310},
834 { 0x00009920, 0x04900000 }, 825 {0x0000991c, 0x10000fff},
835 { 0x0000a920, 0x04900000 }, 826 {0x00009920, 0x04900000},
836 { 0x00009928, 0x00000001 }, 827 {0x0000a920, 0x04900000},
837 { 0x0000992c, 0x00000004 }, 828 {0x00009928, 0x00000001},
838 { 0x00009934, 0x1e1f2022 }, 829 {0x0000992c, 0x00000004},
839 { 0x00009938, 0x0a0b0c0d }, 830 {0x00009934, 0x1e1f2022},
840 { 0x0000993c, 0x00000000 }, 831 {0x00009938, 0x0a0b0c0d},
841 { 0x00009948, 0x9280c00a }, 832 {0x0000993c, 0x00000000},
842 { 0x0000994c, 0x00020028 }, 833 {0x00009948, 0x9280c00a},
843 { 0x00009954, 0x5f3ca3de }, 834 {0x0000994c, 0x00020028},
844 { 0x00009958, 0x2108ecff }, 835 {0x00009954, 0x5f3ca3de},
845 { 0x00009940, 0x14750604 }, 836 {0x00009958, 0x2108ecff},
846 { 0x0000c95c, 0x004b6a8e }, 837 {0x00009940, 0x14750604},
847 { 0x00009970, 0x190fb515 }, 838 {0x0000c95c, 0x004b6a8e},
848 { 0x00009974, 0x00000000 }, 839 {0x00009970, 0x190fb514},
849 { 0x00009978, 0x00000001 }, 840 {0x00009974, 0x00000000},
850 { 0x0000997c, 0x00000000 }, 841 {0x00009978, 0x00000001},
851 { 0x00009980, 0x00000000 }, 842 {0x0000997c, 0x00000000},
852 { 0x00009984, 0x00000000 }, 843 {0x00009980, 0x00000000},
853 { 0x00009988, 0x00000000 }, 844 {0x00009984, 0x00000000},
854 { 0x0000998c, 0x00000000 }, 845 {0x00009988, 0x00000000},
855 { 0x00009990, 0x00000000 }, 846 {0x0000998c, 0x00000000},
856 { 0x00009994, 0x00000000 }, 847 {0x00009990, 0x00000000},
857 { 0x00009998, 0x00000000 }, 848 {0x00009994, 0x00000000},
858 { 0x0000999c, 0x00000000 }, 849 {0x00009998, 0x00000000},
859 { 0x000099a0, 0x00000000 }, 850 {0x0000999c, 0x00000000},
860 { 0x000099a4, 0x00000001 }, 851 {0x000099a0, 0x00000000},
861 { 0x000099a8, 0x201fff00 }, 852 {0x000099a4, 0x00000001},
862 { 0x000099ac, 0x006f0000 }, 853 {0x000099a8, 0x201fff00},
863 { 0x000099b0, 0x03051000 }, 854 {0x000099ac, 0x006f0000},
864 { 0x000099b4, 0x00000820 }, 855 {0x000099b0, 0x03051000},
865 { 0x000099dc, 0x00000000 }, 856 {0x000099b4, 0x00000820},
866 { 0x000099e0, 0x00000000 }, 857 {0x000099c4, 0x06336f77},
867 { 0x000099e4, 0xaaaaaaaa }, 858 {0x000099c8, 0x6af6532f},
868 { 0x000099e8, 0x3c466478 }, 859 {0x000099cc, 0x08f186c8},
869 { 0x000099ec, 0x0cc80caa }, 860 {0x000099d0, 0x00046384},
870 { 0x000099f0, 0x00000000 }, 861 {0x000099d4, 0x00000000},
871 { 0x000099fc, 0x00001042 }, 862 {0x000099d8, 0x00000000},
872 { 0x0000a208, 0x803e4788 }, 863 {0x000099dc, 0x00000000},
873 { 0x0000a210, 0x4080a333 }, 864 {0x000099e0, 0x00000000},
874 { 0x0000a214, 0x40206c10 }, 865 {0x000099e4, 0xaaaaaaaa},
875 { 0x0000a218, 0x009c4060 }, 866 {0x000099e8, 0x3c466478},
876 { 0x0000a220, 0x01834061 }, 867 {0x000099ec, 0x0cc80caa},
877 { 0x0000a224, 0x00000400 }, 868 {0x000099f0, 0x00000000},
878 { 0x0000a228, 0x000003b5 }, 869 {0x000099fc, 0x00001042},
879 { 0x0000a22c, 0x233f7180 }, 870 {0x0000a208, 0x803e4788},
880 { 0x0000a234, 0x20202020 }, 871 {0x0000a210, 0x4080a333},
881 { 0x0000a238, 0x20202020 }, 872 {0x0000a214, 0x40206c10},
882 { 0x0000a240, 0x38490a20 }, 873 {0x0000a218, 0x009c4060},
883 { 0x0000a244, 0x00007bb6 }, 874 {0x0000a220, 0x01834061},
884 { 0x0000a248, 0x0fff3ffc }, 875 {0x0000a224, 0x00000400},
885 { 0x0000a24c, 0x00000000 }, 876 {0x0000a228, 0x000003b5},
886 { 0x0000a254, 0x00000000 }, 877 {0x0000a22c, 0x233f7180},
887 { 0x0000a258, 0x0cdbd380 }, 878 {0x0000a234, 0x20202020},
888 { 0x0000a25c, 0x0f0f0f01 }, 879 {0x0000a238, 0x20202020},
889 { 0x0000a260, 0xdfa91f01 }, 880 {0x0000a240, 0x38490a20},
890 { 0x0000a268, 0x00000000 }, 881 {0x0000a244, 0x00007bb6},
891 { 0x0000a26c, 0x0e79e5c6 }, 882 {0x0000a248, 0x0fff3ffc},
892 { 0x0000b26c, 0x0e79e5c6 }, 883 {0x0000a24c, 0x00000000},
893 { 0x0000d270, 0x00820820 }, 884 {0x0000a254, 0x00000000},
894 { 0x0000a278, 0x1ce739ce }, 885 {0x0000a258, 0x0cdbd380},
895 { 0x0000d35c, 0x07ffffef }, 886 {0x0000a25c, 0x0f0f0f01},
896 { 0x0000d360, 0x0fffffe7 }, 887 {0x0000a260, 0xdfa91f01},
897 { 0x0000d364, 0x17ffffe5 }, 888 {0x0000a268, 0x00000000},
898 { 0x0000d368, 0x1fffffe4 }, 889 {0x0000a26c, 0x0e79e5c6},
899 { 0x0000d36c, 0x37ffffe3 }, 890 {0x0000b26c, 0x0e79e5c6},
900 { 0x0000d370, 0x3fffffe3 }, 891 {0x0000d270, 0x00820820},
901 { 0x0000d374, 0x57ffffe3 }, 892 {0x0000a278, 0x1ce739ce},
902 { 0x0000d378, 0x5fffffe2 }, 893 {0x0000d35c, 0x07ffffef},
903 { 0x0000d37c, 0x7fffffe2 }, 894 {0x0000d360, 0x0fffffe7},
904 { 0x0000d380, 0x7f3c7bba }, 895 {0x0000d364, 0x17ffffe5},
905 { 0x0000d384, 0xf3307ff0 }, 896 {0x0000d368, 0x1fffffe4},
906 { 0x0000a38c, 0x20202020 }, 897 {0x0000d36c, 0x37ffffe3},
907 { 0x0000a390, 0x20202020 }, 898 {0x0000d370, 0x3fffffe3},
908 { 0x0000a394, 0x1ce739ce }, 899 {0x0000d374, 0x57ffffe3},
909 { 0x0000a398, 0x000001ce }, 900 {0x0000d378, 0x5fffffe2},
910 { 0x0000a39c, 0x00000001 }, 901 {0x0000d37c, 0x7fffffe2},
911 { 0x0000a3a0, 0x00000000 }, 902 {0x0000d380, 0x7f3c7bba},
912 { 0x0000a3a4, 0x00000000 }, 903 {0x0000d384, 0xf3307ff0},
913 { 0x0000a3a8, 0x00000000 }, 904 {0x0000a38c, 0x20202020},
914 { 0x0000a3ac, 0x00000000 }, 905 {0x0000a390, 0x20202020},
915 { 0x0000a3b0, 0x00000000 }, 906 {0x0000a394, 0x1ce739ce},
916 { 0x0000a3b4, 0x00000000 }, 907 {0x0000a398, 0x000001ce},
917 { 0x0000a3b8, 0x00000000 }, 908 {0x0000a39c, 0x00000001},
918 { 0x0000a3bc, 0x00000000 }, 909 {0x0000a3a0, 0x00000000},
919 { 0x0000a3c0, 0x00000000 }, 910 {0x0000a3a4, 0x00000000},
920 { 0x0000a3c4, 0x00000000 }, 911 {0x0000a3a8, 0x00000000},
921 { 0x0000a3c8, 0x00000246 }, 912 {0x0000a3ac, 0x00000000},
922 { 0x0000a3cc, 0x20202020 }, 913 {0x0000a3b0, 0x00000000},
923 { 0x0000a3d0, 0x20202020 }, 914 {0x0000a3b4, 0x00000000},
924 { 0x0000a3d4, 0x20202020 }, 915 {0x0000a3b8, 0x00000000},
925 { 0x0000a3dc, 0x1ce739ce }, 916 {0x0000a3bc, 0x00000000},
926 { 0x0000a3e0, 0x000001ce }, 917 {0x0000a3c0, 0x00000000},
927 { 0x0000a3e4, 0x00000000 }, 918 {0x0000a3c4, 0x00000000},
928 { 0x0000a3e8, 0x18c43433 }, 919 {0x0000a3c8, 0x00000246},
929 { 0x0000a3ec, 0x00f70081 }, 920 {0x0000a3cc, 0x20202020},
930 { 0x00007800, 0x00040000 }, 921 {0x0000a3d0, 0x20202020},
931 { 0x00007804, 0xdb005012 }, 922 {0x0000a3d4, 0x20202020},
932 { 0x00007808, 0x04924914 }, 923 {0x0000a3dc, 0x1ce739ce},
933 { 0x0000780c, 0x21084210 }, 924 {0x0000a3e0, 0x000001ce},
934 { 0x00007810, 0x6d801300 }, 925 {0x0000a3e4, 0x00000000},
935 { 0x00007818, 0x07e41000 }, 926 {0x0000a3e8, 0x18c43433},
936 { 0x00007824, 0x00040000 }, 927 {0x00007800, 0x00040000},
937 { 0x00007828, 0xdb005012 }, 928 {0x00007804, 0xdb005012},
938 { 0x0000782c, 0x04924914 }, 929 {0x00007808, 0x04924914},
939 { 0x00007830, 0x21084210 }, 930 {0x0000780c, 0x21084210},
940 { 0x00007834, 0x6d801300 }, 931 {0x00007810, 0x6d801300},
941 { 0x0000783c, 0x07e40000 }, 932 {0x00007818, 0x07e41000},
942 { 0x00007848, 0x00100000 }, 933 {0x00007824, 0x00040000},
943 { 0x0000784c, 0x773f0567 }, 934 {0x00007828, 0xdb005012},
944 { 0x00007850, 0x54214514 }, 935 {0x0000782c, 0x04924914},
945 { 0x00007854, 0x12035828 }, 936 {0x00007830, 0x21084210},
946 { 0x00007858, 0x9259269a }, 937 {0x00007834, 0x6d801300},
947 { 0x00007860, 0x52802000 }, 938 {0x0000783c, 0x07e40000},
948 { 0x00007864, 0x0a8e370e }, 939 {0x00007848, 0x00100000},
949 { 0x00007868, 0xc0102850 }, 940 {0x0000784c, 0x773f0567},
950 { 0x0000786c, 0x812d4000 }, 941 {0x00007850, 0x54214514},
951 { 0x00007870, 0x807ec400 }, 942 {0x00007854, 0x12035828},
952 { 0x00007874, 0x001b6db0 }, 943 {0x00007858, 0x9259269a},
953 { 0x00007878, 0x00376b63 }, 944 {0x00007860, 0x52802000},
954 { 0x0000787c, 0x06db6db6 }, 945 {0x00007864, 0x0a8e370e},
955 { 0x00007880, 0x006d8000 }, 946 {0x00007868, 0xc0102850},
956 { 0x00007884, 0xffeffffe }, 947 {0x0000786c, 0x812d4000},
957 { 0x00007888, 0xffeffffe }, 948 {0x00007870, 0x807ec400},
958 { 0x0000788c, 0x00010000 }, 949 {0x00007874, 0x001b6db0},
959 { 0x00007890, 0x02060aeb }, 950 {0x00007878, 0x00376b63},
960 { 0x00007898, 0x2a850160 }, 951 {0x0000787c, 0x06db6db6},
952 {0x00007880, 0x006d8000},
953 {0x00007884, 0xffeffffe},
954 {0x00007888, 0xffeffffe},
955 {0x0000788c, 0x00010000},
956 {0x00007890, 0x02060aeb},
957 {0x00007898, 0x2a850160},
961}; 958};
962 959
963static const u32 ar9280Modes_fast_clock_9280_2[][3] = { 960static const u32 ar9280Modes_fast_clock_9280_2[][3] = {
964 { 0x00001030, 0x00000268, 0x000004d0 }, 961 /* Addr 5G_HT20 5G_HT40 */
965 { 0x00001070, 0x0000018c, 0x00000318 }, 962 {0x00001030, 0x00000268, 0x000004d0},
966 { 0x000010b0, 0x00000fd0, 0x00001fa0 }, 963 {0x00001070, 0x0000018c, 0x00000318},
967 { 0x00008014, 0x044c044c, 0x08980898 }, 964 {0x000010b0, 0x00000fd0, 0x00001fa0},
968 { 0x0000801c, 0x148ec02b, 0x148ec057 }, 965 {0x00008014, 0x044c044c, 0x08980898},
969 { 0x00008318, 0x000044c0, 0x00008980 }, 966 {0x0000801c, 0x148ec02b, 0x148ec057},
970 { 0x00009820, 0x02020200, 0x02020200 }, 967 {0x00008318, 0x000044c0, 0x00008980},
971 { 0x00009824, 0x01000f0f, 0x01000f0f }, 968 {0x00009820, 0x02020200, 0x02020200},
972 { 0x00009828, 0x0b020001, 0x0b020001 }, 969 {0x00009824, 0x01000f0f, 0x01000f0f},
973 { 0x00009834, 0x00000f0f, 0x00000f0f }, 970 {0x00009828, 0x0b020001, 0x0b020001},
974 { 0x00009844, 0x03721821, 0x03721821 }, 971 {0x00009834, 0x00000f0f, 0x00000f0f},
975 { 0x00009914, 0x00000898, 0x00001130 }, 972 {0x00009844, 0x03721821, 0x03721821},
976 { 0x00009918, 0x0000000b, 0x00000016 }, 973 {0x00009914, 0x00000898, 0x00001130},
974 {0x00009918, 0x0000000b, 0x00000016},
977}; 975};
978 976
979static const u32 ar9280Modes_backoff_23db_rxgain_9280_2[][6] = { 977static const u32 ar9280Modes_backoff_23db_rxgain_9280_2[][6] = {
980 { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, 978 {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290},
981 { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, 979 {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300},
982 { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, 980 {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304},
983 { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, 981 {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308},
984 { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, 982 {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c},
985 { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, 983 {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000},
986 { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, 984 {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004},
987 { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, 985 {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008},
988 { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, 986 {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c},
989 { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, 987 {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080},
990 { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, 988 {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084},
991 { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, 989 {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088},
992 { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, 990 {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c},
993 { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, 991 {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100},
994 { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, 992 {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104},
995 { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, 993 {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108},
996 { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, 994 {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c},
997 { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, 995 {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110},
998 { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, 996 {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114},
999 { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, 997 {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180},
1000 { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, 998 {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184},
1001 { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, 999 {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188},
1002 { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, 1000 {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c},
1003 { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, 1001 {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190},
1004 { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, 1002 {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194},
1005 { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, 1003 {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0},
1006 { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, 1004 {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c},
1007 { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, 1005 {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8},
1008 { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, 1006 {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284},
1009 { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, 1007 {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288},
1010 { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, 1008 {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224},
1011 { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, 1009 {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290},
1012 { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, 1010 {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300},
1013 { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, 1011 {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304},
1014 { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, 1012 {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308},
1015 { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, 1013 {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c},
1016 { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, 1014 {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380},
1017 { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, 1015 {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384},
1018 { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, 1016 {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700},
1019 { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, 1017 {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704},
1020 { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, 1018 {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708},
1021 { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, 1019 {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c},
1022 { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, 1020 {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780},
1023 { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, 1021 {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784},
1024 { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, 1022 {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00},
1025 { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, 1023 {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04},
1026 { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, 1024 {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08},
1027 { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, 1025 {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c},
1028 { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10 }, 1026 {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b10, 0x00008b10, 0x00008b10},
1029 { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b14, 0x00008b14, 0x00008b14 }, 1027 {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b80, 0x00008b80, 0x00008b80},
1030 { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b01, 0x00008b01, 0x00008b01 }, 1028 {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b84, 0x00008b84, 0x00008b84},
1031 { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b05, 0x00008b05, 0x00008b05 }, 1029 {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b88, 0x00008b88, 0x00008b88},
1032 { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b09, 0x00008b09, 0x00008b09 }, 1030 {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b8c, 0x00008b8c, 0x00008b8c},
1033 { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b0d, 0x00008b0d, 0x00008b0d }, 1031 {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008b90, 0x00008b90, 0x00008b90},
1034 { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b11, 0x00008b11, 0x00008b11 }, 1032 {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008b94, 0x00008b94, 0x00008b94},
1035 { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008b15, 0x00008b15, 0x00008b15 }, 1033 {0x00009adc, 0x0000b390, 0x0000b390, 0x00008b98, 0x00008b98, 0x00008b98},
1036 { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008b02, 0x00008b02, 0x00008b02 }, 1034 {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008ba4, 0x00008ba4, 0x00008ba4},
1037 { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008b06, 0x00008b06, 0x00008b06 }, 1035 {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008ba8, 0x00008ba8, 0x00008ba8},
1038 { 0x00009ae8, 0x0000b780, 0x0000b780, 0x00008b0a, 0x00008b0a, 0x00008b0a }, 1036 {0x00009ae8, 0x0000b780, 0x0000b780, 0x00008bac, 0x00008bac, 0x00008bac},
1039 { 0x00009aec, 0x0000b784, 0x0000b784, 0x00008b0e, 0x00008b0e, 0x00008b0e }, 1037 {0x00009aec, 0x0000b784, 0x0000b784, 0x00008bb0, 0x00008bb0, 0x00008bb0},
1040 { 0x00009af0, 0x0000b788, 0x0000b788, 0x00008b12, 0x00008b12, 0x00008b12 }, 1038 {0x00009af0, 0x0000b788, 0x0000b788, 0x00008bb4, 0x00008bb4, 0x00008bb4},
1041 { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008b16, 0x00008b16, 0x00008b16 }, 1039 {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00008ba1, 0x00008ba1, 0x00008ba1},
1042 { 0x00009af8, 0x0000b790, 0x0000b790, 0x00008b03, 0x00008b03, 0x00008b03 }, 1040 {0x00009af8, 0x0000b790, 0x0000b790, 0x00008ba5, 0x00008ba5, 0x00008ba5},
1043 { 0x00009afc, 0x0000b794, 0x0000b794, 0x00008b07, 0x00008b07, 0x00008b07 }, 1041 {0x00009afc, 0x0000b794, 0x0000b794, 0x00008ba9, 0x00008ba9, 0x00008ba9},
1044 { 0x00009b00, 0x0000b798, 0x0000b798, 0x00008b0b, 0x00008b0b, 0x00008b0b }, 1042 {0x00009b00, 0x0000b798, 0x0000b798, 0x00008bad, 0x00008bad, 0x00008bad},
1045 { 0x00009b04, 0x0000d784, 0x0000d784, 0x00008b0f, 0x00008b0f, 0x00008b0f }, 1043 {0x00009b04, 0x0000d784, 0x0000d784, 0x00008bb1, 0x00008bb1, 0x00008bb1},
1046 { 0x00009b08, 0x0000d788, 0x0000d788, 0x00008b13, 0x00008b13, 0x00008b13 }, 1044 {0x00009b08, 0x0000d788, 0x0000d788, 0x00008bb5, 0x00008bb5, 0x00008bb5},
1047 { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008b17, 0x00008b17, 0x00008b17 }, 1045 {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00008ba2, 0x00008ba2, 0x00008ba2},
1048 { 0x00009b10, 0x0000d790, 0x0000d790, 0x00008b23, 0x00008b23, 0x00008b23 }, 1046 {0x00009b10, 0x0000d790, 0x0000d790, 0x00008ba6, 0x00008ba6, 0x00008ba6},
1049 { 0x00009b14, 0x0000f780, 0x0000f780, 0x00008b27, 0x00008b27, 0x00008b27 }, 1047 {0x00009b14, 0x0000f780, 0x0000f780, 0x00008baa, 0x00008baa, 0x00008baa},
1050 { 0x00009b18, 0x0000f784, 0x0000f784, 0x00008b2b, 0x00008b2b, 0x00008b2b }, 1048 {0x00009b18, 0x0000f784, 0x0000f784, 0x00008bae, 0x00008bae, 0x00008bae},
1051 { 0x00009b1c, 0x0000f788, 0x0000f788, 0x00008b2f, 0x00008b2f, 0x00008b2f }, 1049 {0x00009b1c, 0x0000f788, 0x0000f788, 0x00008bb2, 0x00008bb2, 0x00008bb2},
1052 { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008b33, 0x00008b33, 0x00008b33 }, 1050 {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00008bb6, 0x00008bb6, 0x00008bb6},
1053 { 0x00009b24, 0x0000f790, 0x0000f790, 0x00008b37, 0x00008b37, 0x00008b37 }, 1051 {0x00009b24, 0x0000f790, 0x0000f790, 0x00008ba3, 0x00008ba3, 0x00008ba3},
1054 { 0x00009b28, 0x0000f794, 0x0000f794, 0x00008b43, 0x00008b43, 0x00008b43 }, 1052 {0x00009b28, 0x0000f794, 0x0000f794, 0x00008ba7, 0x00008ba7, 0x00008ba7},
1055 { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008b47, 0x00008b47, 0x00008b47 }, 1053 {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x00008bab, 0x00008bab, 0x00008bab},
1056 { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008b4b, 0x00008b4b, 0x00008b4b }, 1054 {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00008baf, 0x00008baf, 0x00008baf},
1057 { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008b4f, 0x00008b4f, 0x00008b4f }, 1055 {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00008bb3, 0x00008bb3, 0x00008bb3},
1058 { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008b53, 0x00008b53, 0x00008b53 }, 1056 {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00008bb7, 0x00008bb7, 0x00008bb7},
1059 { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008b57, 0x00008b57, 0x00008b57 }, 1057 {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00008bc3, 0x00008bc3, 0x00008bc3},
1060 { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1058 {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x00008bc7, 0x00008bc7, 0x00008bc7},
1061 { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1059 {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x00008bcb, 0x00008bcb, 0x00008bcb},
1062 { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1060 {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00008bcf, 0x00008bcf, 0x00008bcf},
1063 { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1061 {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00008bd3, 0x00008bd3, 0x00008bd3},
1064 { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1062 {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00008bd7, 0x00008bd7, 0x00008bd7},
1065 { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1063 {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1066 { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1064 {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1067 { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1065 {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1068 { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1066 {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1069 { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1067 {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1070 { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1068 {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1071 { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1069 {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1072 { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1070 {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1073 { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1071 {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1074 { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1072 {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1075 { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1073 {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1076 { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1074 {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1077 { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1075 {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1078 { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1076 {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1079 { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1077 {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1080 { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1078 {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1081 { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1079 {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1082 { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1080 {0x00009b98, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1083 { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1081 {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1084 { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1082 {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1085 { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1083 {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1086 { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1084 {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1087 { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1085 {0x00009bac, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1088 { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1086 {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1089 { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1087 {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1090 { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1088 {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1091 { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1089 {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1092 { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1090 {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1093 { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1091 {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1094 { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1092 {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1095 { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1093 {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1096 { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1094 {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1097 { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1095 {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1098 { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1096 {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1099 { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1097 {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1100 { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1098 {0x00009be0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1101 { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1099 {0x00009be4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1102 { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1100 {0x00009be8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1103 { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1101 {0x00009bec, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1104 { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1102 {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1105 { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1103 {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1106 { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1104 {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1107 { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008b5b, 0x00008b5b, 0x00008b5b }, 1105 {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x00008bdb, 0x00008bdb, 0x00008bdb},
1108 { 0x00009848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050 }, 1106 {0x00009848, 0x00001066, 0x00001066, 0x00001055, 0x00001055, 0x00001055},
1109 { 0x0000a848, 0x00001066, 0x00001066, 0x00001050, 0x00001050, 0x00001050 }, 1107 {0x0000a848, 0x00001066, 0x00001066, 0x00001055, 0x00001055, 0x00001055},
1110}; 1108};
1111 1109
1112static const u32 ar9280Modes_original_rxgain_9280_2[][6] = { 1110static const u32 ar9280Modes_original_rxgain_9280_2[][6] = {
1113 { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, 1111 {0x00009a00, 0x00008184, 0x00008184, 0x00008000, 0x00008000, 0x00008000},
1114 { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, 1112 {0x00009a04, 0x00008188, 0x00008188, 0x00008000, 0x00008000, 0x00008000},
1115 { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, 1113 {0x00009a08, 0x0000818c, 0x0000818c, 0x00008000, 0x00008000, 0x00008000},
1116 { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, 1114 {0x00009a0c, 0x00008190, 0x00008190, 0x00008000, 0x00008000, 0x00008000},
1117 { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, 1115 {0x00009a10, 0x00008194, 0x00008194, 0x00008000, 0x00008000, 0x00008000},
1118 { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, 1116 {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000},
1119 { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, 1117 {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004},
1120 { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, 1118 {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008},
1121 { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, 1119 {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c},
1122 { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, 1120 {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080},
1123 { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, 1121 {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084},
1124 { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, 1122 {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088},
1125 { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, 1123 {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c},
1126 { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, 1124 {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100},
1127 { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, 1125 {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104},
1128 { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, 1126 {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108},
1129 { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, 1127 {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c},
1130 { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, 1128 {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110},
1131 { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, 1129 {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114},
1132 { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, 1130 {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180},
1133 { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, 1131 {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184},
1134 { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, 1132 {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188},
1135 { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, 1133 {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c},
1136 { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, 1134 {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190},
1137 { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, 1135 {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194},
1138 { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, 1136 {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0},
1139 { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, 1137 {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c},
1140 { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, 1138 {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8},
1141 { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, 1139 {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284},
1142 { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, 1140 {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288},
1143 { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, 1141 {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224},
1144 { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, 1142 {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290},
1145 { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, 1143 {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300},
1146 { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, 1144 {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304},
1147 { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, 1145 {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308},
1148 { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, 1146 {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c},
1149 { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, 1147 {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380},
1150 { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, 1148 {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384},
1151 { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, 1149 {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700},
1152 { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, 1150 {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704},
1153 { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, 1151 {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708},
1154 { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, 1152 {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c},
1155 { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, 1153 {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780},
1156 { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, 1154 {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784},
1157 { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, 1155 {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00},
1158 { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, 1156 {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04},
1159 { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, 1157 {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08},
1160 { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, 1158 {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c},
1161 { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, 1159 {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80},
1162 { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, 1160 {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84},
1163 { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, 1161 {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88},
1164 { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, 1162 {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c},
1165 { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, 1163 {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90},
1166 { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, 1164 {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80},
1167 { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, 1165 {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84},
1168 { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, 1166 {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88},
1169 { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, 1167 {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c},
1170 { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, 1168 {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90},
1171 { 0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c }, 1169 {0x00009ae8, 0x0000b780, 0x0000b780, 0x0000930c, 0x0000930c, 0x0000930c},
1172 { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310 }, 1170 {0x00009aec, 0x0000b784, 0x0000b784, 0x00009310, 0x00009310, 0x00009310},
1173 { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384 }, 1171 {0x00009af0, 0x0000b788, 0x0000b788, 0x00009384, 0x00009384, 0x00009384},
1174 { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388 }, 1172 {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009388, 0x00009388, 0x00009388},
1175 { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324 }, 1173 {0x00009af8, 0x0000b790, 0x0000b790, 0x00009324, 0x00009324, 0x00009324},
1176 { 0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704 }, 1174 {0x00009afc, 0x0000b794, 0x0000b794, 0x00009704, 0x00009704, 0x00009704},
1177 { 0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4 }, 1175 {0x00009b00, 0x0000b798, 0x0000b798, 0x000096a4, 0x000096a4, 0x000096a4},
1178 { 0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8 }, 1176 {0x00009b04, 0x0000d784, 0x0000d784, 0x000096a8, 0x000096a8, 0x000096a8},
1179 { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710 }, 1177 {0x00009b08, 0x0000d788, 0x0000d788, 0x00009710, 0x00009710, 0x00009710},
1180 { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714 }, 1178 {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009714, 0x00009714, 0x00009714},
1181 { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720 }, 1179 {0x00009b10, 0x0000d790, 0x0000d790, 0x00009720, 0x00009720, 0x00009720},
1182 { 0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724 }, 1180 {0x00009b14, 0x0000f780, 0x0000f780, 0x00009724, 0x00009724, 0x00009724},
1183 { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728 }, 1181 {0x00009b18, 0x0000f784, 0x0000f784, 0x00009728, 0x00009728, 0x00009728},
1184 { 0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c }, 1182 {0x00009b1c, 0x0000f788, 0x0000f788, 0x0000972c, 0x0000972c, 0x0000972c},
1185 { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0 }, 1183 {0x00009b20, 0x0000f78c, 0x0000f78c, 0x000097a0, 0x000097a0, 0x000097a0},
1186 { 0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4 }, 1184 {0x00009b24, 0x0000f790, 0x0000f790, 0x000097a4, 0x000097a4, 0x000097a4},
1187 { 0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8 }, 1185 {0x00009b28, 0x0000f794, 0x0000f794, 0x000097a8, 0x000097a8, 0x000097a8},
1188 { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0 }, 1186 {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x000097b0, 0x000097b0, 0x000097b0},
1189 { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4 }, 1187 {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x000097b4, 0x000097b4, 0x000097b4},
1190 { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8 }, 1188 {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x000097b8, 0x000097b8, 0x000097b8},
1191 { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5 }, 1189 {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x000097a5, 0x000097a5, 0x000097a5},
1192 { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9 }, 1190 {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x000097a9, 0x000097a9, 0x000097a9},
1193 { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad }, 1191 {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x000097ad, 0x000097ad, 0x000097ad},
1194 { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1 }, 1192 {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x000097b1, 0x000097b1, 0x000097b1},
1195 { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5 }, 1193 {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x000097b5, 0x000097b5, 0x000097b5},
1196 { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9 }, 1194 {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x000097b9, 0x000097b9, 0x000097b9},
1197 { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5 }, 1195 {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x000097c5, 0x000097c5, 0x000097c5},
1198 { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9 }, 1196 {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x000097c9, 0x000097c9, 0x000097c9},
1199 { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1 }, 1197 {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x000097d1, 0x000097d1, 0x000097d1},
1200 { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5 }, 1198 {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x000097d5, 0x000097d5, 0x000097d5},
1201 { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9 }, 1199 {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x000097d9, 0x000097d9, 0x000097d9},
1202 { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6 }, 1200 {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x000097c6, 0x000097c6, 0x000097c6},
1203 { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca }, 1201 {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x000097ca, 0x000097ca, 0x000097ca},
1204 { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce }, 1202 {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x000097ce, 0x000097ce, 0x000097ce},
1205 { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2 }, 1203 {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x000097d2, 0x000097d2, 0x000097d2},
1206 { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6 }, 1204 {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x000097d6, 0x000097d6, 0x000097d6},
1207 { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3 }, 1205 {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x000097c3, 0x000097c3, 0x000097c3},
1208 { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7 }, 1206 {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x000097c7, 0x000097c7, 0x000097c7},
1209 { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb }, 1207 {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x000097cb, 0x000097cb, 0x000097cb},
1210 { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf }, 1208 {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x000097cf, 0x000097cf, 0x000097cf},
1211 { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7 }, 1209 {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x000097d7, 0x000097d7, 0x000097d7},
1212 { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db }, 1210 {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x000097db, 0x000097db, 0x000097db},
1213 { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db }, 1211 {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x000097db, 0x000097db, 0x000097db},
1214 { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db }, 1212 {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x000097db, 0x000097db, 0x000097db},
1215 { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1213 {0x00009b98, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1216 { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1214 {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1217 { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1215 {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1218 { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1216 {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1219 { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1217 {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1220 { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1218 {0x00009bac, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1221 { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1219 {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1222 { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1220 {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1223 { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1221 {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1224 { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1222 {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1225 { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1223 {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1226 { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1224 {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1227 { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1225 {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1228 { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1226 {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1229 { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1227 {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1230 { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1228 {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1231 { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1229 {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1232 { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1230 {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1233 { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1231 {0x00009be0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1234 { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1232 {0x00009be4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1235 { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1233 {0x00009be8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1236 { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1234 {0x00009bec, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1237 { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1235 {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1238 { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1236 {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1239 { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1237 {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1240 { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db }, 1238 {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x000097db, 0x000097db, 0x000097db},
1241 { 0x00009848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063 }, 1239 {0x00009848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063},
1242 { 0x0000a848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063 }, 1240 {0x0000a848, 0x00001066, 0x00001066, 0x00001063, 0x00001063, 0x00001063},
1243}; 1241};
1244 1242
1245static const u32 ar9280Modes_backoff_13db_rxgain_9280_2[][6] = { 1243static const u32 ar9280Modes_backoff_13db_rxgain_9280_2[][6] = {
1246 { 0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290 }, 1244 {0x00009a00, 0x00008184, 0x00008184, 0x00000290, 0x00000290, 0x00000290},
1247 { 0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300 }, 1245 {0x00009a04, 0x00008188, 0x00008188, 0x00000300, 0x00000300, 0x00000300},
1248 { 0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304 }, 1246 {0x00009a08, 0x0000818c, 0x0000818c, 0x00000304, 0x00000304, 0x00000304},
1249 { 0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308 }, 1247 {0x00009a0c, 0x00008190, 0x00008190, 0x00000308, 0x00000308, 0x00000308},
1250 { 0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c }, 1248 {0x00009a10, 0x00008194, 0x00008194, 0x0000030c, 0x0000030c, 0x0000030c},
1251 { 0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000 }, 1249 {0x00009a14, 0x00008200, 0x00008200, 0x00008000, 0x00008000, 0x00008000},
1252 { 0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004 }, 1250 {0x00009a18, 0x00008204, 0x00008204, 0x00008004, 0x00008004, 0x00008004},
1253 { 0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008 }, 1251 {0x00009a1c, 0x00008208, 0x00008208, 0x00008008, 0x00008008, 0x00008008},
1254 { 0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c }, 1252 {0x00009a20, 0x0000820c, 0x0000820c, 0x0000800c, 0x0000800c, 0x0000800c},
1255 { 0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080 }, 1253 {0x00009a24, 0x00008210, 0x00008210, 0x00008080, 0x00008080, 0x00008080},
1256 { 0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084 }, 1254 {0x00009a28, 0x00008214, 0x00008214, 0x00008084, 0x00008084, 0x00008084},
1257 { 0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088 }, 1255 {0x00009a2c, 0x00008280, 0x00008280, 0x00008088, 0x00008088, 0x00008088},
1258 { 0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c }, 1256 {0x00009a30, 0x00008284, 0x00008284, 0x0000808c, 0x0000808c, 0x0000808c},
1259 { 0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100 }, 1257 {0x00009a34, 0x00008288, 0x00008288, 0x00008100, 0x00008100, 0x00008100},
1260 { 0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104 }, 1258 {0x00009a38, 0x0000828c, 0x0000828c, 0x00008104, 0x00008104, 0x00008104},
1261 { 0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108 }, 1259 {0x00009a3c, 0x00008290, 0x00008290, 0x00008108, 0x00008108, 0x00008108},
1262 { 0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c }, 1260 {0x00009a40, 0x00008300, 0x00008300, 0x0000810c, 0x0000810c, 0x0000810c},
1263 { 0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110 }, 1261 {0x00009a44, 0x00008304, 0x00008304, 0x00008110, 0x00008110, 0x00008110},
1264 { 0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114 }, 1262 {0x00009a48, 0x00008308, 0x00008308, 0x00008114, 0x00008114, 0x00008114},
1265 { 0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180 }, 1263 {0x00009a4c, 0x0000830c, 0x0000830c, 0x00008180, 0x00008180, 0x00008180},
1266 { 0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184 }, 1264 {0x00009a50, 0x00008310, 0x00008310, 0x00008184, 0x00008184, 0x00008184},
1267 { 0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188 }, 1265 {0x00009a54, 0x00008314, 0x00008314, 0x00008188, 0x00008188, 0x00008188},
1268 { 0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c }, 1266 {0x00009a58, 0x00008380, 0x00008380, 0x0000818c, 0x0000818c, 0x0000818c},
1269 { 0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190 }, 1267 {0x00009a5c, 0x00008384, 0x00008384, 0x00008190, 0x00008190, 0x00008190},
1270 { 0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194 }, 1268 {0x00009a60, 0x00008388, 0x00008388, 0x00008194, 0x00008194, 0x00008194},
1271 { 0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0 }, 1269 {0x00009a64, 0x0000838c, 0x0000838c, 0x000081a0, 0x000081a0, 0x000081a0},
1272 { 0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c }, 1270 {0x00009a68, 0x00008390, 0x00008390, 0x0000820c, 0x0000820c, 0x0000820c},
1273 { 0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8 }, 1271 {0x00009a6c, 0x00008394, 0x00008394, 0x000081a8, 0x000081a8, 0x000081a8},
1274 { 0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284 }, 1272 {0x00009a70, 0x0000a380, 0x0000a380, 0x00008284, 0x00008284, 0x00008284},
1275 { 0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288 }, 1273 {0x00009a74, 0x0000a384, 0x0000a384, 0x00008288, 0x00008288, 0x00008288},
1276 { 0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224 }, 1274 {0x00009a78, 0x0000a388, 0x0000a388, 0x00008224, 0x00008224, 0x00008224},
1277 { 0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290 }, 1275 {0x00009a7c, 0x0000a38c, 0x0000a38c, 0x00008290, 0x00008290, 0x00008290},
1278 { 0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300 }, 1276 {0x00009a80, 0x0000a390, 0x0000a390, 0x00008300, 0x00008300, 0x00008300},
1279 { 0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304 }, 1277 {0x00009a84, 0x0000a394, 0x0000a394, 0x00008304, 0x00008304, 0x00008304},
1280 { 0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308 }, 1278 {0x00009a88, 0x0000a780, 0x0000a780, 0x00008308, 0x00008308, 0x00008308},
1281 { 0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c }, 1279 {0x00009a8c, 0x0000a784, 0x0000a784, 0x0000830c, 0x0000830c, 0x0000830c},
1282 { 0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380 }, 1280 {0x00009a90, 0x0000a788, 0x0000a788, 0x00008380, 0x00008380, 0x00008380},
1283 { 0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384 }, 1281 {0x00009a94, 0x0000a78c, 0x0000a78c, 0x00008384, 0x00008384, 0x00008384},
1284 { 0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700 }, 1282 {0x00009a98, 0x0000a790, 0x0000a790, 0x00008700, 0x00008700, 0x00008700},
1285 { 0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704 }, 1283 {0x00009a9c, 0x0000a794, 0x0000a794, 0x00008704, 0x00008704, 0x00008704},
1286 { 0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708 }, 1284 {0x00009aa0, 0x0000ab84, 0x0000ab84, 0x00008708, 0x00008708, 0x00008708},
1287 { 0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c }, 1285 {0x00009aa4, 0x0000ab88, 0x0000ab88, 0x0000870c, 0x0000870c, 0x0000870c},
1288 { 0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780 }, 1286 {0x00009aa8, 0x0000ab8c, 0x0000ab8c, 0x00008780, 0x00008780, 0x00008780},
1289 { 0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784 }, 1287 {0x00009aac, 0x0000ab90, 0x0000ab90, 0x00008784, 0x00008784, 0x00008784},
1290 { 0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00 }, 1288 {0x00009ab0, 0x0000ab94, 0x0000ab94, 0x00008b00, 0x00008b00, 0x00008b00},
1291 { 0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04 }, 1289 {0x00009ab4, 0x0000af80, 0x0000af80, 0x00008b04, 0x00008b04, 0x00008b04},
1292 { 0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08 }, 1290 {0x00009ab8, 0x0000af84, 0x0000af84, 0x00008b08, 0x00008b08, 0x00008b08},
1293 { 0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c }, 1291 {0x00009abc, 0x0000af88, 0x0000af88, 0x00008b0c, 0x00008b0c, 0x00008b0c},
1294 { 0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80 }, 1292 {0x00009ac0, 0x0000af8c, 0x0000af8c, 0x00008b80, 0x00008b80, 0x00008b80},
1295 { 0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84 }, 1293 {0x00009ac4, 0x0000af90, 0x0000af90, 0x00008b84, 0x00008b84, 0x00008b84},
1296 { 0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88 }, 1294 {0x00009ac8, 0x0000af94, 0x0000af94, 0x00008b88, 0x00008b88, 0x00008b88},
1297 { 0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c }, 1295 {0x00009acc, 0x0000b380, 0x0000b380, 0x00008b8c, 0x00008b8c, 0x00008b8c},
1298 { 0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90 }, 1296 {0x00009ad0, 0x0000b384, 0x0000b384, 0x00008b90, 0x00008b90, 0x00008b90},
1299 { 0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80 }, 1297 {0x00009ad4, 0x0000b388, 0x0000b388, 0x00008f80, 0x00008f80, 0x00008f80},
1300 { 0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84 }, 1298 {0x00009ad8, 0x0000b38c, 0x0000b38c, 0x00008f84, 0x00008f84, 0x00008f84},
1301 { 0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88 }, 1299 {0x00009adc, 0x0000b390, 0x0000b390, 0x00008f88, 0x00008f88, 0x00008f88},
1302 { 0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c }, 1300 {0x00009ae0, 0x0000b394, 0x0000b394, 0x00008f8c, 0x00008f8c, 0x00008f8c},
1303 { 0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90 }, 1301 {0x00009ae4, 0x0000b398, 0x0000b398, 0x00008f90, 0x00008f90, 0x00008f90},
1304 { 0x00009ae8, 0x0000b780, 0x0000b780, 0x00009310, 0x00009310, 0x00009310 }, 1302 {0x00009ae8, 0x0000b780, 0x0000b780, 0x00009310, 0x00009310, 0x00009310},
1305 { 0x00009aec, 0x0000b784, 0x0000b784, 0x00009314, 0x00009314, 0x00009314 }, 1303 {0x00009aec, 0x0000b784, 0x0000b784, 0x00009314, 0x00009314, 0x00009314},
1306 { 0x00009af0, 0x0000b788, 0x0000b788, 0x00009320, 0x00009320, 0x00009320 }, 1304 {0x00009af0, 0x0000b788, 0x0000b788, 0x00009320, 0x00009320, 0x00009320},
1307 { 0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009324, 0x00009324, 0x00009324 }, 1305 {0x00009af4, 0x0000b78c, 0x0000b78c, 0x00009324, 0x00009324, 0x00009324},
1308 { 0x00009af8, 0x0000b790, 0x0000b790, 0x00009328, 0x00009328, 0x00009328 }, 1306 {0x00009af8, 0x0000b790, 0x0000b790, 0x00009328, 0x00009328, 0x00009328},
1309 { 0x00009afc, 0x0000b794, 0x0000b794, 0x0000932c, 0x0000932c, 0x0000932c }, 1307 {0x00009afc, 0x0000b794, 0x0000b794, 0x0000932c, 0x0000932c, 0x0000932c},
1310 { 0x00009b00, 0x0000b798, 0x0000b798, 0x00009330, 0x00009330, 0x00009330 }, 1308 {0x00009b00, 0x0000b798, 0x0000b798, 0x00009330, 0x00009330, 0x00009330},
1311 { 0x00009b04, 0x0000d784, 0x0000d784, 0x00009334, 0x00009334, 0x00009334 }, 1309 {0x00009b04, 0x0000d784, 0x0000d784, 0x00009334, 0x00009334, 0x00009334},
1312 { 0x00009b08, 0x0000d788, 0x0000d788, 0x00009321, 0x00009321, 0x00009321 }, 1310 {0x00009b08, 0x0000d788, 0x0000d788, 0x00009321, 0x00009321, 0x00009321},
1313 { 0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009325, 0x00009325, 0x00009325 }, 1311 {0x00009b0c, 0x0000d78c, 0x0000d78c, 0x00009325, 0x00009325, 0x00009325},
1314 { 0x00009b10, 0x0000d790, 0x0000d790, 0x00009329, 0x00009329, 0x00009329 }, 1312 {0x00009b10, 0x0000d790, 0x0000d790, 0x00009329, 0x00009329, 0x00009329},
1315 { 0x00009b14, 0x0000f780, 0x0000f780, 0x0000932d, 0x0000932d, 0x0000932d }, 1313 {0x00009b14, 0x0000f780, 0x0000f780, 0x0000932d, 0x0000932d, 0x0000932d},
1316 { 0x00009b18, 0x0000f784, 0x0000f784, 0x00009331, 0x00009331, 0x00009331 }, 1314 {0x00009b18, 0x0000f784, 0x0000f784, 0x00009331, 0x00009331, 0x00009331},
1317 { 0x00009b1c, 0x0000f788, 0x0000f788, 0x00009335, 0x00009335, 0x00009335 }, 1315 {0x00009b1c, 0x0000f788, 0x0000f788, 0x00009335, 0x00009335, 0x00009335},
1318 { 0x00009b20, 0x0000f78c, 0x0000f78c, 0x00009322, 0x00009322, 0x00009322 }, 1316 {0x00009b20, 0x0000f78c, 0x0000f78c, 0x00009322, 0x00009322, 0x00009322},
1319 { 0x00009b24, 0x0000f790, 0x0000f790, 0x00009326, 0x00009326, 0x00009326 }, 1317 {0x00009b24, 0x0000f790, 0x0000f790, 0x00009326, 0x00009326, 0x00009326},
1320 { 0x00009b28, 0x0000f794, 0x0000f794, 0x0000932a, 0x0000932a, 0x0000932a }, 1318 {0x00009b28, 0x0000f794, 0x0000f794, 0x0000932a, 0x0000932a, 0x0000932a},
1321 { 0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x0000932e, 0x0000932e, 0x0000932e }, 1319 {0x00009b2c, 0x0000f7a4, 0x0000f7a4, 0x0000932e, 0x0000932e, 0x0000932e},
1322 { 0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00009332, 0x00009332, 0x00009332 }, 1320 {0x00009b30, 0x0000f7a8, 0x0000f7a8, 0x00009332, 0x00009332, 0x00009332},
1323 { 0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00009336, 0x00009336, 0x00009336 }, 1321 {0x00009b34, 0x0000f7ac, 0x0000f7ac, 0x00009336, 0x00009336, 0x00009336},
1324 { 0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00009323, 0x00009323, 0x00009323 }, 1322 {0x00009b38, 0x0000f7b0, 0x0000f7b0, 0x00009323, 0x00009323, 0x00009323},
1325 { 0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00009327, 0x00009327, 0x00009327 }, 1323 {0x00009b3c, 0x0000f7b4, 0x0000f7b4, 0x00009327, 0x00009327, 0x00009327},
1326 { 0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x0000932b, 0x0000932b, 0x0000932b }, 1324 {0x00009b40, 0x0000f7a1, 0x0000f7a1, 0x0000932b, 0x0000932b, 0x0000932b},
1327 { 0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x0000932f, 0x0000932f, 0x0000932f }, 1325 {0x00009b44, 0x0000f7a5, 0x0000f7a5, 0x0000932f, 0x0000932f, 0x0000932f},
1328 { 0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00009333, 0x00009333, 0x00009333 }, 1326 {0x00009b48, 0x0000f7a9, 0x0000f7a9, 0x00009333, 0x00009333, 0x00009333},
1329 { 0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00009337, 0x00009337, 0x00009337 }, 1327 {0x00009b4c, 0x0000f7ad, 0x0000f7ad, 0x00009337, 0x00009337, 0x00009337},
1330 { 0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00009343, 0x00009343, 0x00009343 }, 1328 {0x00009b50, 0x0000f7b1, 0x0000f7b1, 0x00009343, 0x00009343, 0x00009343},
1331 { 0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00009347, 0x00009347, 0x00009347 }, 1329 {0x00009b54, 0x0000f7b5, 0x0000f7b5, 0x00009347, 0x00009347, 0x00009347},
1332 { 0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x0000934b, 0x0000934b, 0x0000934b }, 1330 {0x00009b58, 0x0000f7c5, 0x0000f7c5, 0x0000934b, 0x0000934b, 0x0000934b},
1333 { 0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x0000934f, 0x0000934f, 0x0000934f }, 1331 {0x00009b5c, 0x0000f7c9, 0x0000f7c9, 0x0000934f, 0x0000934f, 0x0000934f},
1334 { 0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00009353, 0x00009353, 0x00009353 }, 1332 {0x00009b60, 0x0000f7cd, 0x0000f7cd, 0x00009353, 0x00009353, 0x00009353},
1335 { 0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00009357, 0x00009357, 0x00009357 }, 1333 {0x00009b64, 0x0000f7d1, 0x0000f7d1, 0x00009357, 0x00009357, 0x00009357},
1336 { 0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x0000935b, 0x0000935b, 0x0000935b }, 1334 {0x00009b68, 0x0000f7d5, 0x0000f7d5, 0x0000935b, 0x0000935b, 0x0000935b},
1337 { 0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x0000935b, 0x0000935b, 0x0000935b }, 1335 {0x00009b6c, 0x0000f7c2, 0x0000f7c2, 0x0000935b, 0x0000935b, 0x0000935b},
1338 { 0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x0000935b, 0x0000935b, 0x0000935b }, 1336 {0x00009b70, 0x0000f7c6, 0x0000f7c6, 0x0000935b, 0x0000935b, 0x0000935b},
1339 { 0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x0000935b, 0x0000935b, 0x0000935b }, 1337 {0x00009b74, 0x0000f7ca, 0x0000f7ca, 0x0000935b, 0x0000935b, 0x0000935b},
1340 { 0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x0000935b, 0x0000935b, 0x0000935b }, 1338 {0x00009b78, 0x0000f7ce, 0x0000f7ce, 0x0000935b, 0x0000935b, 0x0000935b},
1341 { 0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x0000935b, 0x0000935b, 0x0000935b }, 1339 {0x00009b7c, 0x0000f7d2, 0x0000f7d2, 0x0000935b, 0x0000935b, 0x0000935b},
1342 { 0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x0000935b, 0x0000935b, 0x0000935b }, 1340 {0x00009b80, 0x0000f7d6, 0x0000f7d6, 0x0000935b, 0x0000935b, 0x0000935b},
1343 { 0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x0000935b, 0x0000935b, 0x0000935b }, 1341 {0x00009b84, 0x0000f7c3, 0x0000f7c3, 0x0000935b, 0x0000935b, 0x0000935b},
1344 { 0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x0000935b, 0x0000935b, 0x0000935b }, 1342 {0x00009b88, 0x0000f7c7, 0x0000f7c7, 0x0000935b, 0x0000935b, 0x0000935b},
1345 { 0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x0000935b, 0x0000935b, 0x0000935b }, 1343 {0x00009b8c, 0x0000f7cb, 0x0000f7cb, 0x0000935b, 0x0000935b, 0x0000935b},
1346 { 0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x0000935b, 0x0000935b, 0x0000935b }, 1344 {0x00009b90, 0x0000f7d3, 0x0000f7d3, 0x0000935b, 0x0000935b, 0x0000935b},
1347 { 0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x0000935b, 0x0000935b, 0x0000935b }, 1345 {0x00009b94, 0x0000f7d7, 0x0000f7d7, 0x0000935b, 0x0000935b, 0x0000935b},
1348 { 0x00009b98, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1346 {0x00009b98, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1349 { 0x00009b9c, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1347 {0x00009b9c, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1350 { 0x00009ba0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1348 {0x00009ba0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1351 { 0x00009ba4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1349 {0x00009ba4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1352 { 0x00009ba8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1350 {0x00009ba8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1353 { 0x00009bac, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1351 {0x00009bac, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1354 { 0x00009bb0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1352 {0x00009bb0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1355 { 0x00009bb4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1353 {0x00009bb4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1356 { 0x00009bb8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1354 {0x00009bb8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1357 { 0x00009bbc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1355 {0x00009bbc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1358 { 0x00009bc0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1356 {0x00009bc0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1359 { 0x00009bc4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1357 {0x00009bc4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1360 { 0x00009bc8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1358 {0x00009bc8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1361 { 0x00009bcc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1359 {0x00009bcc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1362 { 0x00009bd0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1360 {0x00009bd0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1363 { 0x00009bd4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1361 {0x00009bd4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1364 { 0x00009bd8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1362 {0x00009bd8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1365 { 0x00009bdc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1363 {0x00009bdc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1366 { 0x00009be0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1364 {0x00009be0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1367 { 0x00009be4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1365 {0x00009be4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1368 { 0x00009be8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1366 {0x00009be8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1369 { 0x00009bec, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1367 {0x00009bec, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1370 { 0x00009bf0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1368 {0x00009bf0, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1371 { 0x00009bf4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1369 {0x00009bf4, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1372 { 0x00009bf8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1370 {0x00009bf8, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1373 { 0x00009bfc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b }, 1371 {0x00009bfc, 0x0000f7db, 0x0000f7db, 0x0000935b, 0x0000935b, 0x0000935b},
1374 { 0x00009848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a }, 1372 {0x00009848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a},
1375 { 0x0000a848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a }, 1373 {0x0000a848, 0x00001066, 0x00001066, 0x0000105a, 0x0000105a, 0x0000105a},
1376}; 1374};
1377 1375
1378static const u32 ar9280Modes_high_power_tx_gain_9280_2[][6] = { 1376static const u32 ar9280Modes_high_power_tx_gain_9280_2[][6] = {
1379 { 0x0000a274, 0x0a19e652, 0x0a19e652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, 1377 {0x0000a274, 0x0a19e652, 0x0a19e652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652},
1380 { 0x0000a27c, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce }, 1378 {0x0000a27c, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce, 0x050739ce},
1381 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 1379 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1382 { 0x0000a304, 0x00003002, 0x00003002, 0x00004002, 0x00004002, 0x00004002 }, 1380 {0x0000a304, 0x00003002, 0x00003002, 0x00004002, 0x00004002, 0x00004002},
1383 { 0x0000a308, 0x00006004, 0x00006004, 0x00007008, 0x00007008, 0x00007008 }, 1381 {0x0000a308, 0x00006004, 0x00006004, 0x00007008, 0x00007008, 0x00007008},
1384 { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000c010, 0x0000c010, 0x0000c010 }, 1382 {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000c010, 0x0000c010, 0x0000c010},
1385 { 0x0000a310, 0x0000e012, 0x0000e012, 0x00010012, 0x00010012, 0x00010012 }, 1383 {0x0000a310, 0x0000e012, 0x0000e012, 0x00010012, 0x00010012, 0x00010012},
1386 { 0x0000a314, 0x00011014, 0x00011014, 0x00013014, 0x00013014, 0x00013014 }, 1384 {0x0000a314, 0x00011014, 0x00011014, 0x00013014, 0x00013014, 0x00013014},
1387 { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001820a, 0x0001820a, 0x0001820a }, 1385 {0x0000a318, 0x0001504a, 0x0001504a, 0x0001820a, 0x0001820a, 0x0001820a},
1388 { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001b211, 0x0001b211, 0x0001b211 }, 1386 {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001b211, 0x0001b211, 0x0001b211},
1389 { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, 1387 {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213},
1390 { 0x0000a324, 0x00021092, 0x00021092, 0x00022411, 0x00022411, 0x00022411 }, 1388 {0x0000a324, 0x00021092, 0x00021092, 0x00022411, 0x00022411, 0x00022411},
1391 { 0x0000a328, 0x0002510a, 0x0002510a, 0x00025413, 0x00025413, 0x00025413 }, 1389 {0x0000a328, 0x0002510a, 0x0002510a, 0x00025413, 0x00025413, 0x00025413},
1392 { 0x0000a32c, 0x0002910c, 0x0002910c, 0x00029811, 0x00029811, 0x00029811 }, 1390 {0x0000a32c, 0x0002910c, 0x0002910c, 0x00029811, 0x00029811, 0x00029811},
1393 { 0x0000a330, 0x0002c18b, 0x0002c18b, 0x0002c813, 0x0002c813, 0x0002c813 }, 1391 {0x0000a330, 0x0002c18b, 0x0002c18b, 0x0002c813, 0x0002c813, 0x0002c813},
1394 { 0x0000a334, 0x0002f1cc, 0x0002f1cc, 0x00030a14, 0x00030a14, 0x00030a14 }, 1392 {0x0000a334, 0x0002f1cc, 0x0002f1cc, 0x00030a14, 0x00030a14, 0x00030a14},
1395 { 0x0000a338, 0x000321eb, 0x000321eb, 0x00035a50, 0x00035a50, 0x00035a50 }, 1393 {0x0000a338, 0x000321eb, 0x000321eb, 0x00035a50, 0x00035a50, 0x00035a50},
1396 { 0x0000a33c, 0x000341ec, 0x000341ec, 0x00039c4c, 0x00039c4c, 0x00039c4c }, 1394 {0x0000a33c, 0x000341ec, 0x000341ec, 0x00039c4c, 0x00039c4c, 0x00039c4c},
1397 { 0x0000a340, 0x000341ec, 0x000341ec, 0x0003de8a, 0x0003de8a, 0x0003de8a }, 1395 {0x0000a340, 0x000341ec, 0x000341ec, 0x0003de8a, 0x0003de8a, 0x0003de8a},
1398 { 0x0000a344, 0x000341ec, 0x000341ec, 0x00042e92, 0x00042e92, 0x00042e92 }, 1396 {0x0000a344, 0x000341ec, 0x000341ec, 0x00042e92, 0x00042e92, 0x00042e92},
1399 { 0x0000a348, 0x000341ec, 0x000341ec, 0x00046ed2, 0x00046ed2, 0x00046ed2 }, 1397 {0x0000a348, 0x000341ec, 0x000341ec, 0x00046ed2, 0x00046ed2, 0x00046ed2},
1400 { 0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5 }, 1398 {0x0000a34c, 0x000341ec, 0x000341ec, 0x0004bed5, 0x0004bed5, 0x0004bed5},
1401 { 0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54 }, 1399 {0x0000a350, 0x000341ec, 0x000341ec, 0x0004ff54, 0x0004ff54, 0x0004ff54},
1402 { 0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5 }, 1400 {0x0000a354, 0x000341ec, 0x000341ec, 0x00055fd5, 0x00055fd5, 0x00055fd5},
1403 { 0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff }, 1401 {0x0000a3ec, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081},
1404 { 0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff }, 1402 {0x00007814, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff},
1405 { 0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000 }, 1403 {0x00007838, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff, 0x00198eff},
1406 { 0x00007840, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000 }, 1404 {0x0000781c, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000},
1407 { 0x00007820, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480 }, 1405 {0x00007840, 0x00172000, 0x00172000, 0x00172000, 0x00172000, 0x00172000},
1408 { 0x00007844, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480 }, 1406 {0x00007820, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480},
1407 {0x00007844, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480, 0xf258a480},
1409}; 1408};
1410 1409
1411static const u32 ar9280Modes_original_tx_gain_9280_2[][6] = { 1410static const u32 ar9280Modes_original_tx_gain_9280_2[][6] = {
1412 { 0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652 }, 1411 {0x0000a274, 0x0a19c652, 0x0a19c652, 0x0a1aa652, 0x0a1aa652, 0x0a1aa652},
1413 { 0x0000a27c, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce }, 1412 {0x0000a27c, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce, 0x050701ce},
1414 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 1413 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1415 { 0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002 }, 1414 {0x0000a304, 0x00003002, 0x00003002, 0x00003002, 0x00003002, 0x00003002},
1416 { 0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009 }, 1415 {0x0000a308, 0x00006004, 0x00006004, 0x00008009, 0x00008009, 0x00008009},
1417 { 0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b }, 1416 {0x0000a30c, 0x0000a006, 0x0000a006, 0x0000b00b, 0x0000b00b, 0x0000b00b},
1418 { 0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012 }, 1417 {0x0000a310, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012, 0x0000e012},
1419 { 0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048 }, 1418 {0x0000a314, 0x00011014, 0x00011014, 0x00012048, 0x00012048, 0x00012048},
1420 { 0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a }, 1419 {0x0000a318, 0x0001504a, 0x0001504a, 0x0001604a, 0x0001604a, 0x0001604a},
1421 { 0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211 }, 1420 {0x0000a31c, 0x0001904c, 0x0001904c, 0x0001a211, 0x0001a211, 0x0001a211},
1422 { 0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213 }, 1421 {0x0000a320, 0x0001c04e, 0x0001c04e, 0x0001e213, 0x0001e213, 0x0001e213},
1423 { 0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b }, 1422 {0x0000a324, 0x00020092, 0x00020092, 0x0002121b, 0x0002121b, 0x0002121b},
1424 { 0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412 }, 1423 {0x0000a328, 0x0002410a, 0x0002410a, 0x00024412, 0x00024412, 0x00024412},
1425 { 0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414 }, 1424 {0x0000a32c, 0x0002710c, 0x0002710c, 0x00028414, 0x00028414, 0x00028414},
1426 { 0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a }, 1425 {0x0000a330, 0x0002b18b, 0x0002b18b, 0x0002b44a, 0x0002b44a, 0x0002b44a},
1427 { 0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649 }, 1426 {0x0000a334, 0x0002e1cc, 0x0002e1cc, 0x00030649, 0x00030649, 0x00030649},
1428 { 0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b }, 1427 {0x0000a338, 0x000321ec, 0x000321ec, 0x0003364b, 0x0003364b, 0x0003364b},
1429 { 0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49 }, 1428 {0x0000a33c, 0x000321ec, 0x000321ec, 0x00038a49, 0x00038a49, 0x00038a49},
1430 { 0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48 }, 1429 {0x0000a340, 0x000321ec, 0x000321ec, 0x0003be48, 0x0003be48, 0x0003be48},
1431 { 0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a }, 1430 {0x0000a344, 0x000321ec, 0x000321ec, 0x0003ee4a, 0x0003ee4a, 0x0003ee4a},
1432 { 0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88 }, 1431 {0x0000a348, 0x000321ec, 0x000321ec, 0x00042e88, 0x00042e88, 0x00042e88},
1433 { 0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a }, 1432 {0x0000a34c, 0x000321ec, 0x000321ec, 0x00046e8a, 0x00046e8a, 0x00046e8a},
1434 { 0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9 }, 1433 {0x0000a350, 0x000321ec, 0x000321ec, 0x00049ec9, 0x00049ec9, 0x00049ec9},
1435 { 0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42 }, 1434 {0x0000a354, 0x000321ec, 0x000321ec, 0x0004bf42, 0x0004bf42, 0x0004bf42},
1436 { 0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff }, 1435 {0x0000a3ec, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081, 0x00f70081},
1437 { 0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff }, 1436 {0x00007814, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff},
1438 { 0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000 }, 1437 {0x00007838, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff, 0x0019beff},
1439 { 0x00007840, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000 }, 1438 {0x0000781c, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000},
1440 { 0x00007820, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480 }, 1439 {0x00007840, 0x00392000, 0x00392000, 0x00392000, 0x00392000, 0x00392000},
1441 { 0x00007844, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480 }, 1440 {0x00007820, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480},
1441 {0x00007844, 0x92592480, 0x92592480, 0x92592480, 0x92592480, 0x92592480},
1442}; 1442};
1443 1443
1444static const u32 ar9280PciePhy_clkreq_off_L1_9280[][2] = { 1444static const u32 ar9280PciePhy_clkreq_off_L1_9280[][2] = {
1445 {0x00004040, 0x9248fd00 }, 1445 /* Addr allmodes */
1446 {0x00004040, 0x24924924 }, 1446 {0x00004040, 0x9248fd00},
1447 {0x00004040, 0xa8000019 }, 1447 {0x00004040, 0x24924924},
1448 {0x00004040, 0x13160820 }, 1448 {0x00004040, 0xa8000019},
1449 {0x00004040, 0xe5980560 }, 1449 {0x00004040, 0x13160820},
1450 {0x00004040, 0xc01dcffc }, 1450 {0x00004040, 0xe5980560},
1451 {0x00004040, 0x1aaabe41 }, 1451 {0x00004040, 0xc01dcffc},
1452 {0x00004040, 0xbe105554 }, 1452 {0x00004040, 0x1aaabe41},
1453 {0x00004040, 0x00043007 }, 1453 {0x00004040, 0xbe105554},
1454 {0x00004044, 0x00000000 }, 1454 {0x00004040, 0x00043007},
1455 {0x00004044, 0x00000000},
1455}; 1456};
1456 1457
1457static const u32 ar9280PciePhy_clkreq_always_on_L1_9280[][2] = { 1458static const u32 ar9280PciePhy_clkreq_always_on_L1_9280[][2] = {
1458 {0x00004040, 0x9248fd00 }, 1459 /* Addr allmodes */
1459 {0x00004040, 0x24924924 }, 1460 {0x00004040, 0x9248fd00},
1460 {0x00004040, 0xa8000019 }, 1461 {0x00004040, 0x24924924},
1461 {0x00004040, 0x13160820 }, 1462 {0x00004040, 0xa8000019},
1462 {0x00004040, 0xe5980560 }, 1463 {0x00004040, 0x13160820},
1463 {0x00004040, 0xc01dcffd }, 1464 {0x00004040, 0xe5980560},
1464 {0x00004040, 0x1aaabe41 }, 1465 {0x00004040, 0xc01dcffd},
1465 {0x00004040, 0xbe105554 }, 1466 {0x00004040, 0x1aaabe41},
1466 {0x00004040, 0x00043007 }, 1467 {0x00004040, 0xbe105554},
1467 {0x00004044, 0x00000000 }, 1468 {0x00004040, 0x00043007},
1469 {0x00004044, 0x00000000},
1468}; 1470};
1469 1471
1470/* AR9285 Revsion 10*/
1471static const u32 ar9285Modes_9285[][6] = { 1472static const u32 ar9285Modes_9285[][6] = {
1472 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, 1473 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
1473 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, 1474 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
1474 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, 1475 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
1475 { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, 1476 {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008},
1476 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, 1477 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
1477 { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, 1478 {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f},
1478 { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, 1479 {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880},
1479 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, 1480 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
1480 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, 1481 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
1481 { 0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 1482 {0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
1482 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, 1483 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
1483 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 1484 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
1484 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, 1485 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
1485 { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, 1486 {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e},
1486 { 0x00009844, 0x0372161e, 0x0372161e, 0x03720020, 0x03720020, 0x037216a0 }, 1487 {0x00009844, 0x0372161e, 0x0372161e, 0x03720020, 0x03720020, 0x037216a0},
1487 { 0x00009848, 0x00001066, 0x00001066, 0x0000004e, 0x0000004e, 0x00001059 }, 1488 {0x00009848, 0x00001066, 0x00001066, 0x0000004e, 0x0000004e, 0x00001059},
1488 { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, 1489 {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2},
1489 { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, 1490 {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e},
1490 { 0x0000985c, 0x3139605e, 0x3139605e, 0x3136605e, 0x3136605e, 0x3139605e }, 1491 {0x0000985c, 0x3139605e, 0x3139605e, 0x3136605e, 0x3136605e, 0x3139605e},
1491 { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18 }, 1492 {0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18},
1492 { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 1493 {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
1493 { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, 1494 {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
1494 { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, 1495 {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881},
1495 { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, 1496 {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
1496 { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, 1497 {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016},
1497 { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, 1498 {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d},
1498 { 0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1020, 0xdfbc1020, 0xdfbc1010 }, 1499 {0x00009944, 0xdfbc1010, 0xdfbc1010, 0xdfbc1020, 0xdfbc1020, 0xdfbc1010},
1499 { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 1500 {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1500 { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 1501 {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1501 { 0x000099b8, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c }, 1502 {0x000099b8, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c, 0x00cf4d1c},
1502 { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, 1503 {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00},
1503 { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 1504 {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
1504 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, 1505 {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
1505 { 0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329 }, 1506 {0x000099c8, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329, 0x60f65329},
1506 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, 1507 {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
1507 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, 1508 {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
1508 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 1509 {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1509 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 1510 {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1510 { 0x00009a00, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000 }, 1511 {0x00009a00, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000},
1511 { 0x00009a04, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000 }, 1512 {0x00009a04, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000},
1512 { 0x00009a08, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000 }, 1513 {0x00009a08, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000},
1513 { 0x00009a0c, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000 }, 1514 {0x00009a0c, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000},
1514 { 0x00009a10, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000 }, 1515 {0x00009a10, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000},
1515 { 0x00009a14, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000 }, 1516 {0x00009a14, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000},
1516 { 0x00009a18, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000 }, 1517 {0x00009a18, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000},
1517 { 0x00009a1c, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, 1518 {0x00009a1c, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000},
1518 { 0x00009a20, 0x00000000, 0x00000000, 0x00068114, 0x00068114, 0x00000000 }, 1519 {0x00009a20, 0x00000000, 0x00000000, 0x00068114, 0x00068114, 0x00000000},
1519 { 0x00009a24, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000 }, 1520 {0x00009a24, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000},
1520 { 0x00009a28, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000 }, 1521 {0x00009a28, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000},
1521 { 0x00009a2c, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000 }, 1522 {0x00009a2c, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000},
1522 { 0x00009a30, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000 }, 1523 {0x00009a30, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000},
1523 { 0x00009a34, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000 }, 1524 {0x00009a34, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000},
1524 { 0x00009a38, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000 }, 1525 {0x00009a38, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000},
1525 { 0x00009a3c, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000 }, 1526 {0x00009a3c, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000},
1526 { 0x00009a40, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000 }, 1527 {0x00009a40, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000},
1527 { 0x00009a44, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000 }, 1528 {0x00009a44, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000},
1528 { 0x00009a48, 0x00000000, 0x00000000, 0x00068284, 0x00068284, 0x00000000 }, 1529 {0x00009a48, 0x00000000, 0x00000000, 0x00068284, 0x00068284, 0x00000000},
1529 { 0x00009a4c, 0x00000000, 0x00000000, 0x00068288, 0x00068288, 0x00000000 }, 1530 {0x00009a4c, 0x00000000, 0x00000000, 0x00068288, 0x00068288, 0x00000000},
1530 { 0x00009a50, 0x00000000, 0x00000000, 0x00068220, 0x00068220, 0x00000000 }, 1531 {0x00009a50, 0x00000000, 0x00000000, 0x00068220, 0x00068220, 0x00000000},
1531 { 0x00009a54, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000 }, 1532 {0x00009a54, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000},
1532 { 0x00009a58, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000 }, 1533 {0x00009a58, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000},
1533 { 0x00009a5c, 0x00000000, 0x00000000, 0x00068304, 0x00068304, 0x00000000 }, 1534 {0x00009a5c, 0x00000000, 0x00000000, 0x00068304, 0x00068304, 0x00000000},
1534 { 0x00009a60, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000 }, 1535 {0x00009a60, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000},
1535 { 0x00009a64, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000 }, 1536 {0x00009a64, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000},
1536 { 0x00009a68, 0x00000000, 0x00000000, 0x00068380, 0x00068380, 0x00000000 }, 1537 {0x00009a68, 0x00000000, 0x00000000, 0x00068380, 0x00068380, 0x00000000},
1537 { 0x00009a6c, 0x00000000, 0x00000000, 0x00068384, 0x00068384, 0x00000000 }, 1538 {0x00009a6c, 0x00000000, 0x00000000, 0x00068384, 0x00068384, 0x00000000},
1538 { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, 1539 {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000},
1539 { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, 1540 {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000},
1540 { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, 1541 {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000},
1541 { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, 1542 {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000},
1542 { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, 1543 {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000},
1543 { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, 1544 {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000},
1544 { 0x00009a88, 0x00000000, 0x00000000, 0x00068b04, 0x00068b04, 0x00000000 }, 1545 {0x00009a88, 0x00000000, 0x00000000, 0x00068b04, 0x00068b04, 0x00000000},
1545 { 0x00009a8c, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000 }, 1546 {0x00009a8c, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000},
1546 { 0x00009a90, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000 }, 1547 {0x00009a90, 0x00000000, 0x00000000, 0x00068b08, 0x00068b08, 0x00000000},
1547 { 0x00009a94, 0x00000000, 0x00000000, 0x00068b0c, 0x00068b0c, 0x00000000 }, 1548 {0x00009a94, 0x00000000, 0x00000000, 0x00068b0c, 0x00068b0c, 0x00000000},
1548 { 0x00009a98, 0x00000000, 0x00000000, 0x00068b80, 0x00068b80, 0x00000000 }, 1549 {0x00009a98, 0x00000000, 0x00000000, 0x00068b80, 0x00068b80, 0x00000000},
1549 { 0x00009a9c, 0x00000000, 0x00000000, 0x00068b84, 0x00068b84, 0x00000000 }, 1550 {0x00009a9c, 0x00000000, 0x00000000, 0x00068b84, 0x00068b84, 0x00000000},
1550 { 0x00009aa0, 0x00000000, 0x00000000, 0x00068b88, 0x00068b88, 0x00000000 }, 1551 {0x00009aa0, 0x00000000, 0x00000000, 0x00068b88, 0x00068b88, 0x00000000},
1551 { 0x00009aa4, 0x00000000, 0x00000000, 0x00068b8c, 0x00068b8c, 0x00000000 }, 1552 {0x00009aa4, 0x00000000, 0x00000000, 0x00068b8c, 0x00068b8c, 0x00000000},
1552 { 0x00009aa8, 0x00000000, 0x00000000, 0x000b8b90, 0x000b8b90, 0x00000000 }, 1553 {0x00009aa8, 0x00000000, 0x00000000, 0x000b8b90, 0x000b8b90, 0x00000000},
1553 { 0x00009aac, 0x00000000, 0x00000000, 0x000b8f80, 0x000b8f80, 0x00000000 }, 1554 {0x00009aac, 0x00000000, 0x00000000, 0x000b8f80, 0x000b8f80, 0x00000000},
1554 { 0x00009ab0, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, 1555 {0x00009ab0, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000},
1555 { 0x00009ab4, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000 }, 1556 {0x00009ab4, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000},
1556 { 0x00009ab8, 0x00000000, 0x00000000, 0x000b8f8c, 0x000b8f8c, 0x00000000 }, 1557 {0x00009ab8, 0x00000000, 0x00000000, 0x000b8f8c, 0x000b8f8c, 0x00000000},
1557 { 0x00009abc, 0x00000000, 0x00000000, 0x000b8f90, 0x000b8f90, 0x00000000 }, 1558 {0x00009abc, 0x00000000, 0x00000000, 0x000b8f90, 0x000b8f90, 0x00000000},
1558 { 0x00009ac0, 0x00000000, 0x00000000, 0x000bb30c, 0x000bb30c, 0x00000000 }, 1559 {0x00009ac0, 0x00000000, 0x00000000, 0x000bb30c, 0x000bb30c, 0x00000000},
1559 { 0x00009ac4, 0x00000000, 0x00000000, 0x000bb310, 0x000bb310, 0x00000000 }, 1560 {0x00009ac4, 0x00000000, 0x00000000, 0x000bb310, 0x000bb310, 0x00000000},
1560 { 0x00009ac8, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000 }, 1561 {0x00009ac8, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000},
1561 { 0x00009acc, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000 }, 1562 {0x00009acc, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000},
1562 { 0x00009ad0, 0x00000000, 0x00000000, 0x000bb324, 0x000bb324, 0x00000000 }, 1563 {0x00009ad0, 0x00000000, 0x00000000, 0x000bb324, 0x000bb324, 0x00000000},
1563 { 0x00009ad4, 0x00000000, 0x00000000, 0x000bb704, 0x000bb704, 0x00000000 }, 1564 {0x00009ad4, 0x00000000, 0x00000000, 0x000bb704, 0x000bb704, 0x00000000},
1564 { 0x00009ad8, 0x00000000, 0x00000000, 0x000f96a4, 0x000f96a4, 0x00000000 }, 1565 {0x00009ad8, 0x00000000, 0x00000000, 0x000f96a4, 0x000f96a4, 0x00000000},
1565 { 0x00009adc, 0x00000000, 0x00000000, 0x000f96a8, 0x000f96a8, 0x00000000 }, 1566 {0x00009adc, 0x00000000, 0x00000000, 0x000f96a8, 0x000f96a8, 0x00000000},
1566 { 0x00009ae0, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000 }, 1567 {0x00009ae0, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000},
1567 { 0x00009ae4, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000 }, 1568 {0x00009ae4, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000},
1568 { 0x00009ae8, 0x00000000, 0x00000000, 0x000f9720, 0x000f9720, 0x00000000 }, 1569 {0x00009ae8, 0x00000000, 0x00000000, 0x000f9720, 0x000f9720, 0x00000000},
1569 { 0x00009aec, 0x00000000, 0x00000000, 0x000f9724, 0x000f9724, 0x00000000 }, 1570 {0x00009aec, 0x00000000, 0x00000000, 0x000f9724, 0x000f9724, 0x00000000},
1570 { 0x00009af0, 0x00000000, 0x00000000, 0x000f9728, 0x000f9728, 0x00000000 }, 1571 {0x00009af0, 0x00000000, 0x00000000, 0x000f9728, 0x000f9728, 0x00000000},
1571 { 0x00009af4, 0x00000000, 0x00000000, 0x000f972c, 0x000f972c, 0x00000000 }, 1572 {0x00009af4, 0x00000000, 0x00000000, 0x000f972c, 0x000f972c, 0x00000000},
1572 { 0x00009af8, 0x00000000, 0x00000000, 0x000f97a0, 0x000f97a0, 0x00000000 }, 1573 {0x00009af8, 0x00000000, 0x00000000, 0x000f97a0, 0x000f97a0, 0x00000000},
1573 { 0x00009afc, 0x00000000, 0x00000000, 0x000f97a4, 0x000f97a4, 0x00000000 }, 1574 {0x00009afc, 0x00000000, 0x00000000, 0x000f97a4, 0x000f97a4, 0x00000000},
1574 { 0x00009b00, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000 }, 1575 {0x00009b00, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000},
1575 { 0x00009b04, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000 }, 1576 {0x00009b04, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000},
1576 { 0x00009b08, 0x00000000, 0x00000000, 0x000fb7b4, 0x000fb7b4, 0x00000000 }, 1577 {0x00009b08, 0x00000000, 0x00000000, 0x000fb7b4, 0x000fb7b4, 0x00000000},
1577 { 0x00009b0c, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000 }, 1578 {0x00009b0c, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000},
1578 { 0x00009b10, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000 }, 1579 {0x00009b10, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000},
1579 { 0x00009b14, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000 }, 1580 {0x00009b14, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000},
1580 { 0x00009b18, 0x00000000, 0x00000000, 0x000fb7ad, 0x000fb7ad, 0x00000000 }, 1581 {0x00009b18, 0x00000000, 0x00000000, 0x000fb7ad, 0x000fb7ad, 0x00000000},
1581 { 0x00009b1c, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000 }, 1582 {0x00009b1c, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000},
1582 { 0x00009b20, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000 }, 1583 {0x00009b20, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000},
1583 { 0x00009b24, 0x00000000, 0x00000000, 0x000fb7b9, 0x000fb7b9, 0x00000000 }, 1584 {0x00009b24, 0x00000000, 0x00000000, 0x000fb7b9, 0x000fb7b9, 0x00000000},
1584 { 0x00009b28, 0x00000000, 0x00000000, 0x000fb7c5, 0x000fb7c5, 0x00000000 }, 1585 {0x00009b28, 0x00000000, 0x00000000, 0x000fb7c5, 0x000fb7c5, 0x00000000},
1585 { 0x00009b2c, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000 }, 1586 {0x00009b2c, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000},
1586 { 0x00009b30, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000 }, 1587 {0x00009b30, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000},
1587 { 0x00009b34, 0x00000000, 0x00000000, 0x000fb7d5, 0x000fb7d5, 0x00000000 }, 1588 {0x00009b34, 0x00000000, 0x00000000, 0x000fb7d5, 0x000fb7d5, 0x00000000},
1588 { 0x00009b38, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000 }, 1589 {0x00009b38, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000},
1589 { 0x00009b3c, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000 }, 1590 {0x00009b3c, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000},
1590 { 0x00009b40, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000 }, 1591 {0x00009b40, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000},
1591 { 0x00009b44, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000 }, 1592 {0x00009b44, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000},
1592 { 0x00009b48, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000 }, 1593 {0x00009b48, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000},
1593 { 0x00009b4c, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000 }, 1594 {0x00009b4c, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000},
1594 { 0x00009b50, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000 }, 1595 {0x00009b50, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000},
1595 { 0x00009b54, 0x00000000, 0x00000000, 0x000fb7c7, 0x000fb7c7, 0x00000000 }, 1596 {0x00009b54, 0x00000000, 0x00000000, 0x000fb7c7, 0x000fb7c7, 0x00000000},
1596 { 0x00009b58, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000 }, 1597 {0x00009b58, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000},
1597 { 0x00009b5c, 0x00000000, 0x00000000, 0x000fb7cf, 0x000fb7cf, 0x00000000 }, 1598 {0x00009b5c, 0x00000000, 0x00000000, 0x000fb7cf, 0x000fb7cf, 0x00000000},
1598 { 0x00009b60, 0x00000000, 0x00000000, 0x000fb7d7, 0x000fb7d7, 0x00000000 }, 1599 {0x00009b60, 0x00000000, 0x00000000, 0x000fb7d7, 0x000fb7d7, 0x00000000},
1599 { 0x00009b64, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1600 {0x00009b64, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1600 { 0x00009b68, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1601 {0x00009b68, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1601 { 0x00009b6c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1602 {0x00009b6c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1602 { 0x00009b70, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1603 {0x00009b70, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1603 { 0x00009b74, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1604 {0x00009b74, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1604 { 0x00009b78, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1605 {0x00009b78, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1605 { 0x00009b7c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1606 {0x00009b7c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1606 { 0x00009b80, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1607 {0x00009b80, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1607 { 0x00009b84, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1608 {0x00009b84, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1608 { 0x00009b88, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1609 {0x00009b88, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1609 { 0x00009b8c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1610 {0x00009b8c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1610 { 0x00009b90, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1611 {0x00009b90, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1611 { 0x00009b94, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1612 {0x00009b94, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1612 { 0x00009b98, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1613 {0x00009b98, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1613 { 0x00009b9c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1614 {0x00009b9c, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1614 { 0x00009ba0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1615 {0x00009ba0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1615 { 0x00009ba4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1616 {0x00009ba4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1616 { 0x00009ba8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1617 {0x00009ba8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1617 { 0x00009bac, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1618 {0x00009bac, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1618 { 0x00009bb0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1619 {0x00009bb0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1619 { 0x00009bb4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1620 {0x00009bb4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1620 { 0x00009bb8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1621 {0x00009bb8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1621 { 0x00009bbc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1622 {0x00009bbc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1622 { 0x00009bc0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1623 {0x00009bc0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1623 { 0x00009bc4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1624 {0x00009bc4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1624 { 0x00009bc8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1625 {0x00009bc8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1625 { 0x00009bcc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1626 {0x00009bcc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1626 { 0x00009bd0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1627 {0x00009bd0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1627 { 0x00009bd4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1628 {0x00009bd4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1628 { 0x00009bd8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1629 {0x00009bd8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1629 { 0x00009bdc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1630 {0x00009bdc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1630 { 0x00009be0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1631 {0x00009be0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1631 { 0x00009be4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1632 {0x00009be4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1632 { 0x00009be8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1633 {0x00009be8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1633 { 0x00009bec, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1634 {0x00009bec, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1634 { 0x00009bf0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1635 {0x00009bf0, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1635 { 0x00009bf4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1636 {0x00009bf4, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1636 { 0x00009bf8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1637 {0x00009bf8, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1637 { 0x00009bfc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000 }, 1638 {0x00009bfc, 0x00000000, 0x00000000, 0x000fb7db, 0x000fb7db, 0x00000000},
1638 { 0x0000aa00, 0x00000000, 0x00000000, 0x0006801c, 0x0006801c, 0x00000000 }, 1639 {0x0000aa00, 0x00000000, 0x00000000, 0x0006801c, 0x0006801c, 0x00000000},
1639 { 0x0000aa04, 0x00000000, 0x00000000, 0x00068080, 0x00068080, 0x00000000 }, 1640 {0x0000aa04, 0x00000000, 0x00000000, 0x00068080, 0x00068080, 0x00000000},
1640 { 0x0000aa08, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000 }, 1641 {0x0000aa08, 0x00000000, 0x00000000, 0x00068084, 0x00068084, 0x00000000},
1641 { 0x0000aa0c, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000 }, 1642 {0x0000aa0c, 0x00000000, 0x00000000, 0x00068088, 0x00068088, 0x00000000},
1642 { 0x0000aa10, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000 }, 1643 {0x0000aa10, 0x00000000, 0x00000000, 0x0006808c, 0x0006808c, 0x00000000},
1643 { 0x0000aa14, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000 }, 1644 {0x0000aa14, 0x00000000, 0x00000000, 0x00068100, 0x00068100, 0x00000000},
1644 { 0x0000aa18, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000 }, 1645 {0x0000aa18, 0x00000000, 0x00000000, 0x00068104, 0x00068104, 0x00000000},
1645 { 0x0000aa1c, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000 }, 1646 {0x0000aa1c, 0x00000000, 0x00000000, 0x00068108, 0x00068108, 0x00000000},
1646 { 0x0000aa20, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000 }, 1647 {0x0000aa20, 0x00000000, 0x00000000, 0x0006810c, 0x0006810c, 0x00000000},
1647 { 0x0000aa24, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, 1648 {0x0000aa24, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000},
1648 { 0x0000aa28, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000 }, 1649 {0x0000aa28, 0x00000000, 0x00000000, 0x00068110, 0x00068110, 0x00000000},
1649 { 0x0000aa2c, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000 }, 1650 {0x0000aa2c, 0x00000000, 0x00000000, 0x00068180, 0x00068180, 0x00000000},
1650 { 0x0000aa30, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000 }, 1651 {0x0000aa30, 0x00000000, 0x00000000, 0x00068184, 0x00068184, 0x00000000},
1651 { 0x0000aa34, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000 }, 1652 {0x0000aa34, 0x00000000, 0x00000000, 0x00068188, 0x00068188, 0x00000000},
1652 { 0x0000aa38, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000 }, 1653 {0x0000aa38, 0x00000000, 0x00000000, 0x0006818c, 0x0006818c, 0x00000000},
1653 { 0x0000aa3c, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000 }, 1654 {0x0000aa3c, 0x00000000, 0x00000000, 0x00068190, 0x00068190, 0x00000000},
1654 { 0x0000aa40, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000 }, 1655 {0x0000aa40, 0x00000000, 0x00000000, 0x00068194, 0x00068194, 0x00000000},
1655 { 0x0000aa44, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000 }, 1656 {0x0000aa44, 0x00000000, 0x00000000, 0x000681a0, 0x000681a0, 0x00000000},
1656 { 0x0000aa48, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000 }, 1657 {0x0000aa48, 0x00000000, 0x00000000, 0x0006820c, 0x0006820c, 0x00000000},
1657 { 0x0000aa4c, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000 }, 1658 {0x0000aa4c, 0x00000000, 0x00000000, 0x000681a8, 0x000681a8, 0x00000000},
1658 { 0x0000aa50, 0x00000000, 0x00000000, 0x000681ac, 0x000681ac, 0x00000000 }, 1659 {0x0000aa50, 0x00000000, 0x00000000, 0x000681ac, 0x000681ac, 0x00000000},
1659 { 0x0000aa54, 0x00000000, 0x00000000, 0x0006821c, 0x0006821c, 0x00000000 }, 1660 {0x0000aa54, 0x00000000, 0x00000000, 0x0006821c, 0x0006821c, 0x00000000},
1660 { 0x0000aa58, 0x00000000, 0x00000000, 0x00068224, 0x00068224, 0x00000000 }, 1661 {0x0000aa58, 0x00000000, 0x00000000, 0x00068224, 0x00068224, 0x00000000},
1661 { 0x0000aa5c, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000 }, 1662 {0x0000aa5c, 0x00000000, 0x00000000, 0x00068290, 0x00068290, 0x00000000},
1662 { 0x0000aa60, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000 }, 1663 {0x0000aa60, 0x00000000, 0x00000000, 0x00068300, 0x00068300, 0x00000000},
1663 { 0x0000aa64, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000 }, 1664 {0x0000aa64, 0x00000000, 0x00000000, 0x00068308, 0x00068308, 0x00000000},
1664 { 0x0000aa68, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000 }, 1665 {0x0000aa68, 0x00000000, 0x00000000, 0x0006830c, 0x0006830c, 0x00000000},
1665 { 0x0000aa6c, 0x00000000, 0x00000000, 0x00068310, 0x00068310, 0x00000000 }, 1666 {0x0000aa6c, 0x00000000, 0x00000000, 0x00068310, 0x00068310, 0x00000000},
1666 { 0x0000aa70, 0x00000000, 0x00000000, 0x00068788, 0x00068788, 0x00000000 }, 1667 {0x0000aa70, 0x00000000, 0x00000000, 0x00068788, 0x00068788, 0x00000000},
1667 { 0x0000aa74, 0x00000000, 0x00000000, 0x0006878c, 0x0006878c, 0x00000000 }, 1668 {0x0000aa74, 0x00000000, 0x00000000, 0x0006878c, 0x0006878c, 0x00000000},
1668 { 0x0000aa78, 0x00000000, 0x00000000, 0x00068790, 0x00068790, 0x00000000 }, 1669 {0x0000aa78, 0x00000000, 0x00000000, 0x00068790, 0x00068790, 0x00000000},
1669 { 0x0000aa7c, 0x00000000, 0x00000000, 0x00068794, 0x00068794, 0x00000000 }, 1670 {0x0000aa7c, 0x00000000, 0x00000000, 0x00068794, 0x00068794, 0x00000000},
1670 { 0x0000aa80, 0x00000000, 0x00000000, 0x00068798, 0x00068798, 0x00000000 }, 1671 {0x0000aa80, 0x00000000, 0x00000000, 0x00068798, 0x00068798, 0x00000000},
1671 { 0x0000aa84, 0x00000000, 0x00000000, 0x0006879c, 0x0006879c, 0x00000000 }, 1672 {0x0000aa84, 0x00000000, 0x00000000, 0x0006879c, 0x0006879c, 0x00000000},
1672 { 0x0000aa88, 0x00000000, 0x00000000, 0x00068b89, 0x00068b89, 0x00000000 }, 1673 {0x0000aa88, 0x00000000, 0x00000000, 0x00068b89, 0x00068b89, 0x00000000},
1673 { 0x0000aa8c, 0x00000000, 0x00000000, 0x00068b8d, 0x00068b8d, 0x00000000 }, 1674 {0x0000aa8c, 0x00000000, 0x00000000, 0x00068b8d, 0x00068b8d, 0x00000000},
1674 { 0x0000aa90, 0x00000000, 0x00000000, 0x00068b91, 0x00068b91, 0x00000000 }, 1675 {0x0000aa90, 0x00000000, 0x00000000, 0x00068b91, 0x00068b91, 0x00000000},
1675 { 0x0000aa94, 0x00000000, 0x00000000, 0x00068b95, 0x00068b95, 0x00000000 }, 1676 {0x0000aa94, 0x00000000, 0x00000000, 0x00068b95, 0x00068b95, 0x00000000},
1676 { 0x0000aa98, 0x00000000, 0x00000000, 0x00068b99, 0x00068b99, 0x00000000 }, 1677 {0x0000aa98, 0x00000000, 0x00000000, 0x00068b99, 0x00068b99, 0x00000000},
1677 { 0x0000aa9c, 0x00000000, 0x00000000, 0x00068ba5, 0x00068ba5, 0x00000000 }, 1678 {0x0000aa9c, 0x00000000, 0x00000000, 0x00068ba5, 0x00068ba5, 0x00000000},
1678 { 0x0000aaa0, 0x00000000, 0x00000000, 0x00068ba9, 0x00068ba9, 0x00000000 }, 1679 {0x0000aaa0, 0x00000000, 0x00000000, 0x00068ba9, 0x00068ba9, 0x00000000},
1679 { 0x0000aaa4, 0x00000000, 0x00000000, 0x00068bad, 0x00068bad, 0x00000000 }, 1680 {0x0000aaa4, 0x00000000, 0x00000000, 0x00068bad, 0x00068bad, 0x00000000},
1680 { 0x0000aaa8, 0x00000000, 0x00000000, 0x000b8b0c, 0x000b8b0c, 0x00000000 }, 1681 {0x0000aaa8, 0x00000000, 0x00000000, 0x000b8b0c, 0x000b8b0c, 0x00000000},
1681 { 0x0000aaac, 0x00000000, 0x00000000, 0x000b8f10, 0x000b8f10, 0x00000000 }, 1682 {0x0000aaac, 0x00000000, 0x00000000, 0x000b8f10, 0x000b8f10, 0x00000000},
1682 { 0x0000aab0, 0x00000000, 0x00000000, 0x000b8f14, 0x000b8f14, 0x00000000 }, 1683 {0x0000aab0, 0x00000000, 0x00000000, 0x000b8f14, 0x000b8f14, 0x00000000},
1683 { 0x0000aab4, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, 1684 {0x0000aab4, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000},
1684 { 0x0000aab8, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000 }, 1685 {0x0000aab8, 0x00000000, 0x00000000, 0x000b8f84, 0x000b8f84, 0x00000000},
1685 { 0x0000aabc, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000 }, 1686 {0x0000aabc, 0x00000000, 0x00000000, 0x000b8f88, 0x000b8f88, 0x00000000},
1686 { 0x0000aac0, 0x00000000, 0x00000000, 0x000bb380, 0x000bb380, 0x00000000 }, 1687 {0x0000aac0, 0x00000000, 0x00000000, 0x000bb380, 0x000bb380, 0x00000000},
1687 { 0x0000aac4, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000 }, 1688 {0x0000aac4, 0x00000000, 0x00000000, 0x000bb384, 0x000bb384, 0x00000000},
1688 { 0x0000aac8, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000 }, 1689 {0x0000aac8, 0x00000000, 0x00000000, 0x000bb388, 0x000bb388, 0x00000000},
1689 { 0x0000aacc, 0x00000000, 0x00000000, 0x000bb38c, 0x000bb38c, 0x00000000 }, 1690 {0x0000aacc, 0x00000000, 0x00000000, 0x000bb38c, 0x000bb38c, 0x00000000},
1690 { 0x0000aad0, 0x00000000, 0x00000000, 0x000bb394, 0x000bb394, 0x00000000 }, 1691 {0x0000aad0, 0x00000000, 0x00000000, 0x000bb394, 0x000bb394, 0x00000000},
1691 { 0x0000aad4, 0x00000000, 0x00000000, 0x000bb798, 0x000bb798, 0x00000000 }, 1692 {0x0000aad4, 0x00000000, 0x00000000, 0x000bb798, 0x000bb798, 0x00000000},
1692 { 0x0000aad8, 0x00000000, 0x00000000, 0x000f970c, 0x000f970c, 0x00000000 }, 1693 {0x0000aad8, 0x00000000, 0x00000000, 0x000f970c, 0x000f970c, 0x00000000},
1693 { 0x0000aadc, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000 }, 1694 {0x0000aadc, 0x00000000, 0x00000000, 0x000f9710, 0x000f9710, 0x00000000},
1694 { 0x0000aae0, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000 }, 1695 {0x0000aae0, 0x00000000, 0x00000000, 0x000f9714, 0x000f9714, 0x00000000},
1695 { 0x0000aae4, 0x00000000, 0x00000000, 0x000f9718, 0x000f9718, 0x00000000 }, 1696 {0x0000aae4, 0x00000000, 0x00000000, 0x000f9718, 0x000f9718, 0x00000000},
1696 { 0x0000aae8, 0x00000000, 0x00000000, 0x000f9705, 0x000f9705, 0x00000000 }, 1697 {0x0000aae8, 0x00000000, 0x00000000, 0x000f9705, 0x000f9705, 0x00000000},
1697 { 0x0000aaec, 0x00000000, 0x00000000, 0x000f9709, 0x000f9709, 0x00000000 }, 1698 {0x0000aaec, 0x00000000, 0x00000000, 0x000f9709, 0x000f9709, 0x00000000},
1698 { 0x0000aaf0, 0x00000000, 0x00000000, 0x000f970d, 0x000f970d, 0x00000000 }, 1699 {0x0000aaf0, 0x00000000, 0x00000000, 0x000f970d, 0x000f970d, 0x00000000},
1699 { 0x0000aaf4, 0x00000000, 0x00000000, 0x000f9711, 0x000f9711, 0x00000000 }, 1700 {0x0000aaf4, 0x00000000, 0x00000000, 0x000f9711, 0x000f9711, 0x00000000},
1700 { 0x0000aaf8, 0x00000000, 0x00000000, 0x000f9715, 0x000f9715, 0x00000000 }, 1701 {0x0000aaf8, 0x00000000, 0x00000000, 0x000f9715, 0x000f9715, 0x00000000},
1701 { 0x0000aafc, 0x00000000, 0x00000000, 0x000f9719, 0x000f9719, 0x00000000 }, 1702 {0x0000aafc, 0x00000000, 0x00000000, 0x000f9719, 0x000f9719, 0x00000000},
1702 { 0x0000ab00, 0x00000000, 0x00000000, 0x000fb7a4, 0x000fb7a4, 0x00000000 }, 1703 {0x0000ab00, 0x00000000, 0x00000000, 0x000fb7a4, 0x000fb7a4, 0x00000000},
1703 { 0x0000ab04, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000 }, 1704 {0x0000ab04, 0x00000000, 0x00000000, 0x000fb7a8, 0x000fb7a8, 0x00000000},
1704 { 0x0000ab08, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000 }, 1705 {0x0000ab08, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000},
1705 { 0x0000ab0c, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000 }, 1706 {0x0000ab0c, 0x00000000, 0x00000000, 0x000fb7ac, 0x000fb7ac, 0x00000000},
1706 { 0x0000ab10, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000 }, 1707 {0x0000ab10, 0x00000000, 0x00000000, 0x000fb7b0, 0x000fb7b0, 0x00000000},
1707 { 0x0000ab14, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000 }, 1708 {0x0000ab14, 0x00000000, 0x00000000, 0x000fb7b8, 0x000fb7b8, 0x00000000},
1708 { 0x0000ab18, 0x00000000, 0x00000000, 0x000fb7bc, 0x000fb7bc, 0x00000000 }, 1709 {0x0000ab18, 0x00000000, 0x00000000, 0x000fb7bc, 0x000fb7bc, 0x00000000},
1709 { 0x0000ab1c, 0x00000000, 0x00000000, 0x000fb7a1, 0x000fb7a1, 0x00000000 }, 1710 {0x0000ab1c, 0x00000000, 0x00000000, 0x000fb7a1, 0x000fb7a1, 0x00000000},
1710 { 0x0000ab20, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000 }, 1711 {0x0000ab20, 0x00000000, 0x00000000, 0x000fb7a5, 0x000fb7a5, 0x00000000},
1711 { 0x0000ab24, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000 }, 1712 {0x0000ab24, 0x00000000, 0x00000000, 0x000fb7a9, 0x000fb7a9, 0x00000000},
1712 { 0x0000ab28, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000 }, 1713 {0x0000ab28, 0x00000000, 0x00000000, 0x000fb7b1, 0x000fb7b1, 0x00000000},
1713 { 0x0000ab2c, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000 }, 1714 {0x0000ab2c, 0x00000000, 0x00000000, 0x000fb7b5, 0x000fb7b5, 0x00000000},
1714 { 0x0000ab30, 0x00000000, 0x00000000, 0x000fb7bd, 0x000fb7bd, 0x00000000 }, 1715 {0x0000ab30, 0x00000000, 0x00000000, 0x000fb7bd, 0x000fb7bd, 0x00000000},
1715 { 0x0000ab34, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000 }, 1716 {0x0000ab34, 0x00000000, 0x00000000, 0x000fb7c9, 0x000fb7c9, 0x00000000},
1716 { 0x0000ab38, 0x00000000, 0x00000000, 0x000fb7cd, 0x000fb7cd, 0x00000000 }, 1717 {0x0000ab38, 0x00000000, 0x00000000, 0x000fb7cd, 0x000fb7cd, 0x00000000},
1717 { 0x0000ab3c, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000 }, 1718 {0x0000ab3c, 0x00000000, 0x00000000, 0x000fb7d1, 0x000fb7d1, 0x00000000},
1718 { 0x0000ab40, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000 }, 1719 {0x0000ab40, 0x00000000, 0x00000000, 0x000fb7d9, 0x000fb7d9, 0x00000000},
1719 { 0x0000ab44, 0x00000000, 0x00000000, 0x000fb7c2, 0x000fb7c2, 0x00000000 }, 1720 {0x0000ab44, 0x00000000, 0x00000000, 0x000fb7c2, 0x000fb7c2, 0x00000000},
1720 { 0x0000ab48, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000 }, 1721 {0x0000ab48, 0x00000000, 0x00000000, 0x000fb7c6, 0x000fb7c6, 0x00000000},
1721 { 0x0000ab4c, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000 }, 1722 {0x0000ab4c, 0x00000000, 0x00000000, 0x000fb7ca, 0x000fb7ca, 0x00000000},
1722 { 0x0000ab50, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000 }, 1723 {0x0000ab50, 0x00000000, 0x00000000, 0x000fb7ce, 0x000fb7ce, 0x00000000},
1723 { 0x0000ab54, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000 }, 1724 {0x0000ab54, 0x00000000, 0x00000000, 0x000fb7d2, 0x000fb7d2, 0x00000000},
1724 { 0x0000ab58, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000 }, 1725 {0x0000ab58, 0x00000000, 0x00000000, 0x000fb7d6, 0x000fb7d6, 0x00000000},
1725 { 0x0000ab5c, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000 }, 1726 {0x0000ab5c, 0x00000000, 0x00000000, 0x000fb7c3, 0x000fb7c3, 0x00000000},
1726 { 0x0000ab60, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000 }, 1727 {0x0000ab60, 0x00000000, 0x00000000, 0x000fb7cb, 0x000fb7cb, 0x00000000},
1727 { 0x0000ab64, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1728 {0x0000ab64, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1728 { 0x0000ab68, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1729 {0x0000ab68, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1729 { 0x0000ab6c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1730 {0x0000ab6c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1730 { 0x0000ab70, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1731 {0x0000ab70, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1731 { 0x0000ab74, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1732 {0x0000ab74, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1732 { 0x0000ab78, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1733 {0x0000ab78, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1733 { 0x0000ab7c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1734 {0x0000ab7c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1734 { 0x0000ab80, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1735 {0x0000ab80, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1735 { 0x0000ab84, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1736 {0x0000ab84, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1736 { 0x0000ab88, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1737 {0x0000ab88, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1737 { 0x0000ab8c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1738 {0x0000ab8c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1738 { 0x0000ab90, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1739 {0x0000ab90, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1739 { 0x0000ab94, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1740 {0x0000ab94, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1740 { 0x0000ab98, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1741 {0x0000ab98, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1741 { 0x0000ab9c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1742 {0x0000ab9c, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1742 { 0x0000aba0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1743 {0x0000aba0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1743 { 0x0000aba4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1744 {0x0000aba4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1744 { 0x0000aba8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1745 {0x0000aba8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1745 { 0x0000abac, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1746 {0x0000abac, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1746 { 0x0000abb0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1747 {0x0000abb0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1747 { 0x0000abb4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1748 {0x0000abb4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1748 { 0x0000abb8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1749 {0x0000abb8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1749 { 0x0000abbc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1750 {0x0000abbc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1750 { 0x0000abc0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1751 {0x0000abc0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1751 { 0x0000abc4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1752 {0x0000abc4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1752 { 0x0000abc8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1753 {0x0000abc8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1753 { 0x0000abcc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1754 {0x0000abcc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1754 { 0x0000abd0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1755 {0x0000abd0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1755 { 0x0000abd4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1756 {0x0000abd4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1756 { 0x0000abd8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1757 {0x0000abd8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1757 { 0x0000abdc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1758 {0x0000abdc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1758 { 0x0000abe0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1759 {0x0000abe0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1759 { 0x0000abe4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1760 {0x0000abe4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1760 { 0x0000abe8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1761 {0x0000abe8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1761 { 0x0000abec, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1762 {0x0000abec, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1762 { 0x0000abf0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1763 {0x0000abf0, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1763 { 0x0000abf4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1764 {0x0000abf4, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1764 { 0x0000abf8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1765 {0x0000abf8, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1765 { 0x0000abfc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000 }, 1766 {0x0000abfc, 0x00000000, 0x00000000, 0x000fb7d3, 0x000fb7d3, 0x00000000},
1766 { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, 1767 {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004},
1767 { 0x0000a20c, 0x00000014, 0x00000014, 0x00000000, 0x00000000, 0x0001f000 }, 1768 {0x0000a20c, 0x00000014, 0x00000014, 0x00000000, 0x00000000, 0x0001f000},
1768 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, 1769 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
1769 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 1770 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
1770 { 0x0000a250, 0x001ff000, 0x001ff000, 0x001ca000, 0x001ca000, 0x001da000 }, 1771 {0x0000a250, 0x001ff000, 0x001ff000, 0x001ca000, 0x001ca000, 0x001da000},
1771 { 0x0000a274, 0x0a81c652, 0x0a81c652, 0x0a820652, 0x0a820652, 0x0a82a652 }, 1772 {0x0000a274, 0x0a81c652, 0x0a81c652, 0x0a820652, 0x0a820652, 0x0a82a652},
1772 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 1773 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1773 { 0x0000a304, 0x00000000, 0x00000000, 0x00007201, 0x00007201, 0x00000000 }, 1774 {0x0000a304, 0x00000000, 0x00000000, 0x00007201, 0x00007201, 0x00000000},
1774 { 0x0000a308, 0x00000000, 0x00000000, 0x00010408, 0x00010408, 0x00000000 }, 1775 {0x0000a308, 0x00000000, 0x00000000, 0x00010408, 0x00010408, 0x00000000},
1775 { 0x0000a30c, 0x00000000, 0x00000000, 0x0001860a, 0x0001860a, 0x00000000 }, 1776 {0x0000a30c, 0x00000000, 0x00000000, 0x0001860a, 0x0001860a, 0x00000000},
1776 { 0x0000a310, 0x00000000, 0x00000000, 0x00020818, 0x00020818, 0x00000000 }, 1777 {0x0000a310, 0x00000000, 0x00000000, 0x00020818, 0x00020818, 0x00000000},
1777 { 0x0000a314, 0x00000000, 0x00000000, 0x00024858, 0x00024858, 0x00000000 }, 1778 {0x0000a314, 0x00000000, 0x00000000, 0x00024858, 0x00024858, 0x00000000},
1778 { 0x0000a318, 0x00000000, 0x00000000, 0x00026859, 0x00026859, 0x00000000 }, 1779 {0x0000a318, 0x00000000, 0x00000000, 0x00026859, 0x00026859, 0x00000000},
1779 { 0x0000a31c, 0x00000000, 0x00000000, 0x0002985b, 0x0002985b, 0x00000000 }, 1780 {0x0000a31c, 0x00000000, 0x00000000, 0x0002985b, 0x0002985b, 0x00000000},
1780 { 0x0000a320, 0x00000000, 0x00000000, 0x0002c89a, 0x0002c89a, 0x00000000 }, 1781 {0x0000a320, 0x00000000, 0x00000000, 0x0002c89a, 0x0002c89a, 0x00000000},
1781 { 0x0000a324, 0x00000000, 0x00000000, 0x0002e89b, 0x0002e89b, 0x00000000 }, 1782 {0x0000a324, 0x00000000, 0x00000000, 0x0002e89b, 0x0002e89b, 0x00000000},
1782 { 0x0000a328, 0x00000000, 0x00000000, 0x0003089c, 0x0003089c, 0x00000000 }, 1783 {0x0000a328, 0x00000000, 0x00000000, 0x0003089c, 0x0003089c, 0x00000000},
1783 { 0x0000a32c, 0x00000000, 0x00000000, 0x0003289d, 0x0003289d, 0x00000000 }, 1784 {0x0000a32c, 0x00000000, 0x00000000, 0x0003289d, 0x0003289d, 0x00000000},
1784 { 0x0000a330, 0x00000000, 0x00000000, 0x0003489e, 0x0003489e, 0x00000000 }, 1785 {0x0000a330, 0x00000000, 0x00000000, 0x0003489e, 0x0003489e, 0x00000000},
1785 { 0x0000a334, 0x00000000, 0x00000000, 0x000388de, 0x000388de, 0x00000000 }, 1786 {0x0000a334, 0x00000000, 0x00000000, 0x000388de, 0x000388de, 0x00000000},
1786 { 0x0000a338, 0x00000000, 0x00000000, 0x0003b91e, 0x0003b91e, 0x00000000 }, 1787 {0x0000a338, 0x00000000, 0x00000000, 0x0003b91e, 0x0003b91e, 0x00000000},
1787 { 0x0000a33c, 0x00000000, 0x00000000, 0x0003d95e, 0x0003d95e, 0x00000000 }, 1788 {0x0000a33c, 0x00000000, 0x00000000, 0x0003d95e, 0x0003d95e, 0x00000000},
1788 { 0x0000a340, 0x00000000, 0x00000000, 0x000419df, 0x000419df, 0x00000000 }, 1789 {0x0000a340, 0x00000000, 0x00000000, 0x000419df, 0x000419df, 0x00000000},
1789 { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 1790 {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
1790 { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, 1791 {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e},
1791}; 1792};
1792 1793
1793static const u32 ar9285Common_9285[][2] = { 1794static const u32 ar9285Common_9285[][2] = {
1794 { 0x0000000c, 0x00000000 }, 1795 /* Addr allmodes */
1795 { 0x00000030, 0x00020045 }, 1796 {0x0000000c, 0x00000000},
1796 { 0x00000034, 0x00000005 }, 1797 {0x00000030, 0x00020045},
1797 { 0x00000040, 0x00000000 }, 1798 {0x00000034, 0x00000005},
1798 { 0x00000044, 0x00000008 }, 1799 {0x00000040, 0x00000000},
1799 { 0x00000048, 0x00000008 }, 1800 {0x00000044, 0x00000008},
1800 { 0x0000004c, 0x00000010 }, 1801 {0x00000048, 0x00000008},
1801 { 0x00000050, 0x00000000 }, 1802 {0x0000004c, 0x00000010},
1802 { 0x00000054, 0x0000001f }, 1803 {0x00000050, 0x00000000},
1803 { 0x00000800, 0x00000000 }, 1804 {0x00000054, 0x0000001f},
1804 { 0x00000804, 0x00000000 }, 1805 {0x00000800, 0x00000000},
1805 { 0x00000808, 0x00000000 }, 1806 {0x00000804, 0x00000000},
1806 { 0x0000080c, 0x00000000 }, 1807 {0x00000808, 0x00000000},
1807 { 0x00000810, 0x00000000 }, 1808 {0x0000080c, 0x00000000},
1808 { 0x00000814, 0x00000000 }, 1809 {0x00000810, 0x00000000},
1809 { 0x00000818, 0x00000000 }, 1810 {0x00000814, 0x00000000},
1810 { 0x0000081c, 0x00000000 }, 1811 {0x00000818, 0x00000000},
1811 { 0x00000820, 0x00000000 }, 1812 {0x0000081c, 0x00000000},
1812 { 0x00000824, 0x00000000 }, 1813 {0x00000820, 0x00000000},
1813 { 0x00001040, 0x002ffc0f }, 1814 {0x00000824, 0x00000000},
1814 { 0x00001044, 0x002ffc0f }, 1815 {0x00001040, 0x002ffc0f},
1815 { 0x00001048, 0x002ffc0f }, 1816 {0x00001044, 0x002ffc0f},
1816 { 0x0000104c, 0x002ffc0f }, 1817 {0x00001048, 0x002ffc0f},
1817 { 0x00001050, 0x002ffc0f }, 1818 {0x0000104c, 0x002ffc0f},
1818 { 0x00001054, 0x002ffc0f }, 1819 {0x00001050, 0x002ffc0f},
1819 { 0x00001058, 0x002ffc0f }, 1820 {0x00001054, 0x002ffc0f},
1820 { 0x0000105c, 0x002ffc0f }, 1821 {0x00001058, 0x002ffc0f},
1821 { 0x00001060, 0x002ffc0f }, 1822 {0x0000105c, 0x002ffc0f},
1822 { 0x00001064, 0x002ffc0f }, 1823 {0x00001060, 0x002ffc0f},
1823 { 0x00001230, 0x00000000 }, 1824 {0x00001064, 0x002ffc0f},
1824 { 0x00001270, 0x00000000 }, 1825 {0x00001230, 0x00000000},
1825 { 0x00001038, 0x00000000 }, 1826 {0x00001270, 0x00000000},
1826 { 0x00001078, 0x00000000 }, 1827 {0x00001038, 0x00000000},
1827 { 0x000010b8, 0x00000000 }, 1828 {0x00001078, 0x00000000},
1828 { 0x000010f8, 0x00000000 }, 1829 {0x000010b8, 0x00000000},
1829 { 0x00001138, 0x00000000 }, 1830 {0x000010f8, 0x00000000},
1830 { 0x00001178, 0x00000000 }, 1831 {0x00001138, 0x00000000},
1831 { 0x000011b8, 0x00000000 }, 1832 {0x00001178, 0x00000000},
1832 { 0x000011f8, 0x00000000 }, 1833 {0x000011b8, 0x00000000},
1833 { 0x00001238, 0x00000000 }, 1834 {0x000011f8, 0x00000000},
1834 { 0x00001278, 0x00000000 }, 1835 {0x00001238, 0x00000000},
1835 { 0x000012b8, 0x00000000 }, 1836 {0x00001278, 0x00000000},
1836 { 0x000012f8, 0x00000000 }, 1837 {0x000012b8, 0x00000000},
1837 { 0x00001338, 0x00000000 }, 1838 {0x000012f8, 0x00000000},
1838 { 0x00001378, 0x00000000 }, 1839 {0x00001338, 0x00000000},
1839 { 0x000013b8, 0x00000000 }, 1840 {0x00001378, 0x00000000},
1840 { 0x000013f8, 0x00000000 }, 1841 {0x000013b8, 0x00000000},
1841 { 0x00001438, 0x00000000 }, 1842 {0x000013f8, 0x00000000},
1842 { 0x00001478, 0x00000000 }, 1843 {0x00001438, 0x00000000},
1843 { 0x000014b8, 0x00000000 }, 1844 {0x00001478, 0x00000000},
1844 { 0x000014f8, 0x00000000 }, 1845 {0x000014b8, 0x00000000},
1845 { 0x00001538, 0x00000000 }, 1846 {0x000014f8, 0x00000000},
1846 { 0x00001578, 0x00000000 }, 1847 {0x00001538, 0x00000000},
1847 { 0x000015b8, 0x00000000 }, 1848 {0x00001578, 0x00000000},
1848 { 0x000015f8, 0x00000000 }, 1849 {0x000015b8, 0x00000000},
1849 { 0x00001638, 0x00000000 }, 1850 {0x000015f8, 0x00000000},
1850 { 0x00001678, 0x00000000 }, 1851 {0x00001638, 0x00000000},
1851 { 0x000016b8, 0x00000000 }, 1852 {0x00001678, 0x00000000},
1852 { 0x000016f8, 0x00000000 }, 1853 {0x000016b8, 0x00000000},
1853 { 0x00001738, 0x00000000 }, 1854 {0x000016f8, 0x00000000},
1854 { 0x00001778, 0x00000000 }, 1855 {0x00001738, 0x00000000},
1855 { 0x000017b8, 0x00000000 }, 1856 {0x00001778, 0x00000000},
1856 { 0x000017f8, 0x00000000 }, 1857 {0x000017b8, 0x00000000},
1857 { 0x0000103c, 0x00000000 }, 1858 {0x000017f8, 0x00000000},
1858 { 0x0000107c, 0x00000000 }, 1859 {0x0000103c, 0x00000000},
1859 { 0x000010bc, 0x00000000 }, 1860 {0x0000107c, 0x00000000},
1860 { 0x000010fc, 0x00000000 }, 1861 {0x000010bc, 0x00000000},
1861 { 0x0000113c, 0x00000000 }, 1862 {0x000010fc, 0x00000000},
1862 { 0x0000117c, 0x00000000 }, 1863 {0x0000113c, 0x00000000},
1863 { 0x000011bc, 0x00000000 }, 1864 {0x0000117c, 0x00000000},
1864 { 0x000011fc, 0x00000000 }, 1865 {0x000011bc, 0x00000000},
1865 { 0x0000123c, 0x00000000 }, 1866 {0x000011fc, 0x00000000},
1866 { 0x0000127c, 0x00000000 }, 1867 {0x0000123c, 0x00000000},
1867 { 0x000012bc, 0x00000000 }, 1868 {0x0000127c, 0x00000000},
1868 { 0x000012fc, 0x00000000 }, 1869 {0x000012bc, 0x00000000},
1869 { 0x0000133c, 0x00000000 }, 1870 {0x000012fc, 0x00000000},
1870 { 0x0000137c, 0x00000000 }, 1871 {0x0000133c, 0x00000000},
1871 { 0x000013bc, 0x00000000 }, 1872 {0x0000137c, 0x00000000},
1872 { 0x000013fc, 0x00000000 }, 1873 {0x000013bc, 0x00000000},
1873 { 0x0000143c, 0x00000000 }, 1874 {0x000013fc, 0x00000000},
1874 { 0x0000147c, 0x00000000 }, 1875 {0x0000143c, 0x00000000},
1875 { 0x00004030, 0x00000002 }, 1876 {0x0000147c, 0x00000000},
1876 { 0x0000403c, 0x00000002 }, 1877 {0x00004030, 0x00000002},
1877 { 0x00004024, 0x0000001f }, 1878 {0x0000403c, 0x00000002},
1878 { 0x00004060, 0x00000000 }, 1879 {0x00004024, 0x0000001f},
1879 { 0x00004064, 0x00000000 }, 1880 {0x00004060, 0x00000000},
1880 { 0x00007010, 0x00000031 }, 1881 {0x00004064, 0x00000000},
1881 { 0x00007034, 0x00000002 }, 1882 {0x00007010, 0x00000031},
1882 { 0x00007038, 0x000004c2 }, 1883 {0x00007034, 0x00000002},
1883 { 0x00008004, 0x00000000 }, 1884 {0x00007038, 0x000004c2},
1884 { 0x00008008, 0x00000000 }, 1885 {0x00008004, 0x00000000},
1885 { 0x0000800c, 0x00000000 }, 1886 {0x00008008, 0x00000000},
1886 { 0x00008018, 0x00000700 }, 1887 {0x0000800c, 0x00000000},
1887 { 0x00008020, 0x00000000 }, 1888 {0x00008018, 0x00000700},
1888 { 0x00008038, 0x00000000 }, 1889 {0x00008020, 0x00000000},
1889 { 0x0000803c, 0x00000000 }, 1890 {0x00008038, 0x00000000},
1890 { 0x00008048, 0x00000000 }, 1891 {0x0000803c, 0x00000000},
1891 { 0x00008054, 0x00000000 }, 1892 {0x00008048, 0x00000000},
1892 { 0x00008058, 0x00000000 }, 1893 {0x00008054, 0x00000000},
1893 { 0x0000805c, 0x000fc78f }, 1894 {0x00008058, 0x00000000},
1894 { 0x00008060, 0x0000000f }, 1895 {0x0000805c, 0x000fc78f},
1895 { 0x00008064, 0x00000000 }, 1896 {0x00008060, 0x0000000f},
1896 { 0x00008070, 0x00000000 }, 1897 {0x00008064, 0x00000000},
1897 { 0x000080c0, 0x2a80001a }, 1898 {0x00008070, 0x00000000},
1898 { 0x000080c4, 0x05dc01e0 }, 1899 {0x000080c0, 0x2a80001a},
1899 { 0x000080c8, 0x1f402710 }, 1900 {0x000080c4, 0x05dc01e0},
1900 { 0x000080cc, 0x01f40000 }, 1901 {0x000080c8, 0x1f402710},
1901 { 0x000080d0, 0x00001e00 }, 1902 {0x000080cc, 0x01f40000},
1902 { 0x000080d4, 0x00000000 }, 1903 {0x000080d0, 0x00001e00},
1903 { 0x000080d8, 0x00400000 }, 1904 {0x000080d4, 0x00000000},
1904 { 0x000080e0, 0xffffffff }, 1905 {0x000080d8, 0x00400000},
1905 { 0x000080e4, 0x0000ffff }, 1906 {0x000080e0, 0xffffffff},
1906 { 0x000080e8, 0x003f3f3f }, 1907 {0x000080e4, 0x0000ffff},
1907 { 0x000080ec, 0x00000000 }, 1908 {0x000080e8, 0x003f3f3f},
1908 { 0x000080f0, 0x00000000 }, 1909 {0x000080ec, 0x00000000},
1909 { 0x000080f4, 0x00000000 }, 1910 {0x000080f0, 0x00000000},
1910 { 0x000080f8, 0x00000000 }, 1911 {0x000080f4, 0x00000000},
1911 { 0x000080fc, 0x00020000 }, 1912 {0x000080f8, 0x00000000},
1912 { 0x00008100, 0x00020000 }, 1913 {0x000080fc, 0x00020000},
1913 { 0x00008104, 0x00000001 }, 1914 {0x00008100, 0x00020000},
1914 { 0x00008108, 0x00000052 }, 1915 {0x00008104, 0x00000001},
1915 { 0x0000810c, 0x00000000 }, 1916 {0x00008108, 0x00000052},
1916 { 0x00008110, 0x00000168 }, 1917 {0x0000810c, 0x00000000},
1917 { 0x00008118, 0x000100aa }, 1918 {0x00008110, 0x00000168},
1918 { 0x0000811c, 0x00003210 }, 1919 {0x00008118, 0x000100aa},
1919 { 0x00008120, 0x08f04800 }, 1920 {0x0000811c, 0x00003210},
1920 { 0x00008124, 0x00000000 }, 1921 {0x00008120, 0x08f04800},
1921 { 0x00008128, 0x00000000 }, 1922 {0x00008124, 0x00000000},
1922 { 0x0000812c, 0x00000000 }, 1923 {0x00008128, 0x00000000},
1923 { 0x00008130, 0x00000000 }, 1924 {0x0000812c, 0x00000000},
1924 { 0x00008134, 0x00000000 }, 1925 {0x00008130, 0x00000000},
1925 { 0x00008138, 0x00000000 }, 1926 {0x00008134, 0x00000000},
1926 { 0x0000813c, 0x00000000 }, 1927 {0x00008138, 0x00000000},
1927 { 0x00008144, 0x00000000 }, 1928 {0x0000813c, 0x00000000},
1928 { 0x00008168, 0x00000000 }, 1929 {0x00008144, 0x00000000},
1929 { 0x0000816c, 0x00000000 }, 1930 {0x00008168, 0x00000000},
1930 { 0x00008170, 0x32143320 }, 1931 {0x0000816c, 0x00000000},
1931 { 0x00008174, 0xfaa4fa50 }, 1932 {0x00008170, 0x32143320},
1932 { 0x00008178, 0x00000100 }, 1933 {0x00008174, 0xfaa4fa50},
1933 { 0x0000817c, 0x00000000 }, 1934 {0x00008178, 0x00000100},
1934 { 0x000081c0, 0x00000000 }, 1935 {0x0000817c, 0x00000000},
1935 { 0x000081d0, 0x00003210 }, 1936 {0x000081c0, 0x00000000},
1936 { 0x000081ec, 0x00000000 }, 1937 {0x000081d0, 0x00003210},
1937 { 0x000081f0, 0x00000000 }, 1938 {0x000081ec, 0x00000000},
1938 { 0x000081f4, 0x00000000 }, 1939 {0x000081f0, 0x00000000},
1939 { 0x000081f8, 0x00000000 }, 1940 {0x000081f4, 0x00000000},
1940 { 0x000081fc, 0x00000000 }, 1941 {0x000081f8, 0x00000000},
1941 { 0x00008200, 0x00000000 }, 1942 {0x000081fc, 0x00000000},
1942 { 0x00008204, 0x00000000 }, 1943 {0x00008200, 0x00000000},
1943 { 0x00008208, 0x00000000 }, 1944 {0x00008204, 0x00000000},
1944 { 0x0000820c, 0x00000000 }, 1945 {0x00008208, 0x00000000},
1945 { 0x00008210, 0x00000000 }, 1946 {0x0000820c, 0x00000000},
1946 { 0x00008214, 0x00000000 }, 1947 {0x00008210, 0x00000000},
1947 { 0x00008218, 0x00000000 }, 1948 {0x00008214, 0x00000000},
1948 { 0x0000821c, 0x00000000 }, 1949 {0x00008218, 0x00000000},
1949 { 0x00008220, 0x00000000 }, 1950 {0x0000821c, 0x00000000},
1950 { 0x00008224, 0x00000000 }, 1951 {0x00008220, 0x00000000},
1951 { 0x00008228, 0x00000000 }, 1952 {0x00008224, 0x00000000},
1952 { 0x0000822c, 0x00000000 }, 1953 {0x00008228, 0x00000000},
1953 { 0x00008230, 0x00000000 }, 1954 {0x0000822c, 0x00000000},
1954 { 0x00008234, 0x00000000 }, 1955 {0x00008230, 0x00000000},
1955 { 0x00008238, 0x00000000 }, 1956 {0x00008234, 0x00000000},
1956 { 0x0000823c, 0x00000000 }, 1957 {0x00008238, 0x00000000},
1957 { 0x00008240, 0x00100000 }, 1958 {0x0000823c, 0x00000000},
1958 { 0x00008244, 0x0010f400 }, 1959 {0x00008240, 0x00100000},
1959 { 0x00008248, 0x00000100 }, 1960 {0x00008244, 0x0010f400},
1960 { 0x0000824c, 0x0001e800 }, 1961 {0x00008248, 0x00000100},
1961 { 0x00008250, 0x00000000 }, 1962 {0x0000824c, 0x0001e800},
1962 { 0x00008254, 0x00000000 }, 1963 {0x00008250, 0x00000000},
1963 { 0x00008258, 0x00000000 }, 1964 {0x00008254, 0x00000000},
1964 { 0x0000825c, 0x400000ff }, 1965 {0x00008258, 0x00000000},
1965 { 0x00008260, 0x00080922 }, 1966 {0x0000825c, 0x400000ff},
1966 { 0x00008264, 0x88a00010 }, 1967 {0x00008260, 0x00080922},
1967 { 0x00008270, 0x00000000 }, 1968 {0x00008264, 0x88a00010},
1968 { 0x00008274, 0x40000000 }, 1969 {0x00008270, 0x00000000},
1969 { 0x00008278, 0x003e4180 }, 1970 {0x00008274, 0x40000000},
1970 { 0x0000827c, 0x00000000 }, 1971 {0x00008278, 0x003e4180},
1971 { 0x00008284, 0x0000002c }, 1972 {0x0000827c, 0x00000000},
1972 { 0x00008288, 0x0000002c }, 1973 {0x00008284, 0x0000002c},
1973 { 0x0000828c, 0x00000000 }, 1974 {0x00008288, 0x0000002c},
1974 { 0x00008294, 0x00000000 }, 1975 {0x0000828c, 0x00000000},
1975 { 0x00008298, 0x00000000 }, 1976 {0x00008294, 0x00000000},
1976 { 0x0000829c, 0x00000000 }, 1977 {0x00008298, 0x00000000},
1977 { 0x00008300, 0x00000040 }, 1978 {0x0000829c, 0x00000000},
1978 { 0x00008314, 0x00000000 }, 1979 {0x00008300, 0x00000040},
1979 { 0x00008328, 0x00000000 }, 1980 {0x00008314, 0x00000000},
1980 { 0x0000832c, 0x00000001 }, 1981 {0x00008328, 0x00000000},
1981 { 0x00008330, 0x00000302 }, 1982 {0x0000832c, 0x00000001},
1982 { 0x00008334, 0x00000e00 }, 1983 {0x00008330, 0x00000302},
1983 { 0x00008338, 0x00000000 }, 1984 {0x00008334, 0x00000e00},
1984 { 0x0000833c, 0x00000000 }, 1985 {0x00008338, 0x00000000},
1985 { 0x00008340, 0x00010380 }, 1986 {0x0000833c, 0x00000000},
1986 { 0x00008344, 0x00481043 }, 1987 {0x00008340, 0x00010380},
1987 { 0x00009808, 0x00000000 }, 1988 {0x00008344, 0x00481043},
1988 { 0x0000980c, 0xafe68e30 }, 1989 {0x00009808, 0x00000000},
1989 { 0x00009810, 0xfd14e000 }, 1990 {0x0000980c, 0xafe68e30},
1990 { 0x00009814, 0x9c0a9f6b }, 1991 {0x00009810, 0xfd14e000},
1991 { 0x0000981c, 0x00000000 }, 1992 {0x00009814, 0x9c0a9f6b},
1992 { 0x0000982c, 0x0000a000 }, 1993 {0x0000981c, 0x00000000},
1993 { 0x00009830, 0x00000000 }, 1994 {0x0000982c, 0x0000a000},
1994 { 0x0000983c, 0x00200400 }, 1995 {0x00009830, 0x00000000},
1995 { 0x0000984c, 0x0040233c }, 1996 {0x0000983c, 0x00200400},
1996 { 0x00009854, 0x00000044 }, 1997 {0x0000984c, 0x0040233c},
1997 { 0x00009900, 0x00000000 }, 1998 {0x00009854, 0x00000044},
1998 { 0x00009904, 0x00000000 }, 1999 {0x00009900, 0x00000000},
1999 { 0x00009908, 0x00000000 }, 2000 {0x00009904, 0x00000000},
2000 { 0x0000990c, 0x00000000 }, 2001 {0x00009908, 0x00000000},
2001 { 0x00009910, 0x01002310 }, 2002 {0x0000990c, 0x00000000},
2002 { 0x0000991c, 0x10000fff }, 2003 {0x00009910, 0x01002310},
2003 { 0x00009920, 0x04900000 }, 2004 {0x0000991c, 0x10000fff},
2004 { 0x00009928, 0x00000001 }, 2005 {0x00009920, 0x04900000},
2005 { 0x0000992c, 0x00000004 }, 2006 {0x00009928, 0x00000001},
2006 { 0x00009934, 0x1e1f2022 }, 2007 {0x0000992c, 0x00000004},
2007 { 0x00009938, 0x0a0b0c0d }, 2008 {0x00009934, 0x1e1f2022},
2008 { 0x0000993c, 0x00000000 }, 2009 {0x00009938, 0x0a0b0c0d},
2009 { 0x00009940, 0x14750604 }, 2010 {0x0000993c, 0x00000000},
2010 { 0x00009948, 0x9280c00a }, 2011 {0x00009940, 0x14750604},
2011 { 0x0000994c, 0x00020028 }, 2012 {0x00009948, 0x9280c00a},
2012 { 0x00009954, 0x5f3ca3de }, 2013 {0x0000994c, 0x00020028},
2013 { 0x00009958, 0x2108ecff }, 2014 {0x00009954, 0x5f3ca3de},
2014 { 0x00009968, 0x000003ce }, 2015 {0x00009958, 0x2108ecff},
2015 { 0x00009970, 0x1927b515 }, 2016 {0x00009968, 0x000003ce},
2016 { 0x00009974, 0x00000000 }, 2017 {0x00009970, 0x1927b515},
2017 { 0x00009978, 0x00000001 }, 2018 {0x00009974, 0x00000000},
2018 { 0x0000997c, 0x00000000 }, 2019 {0x00009978, 0x00000001},
2019 { 0x00009980, 0x00000000 }, 2020 {0x0000997c, 0x00000000},
2020 { 0x00009984, 0x00000000 }, 2021 {0x00009980, 0x00000000},
2021 { 0x00009988, 0x00000000 }, 2022 {0x00009984, 0x00000000},
2022 { 0x0000998c, 0x00000000 }, 2023 {0x00009988, 0x00000000},
2023 { 0x00009990, 0x00000000 }, 2024 {0x0000998c, 0x00000000},
2024 { 0x00009994, 0x00000000 }, 2025 {0x00009990, 0x00000000},
2025 { 0x00009998, 0x00000000 }, 2026 {0x00009994, 0x00000000},
2026 { 0x0000999c, 0x00000000 }, 2027 {0x00009998, 0x00000000},
2027 { 0x000099a0, 0x00000000 }, 2028 {0x0000999c, 0x00000000},
2028 { 0x000099a4, 0x00000001 }, 2029 {0x000099a0, 0x00000000},
2029 { 0x000099a8, 0x201fff00 }, 2030 {0x000099a4, 0x00000001},
2030 { 0x000099ac, 0x2def0a00 }, 2031 {0x000099a8, 0x201fff00},
2031 { 0x000099b0, 0x03051000 }, 2032 {0x000099ac, 0x2def0a00},
2032 { 0x000099b4, 0x00000820 }, 2033 {0x000099b0, 0x03051000},
2033 { 0x000099dc, 0x00000000 }, 2034 {0x000099b4, 0x00000820},
2034 { 0x000099e0, 0x00000000 }, 2035 {0x000099dc, 0x00000000},
2035 { 0x000099e4, 0xaaaaaaaa }, 2036 {0x000099e0, 0x00000000},
2036 { 0x000099e8, 0x3c466478 }, 2037 {0x000099e4, 0xaaaaaaaa},
2037 { 0x000099ec, 0x0cc80caa }, 2038 {0x000099e8, 0x3c466478},
2038 { 0x000099f0, 0x00000000 }, 2039 {0x000099ec, 0x0cc80caa},
2039 { 0x0000a208, 0x803e6788 }, 2040 {0x000099f0, 0x00000000},
2040 { 0x0000a210, 0x4080a333 }, 2041 {0x0000a208, 0x803e6788},
2041 { 0x0000a214, 0x00206c10 }, 2042 {0x0000a210, 0x4080a333},
2042 { 0x0000a218, 0x009c4060 }, 2043 {0x0000a214, 0x00206c10},
2043 { 0x0000a220, 0x01834061 }, 2044 {0x0000a218, 0x009c4060},
2044 { 0x0000a224, 0x00000400 }, 2045 {0x0000a220, 0x01834061},
2045 { 0x0000a228, 0x000003b5 }, 2046 {0x0000a224, 0x00000400},
2046 { 0x0000a22c, 0x00000000 }, 2047 {0x0000a228, 0x000003b5},
2047 { 0x0000a234, 0x20202020 }, 2048 {0x0000a22c, 0x00000000},
2048 { 0x0000a238, 0x20202020 }, 2049 {0x0000a234, 0x20202020},
2049 { 0x0000a244, 0x00000000 }, 2050 {0x0000a238, 0x20202020},
2050 { 0x0000a248, 0xfffffffc }, 2051 {0x0000a244, 0x00000000},
2051 { 0x0000a24c, 0x00000000 }, 2052 {0x0000a248, 0xfffffffc},
2052 { 0x0000a254, 0x00000000 }, 2053 {0x0000a24c, 0x00000000},
2053 { 0x0000a258, 0x0ccb5380 }, 2054 {0x0000a254, 0x00000000},
2054 { 0x0000a25c, 0x15151501 }, 2055 {0x0000a258, 0x0ccb5380},
2055 { 0x0000a260, 0xdfa90f01 }, 2056 {0x0000a25c, 0x15151501},
2056 { 0x0000a268, 0x00000000 }, 2057 {0x0000a260, 0xdfa90f01},
2057 { 0x0000a26c, 0x0ebae9e6 }, 2058 {0x0000a268, 0x00000000},
2058 { 0x0000d270, 0x0d820820 }, 2059 {0x0000a26c, 0x0ebae9e6},
2059 { 0x0000a278, 0x39ce739c }, 2060 {0x0000d270, 0x0d820820},
2060 { 0x0000a27c, 0x050e039c }, 2061 {0x0000a278, 0x39ce739c},
2061 { 0x0000d35c, 0x07ffffef }, 2062 {0x0000a27c, 0x050e039c},
2062 { 0x0000d360, 0x0fffffe7 }, 2063 {0x0000d35c, 0x07ffffef},
2063 { 0x0000d364, 0x17ffffe5 }, 2064 {0x0000d360, 0x0fffffe7},
2064 { 0x0000d368, 0x1fffffe4 }, 2065 {0x0000d364, 0x17ffffe5},
2065 { 0x0000d36c, 0x37ffffe3 }, 2066 {0x0000d368, 0x1fffffe4},
2066 { 0x0000d370, 0x3fffffe3 }, 2067 {0x0000d36c, 0x37ffffe3},
2067 { 0x0000d374, 0x57ffffe3 }, 2068 {0x0000d370, 0x3fffffe3},
2068 { 0x0000d378, 0x5fffffe2 }, 2069 {0x0000d374, 0x57ffffe3},
2069 { 0x0000d37c, 0x7fffffe2 }, 2070 {0x0000d378, 0x5fffffe2},
2070 { 0x0000d380, 0x7f3c7bba }, 2071 {0x0000d37c, 0x7fffffe2},
2071 { 0x0000d384, 0xf3307ff0 }, 2072 {0x0000d380, 0x7f3c7bba},
2072 { 0x0000a388, 0x0c000000 }, 2073 {0x0000d384, 0xf3307ff0},
2073 { 0x0000a38c, 0x20202020 }, 2074 {0x0000a388, 0x0c000000},
2074 { 0x0000a390, 0x20202020 }, 2075 {0x0000a38c, 0x20202020},
2075 { 0x0000a394, 0x39ce739c }, 2076 {0x0000a390, 0x20202020},
2076 { 0x0000a398, 0x0000039c }, 2077 {0x0000a394, 0x39ce739c},
2077 { 0x0000a39c, 0x00000001 }, 2078 {0x0000a398, 0x0000039c},
2078 { 0x0000a3a0, 0x00000000 }, 2079 {0x0000a39c, 0x00000001},
2079 { 0x0000a3a4, 0x00000000 }, 2080 {0x0000a3a0, 0x00000000},
2080 { 0x0000a3a8, 0x00000000 }, 2081 {0x0000a3a4, 0x00000000},
2081 { 0x0000a3ac, 0x00000000 }, 2082 {0x0000a3a8, 0x00000000},
2082 { 0x0000a3b0, 0x00000000 }, 2083 {0x0000a3ac, 0x00000000},
2083 { 0x0000a3b4, 0x00000000 }, 2084 {0x0000a3b0, 0x00000000},
2084 { 0x0000a3b8, 0x00000000 }, 2085 {0x0000a3b4, 0x00000000},
2085 { 0x0000a3bc, 0x00000000 }, 2086 {0x0000a3b8, 0x00000000},
2086 { 0x0000a3c0, 0x00000000 }, 2087 {0x0000a3bc, 0x00000000},
2087 { 0x0000a3c4, 0x00000000 }, 2088 {0x0000a3c0, 0x00000000},
2088 { 0x0000a3cc, 0x20202020 }, 2089 {0x0000a3c4, 0x00000000},
2089 { 0x0000a3d0, 0x20202020 }, 2090 {0x0000a3cc, 0x20202020},
2090 { 0x0000a3d4, 0x20202020 }, 2091 {0x0000a3d0, 0x20202020},
2091 { 0x0000a3dc, 0x39ce739c }, 2092 {0x0000a3d4, 0x20202020},
2092 { 0x0000a3e0, 0x0000039c }, 2093 {0x0000a3dc, 0x39ce739c},
2093 { 0x0000a3e4, 0x00000000 }, 2094 {0x0000a3e0, 0x0000039c},
2094 { 0x0000a3e8, 0x18c43433 }, 2095 {0x0000a3e4, 0x00000000},
2095 { 0x0000a3ec, 0x00f70081 }, 2096 {0x0000a3e8, 0x18c43433},
2096 { 0x00007800, 0x00140000 }, 2097 {0x0000a3ec, 0x00f70081},
2097 { 0x00007804, 0x0e4548d8 }, 2098 {0x00007800, 0x00140000},
2098 { 0x00007808, 0x54214514 }, 2099 {0x00007804, 0x0e4548d8},
2099 { 0x0000780c, 0x02025820 }, 2100 {0x00007808, 0x54214514},
2100 { 0x00007810, 0x71c0d388 }, 2101 {0x0000780c, 0x02025820},
2101 { 0x00007814, 0x924934a8 }, 2102 {0x00007810, 0x71c0d388},
2102 { 0x0000781c, 0x00000000 }, 2103 {0x00007814, 0x924934a8},
2103 { 0x00007820, 0x00000c04 }, 2104 {0x0000781c, 0x00000000},
2104 { 0x00007824, 0x00d86fff }, 2105 {0x00007820, 0x00000c04},
2105 { 0x00007828, 0x26d2491b }, 2106 {0x00007824, 0x00d86fff},
2106 { 0x0000782c, 0x6e36d97b }, 2107 {0x00007828, 0x26d2491b},
2107 { 0x00007830, 0xedb6d96c }, 2108 {0x0000782c, 0x6e36d97b},
2108 { 0x00007834, 0x71400086 }, 2109 {0x00007830, 0xedb6d96c},
2109 { 0x00007838, 0xfac68800 }, 2110 {0x00007834, 0x71400086},
2110 { 0x0000783c, 0x0001fffe }, 2111 {0x00007838, 0xfac68800},
2111 { 0x00007840, 0xffeb1a20 }, 2112 {0x0000783c, 0x0001fffe},
2112 { 0x00007844, 0x000c0db6 }, 2113 {0x00007840, 0xffeb1a20},
2113 { 0x00007848, 0x6db61b6f }, 2114 {0x00007844, 0x000c0db6},
2114 { 0x0000784c, 0x6d9b66db }, 2115 {0x00007848, 0x6db61b6f},
2115 { 0x00007850, 0x6d8c6dba }, 2116 {0x0000784c, 0x6d9b66db},
2116 { 0x00007854, 0x00040000 }, 2117 {0x00007850, 0x6d8c6dba},
2117 { 0x00007858, 0xdb003012 }, 2118 {0x00007854, 0x00040000},
2118 { 0x0000785c, 0x04924914 }, 2119 {0x00007858, 0xdb003012},
2119 { 0x00007860, 0x21084210 }, 2120 {0x0000785c, 0x04924914},
2120 { 0x00007864, 0xf7d7ffde }, 2121 {0x00007860, 0x21084210},
2121 { 0x00007868, 0xc2034080 }, 2122 {0x00007864, 0xf7d7ffde},
2122 { 0x0000786c, 0x48609eb4 }, 2123 {0x00007868, 0xc2034080},
2123 { 0x00007870, 0x10142c00 }, 2124 {0x0000786c, 0x48609eb4},
2125 {0x00007870, 0x10142c00},
2124}; 2126};
2125 2127
2126static const u32 ar9285PciePhy_clkreq_always_on_L1_9285[][2] = { 2128static const u32 ar9285PciePhy_clkreq_always_on_L1_9285[][2] = {
2127 {0x00004040, 0x9248fd00 }, 2129 /* Addr allmodes */
2128 {0x00004040, 0x24924924 }, 2130 {0x00004040, 0x9248fd00},
2129 {0x00004040, 0xa8000019 }, 2131 {0x00004040, 0x24924924},
2130 {0x00004040, 0x13160820 }, 2132 {0x00004040, 0xa8000019},
2131 {0x00004040, 0xe5980560 }, 2133 {0x00004040, 0x13160820},
2132 {0x00004040, 0xc01dcffd }, 2134 {0x00004040, 0xe5980560},
2133 {0x00004040, 0x1aaabe41 }, 2135 {0x00004040, 0xc01dcffd},
2134 {0x00004040, 0xbe105554 }, 2136 {0x00004040, 0x1aaabe41},
2135 {0x00004040, 0x00043007 }, 2137 {0x00004040, 0xbe105554},
2136 {0x00004044, 0x00000000 }, 2138 {0x00004040, 0x00043007},
2139 {0x00004044, 0x00000000},
2137}; 2140};
2138 2141
2139static const u32 ar9285PciePhy_clkreq_off_L1_9285[][2] = { 2142static const u32 ar9285PciePhy_clkreq_off_L1_9285[][2] = {
2140 {0x00004040, 0x9248fd00 }, 2143 /* Addr allmodes */
2141 {0x00004040, 0x24924924 }, 2144 {0x00004040, 0x9248fd00},
2142 {0x00004040, 0xa8000019 }, 2145 {0x00004040, 0x24924924},
2143 {0x00004040, 0x13160820 }, 2146 {0x00004040, 0xa8000019},
2144 {0x00004040, 0xe5980560 }, 2147 {0x00004040, 0x13160820},
2145 {0x00004040, 0xc01dcffc }, 2148 {0x00004040, 0xe5980560},
2146 {0x00004040, 0x1aaabe41 }, 2149 {0x00004040, 0xc01dcffc},
2147 {0x00004040, 0xbe105554 }, 2150 {0x00004040, 0x1aaabe41},
2148 {0x00004040, 0x00043007 }, 2151 {0x00004040, 0xbe105554},
2149 {0x00004044, 0x00000000 }, 2152 {0x00004040, 0x00043007},
2153 {0x00004044, 0x00000000},
2150}; 2154};
2151 2155
2152/* AR9285 v1_2 PCI Register Writes. Created: 04/13/09 */
2153static const u32 ar9285Modes_9285_1_2[][6] = { 2156static const u32 ar9285Modes_9285_1_2[][6] = {
2154 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 2157 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
2155 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, 2158 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
2156 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, 2159 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
2157 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, 2160 {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008},
2158 { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, 2161 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
2159 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, 2162 {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f},
2160 { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, 2163 {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880},
2161 { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, 2164 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
2162 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, 2165 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
2163 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, 2166 {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
2164 { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, 2167 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
2165 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, 2168 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
2166 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 2169 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
2167 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, 2170 {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e},
2168 { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, 2171 {0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0},
2169 { 0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0 }, 2172 {0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059},
2170 { 0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, 2173 {0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059},
2171 { 0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, 2174 {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2},
2172 { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, 2175 {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e},
2173 { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, 2176 {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e},
2174 { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, 2177 {0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18},
2175 { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d20, 0x00058d20, 0x00058d18 }, 2178 {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
2176 { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 2179 {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
2177 { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, 2180 {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881},
2178 { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, 2181 {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
2179 { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, 2182 {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016},
2180 { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, 2183 {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d},
2181 { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, 2184 {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010},
2182 { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010 }, 2185 {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2183 { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2186 {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2184 { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2187 {0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c},
2185 { 0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c }, 2188 {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00},
2186 { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, 2189 {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
2187 { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 2190 {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
2188 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, 2191 {0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f},
2189 { 0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f }, 2192 {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
2190 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, 2193 {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
2191 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, 2194 {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2192 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2195 {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2193 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2196 {0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000},
2194 { 0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, 2197 {0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000},
2195 { 0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, 2198 {0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000},
2196 { 0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, 2199 {0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000},
2197 { 0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, 2200 {0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000},
2198 { 0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, 2201 {0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000},
2199 { 0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, 2202 {0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000},
2200 { 0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, 2203 {0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000},
2201 { 0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, 2204 {0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000},
2202 { 0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, 2205 {0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000},
2203 { 0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, 2206 {0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000},
2204 { 0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, 2207 {0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000},
2205 { 0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, 2208 {0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000},
2206 { 0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, 2209 {0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000},
2207 { 0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, 2210 {0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000},
2208 { 0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, 2211 {0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000},
2209 { 0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, 2212 {0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000},
2210 { 0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, 2213 {0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000},
2211 { 0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, 2214 {0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000},
2212 { 0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, 2215 {0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000},
2213 { 0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, 2216 {0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000},
2214 { 0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, 2217 {0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000},
2215 { 0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, 2218 {0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000},
2216 { 0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, 2219 {0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000},
2217 { 0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, 2220 {0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000},
2218 { 0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, 2221 {0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000},
2219 { 0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, 2222 {0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000},
2220 { 0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, 2223 {0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000},
2221 { 0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, 2224 {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000},
2222 { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, 2225 {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000},
2223 { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, 2226 {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000},
2224 { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, 2227 {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000},
2225 { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, 2228 {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000},
2226 { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, 2229 {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000},
2227 { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, 2230 {0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000},
2228 { 0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, 2231 {0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000},
2229 { 0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, 2232 {0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000},
2230 { 0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, 2233 {0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000},
2231 { 0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, 2234 {0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000},
2232 { 0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, 2235 {0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000},
2233 { 0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, 2236 {0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000},
2234 { 0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, 2237 {0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000},
2235 { 0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, 2238 {0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000},
2236 { 0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, 2239 {0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000},
2237 { 0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, 2240 {0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000},
2238 { 0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, 2241 {0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000},
2239 { 0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, 2242 {0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000},
2240 { 0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, 2243 {0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000},
2241 { 0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, 2244 {0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000},
2242 { 0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, 2245 {0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000},
2243 { 0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, 2246 {0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000},
2244 { 0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, 2247 {0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000},
2245 { 0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, 2248 {0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000},
2246 { 0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, 2249 {0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000},
2247 { 0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, 2250 {0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000},
2248 { 0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, 2251 {0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000},
2249 { 0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, 2252 {0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000},
2250 { 0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, 2253 {0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000},
2251 { 0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, 2254 {0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000},
2252 { 0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, 2255 {0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000},
2253 { 0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, 2256 {0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000},
2254 { 0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, 2257 {0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000},
2255 { 0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, 2258 {0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000},
2256 { 0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, 2259 {0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000},
2257 { 0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, 2260 {0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000},
2258 { 0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, 2261 {0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000},
2259 { 0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, 2262 {0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000},
2260 { 0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, 2263 {0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000},
2261 { 0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, 2264 {0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000},
2262 { 0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, 2265 {0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000},
2263 { 0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, 2266 {0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000},
2264 { 0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, 2267 {0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000},
2265 { 0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, 2268 {0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000},
2266 { 0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, 2269 {0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000},
2267 { 0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, 2270 {0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000},
2268 { 0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, 2271 {0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000},
2269 { 0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, 2272 {0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000},
2270 { 0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, 2273 {0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000},
2271 { 0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, 2274 {0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000},
2272 { 0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, 2275 {0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000},
2273 { 0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, 2276 {0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000},
2274 { 0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, 2277 {0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000},
2275 { 0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, 2278 {0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000},
2276 { 0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, 2279 {0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000},
2277 { 0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, 2280 {0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000},
2278 { 0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, 2281 {0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000},
2279 { 0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, 2282 {0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000},
2280 { 0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, 2283 {0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000},
2281 { 0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, 2284 {0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000},
2282 { 0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, 2285 {0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2283 { 0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2286 {0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2284 { 0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2287 {0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2285 { 0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2288 {0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2286 { 0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2289 {0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2287 { 0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2290 {0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2288 { 0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2291 {0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2289 { 0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2292 {0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2290 { 0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2293 {0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2291 { 0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2294 {0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2292 { 0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2295 {0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2293 { 0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2296 {0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2294 { 0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2297 {0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2295 { 0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2298 {0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2296 { 0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2299 {0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2297 { 0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2300 {0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2298 { 0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2301 {0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2299 { 0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2302 {0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2300 { 0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2303 {0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2301 { 0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2304 {0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2302 { 0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2305 {0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2303 { 0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2306 {0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2304 { 0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2307 {0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2305 { 0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2308 {0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2306 { 0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2309 {0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2307 { 0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2310 {0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2308 { 0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2311 {0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2309 { 0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2312 {0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2310 { 0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2313 {0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2311 { 0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2314 {0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2312 { 0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2315 {0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2313 { 0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2316 {0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2314 { 0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2317 {0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2315 { 0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2318 {0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2316 { 0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2319 {0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2317 { 0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2320 {0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2318 { 0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2321 {0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2319 { 0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2322 {0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2320 { 0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2323 {0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2321 { 0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2324 {0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000},
2322 { 0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, 2325 {0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000},
2323 { 0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, 2326 {0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000},
2324 { 0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, 2327 {0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000},
2325 { 0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, 2328 {0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000},
2326 { 0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, 2329 {0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000},
2327 { 0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, 2330 {0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000},
2328 { 0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, 2331 {0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000},
2329 { 0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, 2332 {0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000},
2330 { 0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, 2333 {0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000},
2331 { 0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, 2334 {0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000},
2332 { 0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, 2335 {0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000},
2333 { 0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, 2336 {0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000},
2334 { 0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, 2337 {0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000},
2335 { 0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, 2338 {0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000},
2336 { 0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, 2339 {0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000},
2337 { 0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, 2340 {0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000},
2338 { 0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, 2341 {0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000},
2339 { 0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, 2342 {0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000},
2340 { 0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, 2343 {0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000},
2341 { 0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, 2344 {0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000},
2342 { 0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, 2345 {0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000},
2343 { 0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, 2346 {0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000},
2344 { 0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, 2347 {0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000},
2345 { 0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, 2348 {0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000},
2346 { 0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, 2349 {0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000},
2347 { 0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, 2350 {0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000},
2348 { 0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, 2351 {0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000},
2349 { 0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, 2352 {0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000},
2350 { 0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, 2353 {0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000},
2351 { 0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, 2354 {0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000},
2352 { 0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, 2355 {0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000},
2353 { 0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, 2356 {0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000},
2354 { 0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, 2357 {0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000},
2355 { 0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, 2358 {0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000},
2356 { 0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, 2359 {0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000},
2357 { 0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, 2360 {0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000},
2358 { 0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, 2361 {0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000},
2359 { 0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, 2362 {0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000},
2360 { 0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, 2363 {0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000},
2361 { 0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, 2364 {0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000},
2362 { 0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, 2365 {0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000},
2363 { 0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, 2366 {0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000},
2364 { 0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, 2367 {0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000},
2365 { 0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, 2368 {0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000},
2366 { 0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, 2369 {0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000},
2367 { 0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, 2370 {0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000},
2368 { 0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, 2371 {0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000},
2369 { 0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, 2372 {0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000},
2370 { 0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, 2373 {0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000},
2371 { 0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, 2374 {0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000},
2372 { 0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, 2375 {0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000},
2373 { 0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, 2376 {0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000},
2374 { 0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, 2377 {0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000},
2375 { 0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, 2378 {0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000},
2376 { 0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, 2379 {0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000},
2377 { 0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, 2380 {0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000},
2378 { 0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, 2381 {0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000},
2379 { 0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, 2382 {0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000},
2380 { 0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, 2383 {0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000},
2381 { 0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, 2384 {0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000},
2382 { 0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, 2385 {0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000},
2383 { 0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, 2386 {0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000},
2384 { 0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, 2387 {0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000},
2385 { 0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, 2388 {0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000},
2386 { 0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, 2389 {0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000},
2387 { 0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, 2390 {0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000},
2388 { 0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, 2391 {0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000},
2389 { 0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, 2392 {0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000},
2390 { 0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, 2393 {0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000},
2391 { 0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, 2394 {0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000},
2392 { 0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, 2395 {0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000},
2393 { 0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, 2396 {0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000},
2394 { 0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, 2397 {0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000},
2395 { 0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, 2398 {0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000},
2396 { 0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, 2399 {0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000},
2397 { 0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, 2400 {0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000},
2398 { 0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, 2401 {0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000},
2399 { 0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, 2402 {0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000},
2400 { 0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, 2403 {0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000},
2401 { 0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, 2404 {0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000},
2402 { 0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, 2405 {0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000},
2403 { 0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, 2406 {0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000},
2404 { 0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, 2407 {0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000},
2405 { 0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, 2408 {0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000},
2406 { 0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, 2409 {0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000},
2407 { 0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, 2410 {0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000},
2408 { 0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, 2411 {0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000},
2409 { 0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, 2412 {0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000},
2410 { 0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, 2413 {0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2411 { 0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2414 {0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2412 { 0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2415 {0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2413 { 0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2416 {0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2414 { 0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2417 {0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2415 { 0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2418 {0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2416 { 0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2419 {0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2417 { 0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2420 {0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2418 { 0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2421 {0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2419 { 0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2422 {0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2420 { 0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2423 {0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2421 { 0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2424 {0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2422 { 0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2425 {0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2423 { 0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2426 {0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2424 { 0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2427 {0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2425 { 0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2428 {0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2426 { 0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2429 {0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2427 { 0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2430 {0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2428 { 0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2431 {0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2429 { 0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2432 {0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2430 { 0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2433 {0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2431 { 0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2434 {0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2432 { 0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2435 {0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2433 { 0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2436 {0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2434 { 0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2437 {0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2435 { 0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2438 {0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2436 { 0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2439 {0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2437 { 0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2440 {0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2438 { 0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2441 {0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2439 { 0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2442 {0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2440 { 0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2443 {0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2441 { 0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2444 {0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2442 { 0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2445 {0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2443 { 0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2446 {0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2444 { 0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2447 {0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2445 { 0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2448 {0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2446 { 0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2449 {0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2447 { 0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2450 {0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2448 { 0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2451 {0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
2449 { 0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 2452 {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004},
2450 { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, 2453 {0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000},
2451 { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, 2454 {0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000},
2452 { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, 2455 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
2453 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, 2456 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
2454 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 2457 {0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000},
2455 { 0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000 }, 2458 {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e},
2456 { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e },
2457}; 2459};
2458 2460
2459static const u32 ar9285Common_9285_1_2[][2] = { 2461static const u32 ar9285Common_9285_1_2[][2] = {
2460 { 0x0000000c, 0x00000000 }, 2462 /* Addr allmodes */
2461 { 0x00000030, 0x00020045 }, 2463 {0x0000000c, 0x00000000},
2462 { 0x00000034, 0x00000005 }, 2464 {0x00000030, 0x00020045},
2463 { 0x00000040, 0x00000000 }, 2465 {0x00000034, 0x00000005},
2464 { 0x00000044, 0x00000008 }, 2466 {0x00000040, 0x00000000},
2465 { 0x00000048, 0x00000008 }, 2467 {0x00000044, 0x00000008},
2466 { 0x0000004c, 0x00000010 }, 2468 {0x00000048, 0x00000008},
2467 { 0x00000050, 0x00000000 }, 2469 {0x0000004c, 0x00000010},
2468 { 0x00000054, 0x0000001f }, 2470 {0x00000050, 0x00000000},
2469 { 0x00000800, 0x00000000 }, 2471 {0x00000054, 0x0000001f},
2470 { 0x00000804, 0x00000000 }, 2472 {0x00000800, 0x00000000},
2471 { 0x00000808, 0x00000000 }, 2473 {0x00000804, 0x00000000},
2472 { 0x0000080c, 0x00000000 }, 2474 {0x00000808, 0x00000000},
2473 { 0x00000810, 0x00000000 }, 2475 {0x0000080c, 0x00000000},
2474 { 0x00000814, 0x00000000 }, 2476 {0x00000810, 0x00000000},
2475 { 0x00000818, 0x00000000 }, 2477 {0x00000814, 0x00000000},
2476 { 0x0000081c, 0x00000000 }, 2478 {0x00000818, 0x00000000},
2477 { 0x00000820, 0x00000000 }, 2479 {0x0000081c, 0x00000000},
2478 { 0x00000824, 0x00000000 }, 2480 {0x00000820, 0x00000000},
2479 { 0x00001040, 0x002ffc0f }, 2481 {0x00000824, 0x00000000},
2480 { 0x00001044, 0x002ffc0f }, 2482 {0x00001040, 0x002ffc0f},
2481 { 0x00001048, 0x002ffc0f }, 2483 {0x00001044, 0x002ffc0f},
2482 { 0x0000104c, 0x002ffc0f }, 2484 {0x00001048, 0x002ffc0f},
2483 { 0x00001050, 0x002ffc0f }, 2485 {0x0000104c, 0x002ffc0f},
2484 { 0x00001054, 0x002ffc0f }, 2486 {0x00001050, 0x002ffc0f},
2485 { 0x00001058, 0x002ffc0f }, 2487 {0x00001054, 0x002ffc0f},
2486 { 0x0000105c, 0x002ffc0f }, 2488 {0x00001058, 0x002ffc0f},
2487 { 0x00001060, 0x002ffc0f }, 2489 {0x0000105c, 0x002ffc0f},
2488 { 0x00001064, 0x002ffc0f }, 2490 {0x00001060, 0x002ffc0f},
2489 { 0x00001230, 0x00000000 }, 2491 {0x00001064, 0x002ffc0f},
2490 { 0x00001270, 0x00000000 }, 2492 {0x00001230, 0x00000000},
2491 { 0x00001038, 0x00000000 }, 2493 {0x00001270, 0x00000000},
2492 { 0x00001078, 0x00000000 }, 2494 {0x00001038, 0x00000000},
2493 { 0x000010b8, 0x00000000 }, 2495 {0x00001078, 0x00000000},
2494 { 0x000010f8, 0x00000000 }, 2496 {0x000010b8, 0x00000000},
2495 { 0x00001138, 0x00000000 }, 2497 {0x000010f8, 0x00000000},
2496 { 0x00001178, 0x00000000 }, 2498 {0x00001138, 0x00000000},
2497 { 0x000011b8, 0x00000000 }, 2499 {0x00001178, 0x00000000},
2498 { 0x000011f8, 0x00000000 }, 2500 {0x000011b8, 0x00000000},
2499 { 0x00001238, 0x00000000 }, 2501 {0x000011f8, 0x00000000},
2500 { 0x00001278, 0x00000000 }, 2502 {0x00001238, 0x00000000},
2501 { 0x000012b8, 0x00000000 }, 2503 {0x00001278, 0x00000000},
2502 { 0x000012f8, 0x00000000 }, 2504 {0x000012b8, 0x00000000},
2503 { 0x00001338, 0x00000000 }, 2505 {0x000012f8, 0x00000000},
2504 { 0x00001378, 0x00000000 }, 2506 {0x00001338, 0x00000000},
2505 { 0x000013b8, 0x00000000 }, 2507 {0x00001378, 0x00000000},
2506 { 0x000013f8, 0x00000000 }, 2508 {0x000013b8, 0x00000000},
2507 { 0x00001438, 0x00000000 }, 2509 {0x000013f8, 0x00000000},
2508 { 0x00001478, 0x00000000 }, 2510 {0x00001438, 0x00000000},
2509 { 0x000014b8, 0x00000000 }, 2511 {0x00001478, 0x00000000},
2510 { 0x000014f8, 0x00000000 }, 2512 {0x000014b8, 0x00000000},
2511 { 0x00001538, 0x00000000 }, 2513 {0x000014f8, 0x00000000},
2512 { 0x00001578, 0x00000000 }, 2514 {0x00001538, 0x00000000},
2513 { 0x000015b8, 0x00000000 }, 2515 {0x00001578, 0x00000000},
2514 { 0x000015f8, 0x00000000 }, 2516 {0x000015b8, 0x00000000},
2515 { 0x00001638, 0x00000000 }, 2517 {0x000015f8, 0x00000000},
2516 { 0x00001678, 0x00000000 }, 2518 {0x00001638, 0x00000000},
2517 { 0x000016b8, 0x00000000 }, 2519 {0x00001678, 0x00000000},
2518 { 0x000016f8, 0x00000000 }, 2520 {0x000016b8, 0x00000000},
2519 { 0x00001738, 0x00000000 }, 2521 {0x000016f8, 0x00000000},
2520 { 0x00001778, 0x00000000 }, 2522 {0x00001738, 0x00000000},
2521 { 0x000017b8, 0x00000000 }, 2523 {0x00001778, 0x00000000},
2522 { 0x000017f8, 0x00000000 }, 2524 {0x000017b8, 0x00000000},
2523 { 0x0000103c, 0x00000000 }, 2525 {0x000017f8, 0x00000000},
2524 { 0x0000107c, 0x00000000 }, 2526 {0x0000103c, 0x00000000},
2525 { 0x000010bc, 0x00000000 }, 2527 {0x0000107c, 0x00000000},
2526 { 0x000010fc, 0x00000000 }, 2528 {0x000010bc, 0x00000000},
2527 { 0x0000113c, 0x00000000 }, 2529 {0x000010fc, 0x00000000},
2528 { 0x0000117c, 0x00000000 }, 2530 {0x0000113c, 0x00000000},
2529 { 0x000011bc, 0x00000000 }, 2531 {0x0000117c, 0x00000000},
2530 { 0x000011fc, 0x00000000 }, 2532 {0x000011bc, 0x00000000},
2531 { 0x0000123c, 0x00000000 }, 2533 {0x000011fc, 0x00000000},
2532 { 0x0000127c, 0x00000000 }, 2534 {0x0000123c, 0x00000000},
2533 { 0x000012bc, 0x00000000 }, 2535 {0x0000127c, 0x00000000},
2534 { 0x000012fc, 0x00000000 }, 2536 {0x000012bc, 0x00000000},
2535 { 0x0000133c, 0x00000000 }, 2537 {0x000012fc, 0x00000000},
2536 { 0x0000137c, 0x00000000 }, 2538 {0x0000133c, 0x00000000},
2537 { 0x000013bc, 0x00000000 }, 2539 {0x0000137c, 0x00000000},
2538 { 0x000013fc, 0x00000000 }, 2540 {0x000013bc, 0x00000000},
2539 { 0x0000143c, 0x00000000 }, 2541 {0x000013fc, 0x00000000},
2540 { 0x0000147c, 0x00000000 }, 2542 {0x0000143c, 0x00000000},
2541 { 0x00004030, 0x00000002 }, 2543 {0x0000147c, 0x00000000},
2542 { 0x0000403c, 0x00000002 }, 2544 {0x00004030, 0x00000002},
2543 { 0x00004024, 0x0000001f }, 2545 {0x0000403c, 0x00000002},
2544 { 0x00004060, 0x00000000 }, 2546 {0x00004024, 0x0000001f},
2545 { 0x00004064, 0x00000000 }, 2547 {0x00004060, 0x00000000},
2546 { 0x00007010, 0x00000031 }, 2548 {0x00004064, 0x00000000},
2547 { 0x00007034, 0x00000002 }, 2549 {0x00007010, 0x00000031},
2548 { 0x00007038, 0x000004c2 }, 2550 {0x00007034, 0x00000002},
2549 { 0x00008004, 0x00000000 }, 2551 {0x00007038, 0x000004c2},
2550 { 0x00008008, 0x00000000 }, 2552 {0x00008004, 0x00000000},
2551 { 0x0000800c, 0x00000000 }, 2553 {0x00008008, 0x00000000},
2552 { 0x00008018, 0x00000700 }, 2554 {0x0000800c, 0x00000000},
2553 { 0x00008020, 0x00000000 }, 2555 {0x00008018, 0x00000700},
2554 { 0x00008038, 0x00000000 }, 2556 {0x00008020, 0x00000000},
2555 { 0x0000803c, 0x00000000 }, 2557 {0x00008038, 0x00000000},
2556 { 0x00008048, 0x00000000 }, 2558 {0x0000803c, 0x00000000},
2557 { 0x00008054, 0x00000000 }, 2559 {0x00008048, 0x00000000},
2558 { 0x00008058, 0x00000000 }, 2560 {0x00008054, 0x00000000},
2559 { 0x0000805c, 0x000fc78f }, 2561 {0x00008058, 0x00000000},
2560 { 0x00008060, 0x0000000f }, 2562 {0x0000805c, 0x000fc78f},
2561 { 0x00008064, 0x00000000 }, 2563 {0x00008060, 0x0000000f},
2562 { 0x00008070, 0x00000000 }, 2564 {0x00008064, 0x00000000},
2563 { 0x000080c0, 0x2a80001a }, 2565 {0x00008070, 0x00000000},
2564 { 0x000080c4, 0x05dc01e0 }, 2566 {0x000080c0, 0x2a80001a},
2565 { 0x000080c8, 0x1f402710 }, 2567 {0x000080c4, 0x05dc01e0},
2566 { 0x000080cc, 0x01f40000 }, 2568 {0x000080c8, 0x1f402710},
2567 { 0x000080d0, 0x00001e00 }, 2569 {0x000080cc, 0x01f40000},
2568 { 0x000080d4, 0x00000000 }, 2570 {0x000080d0, 0x00001e00},
2569 { 0x000080d8, 0x00400000 }, 2571 {0x000080d4, 0x00000000},
2570 { 0x000080e0, 0xffffffff }, 2572 {0x000080d8, 0x00400000},
2571 { 0x000080e4, 0x0000ffff }, 2573 {0x000080e0, 0xffffffff},
2572 { 0x000080e8, 0x003f3f3f }, 2574 {0x000080e4, 0x0000ffff},
2573 { 0x000080ec, 0x00000000 }, 2575 {0x000080e8, 0x003f3f3f},
2574 { 0x000080f0, 0x00000000 }, 2576 {0x000080ec, 0x00000000},
2575 { 0x000080f4, 0x00000000 }, 2577 {0x000080f0, 0x00000000},
2576 { 0x000080f8, 0x00000000 }, 2578 {0x000080f4, 0x00000000},
2577 { 0x000080fc, 0x00020000 }, 2579 {0x000080f8, 0x00000000},
2578 { 0x00008100, 0x00020000 }, 2580 {0x000080fc, 0x00020000},
2579 { 0x00008104, 0x00000001 }, 2581 {0x00008100, 0x00020000},
2580 { 0x00008108, 0x00000052 }, 2582 {0x00008104, 0x00000001},
2581 { 0x0000810c, 0x00000000 }, 2583 {0x00008108, 0x00000052},
2582 { 0x00008110, 0x00000168 }, 2584 {0x0000810c, 0x00000000},
2583 { 0x00008118, 0x000100aa }, 2585 {0x00008110, 0x00000168},
2584 { 0x0000811c, 0x00003210 }, 2586 {0x00008118, 0x000100aa},
2585 { 0x00008120, 0x08f04810 }, 2587 {0x0000811c, 0x00003210},
2586 { 0x00008124, 0x00000000 }, 2588 {0x00008120, 0x08f04810},
2587 { 0x00008128, 0x00000000 }, 2589 {0x00008124, 0x00000000},
2588 { 0x0000812c, 0x00000000 }, 2590 {0x00008128, 0x00000000},
2589 { 0x00008130, 0x00000000 }, 2591 {0x0000812c, 0x00000000},
2590 { 0x00008134, 0x00000000 }, 2592 {0x00008130, 0x00000000},
2591 { 0x00008138, 0x00000000 }, 2593 {0x00008134, 0x00000000},
2592 { 0x0000813c, 0x00000000 }, 2594 {0x00008138, 0x00000000},
2593 { 0x00008144, 0xffffffff }, 2595 {0x0000813c, 0x00000000},
2594 { 0x00008168, 0x00000000 }, 2596 {0x00008144, 0xffffffff},
2595 { 0x0000816c, 0x00000000 }, 2597 {0x00008168, 0x00000000},
2596 { 0x00008170, 0x32143320 }, 2598 {0x0000816c, 0x00000000},
2597 { 0x00008174, 0xfaa4fa50 }, 2599 {0x00008170, 0x32143320},
2598 { 0x00008178, 0x00000100 }, 2600 {0x00008174, 0xfaa4fa50},
2599 { 0x0000817c, 0x00000000 }, 2601 {0x00008178, 0x00000100},
2600 { 0x000081c0, 0x00000000 }, 2602 {0x0000817c, 0x00000000},
2601 { 0x000081d0, 0x0000320a }, 2603 {0x000081c0, 0x00000000},
2602 { 0x000081ec, 0x00000000 }, 2604 {0x000081d0, 0x0000320a},
2603 { 0x000081f0, 0x00000000 }, 2605 {0x000081ec, 0x00000000},
2604 { 0x000081f4, 0x00000000 }, 2606 {0x000081f0, 0x00000000},
2605 { 0x000081f8, 0x00000000 }, 2607 {0x000081f4, 0x00000000},
2606 { 0x000081fc, 0x00000000 }, 2608 {0x000081f8, 0x00000000},
2607 { 0x00008200, 0x00000000 }, 2609 {0x000081fc, 0x00000000},
2608 { 0x00008204, 0x00000000 }, 2610 {0x00008200, 0x00000000},
2609 { 0x00008208, 0x00000000 }, 2611 {0x00008204, 0x00000000},
2610 { 0x0000820c, 0x00000000 }, 2612 {0x00008208, 0x00000000},
2611 { 0x00008210, 0x00000000 }, 2613 {0x0000820c, 0x00000000},
2612 { 0x00008214, 0x00000000 }, 2614 {0x00008210, 0x00000000},
2613 { 0x00008218, 0x00000000 }, 2615 {0x00008214, 0x00000000},
2614 { 0x0000821c, 0x00000000 }, 2616 {0x00008218, 0x00000000},
2615 { 0x00008220, 0x00000000 }, 2617 {0x0000821c, 0x00000000},
2616 { 0x00008224, 0x00000000 }, 2618 {0x00008220, 0x00000000},
2617 { 0x00008228, 0x00000000 }, 2619 {0x00008224, 0x00000000},
2618 { 0x0000822c, 0x00000000 }, 2620 {0x00008228, 0x00000000},
2619 { 0x00008230, 0x00000000 }, 2621 {0x0000822c, 0x00000000},
2620 { 0x00008234, 0x00000000 }, 2622 {0x00008230, 0x00000000},
2621 { 0x00008238, 0x00000000 }, 2623 {0x00008234, 0x00000000},
2622 { 0x0000823c, 0x00000000 }, 2624 {0x00008238, 0x00000000},
2623 { 0x00008240, 0x00100000 }, 2625 {0x0000823c, 0x00000000},
2624 { 0x00008244, 0x0010f400 }, 2626 {0x00008240, 0x00100000},
2625 { 0x00008248, 0x00000100 }, 2627 {0x00008244, 0x0010f400},
2626 { 0x0000824c, 0x0001e800 }, 2628 {0x00008248, 0x00000100},
2627 { 0x00008250, 0x00000000 }, 2629 {0x0000824c, 0x0001e800},
2628 { 0x00008254, 0x00000000 }, 2630 {0x00008250, 0x00000000},
2629 { 0x00008258, 0x00000000 }, 2631 {0x00008254, 0x00000000},
2630 { 0x0000825c, 0x400000ff }, 2632 {0x00008258, 0x00000000},
2631 { 0x00008260, 0x00080922 }, 2633 {0x0000825c, 0x400000ff},
2632 { 0x00008264, 0x88a00010 }, 2634 {0x00008260, 0x00080922},
2633 { 0x00008270, 0x00000000 }, 2635 {0x00008264, 0x88a00010},
2634 { 0x00008274, 0x40000000 }, 2636 {0x00008270, 0x00000000},
2635 { 0x00008278, 0x003e4180 }, 2637 {0x00008274, 0x40000000},
2636 { 0x0000827c, 0x00000000 }, 2638 {0x00008278, 0x003e4180},
2637 { 0x00008284, 0x0000002c }, 2639 {0x0000827c, 0x00000000},
2638 { 0x00008288, 0x0000002c }, 2640 {0x00008284, 0x0000002c},
2639 { 0x0000828c, 0x00000000 }, 2641 {0x00008288, 0x0000002c},
2640 { 0x00008294, 0x00000000 }, 2642 {0x0000828c, 0x00000000},
2641 { 0x00008298, 0x00000000 }, 2643 {0x00008294, 0x00000000},
2642 { 0x0000829c, 0x00000000 }, 2644 {0x00008298, 0x00000000},
2643 { 0x00008300, 0x00000040 }, 2645 {0x0000829c, 0x00000000},
2644 { 0x00008314, 0x00000000 }, 2646 {0x00008300, 0x00000040},
2645 { 0x00008328, 0x00000000 }, 2647 {0x00008314, 0x00000000},
2646 { 0x0000832c, 0x00000001 }, 2648 {0x00008328, 0x00000000},
2647 { 0x00008330, 0x00000302 }, 2649 {0x0000832c, 0x00000001},
2648 { 0x00008334, 0x00000e00 }, 2650 {0x00008330, 0x00000302},
2649 { 0x00008338, 0x00ff0000 }, 2651 {0x00008334, 0x00000e00},
2650 { 0x0000833c, 0x00000000 }, 2652 {0x00008338, 0x00ff0000},
2651 { 0x00008340, 0x00010380 }, 2653 {0x0000833c, 0x00000000},
2652 { 0x00008344, 0x00481043 }, 2654 {0x00008340, 0x00010380},
2653 { 0x00009808, 0x00000000 }, 2655 {0x00008344, 0x00481043},
2654 { 0x0000980c, 0xafe68e30 }, 2656 {0x00009808, 0x00000000},
2655 { 0x00009810, 0xfd14e000 }, 2657 {0x0000980c, 0xafe68e30},
2656 { 0x00009814, 0x9c0a9f6b }, 2658 {0x00009810, 0xfd14e000},
2657 { 0x0000981c, 0x00000000 }, 2659 {0x00009814, 0x9c0a9f6b},
2658 { 0x0000982c, 0x0000a000 }, 2660 {0x0000981c, 0x00000000},
2659 { 0x00009830, 0x00000000 }, 2661 {0x0000982c, 0x0000a000},
2660 { 0x0000983c, 0x00200400 }, 2662 {0x00009830, 0x00000000},
2661 { 0x0000984c, 0x0040233c }, 2663 {0x0000983c, 0x00200400},
2662 { 0x00009854, 0x00000044 }, 2664 {0x0000984c, 0x0040233c},
2663 { 0x00009900, 0x00000000 }, 2665 {0x00009854, 0x00000044},
2664 { 0x00009904, 0x00000000 }, 2666 {0x00009900, 0x00000000},
2665 { 0x00009908, 0x00000000 }, 2667 {0x00009904, 0x00000000},
2666 { 0x0000990c, 0x00000000 }, 2668 {0x00009908, 0x00000000},
2667 { 0x00009910, 0x01002310 }, 2669 {0x0000990c, 0x00000000},
2668 { 0x0000991c, 0x10000fff }, 2670 {0x00009910, 0x01002310},
2669 { 0x00009920, 0x04900000 }, 2671 {0x0000991c, 0x10000fff},
2670 { 0x00009928, 0x00000001 }, 2672 {0x00009920, 0x04900000},
2671 { 0x0000992c, 0x00000004 }, 2673 {0x00009928, 0x00000001},
2672 { 0x00009934, 0x1e1f2022 }, 2674 {0x0000992c, 0x00000004},
2673 { 0x00009938, 0x0a0b0c0d }, 2675 {0x00009934, 0x1e1f2022},
2674 { 0x0000993c, 0x00000000 }, 2676 {0x00009938, 0x0a0b0c0d},
2675 { 0x00009940, 0x14750604 }, 2677 {0x0000993c, 0x00000000},
2676 { 0x00009948, 0x9280c00a }, 2678 {0x00009940, 0x14750604},
2677 { 0x0000994c, 0x00020028 }, 2679 {0x00009948, 0x9280c00a},
2678 { 0x00009954, 0x5f3ca3de }, 2680 {0x0000994c, 0x00020028},
2679 { 0x00009958, 0x2108ecff }, 2681 {0x00009954, 0x5f3ca3de},
2680 { 0x00009968, 0x000003ce }, 2682 {0x00009958, 0x2108ecff},
2681 { 0x00009970, 0x192bb514 }, 2683 {0x00009968, 0x000003ce},
2682 { 0x00009974, 0x00000000 }, 2684 {0x00009970, 0x192bb514},
2683 { 0x00009978, 0x00000001 }, 2685 {0x00009974, 0x00000000},
2684 { 0x0000997c, 0x00000000 }, 2686 {0x00009978, 0x00000001},
2685 { 0x00009980, 0x00000000 }, 2687 {0x0000997c, 0x00000000},
2686 { 0x00009984, 0x00000000 }, 2688 {0x00009980, 0x00000000},
2687 { 0x00009988, 0x00000000 }, 2689 {0x00009984, 0x00000000},
2688 { 0x0000998c, 0x00000000 }, 2690 {0x00009988, 0x00000000},
2689 { 0x00009990, 0x00000000 }, 2691 {0x0000998c, 0x00000000},
2690 { 0x00009994, 0x00000000 }, 2692 {0x00009990, 0x00000000},
2691 { 0x00009998, 0x00000000 }, 2693 {0x00009994, 0x00000000},
2692 { 0x0000999c, 0x00000000 }, 2694 {0x00009998, 0x00000000},
2693 { 0x000099a0, 0x00000000 }, 2695 {0x0000999c, 0x00000000},
2694 { 0x000099a4, 0x00000001 }, 2696 {0x000099a0, 0x00000000},
2695 { 0x000099a8, 0x201fff00 }, 2697 {0x000099a4, 0x00000001},
2696 { 0x000099ac, 0x2def0400 }, 2698 {0x000099a8, 0x201fff00},
2697 { 0x000099b0, 0x03051000 }, 2699 {0x000099ac, 0x2def0400},
2698 { 0x000099b4, 0x00000820 }, 2700 {0x000099b0, 0x03051000},
2699 { 0x000099dc, 0x00000000 }, 2701 {0x000099b4, 0x00000820},
2700 { 0x000099e0, 0x00000000 }, 2702 {0x000099dc, 0x00000000},
2701 { 0x000099e4, 0xaaaaaaaa }, 2703 {0x000099e0, 0x00000000},
2702 { 0x000099e8, 0x3c466478 }, 2704 {0x000099e4, 0xaaaaaaaa},
2703 { 0x000099ec, 0x0cc80caa }, 2705 {0x000099e8, 0x3c466478},
2704 { 0x000099f0, 0x00000000 }, 2706 {0x000099ec, 0x0cc80caa},
2705 { 0x0000a208, 0x803e68c8 }, 2707 {0x000099f0, 0x00000000},
2706 { 0x0000a210, 0x4080a333 }, 2708 {0x0000a208, 0x803e68c8},
2707 { 0x0000a214, 0x00206c10 }, 2709 {0x0000a210, 0x4080a333},
2708 { 0x0000a218, 0x009c4060 }, 2710 {0x0000a214, 0x00206c10},
2709 { 0x0000a220, 0x01834061 }, 2711 {0x0000a218, 0x009c4060},
2710 { 0x0000a224, 0x00000400 }, 2712 {0x0000a220, 0x01834061},
2711 { 0x0000a228, 0x000003b5 }, 2713 {0x0000a224, 0x00000400},
2712 { 0x0000a22c, 0x00000000 }, 2714 {0x0000a228, 0x000003b5},
2713 { 0x0000a234, 0x20202020 }, 2715 {0x0000a22c, 0x00000000},
2714 { 0x0000a238, 0x20202020 }, 2716 {0x0000a234, 0x20202020},
2715 { 0x0000a244, 0x00000000 }, 2717 {0x0000a238, 0x20202020},
2716 { 0x0000a248, 0xfffffffc }, 2718 {0x0000a244, 0x00000000},
2717 { 0x0000a24c, 0x00000000 }, 2719 {0x0000a248, 0xfffffffc},
2718 { 0x0000a254, 0x00000000 }, 2720 {0x0000a24c, 0x00000000},
2719 { 0x0000a258, 0x0ccb5380 }, 2721 {0x0000a254, 0x00000000},
2720 { 0x0000a25c, 0x15151501 }, 2722 {0x0000a258, 0x0ccb5380},
2721 { 0x0000a260, 0xdfa90f01 }, 2723 {0x0000a25c, 0x15151501},
2722 { 0x0000a268, 0x00000000 }, 2724 {0x0000a260, 0xdfa90f01},
2723 { 0x0000a26c, 0x0ebae9e6 }, 2725 {0x0000a268, 0x00000000},
2724 { 0x0000d270, 0x0d820820 }, 2726 {0x0000a26c, 0x0ebae9e6},
2725 { 0x0000d35c, 0x07ffffef }, 2727 {0x0000d270, 0x0d820820},
2726 { 0x0000d360, 0x0fffffe7 }, 2728 {0x0000d35c, 0x07ffffef},
2727 { 0x0000d364, 0x17ffffe5 }, 2729 {0x0000d360, 0x0fffffe7},
2728 { 0x0000d368, 0x1fffffe4 }, 2730 {0x0000d364, 0x17ffffe5},
2729 { 0x0000d36c, 0x37ffffe3 }, 2731 {0x0000d368, 0x1fffffe4},
2730 { 0x0000d370, 0x3fffffe3 }, 2732 {0x0000d36c, 0x37ffffe3},
2731 { 0x0000d374, 0x57ffffe3 }, 2733 {0x0000d370, 0x3fffffe3},
2732 { 0x0000d378, 0x5fffffe2 }, 2734 {0x0000d374, 0x57ffffe3},
2733 { 0x0000d37c, 0x7fffffe2 }, 2735 {0x0000d378, 0x5fffffe2},
2734 { 0x0000d380, 0x7f3c7bba }, 2736 {0x0000d37c, 0x7fffffe2},
2735 { 0x0000d384, 0xf3307ff0 }, 2737 {0x0000d380, 0x7f3c7bba},
2736 { 0x0000a388, 0x0c000000 }, 2738 {0x0000d384, 0xf3307ff0},
2737 { 0x0000a38c, 0x20202020 }, 2739 {0x0000a388, 0x0c000000},
2738 { 0x0000a390, 0x20202020 }, 2740 {0x0000a38c, 0x20202020},
2739 { 0x0000a39c, 0x00000001 }, 2741 {0x0000a390, 0x20202020},
2740 { 0x0000a3a0, 0x00000000 }, 2742 {0x0000a39c, 0x00000001},
2741 { 0x0000a3a4, 0x00000000 }, 2743 {0x0000a3a0, 0x00000000},
2742 { 0x0000a3a8, 0x00000000 }, 2744 {0x0000a3a4, 0x00000000},
2743 { 0x0000a3ac, 0x00000000 }, 2745 {0x0000a3a8, 0x00000000},
2744 { 0x0000a3b0, 0x00000000 }, 2746 {0x0000a3ac, 0x00000000},
2745 { 0x0000a3b4, 0x00000000 }, 2747 {0x0000a3b0, 0x00000000},
2746 { 0x0000a3b8, 0x00000000 }, 2748 {0x0000a3b4, 0x00000000},
2747 { 0x0000a3bc, 0x00000000 }, 2749 {0x0000a3b8, 0x00000000},
2748 { 0x0000a3c0, 0x00000000 }, 2750 {0x0000a3bc, 0x00000000},
2749 { 0x0000a3c4, 0x00000000 }, 2751 {0x0000a3c0, 0x00000000},
2750 { 0x0000a3cc, 0x20202020 }, 2752 {0x0000a3c4, 0x00000000},
2751 { 0x0000a3d0, 0x20202020 }, 2753 {0x0000a3cc, 0x20202020},
2752 { 0x0000a3d4, 0x20202020 }, 2754 {0x0000a3d0, 0x20202020},
2753 { 0x0000a3e4, 0x00000000 }, 2755 {0x0000a3d4, 0x20202020},
2754 { 0x0000a3e8, 0x18c43433 }, 2756 {0x0000a3e4, 0x00000000},
2755 { 0x0000a3ec, 0x00f70081 }, 2757 {0x0000a3e8, 0x18c43433},
2756 { 0x00007800, 0x00140000 }, 2758 {0x0000a3ec, 0x00f70081},
2757 { 0x00007804, 0x0e4548d8 }, 2759 {0x00007800, 0x00140000},
2758 { 0x00007808, 0x54214514 }, 2760 {0x00007804, 0x0e4548d8},
2759 { 0x0000780c, 0x02025830 }, 2761 {0x00007808, 0x54214514},
2760 { 0x00007810, 0x71c0d388 }, 2762 {0x0000780c, 0x02025830},
2761 { 0x0000781c, 0x00000000 }, 2763 {0x00007810, 0x71c0d388},
2762 { 0x00007824, 0x00d86fff }, 2764 {0x0000781c, 0x00000000},
2763 { 0x0000782c, 0x6e36d97b }, 2765 {0x00007824, 0x00d86fff},
2764 { 0x00007834, 0x71400087 }, 2766 {0x0000782c, 0x6e36d97b},
2765 { 0x00007844, 0x000c0db6 }, 2767 {0x00007834, 0x71400087},
2766 { 0x00007848, 0x6db6246f }, 2768 {0x00007844, 0x000c0db6},
2767 { 0x0000784c, 0x6d9b66db }, 2769 {0x00007848, 0x6db6246f},
2768 { 0x00007850, 0x6d8c6dba }, 2770 {0x0000784c, 0x6d9b66db},
2769 { 0x00007854, 0x00040000 }, 2771 {0x00007850, 0x6d8c6dba},
2770 { 0x00007858, 0xdb003012 }, 2772 {0x00007854, 0x00040000},
2771 { 0x0000785c, 0x04924914 }, 2773 {0x00007858, 0xdb003012},
2772 { 0x00007860, 0x21084210 }, 2774 {0x0000785c, 0x04924914},
2773 { 0x00007864, 0xf7d7ffde }, 2775 {0x00007860, 0x21084210},
2774 { 0x00007868, 0xc2034080 }, 2776 {0x00007864, 0xf7d7ffde},
2775 { 0x00007870, 0x10142c00 }, 2777 {0x00007868, 0xc2034080},
2778 {0x00007870, 0x10142c00},
2776}; 2779};
2777 2780
2778static const u32 ar9285Modes_high_power_tx_gain_9285_1_2[][6] = { 2781static const u32 ar9285Modes_high_power_tx_gain_9285_1_2[][6] = {
2779 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 2782 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2780 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2783 {0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000},
2781 { 0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000 }, 2784 {0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000},
2782 { 0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000 }, 2785 {0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000},
2783 { 0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000 }, 2786 {0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000},
2784 { 0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000 }, 2787 {0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000},
2785 { 0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000 }, 2788 {0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000},
2786 { 0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000 }, 2789 {0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000},
2787 { 0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000 }, 2790 {0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000},
2788 { 0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000 }, 2791 {0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000},
2789 { 0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000 }, 2792 {0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000},
2790 { 0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000 }, 2793 {0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000},
2791 { 0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000 }, 2794 {0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000},
2792 { 0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000 }, 2795 {0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000},
2793 { 0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000 }, 2796 {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000},
2794 { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, 2797 {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000},
2795 { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, 2798 {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2796 { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2799 {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2797 { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2800 {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2798 { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2801 {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2799 { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2802 {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2800 { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2803 {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2801 { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2804 {0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8},
2802 { 0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8 }, 2805 {0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b},
2803 { 0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b }, 2806 {0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e},
2804 { 0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e }, 2807 {0x00007838, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803},
2805 { 0x00007838, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803, 0xfac68803 }, 2808 {0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe},
2806 { 0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe }, 2809 {0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20},
2807 { 0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20 }, 2810 {0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe},
2808 { 0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe }, 2811 {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00},
2809 { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, 2812 {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652},
2810 { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652 }, 2813 {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7},
2811 { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, 2814 {0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7},
2812 { 0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7 }, 2815 {0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7},
2813 { 0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, 2816 {0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7},
2814 { 0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, 2817 {0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7},
2815 { 0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, 2818 {0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7},
2816 { 0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 },
2817}; 2819};
2818 2820
2819static const u32 ar9285Modes_original_tx_gain_9285_1_2[][6] = { 2821static const u32 ar9285Modes_original_tx_gain_9285_1_2[][6] = {
2820 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 2822 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2821 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2823 {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000},
2822 { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, 2824 {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000},
2823 { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, 2825 {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000},
2824 { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, 2826 {0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000},
2825 { 0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000 }, 2827 {0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000},
2826 { 0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000 }, 2828 {0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000},
2827 { 0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000 }, 2829 {0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000},
2828 { 0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000 }, 2830 {0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000},
2829 { 0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000 }, 2831 {0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000},
2830 { 0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000 }, 2832 {0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000},
2831 { 0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000 }, 2833 {0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000},
2832 { 0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000 }, 2834 {0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000},
2833 { 0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000 }, 2835 {0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000},
2834 { 0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000 }, 2836 {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000},
2835 { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, 2837 {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000},
2836 { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, 2838 {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2837 { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2839 {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2838 { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2840 {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2839 { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2841 {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2840 { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2842 {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2841 { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2843 {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2842 { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2844 {0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8},
2843 { 0x00007814, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8, 0x924934a8 }, 2845 {0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b},
2844 { 0x00007828, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b, 0x26d2491b }, 2846 {0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e},
2845 { 0x00007830, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e, 0xedb6d96e }, 2847 {0x00007838, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801},
2846 { 0x00007838, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801, 0xfac68801 }, 2848 {0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe},
2847 { 0x0000783c, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe, 0x0001fffe }, 2849 {0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20},
2848 { 0x00007840, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20, 0xffeb1a20 }, 2850 {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4},
2849 { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, 2851 {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04},
2850 { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, 2852 {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652},
2851 { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652 }, 2853 {0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c},
2852 { 0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, 2854 {0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c},
2853 { 0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c }, 2855 {0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c},
2854 { 0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, 2856 {0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c},
2855 { 0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, 2857 {0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c},
2856 { 0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, 2858 {0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c},
2857 { 0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c },
2858}; 2859};
2859 2860
2860static const u32 ar9285Modes_XE2_0_normal_power[][6] = { 2861static const u32 ar9285Modes_XE2_0_normal_power[][6] = {
2861 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2862 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2862 { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, 2863 {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000},
2863 { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, 2864 {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000},
2864 { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, 2865 {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000},
2865 { 0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000 }, 2866 {0x0000a310, 0x00000000, 0x00000000, 0x00022618, 0x00022618, 0x00000000},
2866 { 0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000 }, 2867 {0x0000a314, 0x00000000, 0x00000000, 0x0002a6c9, 0x0002a6c9, 0x00000000},
2867 { 0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000 }, 2868 {0x0000a318, 0x00000000, 0x00000000, 0x00031710, 0x00031710, 0x00000000},
2868 { 0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000 }, 2869 {0x0000a31c, 0x00000000, 0x00000000, 0x00035718, 0x00035718, 0x00000000},
2869 { 0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000 }, 2870 {0x0000a320, 0x00000000, 0x00000000, 0x00038758, 0x00038758, 0x00000000},
2870 { 0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000 }, 2871 {0x0000a324, 0x00000000, 0x00000000, 0x0003c75a, 0x0003c75a, 0x00000000},
2871 { 0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000 }, 2872 {0x0000a328, 0x00000000, 0x00000000, 0x0004075c, 0x0004075c, 0x00000000},
2872 { 0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000 }, 2873 {0x0000a32c, 0x00000000, 0x00000000, 0x0004475e, 0x0004475e, 0x00000000},
2873 { 0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000 }, 2874 {0x0000a330, 0x00000000, 0x00000000, 0x0004679f, 0x0004679f, 0x00000000},
2874 { 0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000 }, 2875 {0x0000a334, 0x00000000, 0x00000000, 0x000487df, 0x000487df, 0x00000000},
2875 { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, 2876 {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000},
2876 { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, 2877 {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000},
2877 { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2878 {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2878 { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2879 {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2879 { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2880 {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2880 { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2881 {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2881 { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2882 {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2882 { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2883 {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2883 { 0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8 }, 2884 {0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8},
2884 { 0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b }, 2885 {0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b},
2885 { 0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6dbae }, 2886 {0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6dbae},
2886 { 0x00007838, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441 }, 2887 {0x00007838, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441, 0xdac71441},
2887 { 0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe }, 2888 {0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe},
2888 { 0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c }, 2889 {0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c},
2889 { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, 2890 {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4},
2890 { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, 2891 {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04},
2891 { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652 }, 2892 {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a21a652, 0x0a21a652, 0x0a22a652},
2892 { 0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, 2893 {0x0000a278, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c},
2893 { 0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c }, 2894 {0x0000a27c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c, 0x050e039c},
2894 { 0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, 2895 {0x0000a394, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c},
2895 { 0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, 2896 {0x0000a398, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c},
2896 { 0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c }, 2897 {0x0000a3dc, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c, 0x39ce739c},
2897 { 0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c }, 2898 {0x0000a3e0, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c, 0x0000039c},
2898}; 2899};
2899 2900
2900static const u32 ar9285Modes_XE2_0_high_power[][6] = { 2901static const u32 ar9285Modes_XE2_0_high_power[][6] = {
2901 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 2902 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2902 { 0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000 }, 2903 {0x0000a304, 0x00000000, 0x00000000, 0x00006200, 0x00006200, 0x00000000},
2903 { 0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000 }, 2904 {0x0000a308, 0x00000000, 0x00000000, 0x00008201, 0x00008201, 0x00000000},
2904 { 0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000 }, 2905 {0x0000a30c, 0x00000000, 0x00000000, 0x0000b240, 0x0000b240, 0x00000000},
2905 { 0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000 }, 2906 {0x0000a310, 0x00000000, 0x00000000, 0x0000d241, 0x0000d241, 0x00000000},
2906 { 0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000 }, 2907 {0x0000a314, 0x00000000, 0x00000000, 0x0000f600, 0x0000f600, 0x00000000},
2907 { 0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000 }, 2908 {0x0000a318, 0x00000000, 0x00000000, 0x00012800, 0x00012800, 0x00000000},
2908 { 0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000 }, 2909 {0x0000a31c, 0x00000000, 0x00000000, 0x00016802, 0x00016802, 0x00000000},
2909 { 0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000 }, 2910 {0x0000a320, 0x00000000, 0x00000000, 0x0001b805, 0x0001b805, 0x00000000},
2910 { 0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000 }, 2911 {0x0000a324, 0x00000000, 0x00000000, 0x00021a80, 0x00021a80, 0x00000000},
2911 { 0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000 }, 2912 {0x0000a328, 0x00000000, 0x00000000, 0x00028b00, 0x00028b00, 0x00000000},
2912 { 0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000 }, 2913 {0x0000a32c, 0x00000000, 0x00000000, 0x0002ab40, 0x0002ab40, 0x00000000},
2913 { 0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000 }, 2914 {0x0000a330, 0x00000000, 0x00000000, 0x0002cd80, 0x0002cd80, 0x00000000},
2914 { 0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000 }, 2915 {0x0000a334, 0x00000000, 0x00000000, 0x00033d82, 0x00033d82, 0x00000000},
2915 { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, 2916 {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000},
2916 { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, 2917 {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000},
2917 { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2918 {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2918 { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2919 {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2919 { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2920 {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2920 { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2921 {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2921 { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2922 {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2922 { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 2923 {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
2923 { 0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8 }, 2924 {0x00007814, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8, 0x92497ca8},
2924 { 0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b }, 2925 {0x00007828, 0x4ad2491b, 0x4ad2491b, 0x2ad2491b, 0x4ad2491b, 0x4ad2491b},
2925 { 0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e }, 2926 {0x00007830, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e, 0xedb6da6e},
2926 { 0x00007838, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443 }, 2927 {0x00007838, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443, 0xdac71443},
2927 { 0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe }, 2928 {0x0000783c, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe, 0x2481f6fe},
2928 { 0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c }, 2929 {0x00007840, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c, 0xba5f638c},
2929 { 0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe }, 2930 {0x0000786c, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe, 0x08609ebe},
2930 { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, 2931 {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00},
2931 { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652 }, 2932 {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a216652, 0x0a216652, 0x0a22a652},
2932 { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, 2933 {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7},
2933 { 0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7 }, 2934 {0x0000a27c, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7, 0x050380e7},
2934 { 0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, 2935 {0x0000a394, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7},
2935 { 0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, 2936 {0x0000a398, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7},
2936 { 0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, 2937 {0x0000a3dc, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7},
2937 { 0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7 }, 2938 {0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7},
2938}; 2939};
2939 2940
2940static const u32 ar9285PciePhy_clkreq_always_on_L1_9285_1_2[][2] = { 2941static const u32 ar9285PciePhy_clkreq_always_on_L1_9285_1_2[][2] = {
2941 {0x00004040, 0x9248fd00 }, 2942 /* Addr allmodes */
2942 {0x00004040, 0x24924924 }, 2943 {0x00004040, 0x9248fd00},
2943 {0x00004040, 0xa8000019 }, 2944 {0x00004040, 0x24924924},
2944 {0x00004040, 0x13160820 }, 2945 {0x00004040, 0xa8000019},
2945 {0x00004040, 0xe5980560 }, 2946 {0x00004040, 0x13160820},
2946 {0x00004040, 0xc01dcffd }, 2947 {0x00004040, 0xe5980560},
2947 {0x00004040, 0x1aaabe41 }, 2948 {0x00004040, 0xc01dcffd},
2948 {0x00004040, 0xbe105554 }, 2949 {0x00004040, 0x1aaabe41},
2949 {0x00004040, 0x00043007 }, 2950 {0x00004040, 0xbe105554},
2950 {0x00004044, 0x00000000 }, 2951 {0x00004040, 0x00043007},
2952 {0x00004044, 0x00000000},
2951}; 2953};
2952 2954
2953static const u32 ar9285PciePhy_clkreq_off_L1_9285_1_2[][2] = { 2955static const u32 ar9285PciePhy_clkreq_off_L1_9285_1_2[][2] = {
2954 {0x00004040, 0x9248fd00 }, 2956 /* Addr allmodes */
2955 {0x00004040, 0x24924924 }, 2957 {0x00004040, 0x9248fd00},
2956 {0x00004040, 0xa8000019 }, 2958 {0x00004040, 0x24924924},
2957 {0x00004040, 0x13160820 }, 2959 {0x00004040, 0xa8000019},
2958 {0x00004040, 0xe5980560 }, 2960 {0x00004040, 0x13160820},
2959 {0x00004040, 0xc01dcffc }, 2961 {0x00004040, 0xe5980560},
2960 {0x00004040, 0x1aaabe41 }, 2962 {0x00004040, 0xc01dcffc},
2961 {0x00004040, 0xbe105554 }, 2963 {0x00004040, 0x1aaabe41},
2962 {0x00004040, 0x00043007 }, 2964 {0x00004040, 0xbe105554},
2963 {0x00004044, 0x00000000 }, 2965 {0x00004040, 0x00043007},
2966 {0x00004044, 0x00000000},
2964}; 2967};
2965 2968
2966/* AR9287 Revision 10 */
2967static const u32 ar9287Modes_9287_1_0[][6] = { 2969static const u32 ar9287Modes_9287_1_0[][6] = {
2968 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 2970 {0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0},
2969 { 0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0 }, 2971 {0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0},
2970 { 0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0 }, 2972 {0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180},
2971 { 0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180 }, 2973 {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008},
2972 { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, 2974 {0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0},
2973 { 0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0 }, 2975 {0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f},
2974 { 0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f }, 2976 {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810},
2975 { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, 2977 {0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a},
2976 { 0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a }, 2978 {0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880},
2977 { 0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880 }, 2979 {0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303},
2978 { 0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303 }, 2980 {0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200},
2979 { 0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200 }, 2981 {0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e},
2980 { 0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e }, 2982 {0x00009828, 0x00000000, 0x00000000, 0x0a020001, 0x0a020001, 0x0a020001},
2981 { 0x00009828, 0x00000000, 0x00000000, 0x0a020001, 0x0a020001, 0x0a020001 }, 2983 {0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e},
2982 { 0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 2984 {0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007},
2983 { 0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007 }, 2985 {0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e},
2984 { 0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e }, 2986 {0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0},
2985 { 0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0 }, 2987 {0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2},
2986 { 0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, 2988 {0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e},
2987 { 0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, 2989 {0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e},
2988 { 0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e }, 2990 {0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18},
2989 { 0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18 }, 2991 {0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
2990 { 0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 2992 {0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
2991 { 0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, 2993 {0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881},
2992 { 0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881 }, 2994 {0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0},
2993 { 0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0 }, 2995 {0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016},
2994 { 0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016 }, 2996 {0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d},
2995 { 0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, 2997 {0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010},
2996 { 0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010 }, 2998 {0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010},
2997 { 0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, 2999 {0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010},
2998 { 0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, 3000 {0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210},
2999 { 0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210 }, 3001 {0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce},
3000 { 0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce }, 3002 {0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c},
3001 { 0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c }, 3003 {0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00},
3002 { 0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00 }, 3004 {0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
3003 { 0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 3005 {0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444},
3004 { 0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444 }, 3006 {0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3005 { 0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 3007 {0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3006 { 0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 3008 {0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a},
3007 { 0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a }, 3009 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
3008 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 3010 {0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000},
3009 { 0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000 }, 3011 {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e},
3010 { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, 3012 {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3011 { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
3012}; 3013};
3013 3014
3014static const u32 ar9287Common_9287_1_0[][2] = { 3015static const u32 ar9287Common_9287_1_0[][2] = {
3015 { 0x0000000c, 0x00000000 }, 3016 /* Addr allmodes */
3016 { 0x00000030, 0x00020015 }, 3017 {0x0000000c, 0x00000000},
3017 { 0x00000034, 0x00000005 }, 3018 {0x00000030, 0x00020015},
3018 { 0x00000040, 0x00000000 }, 3019 {0x00000034, 0x00000005},
3019 { 0x00000044, 0x00000008 }, 3020 {0x00000040, 0x00000000},
3020 { 0x00000048, 0x00000008 }, 3021 {0x00000044, 0x00000008},
3021 { 0x0000004c, 0x00000010 }, 3022 {0x00000048, 0x00000008},
3022 { 0x00000050, 0x00000000 }, 3023 {0x0000004c, 0x00000010},
3023 { 0x00000054, 0x0000001f }, 3024 {0x00000050, 0x00000000},
3024 { 0x00000800, 0x00000000 }, 3025 {0x00000054, 0x0000001f},
3025 { 0x00000804, 0x00000000 }, 3026 {0x00000800, 0x00000000},
3026 { 0x00000808, 0x00000000 }, 3027 {0x00000804, 0x00000000},
3027 { 0x0000080c, 0x00000000 }, 3028 {0x00000808, 0x00000000},
3028 { 0x00000810, 0x00000000 }, 3029 {0x0000080c, 0x00000000},
3029 { 0x00000814, 0x00000000 }, 3030 {0x00000810, 0x00000000},
3030 { 0x00000818, 0x00000000 }, 3031 {0x00000814, 0x00000000},
3031 { 0x0000081c, 0x00000000 }, 3032 {0x00000818, 0x00000000},
3032 { 0x00000820, 0x00000000 }, 3033 {0x0000081c, 0x00000000},
3033 { 0x00000824, 0x00000000 }, 3034 {0x00000820, 0x00000000},
3034 { 0x00001040, 0x002ffc0f }, 3035 {0x00000824, 0x00000000},
3035 { 0x00001044, 0x002ffc0f }, 3036 {0x00001040, 0x002ffc0f},
3036 { 0x00001048, 0x002ffc0f }, 3037 {0x00001044, 0x002ffc0f},
3037 { 0x0000104c, 0x002ffc0f }, 3038 {0x00001048, 0x002ffc0f},
3038 { 0x00001050, 0x002ffc0f }, 3039 {0x0000104c, 0x002ffc0f},
3039 { 0x00001054, 0x002ffc0f }, 3040 {0x00001050, 0x002ffc0f},
3040 { 0x00001058, 0x002ffc0f }, 3041 {0x00001054, 0x002ffc0f},
3041 { 0x0000105c, 0x002ffc0f }, 3042 {0x00001058, 0x002ffc0f},
3042 { 0x00001060, 0x002ffc0f }, 3043 {0x0000105c, 0x002ffc0f},
3043 { 0x00001064, 0x002ffc0f }, 3044 {0x00001060, 0x002ffc0f},
3044 { 0x00001230, 0x00000000 }, 3045 {0x00001064, 0x002ffc0f},
3045 { 0x00001270, 0x00000000 }, 3046 {0x00001230, 0x00000000},
3046 { 0x00001038, 0x00000000 }, 3047 {0x00001270, 0x00000000},
3047 { 0x00001078, 0x00000000 }, 3048 {0x00001038, 0x00000000},
3048 { 0x000010b8, 0x00000000 }, 3049 {0x00001078, 0x00000000},
3049 { 0x000010f8, 0x00000000 }, 3050 {0x000010b8, 0x00000000},
3050 { 0x00001138, 0x00000000 }, 3051 {0x000010f8, 0x00000000},
3051 { 0x00001178, 0x00000000 }, 3052 {0x00001138, 0x00000000},
3052 { 0x000011b8, 0x00000000 }, 3053 {0x00001178, 0x00000000},
3053 { 0x000011f8, 0x00000000 }, 3054 {0x000011b8, 0x00000000},
3054 { 0x00001238, 0x00000000 }, 3055 {0x000011f8, 0x00000000},
3055 { 0x00001278, 0x00000000 }, 3056 {0x00001238, 0x00000000},
3056 { 0x000012b8, 0x00000000 }, 3057 {0x00001278, 0x00000000},
3057 { 0x000012f8, 0x00000000 }, 3058 {0x000012b8, 0x00000000},
3058 { 0x00001338, 0x00000000 }, 3059 {0x000012f8, 0x00000000},
3059 { 0x00001378, 0x00000000 }, 3060 {0x00001338, 0x00000000},
3060 { 0x000013b8, 0x00000000 }, 3061 {0x00001378, 0x00000000},
3061 { 0x000013f8, 0x00000000 }, 3062 {0x000013b8, 0x00000000},
3062 { 0x00001438, 0x00000000 }, 3063 {0x000013f8, 0x00000000},
3063 { 0x00001478, 0x00000000 }, 3064 {0x00001438, 0x00000000},
3064 { 0x000014b8, 0x00000000 }, 3065 {0x00001478, 0x00000000},
3065 { 0x000014f8, 0x00000000 }, 3066 {0x000014b8, 0x00000000},
3066 { 0x00001538, 0x00000000 }, 3067 {0x000014f8, 0x00000000},
3067 { 0x00001578, 0x00000000 }, 3068 {0x00001538, 0x00000000},
3068 { 0x000015b8, 0x00000000 }, 3069 {0x00001578, 0x00000000},
3069 { 0x000015f8, 0x00000000 }, 3070 {0x000015b8, 0x00000000},
3070 { 0x00001638, 0x00000000 }, 3071 {0x000015f8, 0x00000000},
3071 { 0x00001678, 0x00000000 }, 3072 {0x00001638, 0x00000000},
3072 { 0x000016b8, 0x00000000 }, 3073 {0x00001678, 0x00000000},
3073 { 0x000016f8, 0x00000000 }, 3074 {0x000016b8, 0x00000000},
3074 { 0x00001738, 0x00000000 }, 3075 {0x000016f8, 0x00000000},
3075 { 0x00001778, 0x00000000 }, 3076 {0x00001738, 0x00000000},
3076 { 0x000017b8, 0x00000000 }, 3077 {0x00001778, 0x00000000},
3077 { 0x000017f8, 0x00000000 }, 3078 {0x000017b8, 0x00000000},
3078 { 0x0000103c, 0x00000000 }, 3079 {0x000017f8, 0x00000000},
3079 { 0x0000107c, 0x00000000 }, 3080 {0x0000103c, 0x00000000},
3080 { 0x000010bc, 0x00000000 }, 3081 {0x0000107c, 0x00000000},
3081 { 0x000010fc, 0x00000000 }, 3082 {0x000010bc, 0x00000000},
3082 { 0x0000113c, 0x00000000 }, 3083 {0x000010fc, 0x00000000},
3083 { 0x0000117c, 0x00000000 }, 3084 {0x0000113c, 0x00000000},
3084 { 0x000011bc, 0x00000000 }, 3085 {0x0000117c, 0x00000000},
3085 { 0x000011fc, 0x00000000 }, 3086 {0x000011bc, 0x00000000},
3086 { 0x0000123c, 0x00000000 }, 3087 {0x000011fc, 0x00000000},
3087 { 0x0000127c, 0x00000000 }, 3088 {0x0000123c, 0x00000000},
3088 { 0x000012bc, 0x00000000 }, 3089 {0x0000127c, 0x00000000},
3089 { 0x000012fc, 0x00000000 }, 3090 {0x000012bc, 0x00000000},
3090 { 0x0000133c, 0x00000000 }, 3091 {0x000012fc, 0x00000000},
3091 { 0x0000137c, 0x00000000 }, 3092 {0x0000133c, 0x00000000},
3092 { 0x000013bc, 0x00000000 }, 3093 {0x0000137c, 0x00000000},
3093 { 0x000013fc, 0x00000000 }, 3094 {0x000013bc, 0x00000000},
3094 { 0x0000143c, 0x00000000 }, 3095 {0x000013fc, 0x00000000},
3095 { 0x0000147c, 0x00000000 }, 3096 {0x0000143c, 0x00000000},
3096 { 0x00004030, 0x00000002 }, 3097 {0x0000147c, 0x00000000},
3097 { 0x0000403c, 0x00000002 }, 3098 {0x00004030, 0x00000002},
3098 { 0x00004024, 0x0000001f }, 3099 {0x0000403c, 0x00000002},
3099 { 0x00004060, 0x00000000 }, 3100 {0x00004024, 0x0000001f},
3100 { 0x00004064, 0x00000000 }, 3101 {0x00004060, 0x00000000},
3101 { 0x00007010, 0x00000033 }, 3102 {0x00004064, 0x00000000},
3102 { 0x00007020, 0x00000000 }, 3103 {0x00007010, 0x00000033},
3103 { 0x00007034, 0x00000002 }, 3104 {0x00007020, 0x00000000},
3104 { 0x00007038, 0x000004c2 }, 3105 {0x00007034, 0x00000002},
3105 { 0x00008004, 0x00000000 }, 3106 {0x00007038, 0x000004c2},
3106 { 0x00008008, 0x00000000 }, 3107 {0x00008004, 0x00000000},
3107 { 0x0000800c, 0x00000000 }, 3108 {0x00008008, 0x00000000},
3108 { 0x00008018, 0x00000700 }, 3109 {0x0000800c, 0x00000000},
3109 { 0x00008020, 0x00000000 }, 3110 {0x00008018, 0x00000700},
3110 { 0x00008038, 0x00000000 }, 3111 {0x00008020, 0x00000000},
3111 { 0x0000803c, 0x00000000 }, 3112 {0x00008038, 0x00000000},
3112 { 0x00008048, 0x40000000 }, 3113 {0x0000803c, 0x00000000},
3113 { 0x00008054, 0x00000000 }, 3114 {0x00008048, 0x40000000},
3114 { 0x00008058, 0x00000000 }, 3115 {0x00008054, 0x00000000},
3115 { 0x0000805c, 0x000fc78f }, 3116 {0x00008058, 0x00000000},
3116 { 0x00008060, 0x0000000f }, 3117 {0x0000805c, 0x000fc78f},
3117 { 0x00008064, 0x00000000 }, 3118 {0x00008060, 0x0000000f},
3118 { 0x00008070, 0x00000000 }, 3119 {0x00008064, 0x00000000},
3119 { 0x000080c0, 0x2a80001a }, 3120 {0x00008070, 0x00000000},
3120 { 0x000080c4, 0x05dc01e0 }, 3121 {0x000080c0, 0x2a80001a},
3121 { 0x000080c8, 0x1f402710 }, 3122 {0x000080c4, 0x05dc01e0},
3122 { 0x000080cc, 0x01f40000 }, 3123 {0x000080c8, 0x1f402710},
3123 { 0x000080d0, 0x00001e00 }, 3124 {0x000080cc, 0x01f40000},
3124 { 0x000080d4, 0x00000000 }, 3125 {0x000080d0, 0x00001e00},
3125 { 0x000080d8, 0x00400000 }, 3126 {0x000080d4, 0x00000000},
3126 { 0x000080e0, 0xffffffff }, 3127 {0x000080d8, 0x00400000},
3127 { 0x000080e4, 0x0000ffff }, 3128 {0x000080e0, 0xffffffff},
3128 { 0x000080e8, 0x003f3f3f }, 3129 {0x000080e4, 0x0000ffff},
3129 { 0x000080ec, 0x00000000 }, 3130 {0x000080e8, 0x003f3f3f},
3130 { 0x000080f0, 0x00000000 }, 3131 {0x000080ec, 0x00000000},
3131 { 0x000080f4, 0x00000000 }, 3132 {0x000080f0, 0x00000000},
3132 { 0x000080f8, 0x00000000 }, 3133 {0x000080f4, 0x00000000},
3133 { 0x000080fc, 0x00020000 }, 3134 {0x000080f8, 0x00000000},
3134 { 0x00008100, 0x00020000 }, 3135 {0x000080fc, 0x00020000},
3135 { 0x00008104, 0x00000001 }, 3136 {0x00008100, 0x00020000},
3136 { 0x00008108, 0x00000052 }, 3137 {0x00008104, 0x00000001},
3137 { 0x0000810c, 0x00000000 }, 3138 {0x00008108, 0x00000052},
3138 { 0x00008110, 0x00000168 }, 3139 {0x0000810c, 0x00000000},
3139 { 0x00008118, 0x000100aa }, 3140 {0x00008110, 0x00000168},
3140 { 0x0000811c, 0x00003210 }, 3141 {0x00008118, 0x000100aa},
3141 { 0x00008124, 0x00000000 }, 3142 {0x0000811c, 0x00003210},
3142 { 0x00008128, 0x00000000 }, 3143 {0x00008124, 0x00000000},
3143 { 0x0000812c, 0x00000000 }, 3144 {0x00008128, 0x00000000},
3144 { 0x00008130, 0x00000000 }, 3145 {0x0000812c, 0x00000000},
3145 { 0x00008134, 0x00000000 }, 3146 {0x00008130, 0x00000000},
3146 { 0x00008138, 0x00000000 }, 3147 {0x00008134, 0x00000000},
3147 { 0x0000813c, 0x00000000 }, 3148 {0x00008138, 0x00000000},
3148 { 0x00008144, 0xffffffff }, 3149 {0x0000813c, 0x00000000},
3149 { 0x00008168, 0x00000000 }, 3150 {0x00008144, 0xffffffff},
3150 { 0x0000816c, 0x00000000 }, 3151 {0x00008168, 0x00000000},
3151 { 0x00008170, 0x18487320 }, 3152 {0x0000816c, 0x00000000},
3152 { 0x00008174, 0xfaa4fa50 }, 3153 {0x00008170, 0x18487320},
3153 { 0x00008178, 0x00000100 }, 3154 {0x00008174, 0xfaa4fa50},
3154 { 0x0000817c, 0x00000000 }, 3155 {0x00008178, 0x00000100},
3155 { 0x000081c0, 0x00000000 }, 3156 {0x0000817c, 0x00000000},
3156 { 0x000081c4, 0x00000000 }, 3157 {0x000081c0, 0x00000000},
3157 { 0x000081d4, 0x00000000 }, 3158 {0x000081c4, 0x00000000},
3158 { 0x000081ec, 0x00000000 }, 3159 {0x000081d4, 0x00000000},
3159 { 0x000081f0, 0x00000000 }, 3160 {0x000081ec, 0x00000000},
3160 { 0x000081f4, 0x00000000 }, 3161 {0x000081f0, 0x00000000},
3161 { 0x000081f8, 0x00000000 }, 3162 {0x000081f4, 0x00000000},
3162 { 0x000081fc, 0x00000000 }, 3163 {0x000081f8, 0x00000000},
3163 { 0x00008200, 0x00000000 }, 3164 {0x000081fc, 0x00000000},
3164 { 0x00008204, 0x00000000 }, 3165 {0x00008200, 0x00000000},
3165 { 0x00008208, 0x00000000 }, 3166 {0x00008204, 0x00000000},
3166 { 0x0000820c, 0x00000000 }, 3167 {0x00008208, 0x00000000},
3167 { 0x00008210, 0x00000000 }, 3168 {0x0000820c, 0x00000000},
3168 { 0x00008214, 0x00000000 }, 3169 {0x00008210, 0x00000000},
3169 { 0x00008218, 0x00000000 }, 3170 {0x00008214, 0x00000000},
3170 { 0x0000821c, 0x00000000 }, 3171 {0x00008218, 0x00000000},
3171 { 0x00008220, 0x00000000 }, 3172 {0x0000821c, 0x00000000},
3172 { 0x00008224, 0x00000000 }, 3173 {0x00008220, 0x00000000},
3173 { 0x00008228, 0x00000000 }, 3174 {0x00008224, 0x00000000},
3174 { 0x0000822c, 0x00000000 }, 3175 {0x00008228, 0x00000000},
3175 { 0x00008230, 0x00000000 }, 3176 {0x0000822c, 0x00000000},
3176 { 0x00008234, 0x00000000 }, 3177 {0x00008230, 0x00000000},
3177 { 0x00008238, 0x00000000 }, 3178 {0x00008234, 0x00000000},
3178 { 0x0000823c, 0x00000000 }, 3179 {0x00008238, 0x00000000},
3179 { 0x00008240, 0x00100000 }, 3180 {0x0000823c, 0x00000000},
3180 { 0x00008244, 0x0010f400 }, 3181 {0x00008240, 0x00100000},
3181 { 0x00008248, 0x00000100 }, 3182 {0x00008244, 0x0010f400},
3182 { 0x0000824c, 0x0001e800 }, 3183 {0x00008248, 0x00000100},
3183 { 0x00008250, 0x00000000 }, 3184 {0x0000824c, 0x0001e800},
3184 { 0x00008254, 0x00000000 }, 3185 {0x00008250, 0x00000000},
3185 { 0x00008258, 0x00000000 }, 3186 {0x00008254, 0x00000000},
3186 { 0x0000825c, 0x400000ff }, 3187 {0x00008258, 0x00000000},
3187 { 0x00008260, 0x00080922 }, 3188 {0x0000825c, 0x400000ff},
3188 { 0x00008264, 0x88a00010 }, 3189 {0x00008260, 0x00080922},
3189 { 0x00008270, 0x00000000 }, 3190 {0x00008264, 0x88a00010},
3190 { 0x00008274, 0x40000000 }, 3191 {0x00008270, 0x00000000},
3191 { 0x00008278, 0x003e4180 }, 3192 {0x00008274, 0x40000000},
3192 { 0x0000827c, 0x00000000 }, 3193 {0x00008278, 0x003e4180},
3193 { 0x00008284, 0x0000002c }, 3194 {0x0000827c, 0x00000000},
3194 { 0x00008288, 0x0000002c }, 3195 {0x00008284, 0x0000002c},
3195 { 0x0000828c, 0x000000ff }, 3196 {0x00008288, 0x0000002c},
3196 { 0x00008294, 0x00000000 }, 3197 {0x0000828c, 0x000000ff},
3197 { 0x00008298, 0x00000000 }, 3198 {0x00008294, 0x00000000},
3198 { 0x0000829c, 0x00000000 }, 3199 {0x00008298, 0x00000000},
3199 { 0x00008300, 0x00000040 }, 3200 {0x0000829c, 0x00000000},
3200 { 0x00008314, 0x00000000 }, 3201 {0x00008300, 0x00000040},
3201 { 0x00008328, 0x00000000 }, 3202 {0x00008314, 0x00000000},
3202 { 0x0000832c, 0x00000007 }, 3203 {0x00008328, 0x00000000},
3203 { 0x00008330, 0x00000302 }, 3204 {0x0000832c, 0x00000007},
3204 { 0x00008334, 0x00000e00 }, 3205 {0x00008330, 0x00000302},
3205 { 0x00008338, 0x00ff0000 }, 3206 {0x00008334, 0x00000e00},
3206 { 0x0000833c, 0x00000000 }, 3207 {0x00008338, 0x00ff0000},
3207 { 0x00008340, 0x000107ff }, 3208 {0x0000833c, 0x00000000},
3208 { 0x00008344, 0x01c81043 }, 3209 {0x00008340, 0x000107ff},
3209 { 0x00008360, 0xffffffff }, 3210 {0x00008344, 0x01c81043},
3210 { 0x00008364, 0xffffffff }, 3211 {0x00008360, 0xffffffff},
3211 { 0x00008368, 0x00000000 }, 3212 {0x00008364, 0xffffffff},
3212 { 0x00008370, 0x00000000 }, 3213 {0x00008368, 0x00000000},
3213 { 0x00008374, 0x000000ff }, 3214 {0x00008370, 0x00000000},
3214 { 0x00008378, 0x00000000 }, 3215 {0x00008374, 0x000000ff},
3215 { 0x0000837c, 0x00000000 }, 3216 {0x00008378, 0x00000000},
3216 { 0x00008380, 0xffffffff }, 3217 {0x0000837c, 0x00000000},
3217 { 0x00008384, 0xffffffff }, 3218 {0x00008380, 0xffffffff},
3218 { 0x00008390, 0x0fffffff }, 3219 {0x00008384, 0xffffffff},
3219 { 0x00008394, 0x0fffffff }, 3220 {0x00008390, 0x0fffffff},
3220 { 0x00008398, 0x00000000 }, 3221 {0x00008394, 0x0fffffff},
3221 { 0x0000839c, 0x00000000 }, 3222 {0x00008398, 0x00000000},
3222 { 0x000083a0, 0x00000000 }, 3223 {0x0000839c, 0x00000000},
3223 { 0x00009808, 0x00000000 }, 3224 {0x000083a0, 0x00000000},
3224 { 0x0000980c, 0xafe68e30 }, 3225 {0x00009808, 0x00000000},
3225 { 0x00009810, 0xfd14e000 }, 3226 {0x0000980c, 0xafe68e30},
3226 { 0x00009814, 0x9c0a9f6b }, 3227 {0x00009810, 0xfd14e000},
3227 { 0x0000981c, 0x00000000 }, 3228 {0x00009814, 0x9c0a9f6b},
3228 { 0x0000982c, 0x0000a000 }, 3229 {0x0000981c, 0x00000000},
3229 { 0x00009830, 0x00000000 }, 3230 {0x0000982c, 0x0000a000},
3230 { 0x0000983c, 0x00200400 }, 3231 {0x00009830, 0x00000000},
3231 { 0x0000984c, 0x0040233c }, 3232 {0x0000983c, 0x00200400},
3232 { 0x0000a84c, 0x0040233c }, 3233 {0x0000984c, 0x0040233c},
3233 { 0x00009854, 0x00000044 }, 3234 {0x0000a84c, 0x0040233c},
3234 { 0x00009900, 0x00000000 }, 3235 {0x00009854, 0x00000044},
3235 { 0x00009904, 0x00000000 }, 3236 {0x00009900, 0x00000000},
3236 { 0x00009908, 0x00000000 }, 3237 {0x00009904, 0x00000000},
3237 { 0x0000990c, 0x00000000 }, 3238 {0x00009908, 0x00000000},
3238 { 0x00009910, 0x10002310 }, 3239 {0x0000990c, 0x00000000},
3239 { 0x0000991c, 0x10000fff }, 3240 {0x00009910, 0x10002310},
3240 { 0x00009920, 0x04900000 }, 3241 {0x0000991c, 0x10000fff},
3241 { 0x0000a920, 0x04900000 }, 3242 {0x00009920, 0x04900000},
3242 { 0x00009928, 0x00000001 }, 3243 {0x0000a920, 0x04900000},
3243 { 0x0000992c, 0x00000004 }, 3244 {0x00009928, 0x00000001},
3244 { 0x00009930, 0x00000000 }, 3245 {0x0000992c, 0x00000004},
3245 { 0x0000a930, 0x00000000 }, 3246 {0x00009930, 0x00000000},
3246 { 0x00009934, 0x1e1f2022 }, 3247 {0x0000a930, 0x00000000},
3247 { 0x00009938, 0x0a0b0c0d }, 3248 {0x00009934, 0x1e1f2022},
3248 { 0x0000993c, 0x00000000 }, 3249 {0x00009938, 0x0a0b0c0d},
3249 { 0x00009948, 0x9280c00a }, 3250 {0x0000993c, 0x00000000},
3250 { 0x0000994c, 0x00020028 }, 3251 {0x00009948, 0x9280c00a},
3251 { 0x00009954, 0x5f3ca3de }, 3252 {0x0000994c, 0x00020028},
3252 { 0x00009958, 0x0108ecff }, 3253 {0x00009954, 0x5f3ca3de},
3253 { 0x00009940, 0x14750604 }, 3254 {0x00009958, 0x0108ecff},
3254 { 0x0000c95c, 0x004b6a8e }, 3255 {0x00009940, 0x14750604},
3255 { 0x00009970, 0x990bb515 }, 3256 {0x0000c95c, 0x004b6a8e},
3256 { 0x00009974, 0x00000000 }, 3257 {0x00009970, 0x990bb515},
3257 { 0x00009978, 0x00000001 }, 3258 {0x00009974, 0x00000000},
3258 { 0x0000997c, 0x00000000 }, 3259 {0x00009978, 0x00000001},
3259 { 0x000099a0, 0x00000000 }, 3260 {0x0000997c, 0x00000000},
3260 { 0x000099a4, 0x00000001 }, 3261 {0x000099a0, 0x00000000},
3261 { 0x000099a8, 0x201fff00 }, 3262 {0x000099a4, 0x00000001},
3262 { 0x000099ac, 0x0c6f0000 }, 3263 {0x000099a8, 0x201fff00},
3263 { 0x000099b0, 0x03051000 }, 3264 {0x000099ac, 0x0c6f0000},
3264 { 0x000099b4, 0x00000820 }, 3265 {0x000099b0, 0x03051000},
3265 { 0x000099c4, 0x06336f77 }, 3266 {0x000099b4, 0x00000820},
3266 { 0x000099c8, 0x6af65329 }, 3267 {0x000099c4, 0x06336f77},
3267 { 0x000099cc, 0x08f186c8 }, 3268 {0x000099c8, 0x6af65329},
3268 { 0x000099d0, 0x00046384 }, 3269 {0x000099cc, 0x08f186c8},
3269 { 0x000099dc, 0x00000000 }, 3270 {0x000099d0, 0x00046384},
3270 { 0x000099e0, 0x00000000 }, 3271 {0x000099dc, 0x00000000},
3271 { 0x000099e4, 0xaaaaaaaa }, 3272 {0x000099e0, 0x00000000},
3272 { 0x000099e8, 0x3c466478 }, 3273 {0x000099e4, 0xaaaaaaaa},
3273 { 0x000099ec, 0x0cc80caa }, 3274 {0x000099e8, 0x3c466478},
3274 { 0x000099f0, 0x00000000 }, 3275 {0x000099ec, 0x0cc80caa},
3275 { 0x000099fc, 0x00001042 }, 3276 {0x000099f0, 0x00000000},
3276 { 0x0000a1f4, 0x00fffeff }, 3277 {0x000099fc, 0x00001042},
3277 { 0x0000a1f8, 0x00f5f9ff }, 3278 {0x0000a1f4, 0x00fffeff},
3278 { 0x0000a1fc, 0xb79f6427 }, 3279 {0x0000a1f8, 0x00f5f9ff},
3279 { 0x0000a208, 0x803e4788 }, 3280 {0x0000a1fc, 0xb79f6427},
3280 { 0x0000a210, 0x4080a333 }, 3281 {0x0000a208, 0x803e4788},
3281 { 0x0000a214, 0x40206c10 }, 3282 {0x0000a210, 0x4080a333},
3282 { 0x0000a218, 0x009c4060 }, 3283 {0x0000a214, 0x40206c10},
3283 { 0x0000a220, 0x01834061 }, 3284 {0x0000a218, 0x009c4060},
3284 { 0x0000a224, 0x00000400 }, 3285 {0x0000a220, 0x01834061},
3285 { 0x0000a228, 0x000003b5 }, 3286 {0x0000a224, 0x00000400},
3286 { 0x0000a22c, 0x233f7180 }, 3287 {0x0000a228, 0x000003b5},
3287 { 0x0000a234, 0x20202020 }, 3288 {0x0000a22c, 0x233f7180},
3288 { 0x0000a238, 0x20202020 }, 3289 {0x0000a234, 0x20202020},
3289 { 0x0000a23c, 0x13c889af }, 3290 {0x0000a238, 0x20202020},
3290 { 0x0000a240, 0x38490a20 }, 3291 {0x0000a23c, 0x13c889af},
3291 { 0x0000a244, 0x00000000 }, 3292 {0x0000a240, 0x38490a20},
3292 { 0x0000a248, 0xfffffffc }, 3293 {0x0000a244, 0x00000000},
3293 { 0x0000a24c, 0x00000000 }, 3294 {0x0000a248, 0xfffffffc},
3294 { 0x0000a254, 0x00000000 }, 3295 {0x0000a24c, 0x00000000},
3295 { 0x0000a258, 0x0cdbd380 }, 3296 {0x0000a254, 0x00000000},
3296 { 0x0000a25c, 0x0f0f0f01 }, 3297 {0x0000a258, 0x0cdbd380},
3297 { 0x0000a260, 0xdfa91f01 }, 3298 {0x0000a25c, 0x0f0f0f01},
3298 { 0x0000a264, 0x00418a11 }, 3299 {0x0000a260, 0xdfa91f01},
3299 { 0x0000b264, 0x00418a11 }, 3300 {0x0000a264, 0x00418a11},
3300 { 0x0000a268, 0x00000000 }, 3301 {0x0000b264, 0x00418a11},
3301 { 0x0000a26c, 0x0e79e5c6 }, 3302 {0x0000a268, 0x00000000},
3302 { 0x0000b26c, 0x0e79e5c6 }, 3303 {0x0000a26c, 0x0e79e5c6},
3303 { 0x0000d270, 0x00820820 }, 3304 {0x0000b26c, 0x0e79e5c6},
3304 { 0x0000a278, 0x1ce739ce }, 3305 {0x0000d270, 0x00820820},
3305 { 0x0000a27c, 0x050701ce }, 3306 {0x0000a278, 0x1ce739ce},
3306 { 0x0000d35c, 0x07ffffef }, 3307 {0x0000a27c, 0x050701ce},
3307 { 0x0000d360, 0x0fffffe7 }, 3308 {0x0000d35c, 0x07ffffef},
3308 { 0x0000d364, 0x17ffffe5 }, 3309 {0x0000d360, 0x0fffffe7},
3309 { 0x0000d368, 0x1fffffe4 }, 3310 {0x0000d364, 0x17ffffe5},
3310 { 0x0000d36c, 0x37ffffe3 }, 3311 {0x0000d368, 0x1fffffe4},
3311 { 0x0000d370, 0x3fffffe3 }, 3312 {0x0000d36c, 0x37ffffe3},
3312 { 0x0000d374, 0x57ffffe3 }, 3313 {0x0000d370, 0x3fffffe3},
3313 { 0x0000d378, 0x5fffffe2 }, 3314 {0x0000d374, 0x57ffffe3},
3314 { 0x0000d37c, 0x7fffffe2 }, 3315 {0x0000d378, 0x5fffffe2},
3315 { 0x0000d380, 0x7f3c7bba }, 3316 {0x0000d37c, 0x7fffffe2},
3316 { 0x0000d384, 0xf3307ff0 }, 3317 {0x0000d380, 0x7f3c7bba},
3317 { 0x0000a388, 0x0c000000 }, 3318 {0x0000d384, 0xf3307ff0},
3318 { 0x0000a38c, 0x20202020 }, 3319 {0x0000a388, 0x0c000000},
3319 { 0x0000a390, 0x20202020 }, 3320 {0x0000a38c, 0x20202020},
3320 { 0x0000a394, 0x1ce739ce }, 3321 {0x0000a390, 0x20202020},
3321 { 0x0000a398, 0x000001ce }, 3322 {0x0000a394, 0x1ce739ce},
3322 { 0x0000b398, 0x000001ce }, 3323 {0x0000a398, 0x000001ce},
3323 { 0x0000a39c, 0x00000001 }, 3324 {0x0000b398, 0x000001ce},
3324 { 0x0000a3c8, 0x00000246 }, 3325 {0x0000a39c, 0x00000001},
3325 { 0x0000a3cc, 0x20202020 }, 3326 {0x0000a3c8, 0x00000246},
3326 { 0x0000a3d0, 0x20202020 }, 3327 {0x0000a3cc, 0x20202020},
3327 { 0x0000a3d4, 0x20202020 }, 3328 {0x0000a3d0, 0x20202020},
3328 { 0x0000a3dc, 0x1ce739ce }, 3329 {0x0000a3d4, 0x20202020},
3329 { 0x0000a3e0, 0x000001ce }, 3330 {0x0000a3dc, 0x1ce739ce},
3330 { 0x0000a3e4, 0x00000000 }, 3331 {0x0000a3e0, 0x000001ce},
3331 { 0x0000a3e8, 0x18c43433 }, 3332 {0x0000a3e4, 0x00000000},
3332 { 0x0000a3ec, 0x00f70081 }, 3333 {0x0000a3e8, 0x18c43433},
3333 { 0x0000a3f0, 0x01036a1e }, 3334 {0x0000a3ec, 0x00f70081},
3334 { 0x0000a3f4, 0x00000000 }, 3335 {0x0000a3f0, 0x01036a1e},
3335 { 0x0000b3f4, 0x00000000 }, 3336 {0x0000a3f4, 0x00000000},
3336 { 0x0000a7d8, 0x00000001 }, 3337 {0x0000b3f4, 0x00000000},
3337 { 0x00007800, 0x00000800 }, 3338 {0x0000a7d8, 0x00000001},
3338 { 0x00007804, 0x6c35ffb0 }, 3339 {0x00007800, 0x00000800},
3339 { 0x00007808, 0x6db6c000 }, 3340 {0x00007804, 0x6c35ffb0},
3340 { 0x0000780c, 0x6db6cb30 }, 3341 {0x00007808, 0x6db6c000},
3341 { 0x00007810, 0x6db6cb6c }, 3342 {0x0000780c, 0x6db6cb30},
3342 { 0x00007814, 0x0501e200 }, 3343 {0x00007810, 0x6db6cb6c},
3343 { 0x00007818, 0x0094128d }, 3344 {0x00007814, 0x0501e200},
3344 { 0x0000781c, 0x976ee392 }, 3345 {0x00007818, 0x0094128d},
3345 { 0x00007820, 0xf75ff6fc }, 3346 {0x0000781c, 0x976ee392},
3346 { 0x00007824, 0x00040000 }, 3347 {0x00007820, 0xf75ff6fc},
3347 { 0x00007828, 0xdb003012 }, 3348 {0x00007824, 0x00040000},
3348 { 0x0000782c, 0x04924914 }, 3349 {0x00007828, 0xdb003012},
3349 { 0x00007830, 0x21084210 }, 3350 {0x0000782c, 0x04924914},
3350 { 0x00007834, 0x00140000 }, 3351 {0x00007830, 0x21084210},
3351 { 0x00007838, 0x0e4548d8 }, 3352 {0x00007834, 0x00140000},
3352 { 0x0000783c, 0x54214514 }, 3353 {0x00007838, 0x0e4548d8},
3353 { 0x00007840, 0x02025820 }, 3354 {0x0000783c, 0x54214514},
3354 { 0x00007844, 0x71c0d388 }, 3355 {0x00007840, 0x02025820},
3355 { 0x00007848, 0x934934a8 }, 3356 {0x00007844, 0x71c0d388},
3356 { 0x00007850, 0x00000000 }, 3357 {0x00007848, 0x934934a8},
3357 { 0x00007854, 0x00000800 }, 3358 {0x00007850, 0x00000000},
3358 { 0x00007858, 0x6c35ffb0 }, 3359 {0x00007854, 0x00000800},
3359 { 0x0000785c, 0x6db6c000 }, 3360 {0x00007858, 0x6c35ffb0},
3360 { 0x00007860, 0x6db6cb2c }, 3361 {0x0000785c, 0x6db6c000},
3361 { 0x00007864, 0x6db6cb6c }, 3362 {0x00007860, 0x6db6cb2c},
3362 { 0x00007868, 0x0501e200 }, 3363 {0x00007864, 0x6db6cb6c},
3363 { 0x0000786c, 0x0094128d }, 3364 {0x00007868, 0x0501e200},
3364 { 0x00007870, 0x976ee392 }, 3365 {0x0000786c, 0x0094128d},
3365 { 0x00007874, 0xf75ff6fc }, 3366 {0x00007870, 0x976ee392},
3366 { 0x00007878, 0x00040000 }, 3367 {0x00007874, 0xf75ff6fc},
3367 { 0x0000787c, 0xdb003012 }, 3368 {0x00007878, 0x00040000},
3368 { 0x00007880, 0x04924914 }, 3369 {0x0000787c, 0xdb003012},
3369 { 0x00007884, 0x21084210 }, 3370 {0x00007880, 0x04924914},
3370 { 0x00007888, 0x001b6db0 }, 3371 {0x00007884, 0x21084210},
3371 { 0x0000788c, 0x00376b63 }, 3372 {0x00007888, 0x001b6db0},
3372 { 0x00007890, 0x06db6db6 }, 3373 {0x0000788c, 0x00376b63},
3373 { 0x00007894, 0x006d8000 }, 3374 {0x00007890, 0x06db6db6},
3374 { 0x00007898, 0x48100000 }, 3375 {0x00007894, 0x006d8000},
3375 { 0x0000789c, 0x00000000 }, 3376 {0x00007898, 0x48100000},
3376 { 0x000078a0, 0x08000000 }, 3377 {0x0000789c, 0x00000000},
3377 { 0x000078a4, 0x0007ffd8 }, 3378 {0x000078a0, 0x08000000},
3378 { 0x000078a8, 0x0007ffd8 }, 3379 {0x000078a4, 0x0007ffd8},
3379 { 0x000078ac, 0x001c0020 }, 3380 {0x000078a8, 0x0007ffd8},
3380 { 0x000078b0, 0x000611eb }, 3381 {0x000078ac, 0x001c0020},
3381 { 0x000078b4, 0x40008080 }, 3382 {0x000078b0, 0x000611eb},
3382 { 0x000078b8, 0x2a850160 }, 3383 {0x000078b4, 0x40008080},
3384 {0x000078b8, 0x2a850160},
3383}; 3385};
3384 3386
3385static const u32 ar9287Modes_tx_gain_9287_1_0[][6] = { 3387static const u32 ar9287Modes_tx_gain_9287_1_0[][6] = {
3386 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 3388 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3387 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 3389 {0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002},
3388 { 0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002 }, 3390 {0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004},
3389 { 0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004 }, 3391 {0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a},
3390 { 0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a }, 3392 {0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c},
3391 { 0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c }, 3393 {0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b},
3392 { 0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b }, 3394 {0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a},
3393 { 0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a }, 3395 {0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a},
3394 { 0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a }, 3396 {0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a},
3395 { 0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a }, 3397 {0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a},
3396 { 0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a }, 3398 {0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a},
3397 { 0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a }, 3399 {0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a},
3398 { 0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a }, 3400 {0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a},
3399 { 0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a }, 3401 {0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a},
3400 { 0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a }, 3402 {0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c},
3401 { 0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c }, 3403 {0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc},
3402 { 0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc }, 3404 {0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4},
3403 { 0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4 }, 3405 {0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc},
3404 { 0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc }, 3406 {0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede},
3405 { 0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede }, 3407 {0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e},
3406 { 0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e }, 3408 {0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e},
3407 { 0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e }, 3409 {0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e},
3408 { 0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e }, 3410 {0x0000a780, 0x00000000, 0x00000000, 0x00000060, 0x00000060, 0x00000060},
3409 { 0x0000a780, 0x00000000, 0x00000000, 0x00000060, 0x00000060, 0x00000060 }, 3411 {0x0000a784, 0x00000000, 0x00000000, 0x00004062, 0x00004062, 0x00004062},
3410 { 0x0000a784, 0x00000000, 0x00000000, 0x00004062, 0x00004062, 0x00004062 }, 3412 {0x0000a788, 0x00000000, 0x00000000, 0x00008064, 0x00008064, 0x00008064},
3411 { 0x0000a788, 0x00000000, 0x00000000, 0x00008064, 0x00008064, 0x00008064 }, 3413 {0x0000a78c, 0x00000000, 0x00000000, 0x0000c0a4, 0x0000c0a4, 0x0000c0a4},
3412 { 0x0000a78c, 0x00000000, 0x00000000, 0x0000c0a4, 0x0000c0a4, 0x0000c0a4 }, 3414 {0x0000a790, 0x00000000, 0x00000000, 0x000100b0, 0x000100b0, 0x000100b0},
3413 { 0x0000a790, 0x00000000, 0x00000000, 0x000100b0, 0x000100b0, 0x000100b0 }, 3415 {0x0000a794, 0x00000000, 0x00000000, 0x000140b2, 0x000140b2, 0x000140b2},
3414 { 0x0000a794, 0x00000000, 0x00000000, 0x000140b2, 0x000140b2, 0x000140b2 }, 3416 {0x0000a798, 0x00000000, 0x00000000, 0x000180b4, 0x000180b4, 0x000180b4},
3415 { 0x0000a798, 0x00000000, 0x00000000, 0x000180b4, 0x000180b4, 0x000180b4 }, 3417 {0x0000a79c, 0x00000000, 0x00000000, 0x0001c0f4, 0x0001c0f4, 0x0001c0f4},
3416 { 0x0000a79c, 0x00000000, 0x00000000, 0x0001c0f4, 0x0001c0f4, 0x0001c0f4 }, 3418 {0x0000a7a0, 0x00000000, 0x00000000, 0x00020134, 0x00020134, 0x00020134},
3417 { 0x0000a7a0, 0x00000000, 0x00000000, 0x00020134, 0x00020134, 0x00020134 }, 3419 {0x0000a7a4, 0x00000000, 0x00000000, 0x000240fe, 0x000240fe, 0x000240fe},
3418 { 0x0000a7a4, 0x00000000, 0x00000000, 0x000240fe, 0x000240fe, 0x000240fe }, 3420 {0x0000a7a8, 0x00000000, 0x00000000, 0x0002813e, 0x0002813e, 0x0002813e},
3419 { 0x0000a7a8, 0x00000000, 0x00000000, 0x0002813e, 0x0002813e, 0x0002813e }, 3421 {0x0000a7ac, 0x00000000, 0x00000000, 0x0002c17e, 0x0002c17e, 0x0002c17e},
3420 { 0x0000a7ac, 0x00000000, 0x00000000, 0x0002c17e, 0x0002c17e, 0x0002c17e }, 3422 {0x0000a7b0, 0x00000000, 0x00000000, 0x000301be, 0x000301be, 0x000301be},
3421 { 0x0000a7b0, 0x00000000, 0x00000000, 0x000301be, 0x000301be, 0x000301be }, 3423 {0x0000a7b4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3422 { 0x0000a7b4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3424 {0x0000a7b8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3423 { 0x0000a7b8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3425 {0x0000a7bc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3424 { 0x0000a7bc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3426 {0x0000a7c0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3425 { 0x0000a7c0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3427 {0x0000a7c4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3426 { 0x0000a7c4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3428 {0x0000a7c8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3427 { 0x0000a7c8, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3429 {0x0000a7cc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3428 { 0x0000a7cc, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3430 {0x0000a7d0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3429 { 0x0000a7d0, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3431 {0x0000a7d4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe},
3430 { 0x0000a7d4, 0x00000000, 0x00000000, 0x000341fe, 0x000341fe, 0x000341fe }, 3432 {0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000},
3431 { 0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000 },
3432}; 3433};
3433 3434
3434
3435static const u32 ar9287Modes_rx_gain_9287_1_0[][6] = { 3435static const u32 ar9287Modes_rx_gain_9287_1_0[][6] = {
3436 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 3436 {0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120},
3437 { 0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, 3437 {0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124},
3438 { 0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, 3438 {0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128},
3439 { 0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, 3439 {0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c},
3440 { 0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, 3440 {0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130},
3441 { 0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, 3441 {0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194},
3442 { 0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, 3442 {0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198},
3443 { 0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, 3443 {0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c},
3444 { 0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, 3444 {0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210},
3445 { 0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, 3445 {0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284},
3446 { 0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, 3446 {0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288},
3447 { 0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, 3447 {0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c},
3448 { 0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, 3448 {0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290},
3449 { 0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, 3449 {0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294},
3450 { 0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, 3450 {0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0},
3451 { 0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, 3451 {0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4},
3452 { 0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, 3452 {0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8},
3453 { 0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, 3453 {0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac},
3454 { 0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, 3454 {0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0},
3455 { 0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, 3455 {0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4},
3456 { 0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, 3456 {0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8},
3457 { 0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, 3457 {0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4},
3458 { 0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, 3458 {0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708},
3459 { 0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, 3459 {0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c},
3460 { 0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, 3460 {0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710},
3461 { 0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, 3461 {0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04},
3462 { 0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, 3462 {0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08},
3463 { 0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, 3463 {0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c},
3464 { 0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, 3464 {0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10},
3465 { 0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, 3465 {0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14},
3466 { 0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, 3466 {0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18},
3467 { 0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, 3467 {0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c},
3468 { 0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, 3468 {0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90},
3469 { 0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, 3469 {0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94},
3470 { 0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, 3470 {0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98},
3471 { 0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, 3471 {0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4},
3472 { 0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, 3472 {0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8},
3473 { 0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, 3473 {0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04},
3474 { 0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, 3474 {0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08},
3475 { 0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, 3475 {0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c},
3476 { 0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, 3476 {0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10},
3477 { 0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, 3477 {0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14},
3478 { 0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, 3478 {0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18},
3479 { 0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, 3479 {0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c},
3480 { 0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, 3480 {0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90},
3481 { 0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, 3481 {0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18},
3482 { 0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, 3482 {0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24},
3483 { 0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, 3483 {0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28},
3484 { 0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, 3484 {0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314},
3485 { 0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, 3485 {0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318},
3486 { 0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, 3486 {0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c},
3487 { 0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, 3487 {0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390},
3488 { 0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, 3488 {0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394},
3489 { 0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, 3489 {0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398},
3490 { 0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, 3490 {0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4},
3491 { 0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, 3491 {0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8},
3492 { 0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, 3492 {0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac},
3493 { 0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, 3493 {0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0},
3494 { 0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, 3494 {0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380},
3495 { 0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, 3495 {0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384},
3496 { 0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, 3496 {0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388},
3497 { 0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, 3497 {0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710},
3498 { 0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, 3498 {0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714},
3499 { 0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, 3499 {0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718},
3500 { 0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, 3500 {0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10},
3501 { 0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, 3501 {0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14},
3502 { 0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, 3502 {0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18},
3503 { 0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, 3503 {0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c},
3504 { 0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, 3504 {0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90},
3505 { 0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, 3505 {0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94},
3506 { 0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, 3506 {0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c},
3507 { 0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, 3507 {0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90},
3508 { 0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, 3508 {0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94},
3509 { 0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, 3509 {0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0},
3510 { 0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, 3510 {0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4},
3511 { 0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, 3511 {0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8},
3512 { 0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, 3512 {0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac},
3513 { 0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, 3513 {0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0},
3514 { 0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, 3514 {0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4},
3515 { 0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, 3515 {0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1},
3516 { 0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, 3516 {0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5},
3517 { 0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, 3517 {0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9},
3518 { 0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, 3518 {0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad},
3519 { 0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, 3519 {0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1},
3520 { 0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, 3520 {0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5},
3521 { 0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, 3521 {0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9},
3522 { 0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, 3522 {0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5},
3523 { 0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, 3523 {0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9},
3524 { 0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, 3524 {0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd},
3525 { 0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, 3525 {0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1},
3526 { 0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, 3526 {0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5},
3527 { 0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, 3527 {0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2},
3528 { 0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, 3528 {0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6},
3529 { 0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, 3529 {0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca},
3530 { 0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, 3530 {0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce},
3531 { 0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, 3531 {0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2},
3532 { 0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, 3532 {0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6},
3533 { 0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, 3533 {0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda},
3534 { 0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, 3534 {0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7},
3535 { 0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, 3535 {0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb},
3536 { 0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, 3536 {0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf},
3537 { 0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, 3537 {0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3},
3538 { 0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, 3538 {0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7},
3539 { 0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, 3539 {0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3540 { 0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3540 {0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3541 { 0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3541 {0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3542 { 0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3542 {0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3543 { 0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3543 {0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3544 { 0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3544 {0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3545 { 0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3545 {0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3546 { 0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3546 {0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3547 { 0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3547 {0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3548 { 0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3548 {0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3549 { 0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3549 {0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3550 { 0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3550 {0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3551 { 0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3551 {0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3552 { 0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3552 {0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3553 { 0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3553 {0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3554 { 0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3554 {0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3555 { 0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3555 {0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3556 { 0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3556 {0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3557 { 0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3557 {0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3558 { 0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3558 {0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3559 { 0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3559 {0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3560 { 0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3560 {0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3561 { 0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3561 {0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3562 { 0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3562 {0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3563 { 0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3563 {0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3564 { 0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3564 {0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120},
3565 { 0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, 3565 {0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124},
3566 { 0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, 3566 {0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128},
3567 { 0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, 3567 {0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c},
3568 { 0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, 3568 {0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130},
3569 { 0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, 3569 {0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194},
3570 { 0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, 3570 {0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198},
3571 { 0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, 3571 {0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c},
3572 { 0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, 3572 {0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210},
3573 { 0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, 3573 {0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284},
3574 { 0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, 3574 {0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288},
3575 { 0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, 3575 {0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c},
3576 { 0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, 3576 {0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290},
3577 { 0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, 3577 {0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294},
3578 { 0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, 3578 {0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0},
3579 { 0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, 3579 {0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4},
3580 { 0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, 3580 {0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8},
3581 { 0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, 3581 {0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac},
3582 { 0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, 3582 {0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0},
3583 { 0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, 3583 {0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4},
3584 { 0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, 3584 {0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8},
3585 { 0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, 3585 {0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4},
3586 { 0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, 3586 {0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708},
3587 { 0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, 3587 {0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c},
3588 { 0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, 3588 {0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710},
3589 { 0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, 3589 {0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04},
3590 { 0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, 3590 {0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08},
3591 { 0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, 3591 {0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c},
3592 { 0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, 3592 {0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10},
3593 { 0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, 3593 {0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14},
3594 { 0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, 3594 {0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18},
3595 { 0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, 3595 {0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c},
3596 { 0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, 3596 {0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90},
3597 { 0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, 3597 {0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94},
3598 { 0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, 3598 {0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98},
3599 { 0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, 3599 {0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4},
3600 { 0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, 3600 {0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8},
3601 { 0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, 3601 {0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04},
3602 { 0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, 3602 {0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08},
3603 { 0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, 3603 {0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c},
3604 { 0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, 3604 {0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10},
3605 { 0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, 3605 {0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14},
3606 { 0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, 3606 {0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18},
3607 { 0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, 3607 {0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c},
3608 { 0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, 3608 {0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90},
3609 { 0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, 3609 {0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18},
3610 { 0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, 3610 {0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24},
3611 { 0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, 3611 {0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28},
3612 { 0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, 3612 {0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314},
3613 { 0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, 3613 {0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318},
3614 { 0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, 3614 {0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c},
3615 { 0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, 3615 {0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390},
3616 { 0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, 3616 {0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394},
3617 { 0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, 3617 {0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398},
3618 { 0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, 3618 {0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4},
3619 { 0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, 3619 {0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8},
3620 { 0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, 3620 {0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac},
3621 { 0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, 3621 {0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0},
3622 { 0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, 3622 {0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380},
3623 { 0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, 3623 {0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384},
3624 { 0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, 3624 {0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388},
3625 { 0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, 3625 {0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710},
3626 { 0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, 3626 {0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714},
3627 { 0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, 3627 {0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718},
3628 { 0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, 3628 {0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10},
3629 { 0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, 3629 {0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14},
3630 { 0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, 3630 {0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18},
3631 { 0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, 3631 {0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c},
3632 { 0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, 3632 {0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90},
3633 { 0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, 3633 {0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94},
3634 { 0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, 3634 {0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c},
3635 { 0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, 3635 {0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90},
3636 { 0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, 3636 {0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94},
3637 { 0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, 3637 {0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0},
3638 { 0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, 3638 {0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4},
3639 { 0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, 3639 {0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8},
3640 { 0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, 3640 {0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac},
3641 { 0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, 3641 {0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0},
3642 { 0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, 3642 {0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4},
3643 { 0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, 3643 {0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1},
3644 { 0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, 3644 {0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5},
3645 { 0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, 3645 {0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9},
3646 { 0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, 3646 {0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad},
3647 { 0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, 3647 {0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1},
3648 { 0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, 3648 {0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5},
3649 { 0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, 3649 {0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9},
3650 { 0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, 3650 {0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5},
3651 { 0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, 3651 {0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9},
3652 { 0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, 3652 {0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd},
3653 { 0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, 3653 {0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1},
3654 { 0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, 3654 {0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5},
3655 { 0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, 3655 {0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2},
3656 { 0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, 3656 {0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6},
3657 { 0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, 3657 {0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca},
3658 { 0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, 3658 {0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce},
3659 { 0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, 3659 {0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2},
3660 { 0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, 3660 {0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6},
3661 { 0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, 3661 {0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda},
3662 { 0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, 3662 {0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7},
3663 { 0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, 3663 {0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb},
3664 { 0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, 3664 {0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf},
3665 { 0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, 3665 {0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3},
3666 { 0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, 3666 {0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7},
3667 { 0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, 3667 {0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3668 { 0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3668 {0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3669 { 0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3669 {0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3670 { 0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3670 {0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3671 { 0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3671 {0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3672 { 0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3672 {0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3673 { 0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3673 {0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3674 { 0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3674 {0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3675 { 0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3675 {0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3676 { 0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3676 {0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3677 { 0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3677 {0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3678 { 0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3678 {0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3679 { 0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3679 {0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3680 { 0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3680 {0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3681 { 0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3681 {0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3682 { 0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3682 {0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3683 { 0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3683 {0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3684 { 0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3684 {0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3685 { 0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3685 {0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3686 { 0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3686 {0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3687 { 0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3687 {0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3688 { 0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3688 {0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3689 { 0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3689 {0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3690 { 0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3690 {0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3691 { 0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3691 {0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
3692 { 0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 3692 {0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067},
3693 { 0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, 3693 {0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067},
3694 { 0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 },
3695}; 3694};
3696 3695
3697static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_0[][2] = { 3696static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_0[][2] = {
3698 {0x00004040, 0x9248fd00 }, 3697 /* Addr allmodes */
3699 {0x00004040, 0x24924924 }, 3698 {0x00004040, 0x9248fd00},
3700 {0x00004040, 0xa8000019 }, 3699 {0x00004040, 0x24924924},
3701 {0x00004040, 0x13160820 }, 3700 {0x00004040, 0xa8000019},
3702 {0x00004040, 0xe5980560 }, 3701 {0x00004040, 0x13160820},
3703 {0x00004040, 0xc01dcffd }, 3702 {0x00004040, 0xe5980560},
3704 {0x00004040, 0x1aaabe41 }, 3703 {0x00004040, 0xc01dcffd},
3705 {0x00004040, 0xbe105554 }, 3704 {0x00004040, 0x1aaabe41},
3706 {0x00004040, 0x00043007 }, 3705 {0x00004040, 0xbe105554},
3707 {0x00004044, 0x00000000 }, 3706 {0x00004040, 0x00043007},
3707 {0x00004044, 0x00000000},
3708}; 3708};
3709 3709
3710static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_0[][2] = { 3710static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_0[][2] = {
3711 {0x00004040, 0x9248fd00 }, 3711 /* Addr allmodes */
3712 {0x00004040, 0x24924924 }, 3712 {0x00004040, 0x9248fd00},
3713 {0x00004040, 0xa8000019 }, 3713 {0x00004040, 0x24924924},
3714 {0x00004040, 0x13160820 }, 3714 {0x00004040, 0xa8000019},
3715 {0x00004040, 0xe5980560 }, 3715 {0x00004040, 0x13160820},
3716 {0x00004040, 0xc01dcffc }, 3716 {0x00004040, 0xe5980560},
3717 {0x00004040, 0x1aaabe41 }, 3717 {0x00004040, 0xc01dcffc},
3718 {0x00004040, 0xbe105554 }, 3718 {0x00004040, 0x1aaabe41},
3719 {0x00004040, 0x00043007 }, 3719 {0x00004040, 0xbe105554},
3720 {0x00004044, 0x00000000 }, 3720 {0x00004040, 0x00043007},
3721 {0x00004044, 0x00000000},
3721}; 3722};
3722 3723
3723/* AR9287 Revision 11 */
3724
3725static const u32 ar9287Modes_9287_1_1[][6] = { 3724static const u32 ar9287Modes_9287_1_1[][6] = {
3726 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 3725 {0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0},
3727 { 0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160, 0x000001e0 }, 3726 {0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0},
3728 { 0x00001070, 0x00000000, 0x00000000, 0x00000318, 0x0000018c, 0x000001e0 }, 3727 {0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180},
3729 { 0x000010b0, 0x00000000, 0x00000000, 0x00007c70, 0x00003e38, 0x00001180 }, 3728 {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008},
3730 { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, 3729 {0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0},
3731 { 0x00008014, 0x00000000, 0x00000000, 0x10801600, 0x08400b00, 0x06e006e0 }, 3730 {0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f},
3732 { 0x0000801c, 0x00000000, 0x00000000, 0x12e00057, 0x12e0002b, 0x0988004f }, 3731 {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810},
3733 { 0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810 }, 3732 {0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a},
3734 { 0x000081d0, 0x00003200, 0x00003200, 0x0000320a, 0x0000320a, 0x0000320a }, 3733 {0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880},
3735 { 0x00008318, 0x00000000, 0x00000000, 0x00006880, 0x00003440, 0x00006880 }, 3734 {0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303},
3736 { 0x00009804, 0x00000000, 0x00000000, 0x000003c4, 0x00000300, 0x00000303 }, 3735 {0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200},
3737 { 0x00009820, 0x00000000, 0x00000000, 0x02020200, 0x02020200, 0x02020200 }, 3736 {0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e},
3738 { 0x00009824, 0x00000000, 0x00000000, 0x01000e0e, 0x01000e0e, 0x01000e0e }, 3737 {0x00009828, 0x00000000, 0x00000000, 0x3a020001, 0x3a020001, 0x3a020001},
3739 { 0x00009828, 0x00000000, 0x00000000, 0x3a020001, 0x3a020001, 0x3a020001 }, 3738 {0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e},
3740 { 0x00009834, 0x00000000, 0x00000000, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 3739 {0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007},
3741 { 0x00009838, 0x00000003, 0x00000003, 0x00000007, 0x00000007, 0x00000007 }, 3740 {0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e},
3742 { 0x00009840, 0x206a002e, 0x206a002e, 0x206a012e, 0x206a012e, 0x206a012e }, 3741 {0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0},
3743 { 0x00009844, 0x03720000, 0x03720000, 0x037216a0, 0x037216a0, 0x037216a0 }, 3742 {0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2},
3744 { 0x00009850, 0x60000000, 0x60000000, 0x6d4000e2, 0x6c4000e2, 0x6c4000e2 }, 3743 {0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e},
3745 { 0x00009858, 0x7c000d00, 0x7c000d00, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, 3744 {0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e},
3746 { 0x0000985c, 0x3100005e, 0x3100005e, 0x3139605e, 0x31395d5e, 0x31395d5e }, 3745 {0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18},
3747 { 0x00009860, 0x00058d00, 0x00058d00, 0x00058d20, 0x00058d20, 0x00058d18 }, 3746 {0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
3748 { 0x00009864, 0x00000e00, 0x00000e00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 3747 {0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
3749 { 0x00009868, 0x000040c0, 0x000040c0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, 3748 {0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881},
3750 { 0x0000986c, 0x00000080, 0x00000080, 0x06903881, 0x06903881, 0x06903881 }, 3749 {0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0},
3751 { 0x00009914, 0x00000000, 0x00000000, 0x00001130, 0x00000898, 0x000007d0 }, 3750 {0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016},
3752 { 0x00009918, 0x00000000, 0x00000000, 0x00000016, 0x0000000b, 0x00000016 }, 3751 {0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d},
3753 { 0x00009924, 0xd00a8a01, 0xd00a8a01, 0xd00a8a0d, 0xd00a8a0d, 0xd00a8a0d }, 3752 {0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010},
3754 { 0x00009944, 0xefbc0000, 0xefbc0000, 0xefbc1010, 0xefbc1010, 0xefbc1010 }, 3753 {0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010},
3755 { 0x00009960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, 3754 {0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010},
3756 { 0x0000a960, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010 }, 3755 {0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210},
3757 { 0x00009964, 0x00000000, 0x00000000, 0x00000210, 0x00000210, 0x00000210 }, 3756 {0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce},
3758 { 0x0000c968, 0x00000200, 0x00000200, 0x000003ce, 0x000003ce, 0x000003ce }, 3757 {0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c},
3759 { 0x000099b8, 0x00000000, 0x00000000, 0x0000001c, 0x0000001c, 0x0000001c }, 3758 {0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00},
3760 { 0x000099bc, 0x00000000, 0x00000000, 0x00000c00, 0x00000c00, 0x00000c00 }, 3759 {0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
3761 { 0x000099c0, 0x00000000, 0x00000000, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 3760 {0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444},
3762 { 0x0000a204, 0x00000440, 0x00000440, 0x00000444, 0x00000444, 0x00000444 }, 3761 {0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3763 { 0x0000a20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 3762 {0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3764 { 0x0000b20c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 3763 {0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a},
3765 { 0x0000a21c, 0x1803800a, 0x1803800a, 0x1883800a, 0x1883800a, 0x1883800a }, 3764 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
3766 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 3765 {0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000},
3767 { 0x0000a250, 0x00000000, 0x00000000, 0x0004a000, 0x0004a000, 0x0004a000 }, 3766 {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e},
3768 { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, 3767 {0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3769 { 0x0000a3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
3770}; 3768};
3771 3769
3772static const u32 ar9287Common_9287_1_1[][2] = { 3770static const u32 ar9287Common_9287_1_1[][2] = {
3773 { 0x0000000c, 0x00000000 }, 3771 /* Addr allmodes */
3774 { 0x00000030, 0x00020015 }, 3772 {0x0000000c, 0x00000000},
3775 { 0x00000034, 0x00000005 }, 3773 {0x00000030, 0x00020015},
3776 { 0x00000040, 0x00000000 }, 3774 {0x00000034, 0x00000005},
3777 { 0x00000044, 0x00000008 }, 3775 {0x00000040, 0x00000000},
3778 { 0x00000048, 0x00000008 }, 3776 {0x00000044, 0x00000008},
3779 { 0x0000004c, 0x00000010 }, 3777 {0x00000048, 0x00000008},
3780 { 0x00000050, 0x00000000 }, 3778 {0x0000004c, 0x00000010},
3781 { 0x00000054, 0x0000001f }, 3779 {0x00000050, 0x00000000},
3782 { 0x00000800, 0x00000000 }, 3780 {0x00000054, 0x0000001f},
3783 { 0x00000804, 0x00000000 }, 3781 {0x00000800, 0x00000000},
3784 { 0x00000808, 0x00000000 }, 3782 {0x00000804, 0x00000000},
3785 { 0x0000080c, 0x00000000 }, 3783 {0x00000808, 0x00000000},
3786 { 0x00000810, 0x00000000 }, 3784 {0x0000080c, 0x00000000},
3787 { 0x00000814, 0x00000000 }, 3785 {0x00000810, 0x00000000},
3788 { 0x00000818, 0x00000000 }, 3786 {0x00000814, 0x00000000},
3789 { 0x0000081c, 0x00000000 }, 3787 {0x00000818, 0x00000000},
3790 { 0x00000820, 0x00000000 }, 3788 {0x0000081c, 0x00000000},
3791 { 0x00000824, 0x00000000 }, 3789 {0x00000820, 0x00000000},
3792 { 0x00001040, 0x002ffc0f }, 3790 {0x00000824, 0x00000000},
3793 { 0x00001044, 0x002ffc0f }, 3791 {0x00001040, 0x002ffc0f},
3794 { 0x00001048, 0x002ffc0f }, 3792 {0x00001044, 0x002ffc0f},
3795 { 0x0000104c, 0x002ffc0f }, 3793 {0x00001048, 0x002ffc0f},
3796 { 0x00001050, 0x002ffc0f }, 3794 {0x0000104c, 0x002ffc0f},
3797 { 0x00001054, 0x002ffc0f }, 3795 {0x00001050, 0x002ffc0f},
3798 { 0x00001058, 0x002ffc0f }, 3796 {0x00001054, 0x002ffc0f},
3799 { 0x0000105c, 0x002ffc0f }, 3797 {0x00001058, 0x002ffc0f},
3800 { 0x00001060, 0x002ffc0f }, 3798 {0x0000105c, 0x002ffc0f},
3801 { 0x00001064, 0x002ffc0f }, 3799 {0x00001060, 0x002ffc0f},
3802 { 0x00001230, 0x00000000 }, 3800 {0x00001064, 0x002ffc0f},
3803 { 0x00001270, 0x00000000 }, 3801 {0x00001230, 0x00000000},
3804 { 0x00001038, 0x00000000 }, 3802 {0x00001270, 0x00000000},
3805 { 0x00001078, 0x00000000 }, 3803 {0x00001038, 0x00000000},
3806 { 0x000010b8, 0x00000000 }, 3804 {0x00001078, 0x00000000},
3807 { 0x000010f8, 0x00000000 }, 3805 {0x000010b8, 0x00000000},
3808 { 0x00001138, 0x00000000 }, 3806 {0x000010f8, 0x00000000},
3809 { 0x00001178, 0x00000000 }, 3807 {0x00001138, 0x00000000},
3810 { 0x000011b8, 0x00000000 }, 3808 {0x00001178, 0x00000000},
3811 { 0x000011f8, 0x00000000 }, 3809 {0x000011b8, 0x00000000},
3812 { 0x00001238, 0x00000000 }, 3810 {0x000011f8, 0x00000000},
3813 { 0x00001278, 0x00000000 }, 3811 {0x00001238, 0x00000000},
3814 { 0x000012b8, 0x00000000 }, 3812 {0x00001278, 0x00000000},
3815 { 0x000012f8, 0x00000000 }, 3813 {0x000012b8, 0x00000000},
3816 { 0x00001338, 0x00000000 }, 3814 {0x000012f8, 0x00000000},
3817 { 0x00001378, 0x00000000 }, 3815 {0x00001338, 0x00000000},
3818 { 0x000013b8, 0x00000000 }, 3816 {0x00001378, 0x00000000},
3819 { 0x000013f8, 0x00000000 }, 3817 {0x000013b8, 0x00000000},
3820 { 0x00001438, 0x00000000 }, 3818 {0x000013f8, 0x00000000},
3821 { 0x00001478, 0x00000000 }, 3819 {0x00001438, 0x00000000},
3822 { 0x000014b8, 0x00000000 }, 3820 {0x00001478, 0x00000000},
3823 { 0x000014f8, 0x00000000 }, 3821 {0x000014b8, 0x00000000},
3824 { 0x00001538, 0x00000000 }, 3822 {0x000014f8, 0x00000000},
3825 { 0x00001578, 0x00000000 }, 3823 {0x00001538, 0x00000000},
3826 { 0x000015b8, 0x00000000 }, 3824 {0x00001578, 0x00000000},
3827 { 0x000015f8, 0x00000000 }, 3825 {0x000015b8, 0x00000000},
3828 { 0x00001638, 0x00000000 }, 3826 {0x000015f8, 0x00000000},
3829 { 0x00001678, 0x00000000 }, 3827 {0x00001638, 0x00000000},
3830 { 0x000016b8, 0x00000000 }, 3828 {0x00001678, 0x00000000},
3831 { 0x000016f8, 0x00000000 }, 3829 {0x000016b8, 0x00000000},
3832 { 0x00001738, 0x00000000 }, 3830 {0x000016f8, 0x00000000},
3833 { 0x00001778, 0x00000000 }, 3831 {0x00001738, 0x00000000},
3834 { 0x000017b8, 0x00000000 }, 3832 {0x00001778, 0x00000000},
3835 { 0x000017f8, 0x00000000 }, 3833 {0x000017b8, 0x00000000},
3836 { 0x0000103c, 0x00000000 }, 3834 {0x000017f8, 0x00000000},
3837 { 0x0000107c, 0x00000000 }, 3835 {0x0000103c, 0x00000000},
3838 { 0x000010bc, 0x00000000 }, 3836 {0x0000107c, 0x00000000},
3839 { 0x000010fc, 0x00000000 }, 3837 {0x000010bc, 0x00000000},
3840 { 0x0000113c, 0x00000000 }, 3838 {0x000010fc, 0x00000000},
3841 { 0x0000117c, 0x00000000 }, 3839 {0x0000113c, 0x00000000},
3842 { 0x000011bc, 0x00000000 }, 3840 {0x0000117c, 0x00000000},
3843 { 0x000011fc, 0x00000000 }, 3841 {0x000011bc, 0x00000000},
3844 { 0x0000123c, 0x00000000 }, 3842 {0x000011fc, 0x00000000},
3845 { 0x0000127c, 0x00000000 }, 3843 {0x0000123c, 0x00000000},
3846 { 0x000012bc, 0x00000000 }, 3844 {0x0000127c, 0x00000000},
3847 { 0x000012fc, 0x00000000 }, 3845 {0x000012bc, 0x00000000},
3848 { 0x0000133c, 0x00000000 }, 3846 {0x000012fc, 0x00000000},
3849 { 0x0000137c, 0x00000000 }, 3847 {0x0000133c, 0x00000000},
3850 { 0x000013bc, 0x00000000 }, 3848 {0x0000137c, 0x00000000},
3851 { 0x000013fc, 0x00000000 }, 3849 {0x000013bc, 0x00000000},
3852 { 0x0000143c, 0x00000000 }, 3850 {0x000013fc, 0x00000000},
3853 { 0x0000147c, 0x00000000 }, 3851 {0x0000143c, 0x00000000},
3854 { 0x00004030, 0x00000002 }, 3852 {0x0000147c, 0x00000000},
3855 { 0x0000403c, 0x00000002 }, 3853 {0x00004030, 0x00000002},
3856 { 0x00004024, 0x0000001f }, 3854 {0x0000403c, 0x00000002},
3857 { 0x00004060, 0x00000000 }, 3855 {0x00004024, 0x0000001f},
3858 { 0x00004064, 0x00000000 }, 3856 {0x00004060, 0x00000000},
3859 { 0x00007010, 0x00000033 }, 3857 {0x00004064, 0x00000000},
3860 { 0x00007020, 0x00000000 }, 3858 {0x00007010, 0x00000033},
3861 { 0x00007034, 0x00000002 }, 3859 {0x00007020, 0x00000000},
3862 { 0x00007038, 0x000004c2 }, 3860 {0x00007034, 0x00000002},
3863 { 0x00008004, 0x00000000 }, 3861 {0x00007038, 0x000004c2},
3864 { 0x00008008, 0x00000000 }, 3862 {0x00008004, 0x00000000},
3865 { 0x0000800c, 0x00000000 }, 3863 {0x00008008, 0x00000000},
3866 { 0x00008018, 0x00000700 }, 3864 {0x0000800c, 0x00000000},
3867 { 0x00008020, 0x00000000 }, 3865 {0x00008018, 0x00000700},
3868 { 0x00008038, 0x00000000 }, 3866 {0x00008020, 0x00000000},
3869 { 0x0000803c, 0x00000000 }, 3867 {0x00008038, 0x00000000},
3870 { 0x00008048, 0x40000000 }, 3868 {0x0000803c, 0x00000000},
3871 { 0x00008054, 0x00000000 }, 3869 {0x00008048, 0x40000000},
3872 { 0x00008058, 0x00000000 }, 3870 {0x00008054, 0x00000000},
3873 { 0x0000805c, 0x000fc78f }, 3871 {0x00008058, 0x00000000},
3874 { 0x00008060, 0x0000000f }, 3872 {0x0000805c, 0x000fc78f},
3875 { 0x00008064, 0x00000000 }, 3873 {0x00008060, 0x0000000f},
3876 { 0x00008070, 0x00000000 }, 3874 {0x00008064, 0x00000000},
3877 { 0x000080c0, 0x2a80001a }, 3875 {0x00008070, 0x00000000},
3878 { 0x000080c4, 0x05dc01e0 }, 3876 {0x000080c0, 0x2a80001a},
3879 { 0x000080c8, 0x1f402710 }, 3877 {0x000080c4, 0x05dc01e0},
3880 { 0x000080cc, 0x01f40000 }, 3878 {0x000080c8, 0x1f402710},
3881 { 0x000080d0, 0x00001e00 }, 3879 {0x000080cc, 0x01f40000},
3882 { 0x000080d4, 0x00000000 }, 3880 {0x000080d0, 0x00001e00},
3883 { 0x000080d8, 0x00400000 }, 3881 {0x000080d4, 0x00000000},
3884 { 0x000080e0, 0xffffffff }, 3882 {0x000080d8, 0x00400000},
3885 { 0x000080e4, 0x0000ffff }, 3883 {0x000080e0, 0xffffffff},
3886 { 0x000080e8, 0x003f3f3f }, 3884 {0x000080e4, 0x0000ffff},
3887 { 0x000080ec, 0x00000000 }, 3885 {0x000080e8, 0x003f3f3f},
3888 { 0x000080f0, 0x00000000 }, 3886 {0x000080ec, 0x00000000},
3889 { 0x000080f4, 0x00000000 }, 3887 {0x000080f0, 0x00000000},
3890 { 0x000080f8, 0x00000000 }, 3888 {0x000080f4, 0x00000000},
3891 { 0x000080fc, 0x00020000 }, 3889 {0x000080f8, 0x00000000},
3892 { 0x00008100, 0x00020000 }, 3890 {0x000080fc, 0x00020000},
3893 { 0x00008104, 0x00000001 }, 3891 {0x00008100, 0x00020000},
3894 { 0x00008108, 0x00000052 }, 3892 {0x00008104, 0x00000001},
3895 { 0x0000810c, 0x00000000 }, 3893 {0x00008108, 0x00000052},
3896 { 0x00008110, 0x00000168 }, 3894 {0x0000810c, 0x00000000},
3897 { 0x00008118, 0x000100aa }, 3895 {0x00008110, 0x00000168},
3898 { 0x0000811c, 0x00003210 }, 3896 {0x00008118, 0x000100aa},
3899 { 0x00008124, 0x00000000 }, 3897 {0x0000811c, 0x00003210},
3900 { 0x00008128, 0x00000000 }, 3898 {0x00008124, 0x00000000},
3901 { 0x0000812c, 0x00000000 }, 3899 {0x00008128, 0x00000000},
3902 { 0x00008130, 0x00000000 }, 3900 {0x0000812c, 0x00000000},
3903 { 0x00008134, 0x00000000 }, 3901 {0x00008130, 0x00000000},
3904 { 0x00008138, 0x00000000 }, 3902 {0x00008134, 0x00000000},
3905 { 0x0000813c, 0x00000000 }, 3903 {0x00008138, 0x00000000},
3906 { 0x00008144, 0xffffffff }, 3904 {0x0000813c, 0x00000000},
3907 { 0x00008168, 0x00000000 }, 3905 {0x00008144, 0xffffffff},
3908 { 0x0000816c, 0x00000000 }, 3906 {0x00008168, 0x00000000},
3909 { 0x00008170, 0x18487320 }, 3907 {0x0000816c, 0x00000000},
3910 { 0x00008174, 0xfaa4fa50 }, 3908 {0x00008170, 0x18487320},
3911 { 0x00008178, 0x00000100 }, 3909 {0x00008174, 0xfaa4fa50},
3912 { 0x0000817c, 0x00000000 }, 3910 {0x00008178, 0x00000100},
3913 { 0x000081c0, 0x00000000 }, 3911 {0x0000817c, 0x00000000},
3914 { 0x000081c4, 0x00000000 }, 3912 {0x000081c0, 0x00000000},
3915 { 0x000081d4, 0x00000000 }, 3913 {0x000081c4, 0x00000000},
3916 { 0x000081ec, 0x00000000 }, 3914 {0x000081d4, 0x00000000},
3917 { 0x000081f0, 0x00000000 }, 3915 {0x000081ec, 0x00000000},
3918 { 0x000081f4, 0x00000000 }, 3916 {0x000081f0, 0x00000000},
3919 { 0x000081f8, 0x00000000 }, 3917 {0x000081f4, 0x00000000},
3920 { 0x000081fc, 0x00000000 }, 3918 {0x000081f8, 0x00000000},
3921 { 0x00008200, 0x00000000 }, 3919 {0x000081fc, 0x00000000},
3922 { 0x00008204, 0x00000000 }, 3920 {0x00008200, 0x00000000},
3923 { 0x00008208, 0x00000000 }, 3921 {0x00008204, 0x00000000},
3924 { 0x0000820c, 0x00000000 }, 3922 {0x00008208, 0x00000000},
3925 { 0x00008210, 0x00000000 }, 3923 {0x0000820c, 0x00000000},
3926 { 0x00008214, 0x00000000 }, 3924 {0x00008210, 0x00000000},
3927 { 0x00008218, 0x00000000 }, 3925 {0x00008214, 0x00000000},
3928 { 0x0000821c, 0x00000000 }, 3926 {0x00008218, 0x00000000},
3929 { 0x00008220, 0x00000000 }, 3927 {0x0000821c, 0x00000000},
3930 { 0x00008224, 0x00000000 }, 3928 {0x00008220, 0x00000000},
3931 { 0x00008228, 0x00000000 }, 3929 {0x00008224, 0x00000000},
3932 { 0x0000822c, 0x00000000 }, 3930 {0x00008228, 0x00000000},
3933 { 0x00008230, 0x00000000 }, 3931 {0x0000822c, 0x00000000},
3934 { 0x00008234, 0x00000000 }, 3932 {0x00008230, 0x00000000},
3935 { 0x00008238, 0x00000000 }, 3933 {0x00008234, 0x00000000},
3936 { 0x0000823c, 0x00000000 }, 3934 {0x00008238, 0x00000000},
3937 { 0x00008240, 0x00100000 }, 3935 {0x0000823c, 0x00000000},
3938 { 0x00008244, 0x0010f400 }, 3936 {0x00008240, 0x00100000},
3939 { 0x00008248, 0x00000100 }, 3937 {0x00008244, 0x0010f400},
3940 { 0x0000824c, 0x0001e800 }, 3938 {0x00008248, 0x00000100},
3941 { 0x00008250, 0x00000000 }, 3939 {0x0000824c, 0x0001e800},
3942 { 0x00008254, 0x00000000 }, 3940 {0x00008250, 0x00000000},
3943 { 0x00008258, 0x00000000 }, 3941 {0x00008254, 0x00000000},
3944 { 0x0000825c, 0x400000ff }, 3942 {0x00008258, 0x00000000},
3945 { 0x00008260, 0x00080922 }, 3943 {0x0000825c, 0x400000ff},
3946 { 0x00008264, 0x88a00010 }, 3944 {0x00008260, 0x00080922},
3947 { 0x00008270, 0x00000000 }, 3945 {0x00008264, 0x88a00010},
3948 { 0x00008274, 0x40000000 }, 3946 {0x00008270, 0x00000000},
3949 { 0x00008278, 0x003e4180 }, 3947 {0x00008274, 0x40000000},
3950 { 0x0000827c, 0x00000000 }, 3948 {0x00008278, 0x003e4180},
3951 { 0x00008284, 0x0000002c }, 3949 {0x0000827c, 0x00000000},
3952 { 0x00008288, 0x0000002c }, 3950 {0x00008284, 0x0000002c},
3953 { 0x0000828c, 0x000000ff }, 3951 {0x00008288, 0x0000002c},
3954 { 0x00008294, 0x00000000 }, 3952 {0x0000828c, 0x000000ff},
3955 { 0x00008298, 0x00000000 }, 3953 {0x00008294, 0x00000000},
3956 { 0x0000829c, 0x00000000 }, 3954 {0x00008298, 0x00000000},
3957 { 0x00008300, 0x00000040 }, 3955 {0x0000829c, 0x00000000},
3958 { 0x00008314, 0x00000000 }, 3956 {0x00008300, 0x00000040},
3959 { 0x00008328, 0x00000000 }, 3957 {0x00008314, 0x00000000},
3960 { 0x0000832c, 0x00000007 }, 3958 {0x00008328, 0x00000000},
3961 { 0x00008330, 0x00000302 }, 3959 {0x0000832c, 0x00000007},
3962 { 0x00008334, 0x00000e00 }, 3960 {0x00008330, 0x00000302},
3963 { 0x00008338, 0x00ff0000 }, 3961 {0x00008334, 0x00000e00},
3964 { 0x0000833c, 0x00000000 }, 3962 {0x00008338, 0x00ff0000},
3965 { 0x00008340, 0x000107ff }, 3963 {0x0000833c, 0x00000000},
3966 { 0x00008344, 0x01c81043 }, 3964 {0x00008340, 0x000107ff},
3967 { 0x00008360, 0xffffffff }, 3965 {0x00008344, 0x01c81043},
3968 { 0x00008364, 0xffffffff }, 3966 {0x00008360, 0xffffffff},
3969 { 0x00008368, 0x00000000 }, 3967 {0x00008364, 0xffffffff},
3970 { 0x00008370, 0x00000000 }, 3968 {0x00008368, 0x00000000},
3971 { 0x00008374, 0x000000ff }, 3969 {0x00008370, 0x00000000},
3972 { 0x00008378, 0x00000000 }, 3970 {0x00008374, 0x000000ff},
3973 { 0x0000837c, 0x00000000 }, 3971 {0x00008378, 0x00000000},
3974 { 0x00008380, 0xffffffff }, 3972 {0x0000837c, 0x00000000},
3975 { 0x00008384, 0xffffffff }, 3973 {0x00008380, 0xffffffff},
3976 { 0x00008390, 0x0fffffff }, 3974 {0x00008384, 0xffffffff},
3977 { 0x00008394, 0x0fffffff }, 3975 {0x00008390, 0x0fffffff},
3978 { 0x00008398, 0x00000000 }, 3976 {0x00008394, 0x0fffffff},
3979 { 0x0000839c, 0x00000000 }, 3977 {0x00008398, 0x00000000},
3980 { 0x000083a0, 0x00000000 }, 3978 {0x0000839c, 0x00000000},
3981 { 0x00009808, 0x00000000 }, 3979 {0x000083a0, 0x00000000},
3982 { 0x0000980c, 0xafe68e30 }, 3980 {0x00009808, 0x00000000},
3983 { 0x00009810, 0xfd14e000 }, 3981 {0x0000980c, 0xafe68e30},
3984 { 0x00009814, 0x9c0a9f6b }, 3982 {0x00009810, 0xfd14e000},
3985 { 0x0000981c, 0x00000000 }, 3983 {0x00009814, 0x9c0a9f6b},
3986 { 0x0000982c, 0x0000a000 }, 3984 {0x0000981c, 0x00000000},
3987 { 0x00009830, 0x00000000 }, 3985 {0x0000982c, 0x0000a000},
3988 { 0x0000983c, 0x00200400 }, 3986 {0x00009830, 0x00000000},
3989 { 0x0000984c, 0x0040233c }, 3987 {0x0000983c, 0x00200400},
3990 { 0x0000a84c, 0x0040233c }, 3988 {0x0000984c, 0x0040233c},
3991 { 0x00009854, 0x00000044 }, 3989 {0x0000a84c, 0x0040233c},
3992 { 0x00009900, 0x00000000 }, 3990 {0x00009854, 0x00000044},
3993 { 0x00009904, 0x00000000 }, 3991 {0x00009900, 0x00000000},
3994 { 0x00009908, 0x00000000 }, 3992 {0x00009904, 0x00000000},
3995 { 0x0000990c, 0x00000000 }, 3993 {0x00009908, 0x00000000},
3996 { 0x00009910, 0x10002310 }, 3994 {0x0000990c, 0x00000000},
3997 { 0x0000991c, 0x10000fff }, 3995 {0x00009910, 0x10002310},
3998 { 0x00009920, 0x04900000 }, 3996 {0x0000991c, 0x10000fff},
3999 { 0x0000a920, 0x04900000 }, 3997 {0x00009920, 0x04900000},
4000 { 0x00009928, 0x00000001 }, 3998 {0x0000a920, 0x04900000},
4001 { 0x0000992c, 0x00000004 }, 3999 {0x00009928, 0x00000001},
4002 { 0x00009930, 0x00000000 }, 4000 {0x0000992c, 0x00000004},
4003 { 0x0000a930, 0x00000000 }, 4001 {0x00009930, 0x00000000},
4004 { 0x00009934, 0x1e1f2022 }, 4002 {0x0000a930, 0x00000000},
4005 { 0x00009938, 0x0a0b0c0d }, 4003 {0x00009934, 0x1e1f2022},
4006 { 0x0000993c, 0x00000000 }, 4004 {0x00009938, 0x0a0b0c0d},
4007 { 0x00009948, 0x9280c00a }, 4005 {0x0000993c, 0x00000000},
4008 { 0x0000994c, 0x00020028 }, 4006 {0x00009948, 0x9280c00a},
4009 { 0x00009954, 0x5f3ca3de }, 4007 {0x0000994c, 0x00020028},
4010 { 0x00009958, 0x0108ecff }, 4008 {0x00009954, 0x5f3ca3de},
4011 { 0x00009940, 0x14750604 }, 4009 {0x00009958, 0x0108ecff},
4012 { 0x0000c95c, 0x004b6a8e }, 4010 {0x00009940, 0x14750604},
4013 { 0x00009970, 0x990bb514 }, 4011 {0x0000c95c, 0x004b6a8e},
4014 { 0x00009974, 0x00000000 }, 4012 {0x00009970, 0x990bb514},
4015 { 0x00009978, 0x00000001 }, 4013 {0x00009974, 0x00000000},
4016 { 0x0000997c, 0x00000000 }, 4014 {0x00009978, 0x00000001},
4017 { 0x000099a0, 0x00000000 }, 4015 {0x0000997c, 0x00000000},
4018 { 0x000099a4, 0x00000001 }, 4016 {0x000099a0, 0x00000000},
4019 { 0x000099a8, 0x201fff00 }, 4017 {0x000099a4, 0x00000001},
4020 { 0x000099ac, 0x0c6f0000 }, 4018 {0x000099a8, 0x201fff00},
4021 { 0x000099b0, 0x03051000 }, 4019 {0x000099ac, 0x0c6f0000},
4022 { 0x000099b4, 0x00000820 }, 4020 {0x000099b0, 0x03051000},
4023 { 0x000099c4, 0x06336f77 }, 4021 {0x000099b4, 0x00000820},
4024 { 0x000099c8, 0x6af6532f }, 4022 {0x000099c4, 0x06336f77},
4025 { 0x000099cc, 0x08f186c8 }, 4023 {0x000099c8, 0x6af6532f},
4026 { 0x000099d0, 0x00046384 }, 4024 {0x000099cc, 0x08f186c8},
4027 { 0x000099dc, 0x00000000 }, 4025 {0x000099d0, 0x00046384},
4028 { 0x000099e0, 0x00000000 }, 4026 {0x000099dc, 0x00000000},
4029 { 0x000099e4, 0xaaaaaaaa }, 4027 {0x000099e0, 0x00000000},
4030 { 0x000099e8, 0x3c466478 }, 4028 {0x000099e4, 0xaaaaaaaa},
4031 { 0x000099ec, 0x0cc80caa }, 4029 {0x000099e8, 0x3c466478},
4032 { 0x000099f0, 0x00000000 }, 4030 {0x000099ec, 0x0cc80caa},
4033 { 0x000099fc, 0x00001042 }, 4031 {0x000099f0, 0x00000000},
4034 { 0x0000a208, 0x803e4788 }, 4032 {0x000099fc, 0x00001042},
4035 { 0x0000a210, 0x4080a333 }, 4033 {0x0000a208, 0x803e4788},
4036 { 0x0000a214, 0x40206c10 }, 4034 {0x0000a210, 0x4080a333},
4037 { 0x0000a218, 0x009c4060 }, 4035 {0x0000a214, 0x40206c10},
4038 { 0x0000a220, 0x01834061 }, 4036 {0x0000a218, 0x009c4060},
4039 { 0x0000a224, 0x00000400 }, 4037 {0x0000a220, 0x01834061},
4040 { 0x0000a228, 0x000003b5 }, 4038 {0x0000a224, 0x00000400},
4041 { 0x0000a22c, 0x233f7180 }, 4039 {0x0000a228, 0x000003b5},
4042 { 0x0000a234, 0x20202020 }, 4040 {0x0000a22c, 0x233f7180},
4043 { 0x0000a238, 0x20202020 }, 4041 {0x0000a234, 0x20202020},
4044 { 0x0000a23c, 0x13c889af }, 4042 {0x0000a238, 0x20202020},
4045 { 0x0000a240, 0x38490a20 }, 4043 {0x0000a23c, 0x13c889af},
4046 { 0x0000a244, 0x00000000 }, 4044 {0x0000a240, 0x38490a20},
4047 { 0x0000a248, 0xfffffffc }, 4045 {0x0000a244, 0x00000000},
4048 { 0x0000a24c, 0x00000000 }, 4046 {0x0000a248, 0xfffffffc},
4049 { 0x0000a254, 0x00000000 }, 4047 {0x0000a24c, 0x00000000},
4050 { 0x0000a258, 0x0cdbd380 }, 4048 {0x0000a254, 0x00000000},
4051 { 0x0000a25c, 0x0f0f0f01 }, 4049 {0x0000a258, 0x0cdbd380},
4052 { 0x0000a260, 0xdfa91f01 }, 4050 {0x0000a25c, 0x0f0f0f01},
4053 { 0x0000a264, 0x00418a11 }, 4051 {0x0000a260, 0xdfa91f01},
4054 { 0x0000b264, 0x00418a11 }, 4052 {0x0000a264, 0x00418a11},
4055 { 0x0000a268, 0x00000000 }, 4053 {0x0000b264, 0x00418a11},
4056 { 0x0000a26c, 0x0e79e5c6 }, 4054 {0x0000a268, 0x00000000},
4057 { 0x0000b26c, 0x0e79e5c6 }, 4055 {0x0000a26c, 0x0e79e5c6},
4058 { 0x0000d270, 0x00820820 }, 4056 {0x0000b26c, 0x0e79e5c6},
4059 { 0x0000a278, 0x1ce739ce }, 4057 {0x0000d270, 0x00820820},
4060 { 0x0000a27c, 0x050701ce }, 4058 {0x0000a278, 0x1ce739ce},
4061 { 0x0000d35c, 0x07ffffef }, 4059 {0x0000a27c, 0x050701ce},
4062 { 0x0000d360, 0x0fffffe7 }, 4060 {0x0000d35c, 0x07ffffef},
4063 { 0x0000d364, 0x17ffffe5 }, 4061 {0x0000d360, 0x0fffffe7},
4064 { 0x0000d368, 0x1fffffe4 }, 4062 {0x0000d364, 0x17ffffe5},
4065 { 0x0000d36c, 0x37ffffe3 }, 4063 {0x0000d368, 0x1fffffe4},
4066 { 0x0000d370, 0x3fffffe3 }, 4064 {0x0000d36c, 0x37ffffe3},
4067 { 0x0000d374, 0x57ffffe3 }, 4065 {0x0000d370, 0x3fffffe3},
4068 { 0x0000d378, 0x5fffffe2 }, 4066 {0x0000d374, 0x57ffffe3},
4069 { 0x0000d37c, 0x7fffffe2 }, 4067 {0x0000d378, 0x5fffffe2},
4070 { 0x0000d380, 0x7f3c7bba }, 4068 {0x0000d37c, 0x7fffffe2},
4071 { 0x0000d384, 0xf3307ff0 }, 4069 {0x0000d380, 0x7f3c7bba},
4072 { 0x0000a388, 0x0c000000 }, 4070 {0x0000d384, 0xf3307ff0},
4073 { 0x0000a38c, 0x20202020 }, 4071 {0x0000a388, 0x0c000000},
4074 { 0x0000a390, 0x20202020 }, 4072 {0x0000a38c, 0x20202020},
4075 { 0x0000a394, 0x1ce739ce }, 4073 {0x0000a390, 0x20202020},
4076 { 0x0000a398, 0x000001ce }, 4074 {0x0000a394, 0x1ce739ce},
4077 { 0x0000b398, 0x000001ce }, 4075 {0x0000a398, 0x000001ce},
4078 { 0x0000a39c, 0x00000001 }, 4076 {0x0000b398, 0x000001ce},
4079 { 0x0000a3c8, 0x00000246 }, 4077 {0x0000a39c, 0x00000001},
4080 { 0x0000a3cc, 0x20202020 }, 4078 {0x0000a3c8, 0x00000246},
4081 { 0x0000a3d0, 0x20202020 }, 4079 {0x0000a3cc, 0x20202020},
4082 { 0x0000a3d4, 0x20202020 }, 4080 {0x0000a3d0, 0x20202020},
4083 { 0x0000a3dc, 0x1ce739ce }, 4081 {0x0000a3d4, 0x20202020},
4084 { 0x0000a3e0, 0x000001ce }, 4082 {0x0000a3dc, 0x1ce739ce},
4085 { 0x0000a3e4, 0x00000000 }, 4083 {0x0000a3e0, 0x000001ce},
4086 { 0x0000a3e8, 0x18c43433 }, 4084 {0x0000a3e4, 0x00000000},
4087 { 0x0000a3ec, 0x00f70081 }, 4085 {0x0000a3e8, 0x18c43433},
4088 { 0x0000a3f0, 0x01036a1e }, 4086 {0x0000a3ec, 0x00f70081},
4089 { 0x0000a3f4, 0x00000000 }, 4087 {0x0000a3f0, 0x01036a1e},
4090 { 0x0000b3f4, 0x00000000 }, 4088 {0x0000a3f4, 0x00000000},
4091 { 0x0000a7d8, 0x000003f1 }, 4089 {0x0000b3f4, 0x00000000},
4092 { 0x00007800, 0x00000800 }, 4090 {0x0000a7d8, 0x000003f1},
4093 { 0x00007804, 0x6c35ffd2 }, 4091 {0x00007800, 0x00000800},
4094 { 0x00007808, 0x6db6c000 }, 4092 {0x00007804, 0x6c35ffd2},
4095 { 0x0000780c, 0x6db6cb30 }, 4093 {0x00007808, 0x6db6c000},
4096 { 0x00007810, 0x6db6cb6c }, 4094 {0x0000780c, 0x6db6cb30},
4097 { 0x00007814, 0x0501e200 }, 4095 {0x00007810, 0x6db6cb6c},
4098 { 0x00007818, 0x0094128d }, 4096 {0x00007814, 0x0501e200},
4099 { 0x0000781c, 0x976ee392 }, 4097 {0x00007818, 0x0094128d},
4100 { 0x00007820, 0xf75ff6fc }, 4098 {0x0000781c, 0x976ee392},
4101 { 0x00007824, 0x00040000 }, 4099 {0x00007820, 0xf75ff6fc},
4102 { 0x00007828, 0xdb003012 }, 4100 {0x00007824, 0x00040000},
4103 { 0x0000782c, 0x04924914 }, 4101 {0x00007828, 0xdb003012},
4104 { 0x00007830, 0x21084210 }, 4102 {0x0000782c, 0x04924914},
4105 { 0x00007834, 0x00140000 }, 4103 {0x00007830, 0x21084210},
4106 { 0x00007838, 0x0e4548d8 }, 4104 {0x00007834, 0x00140000},
4107 { 0x0000783c, 0x54214514 }, 4105 {0x00007838, 0x0e4548d8},
4108 { 0x00007840, 0x02025830 }, 4106 {0x0000783c, 0x54214514},
4109 { 0x00007844, 0x71c0d388 }, 4107 {0x00007840, 0x02025830},
4110 { 0x00007848, 0x934934a8 }, 4108 {0x00007844, 0x71c0d388},
4111 { 0x00007850, 0x00000000 }, 4109 {0x00007848, 0x934934a8},
4112 { 0x00007854, 0x00000800 }, 4110 {0x00007850, 0x00000000},
4113 { 0x00007858, 0x6c35ffd2 }, 4111 {0x00007854, 0x00000800},
4114 { 0x0000785c, 0x6db6c000 }, 4112 {0x00007858, 0x6c35ffd2},
4115 { 0x00007860, 0x6db6cb30 }, 4113 {0x0000785c, 0x6db6c000},
4116 { 0x00007864, 0x6db6cb6c }, 4114 {0x00007860, 0x6db6cb30},
4117 { 0x00007868, 0x0501e200 }, 4115 {0x00007864, 0x6db6cb6c},
4118 { 0x0000786c, 0x0094128d }, 4116 {0x00007868, 0x0501e200},
4119 { 0x00007870, 0x976ee392 }, 4117 {0x0000786c, 0x0094128d},
4120 { 0x00007874, 0xf75ff6fc }, 4118 {0x00007870, 0x976ee392},
4121 { 0x00007878, 0x00040000 }, 4119 {0x00007874, 0xf75ff6fc},
4122 { 0x0000787c, 0xdb003012 }, 4120 {0x00007878, 0x00040000},
4123 { 0x00007880, 0x04924914 }, 4121 {0x0000787c, 0xdb003012},
4124 { 0x00007884, 0x21084210 }, 4122 {0x00007880, 0x04924914},
4125 { 0x00007888, 0x001b6db0 }, 4123 {0x00007884, 0x21084210},
4126 { 0x0000788c, 0x00376b63 }, 4124 {0x00007888, 0x001b6db0},
4127 { 0x00007890, 0x06db6db6 }, 4125 {0x0000788c, 0x00376b63},
4128 { 0x00007894, 0x006d8000 }, 4126 {0x00007890, 0x06db6db6},
4129 { 0x00007898, 0x48100000 }, 4127 {0x00007894, 0x006d8000},
4130 { 0x0000789c, 0x00000000 }, 4128 {0x00007898, 0x48100000},
4131 { 0x000078a0, 0x08000000 }, 4129 {0x0000789c, 0x00000000},
4132 { 0x000078a4, 0x0007ffd8 }, 4130 {0x000078a0, 0x08000000},
4133 { 0x000078a8, 0x0007ffd8 }, 4131 {0x000078a4, 0x0007ffd8},
4134 { 0x000078ac, 0x001c0020 }, 4132 {0x000078a8, 0x0007ffd8},
4135 { 0x000078b0, 0x00060aeb }, 4133 {0x000078ac, 0x001c0020},
4136 { 0x000078b4, 0x40008080 }, 4134 {0x000078b0, 0x00060aeb},
4137 { 0x000078b8, 0x2a850160 }, 4135 {0x000078b4, 0x40008080},
4136 {0x000078b8, 0x2a850160},
4138}; 4137};
4139 4138
4140/* 4139static const u32 ar9287Common_normal_cck_fir_coeff_9287_1_1[][2] = {
4141 * For Japanese regulatory requirements, 2484 MHz requires the following three 4140 /* Addr allmodes */
4142 * registers be programmed differently from the channel between 2412 and 4141 {0x0000a1f4, 0x00fffeff},
4143 * 2472 MHz. 4142 {0x0000a1f8, 0x00f5f9ff},
4144 */ 4143 {0x0000a1fc, 0xb79f6427},
4145static const u32 ar9287Common_normal_cck_fir_coeff_92871_1[][2] = {
4146 { 0x0000a1f4, 0x00fffeff },
4147 { 0x0000a1f8, 0x00f5f9ff },
4148 { 0x0000a1fc, 0xb79f6427 },
4149}; 4144};
4150 4145
4151static const u32 ar9287Common_japan_2484_cck_fir_coeff_92871_1[][2] = { 4146static const u32 ar9287Common_japan_2484_cck_fir_coeff_9287_1_1[][2] = {
4152 { 0x0000a1f4, 0x00000000 }, 4147 /* Addr allmodes */
4153 { 0x0000a1f8, 0xefff0301 }, 4148 {0x0000a1f4, 0x00000000},
4154 { 0x0000a1fc, 0xca9228ee }, 4149 {0x0000a1f8, 0xefff0301},
4150 {0x0000a1fc, 0xca9228ee},
4155}; 4151};
4156 4152
4157static const u32 ar9287Modes_tx_gain_9287_1_1[][6] = { 4153static const u32 ar9287Modes_tx_gain_9287_1_1[][6] = {
4158 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 4154 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4159 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 4155 {0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002},
4160 { 0x0000a304, 0x00000000, 0x00000000, 0x00004002, 0x00004002, 0x00004002 }, 4156 {0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004},
4161 { 0x0000a308, 0x00000000, 0x00000000, 0x00008004, 0x00008004, 0x00008004 }, 4157 {0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a},
4162 { 0x0000a30c, 0x00000000, 0x00000000, 0x0000c00a, 0x0000c00a, 0x0000c00a }, 4158 {0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c},
4163 { 0x0000a310, 0x00000000, 0x00000000, 0x0001000c, 0x0001000c, 0x0001000c }, 4159 {0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b},
4164 { 0x0000a314, 0x00000000, 0x00000000, 0x0001420b, 0x0001420b, 0x0001420b }, 4160 {0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a},
4165 { 0x0000a318, 0x00000000, 0x00000000, 0x0001824a, 0x0001824a, 0x0001824a }, 4161 {0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a},
4166 { 0x0000a31c, 0x00000000, 0x00000000, 0x0001c44a, 0x0001c44a, 0x0001c44a }, 4162 {0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a},
4167 { 0x0000a320, 0x00000000, 0x00000000, 0x0002064a, 0x0002064a, 0x0002064a }, 4163 {0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a},
4168 { 0x0000a324, 0x00000000, 0x00000000, 0x0002484a, 0x0002484a, 0x0002484a }, 4164 {0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a},
4169 { 0x0000a328, 0x00000000, 0x00000000, 0x00028a4a, 0x00028a4a, 0x00028a4a }, 4165 {0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a},
4170 { 0x0000a32c, 0x00000000, 0x00000000, 0x0002cc4a, 0x0002cc4a, 0x0002cc4a }, 4166 {0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a},
4171 { 0x0000a330, 0x00000000, 0x00000000, 0x00030e4a, 0x00030e4a, 0x00030e4a }, 4167 {0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a},
4172 { 0x0000a334, 0x00000000, 0x00000000, 0x00034e8a, 0x00034e8a, 0x00034e8a }, 4168 {0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c},
4173 { 0x0000a338, 0x00000000, 0x00000000, 0x00038e8c, 0x00038e8c, 0x00038e8c }, 4169 {0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc},
4174 { 0x0000a33c, 0x00000000, 0x00000000, 0x0003cecc, 0x0003cecc, 0x0003cecc }, 4170 {0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4},
4175 { 0x0000a340, 0x00000000, 0x00000000, 0x00040ed4, 0x00040ed4, 0x00040ed4 }, 4171 {0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc},
4176 { 0x0000a344, 0x00000000, 0x00000000, 0x00044edc, 0x00044edc, 0x00044edc }, 4172 {0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede},
4177 { 0x0000a348, 0x00000000, 0x00000000, 0x00048ede, 0x00048ede, 0x00048ede }, 4173 {0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e},
4178 { 0x0000a34c, 0x00000000, 0x00000000, 0x0004cf1e, 0x0004cf1e, 0x0004cf1e }, 4174 {0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e},
4179 { 0x0000a350, 0x00000000, 0x00000000, 0x00050f5e, 0x00050f5e, 0x00050f5e }, 4175 {0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e},
4180 { 0x0000a354, 0x00000000, 0x00000000, 0x00054f9e, 0x00054f9e, 0x00054f9e }, 4176 {0x0000a780, 0x00000000, 0x00000000, 0x00000062, 0x00000062, 0x00000062},
4181 { 0x0000a780, 0x00000000, 0x00000000, 0x00000062, 0x00000062, 0x00000062 }, 4177 {0x0000a784, 0x00000000, 0x00000000, 0x00004064, 0x00004064, 0x00004064},
4182 { 0x0000a784, 0x00000000, 0x00000000, 0x00004064, 0x00004064, 0x00004064 }, 4178 {0x0000a788, 0x00000000, 0x00000000, 0x000080a4, 0x000080a4, 0x000080a4},
4183 { 0x0000a788, 0x00000000, 0x00000000, 0x000080a4, 0x000080a4, 0x000080a4 }, 4179 {0x0000a78c, 0x00000000, 0x00000000, 0x0000c0aa, 0x0000c0aa, 0x0000c0aa},
4184 { 0x0000a78c, 0x00000000, 0x00000000, 0x0000c0aa, 0x0000c0aa, 0x0000c0aa }, 4180 {0x0000a790, 0x00000000, 0x00000000, 0x000100ac, 0x000100ac, 0x000100ac},
4185 { 0x0000a790, 0x00000000, 0x00000000, 0x000100ac, 0x000100ac, 0x000100ac }, 4181 {0x0000a794, 0x00000000, 0x00000000, 0x000140b4, 0x000140b4, 0x000140b4},
4186 { 0x0000a794, 0x00000000, 0x00000000, 0x000140b4, 0x000140b4, 0x000140b4 }, 4182 {0x0000a798, 0x00000000, 0x00000000, 0x000180f4, 0x000180f4, 0x000180f4},
4187 { 0x0000a798, 0x00000000, 0x00000000, 0x000180f4, 0x000180f4, 0x000180f4 }, 4183 {0x0000a79c, 0x00000000, 0x00000000, 0x0001c134, 0x0001c134, 0x0001c134},
4188 { 0x0000a79c, 0x00000000, 0x00000000, 0x0001c134, 0x0001c134, 0x0001c134 }, 4184 {0x0000a7a0, 0x00000000, 0x00000000, 0x00020174, 0x00020174, 0x00020174},
4189 { 0x0000a7a0, 0x00000000, 0x00000000, 0x00020174, 0x00020174, 0x00020174 }, 4185 {0x0000a7a4, 0x00000000, 0x00000000, 0x0002417c, 0x0002417c, 0x0002417c},
4190 { 0x0000a7a4, 0x00000000, 0x00000000, 0x0002417c, 0x0002417c, 0x0002417c }, 4186 {0x0000a7a8, 0x00000000, 0x00000000, 0x0002817e, 0x0002817e, 0x0002817e},
4191 { 0x0000a7a8, 0x00000000, 0x00000000, 0x0002817e, 0x0002817e, 0x0002817e }, 4187 {0x0000a7ac, 0x00000000, 0x00000000, 0x0002c1be, 0x0002c1be, 0x0002c1be},
4192 { 0x0000a7ac, 0x00000000, 0x00000000, 0x0002c1be, 0x0002c1be, 0x0002c1be }, 4188 {0x0000a7b0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4193 { 0x0000a7b0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4189 {0x0000a7b4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4194 { 0x0000a7b4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4190 {0x0000a7b8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4195 { 0x0000a7b8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4191 {0x0000a7bc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4196 { 0x0000a7bc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4192 {0x0000a7c0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4197 { 0x0000a7c0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4193 {0x0000a7c4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4198 { 0x0000a7c4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4194 {0x0000a7c8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4199 { 0x0000a7c8, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4195 {0x0000a7cc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4200 { 0x0000a7cc, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4196 {0x0000a7d0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4201 { 0x0000a7d0, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4197 {0x0000a7d4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe},
4202 { 0x0000a7d4, 0x00000000, 0x00000000, 0x000301fe, 0x000301fe, 0x000301fe }, 4198 {0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000},
4203 { 0x0000a274, 0x0a180000, 0x0a180000, 0x0a1aa000, 0x0a1aa000, 0x0a1aa000 },
4204}; 4199};
4205 4200
4206static const u32 ar9287Modes_rx_gain_9287_1_1[][6] = { 4201static const u32 ar9287Modes_rx_gain_9287_1_1[][6] = {
4207 /* Address 5G-HT20 5G-HT40 2G-HT40 2G-HT20 Turbo */ 4202 {0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120},
4208 { 0x00009a00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, 4203 {0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124},
4209 { 0x00009a04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, 4204 {0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128},
4210 { 0x00009a08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, 4205 {0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c},
4211 { 0x00009a0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, 4206 {0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130},
4212 { 0x00009a10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, 4207 {0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194},
4213 { 0x00009a14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, 4208 {0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198},
4214 { 0x00009a18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, 4209 {0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c},
4215 { 0x00009a1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, 4210 {0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210},
4216 { 0x00009a20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, 4211 {0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284},
4217 { 0x00009a24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, 4212 {0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288},
4218 { 0x00009a28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, 4213 {0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c},
4219 { 0x00009a2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, 4214 {0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290},
4220 { 0x00009a30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, 4215 {0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294},
4221 { 0x00009a34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, 4216 {0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0},
4222 { 0x00009a38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, 4217 {0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4},
4223 { 0x00009a3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, 4218 {0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8},
4224 { 0x00009a40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, 4219 {0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac},
4225 { 0x00009a44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, 4220 {0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0},
4226 { 0x00009a48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, 4221 {0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4},
4227 { 0x00009a4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, 4222 {0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8},
4228 { 0x00009a50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, 4223 {0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4},
4229 { 0x00009a54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, 4224 {0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708},
4230 { 0x00009a58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, 4225 {0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c},
4231 { 0x00009a5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, 4226 {0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710},
4232 { 0x00009a60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, 4227 {0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04},
4233 { 0x00009a64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, 4228 {0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08},
4234 { 0x00009a68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, 4229 {0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c},
4235 { 0x00009a6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, 4230 {0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10},
4236 { 0x00009a70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, 4231 {0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14},
4237 { 0x00009a74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, 4232 {0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18},
4238 { 0x00009a78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, 4233 {0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c},
4239 { 0x00009a7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, 4234 {0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90},
4240 { 0x00009a80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, 4235 {0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94},
4241 { 0x00009a84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, 4236 {0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98},
4242 { 0x00009a88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, 4237 {0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4},
4243 { 0x00009a8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, 4238 {0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8},
4244 { 0x00009a90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, 4239 {0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04},
4245 { 0x00009a94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, 4240 {0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08},
4246 { 0x00009a98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, 4241 {0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c},
4247 { 0x00009a9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, 4242 {0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10},
4248 { 0x00009aa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, 4243 {0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14},
4249 { 0x00009aa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, 4244 {0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18},
4250 { 0x00009aa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, 4245 {0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c},
4251 { 0x00009aac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, 4246 {0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90},
4252 { 0x00009ab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, 4247 {0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18},
4253 { 0x00009ab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, 4248 {0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24},
4254 { 0x00009ab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, 4249 {0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28},
4255 { 0x00009abc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, 4250 {0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314},
4256 { 0x00009ac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, 4251 {0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318},
4257 { 0x00009ac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, 4252 {0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c},
4258 { 0x00009ac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, 4253 {0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390},
4259 { 0x00009acc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, 4254 {0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394},
4260 { 0x00009ad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, 4255 {0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398},
4261 { 0x00009ad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, 4256 {0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4},
4262 { 0x00009ad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, 4257 {0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8},
4263 { 0x00009adc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, 4258 {0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac},
4264 { 0x00009ae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, 4259 {0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0},
4265 { 0x00009ae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, 4260 {0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380},
4266 { 0x00009ae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, 4261 {0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384},
4267 { 0x00009aec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, 4262 {0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388},
4268 { 0x00009af0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, 4263 {0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710},
4269 { 0x00009af4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, 4264 {0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714},
4270 { 0x00009af8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, 4265 {0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718},
4271 { 0x00009afc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, 4266 {0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10},
4272 { 0x00009b00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, 4267 {0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14},
4273 { 0x00009b04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, 4268 {0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18},
4274 { 0x00009b08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, 4269 {0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c},
4275 { 0x00009b0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, 4270 {0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90},
4276 { 0x00009b10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, 4271 {0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94},
4277 { 0x00009b14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, 4272 {0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c},
4278 { 0x00009b18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, 4273 {0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90},
4279 { 0x00009b1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, 4274 {0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94},
4280 { 0x00009b20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, 4275 {0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0},
4281 { 0x00009b24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, 4276 {0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4},
4282 { 0x00009b28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, 4277 {0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8},
4283 { 0x00009b2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, 4278 {0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac},
4284 { 0x00009b30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, 4279 {0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0},
4285 { 0x00009b34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, 4280 {0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4},
4286 { 0x00009b38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, 4281 {0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1},
4287 { 0x00009b3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, 4282 {0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5},
4288 { 0x00009b40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, 4283 {0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9},
4289 { 0x00009b44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, 4284 {0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad},
4290 { 0x00009b48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, 4285 {0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1},
4291 { 0x00009b4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, 4286 {0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5},
4292 { 0x00009b50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, 4287 {0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9},
4293 { 0x00009b54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, 4288 {0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5},
4294 { 0x00009b58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, 4289 {0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9},
4295 { 0x00009b5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, 4290 {0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd},
4296 { 0x00009b60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, 4291 {0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1},
4297 { 0x00009b64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, 4292 {0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5},
4298 { 0x00009b68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, 4293 {0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2},
4299 { 0x00009b6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, 4294 {0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6},
4300 { 0x00009b70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, 4295 {0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca},
4301 { 0x00009b74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, 4296 {0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce},
4302 { 0x00009b78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, 4297 {0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2},
4303 { 0x00009b7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, 4298 {0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6},
4304 { 0x00009b80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, 4299 {0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda},
4305 { 0x00009b84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, 4300 {0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7},
4306 { 0x00009b88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, 4301 {0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb},
4307 { 0x00009b8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, 4302 {0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf},
4308 { 0x00009b90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, 4303 {0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3},
4309 { 0x00009b94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, 4304 {0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7},
4310 { 0x00009b98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, 4305 {0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4311 { 0x00009b9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4306 {0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4312 { 0x00009ba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4307 {0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4313 { 0x00009ba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4308 {0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4314 { 0x00009ba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4309 {0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4315 { 0x00009bac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4310 {0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4316 { 0x00009bb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4311 {0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4317 { 0x00009bb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4312 {0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4318 { 0x00009bb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4313 {0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4319 { 0x00009bbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4314 {0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4320 { 0x00009bc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4315 {0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4321 { 0x00009bc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4316 {0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4322 { 0x00009bc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4317 {0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4323 { 0x00009bcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4318 {0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4324 { 0x00009bd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4319 {0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4325 { 0x00009bd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4320 {0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4326 { 0x00009bd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4321 {0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4327 { 0x00009bdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4322 {0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4328 { 0x00009be0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4323 {0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4329 { 0x00009be4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4324 {0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4330 { 0x00009be8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4325 {0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4331 { 0x00009bec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4326 {0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4332 { 0x00009bf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4327 {0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4333 { 0x00009bf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4328 {0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4334 { 0x00009bf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4329 {0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4335 { 0x00009bfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4330 {0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120},
4336 { 0x0000aa00, 0x00000000, 0x00000000, 0x0000a120, 0x0000a120, 0x0000a120 }, 4331 {0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124},
4337 { 0x0000aa04, 0x00000000, 0x00000000, 0x0000a124, 0x0000a124, 0x0000a124 }, 4332 {0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128},
4338 { 0x0000aa08, 0x00000000, 0x00000000, 0x0000a128, 0x0000a128, 0x0000a128 }, 4333 {0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c},
4339 { 0x0000aa0c, 0x00000000, 0x00000000, 0x0000a12c, 0x0000a12c, 0x0000a12c }, 4334 {0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130},
4340 { 0x0000aa10, 0x00000000, 0x00000000, 0x0000a130, 0x0000a130, 0x0000a130 }, 4335 {0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194},
4341 { 0x0000aa14, 0x00000000, 0x00000000, 0x0000a194, 0x0000a194, 0x0000a194 }, 4336 {0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198},
4342 { 0x0000aa18, 0x00000000, 0x00000000, 0x0000a198, 0x0000a198, 0x0000a198 }, 4337 {0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c},
4343 { 0x0000aa1c, 0x00000000, 0x00000000, 0x0000a20c, 0x0000a20c, 0x0000a20c }, 4338 {0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210},
4344 { 0x0000aa20, 0x00000000, 0x00000000, 0x0000a210, 0x0000a210, 0x0000a210 }, 4339 {0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284},
4345 { 0x0000aa24, 0x00000000, 0x00000000, 0x0000a284, 0x0000a284, 0x0000a284 }, 4340 {0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288},
4346 { 0x0000aa28, 0x00000000, 0x00000000, 0x0000a288, 0x0000a288, 0x0000a288 }, 4341 {0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c},
4347 { 0x0000aa2c, 0x00000000, 0x00000000, 0x0000a28c, 0x0000a28c, 0x0000a28c }, 4342 {0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290},
4348 { 0x0000aa30, 0x00000000, 0x00000000, 0x0000a290, 0x0000a290, 0x0000a290 }, 4343 {0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294},
4349 { 0x0000aa34, 0x00000000, 0x00000000, 0x0000a294, 0x0000a294, 0x0000a294 }, 4344 {0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0},
4350 { 0x0000aa38, 0x00000000, 0x00000000, 0x0000a2a0, 0x0000a2a0, 0x0000a2a0 }, 4345 {0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4},
4351 { 0x0000aa3c, 0x00000000, 0x00000000, 0x0000a2a4, 0x0000a2a4, 0x0000a2a4 }, 4346 {0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8},
4352 { 0x0000aa40, 0x00000000, 0x00000000, 0x0000a2a8, 0x0000a2a8, 0x0000a2a8 }, 4347 {0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac},
4353 { 0x0000aa44, 0x00000000, 0x00000000, 0x0000a2ac, 0x0000a2ac, 0x0000a2ac }, 4348 {0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0},
4354 { 0x0000aa48, 0x00000000, 0x00000000, 0x0000a2b0, 0x0000a2b0, 0x0000a2b0 }, 4349 {0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4},
4355 { 0x0000aa4c, 0x00000000, 0x00000000, 0x0000a2b4, 0x0000a2b4, 0x0000a2b4 }, 4350 {0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8},
4356 { 0x0000aa50, 0x00000000, 0x00000000, 0x0000a2b8, 0x0000a2b8, 0x0000a2b8 }, 4351 {0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4},
4357 { 0x0000aa54, 0x00000000, 0x00000000, 0x0000a2c4, 0x0000a2c4, 0x0000a2c4 }, 4352 {0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708},
4358 { 0x0000aa58, 0x00000000, 0x00000000, 0x0000a708, 0x0000a708, 0x0000a708 }, 4353 {0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c},
4359 { 0x0000aa5c, 0x00000000, 0x00000000, 0x0000a70c, 0x0000a70c, 0x0000a70c }, 4354 {0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710},
4360 { 0x0000aa60, 0x00000000, 0x00000000, 0x0000a710, 0x0000a710, 0x0000a710 }, 4355 {0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04},
4361 { 0x0000aa64, 0x00000000, 0x00000000, 0x0000ab04, 0x0000ab04, 0x0000ab04 }, 4356 {0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08},
4362 { 0x0000aa68, 0x00000000, 0x00000000, 0x0000ab08, 0x0000ab08, 0x0000ab08 }, 4357 {0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c},
4363 { 0x0000aa6c, 0x00000000, 0x00000000, 0x0000ab0c, 0x0000ab0c, 0x0000ab0c }, 4358 {0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10},
4364 { 0x0000aa70, 0x00000000, 0x00000000, 0x0000ab10, 0x0000ab10, 0x0000ab10 }, 4359 {0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14},
4365 { 0x0000aa74, 0x00000000, 0x00000000, 0x0000ab14, 0x0000ab14, 0x0000ab14 }, 4360 {0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18},
4366 { 0x0000aa78, 0x00000000, 0x00000000, 0x0000ab18, 0x0000ab18, 0x0000ab18 }, 4361 {0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c},
4367 { 0x0000aa7c, 0x00000000, 0x00000000, 0x0000ab8c, 0x0000ab8c, 0x0000ab8c }, 4362 {0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90},
4368 { 0x0000aa80, 0x00000000, 0x00000000, 0x0000ab90, 0x0000ab90, 0x0000ab90 }, 4363 {0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94},
4369 { 0x0000aa84, 0x00000000, 0x00000000, 0x0000ab94, 0x0000ab94, 0x0000ab94 }, 4364 {0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98},
4370 { 0x0000aa88, 0x00000000, 0x00000000, 0x0000ab98, 0x0000ab98, 0x0000ab98 }, 4365 {0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4},
4371 { 0x0000aa8c, 0x00000000, 0x00000000, 0x0000aba4, 0x0000aba4, 0x0000aba4 }, 4366 {0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8},
4372 { 0x0000aa90, 0x00000000, 0x00000000, 0x0000aba8, 0x0000aba8, 0x0000aba8 }, 4367 {0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04},
4373 { 0x0000aa94, 0x00000000, 0x00000000, 0x0000cb04, 0x0000cb04, 0x0000cb04 }, 4368 {0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08},
4374 { 0x0000aa98, 0x00000000, 0x00000000, 0x0000cb08, 0x0000cb08, 0x0000cb08 }, 4369 {0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c},
4375 { 0x0000aa9c, 0x00000000, 0x00000000, 0x0000cb0c, 0x0000cb0c, 0x0000cb0c }, 4370 {0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10},
4376 { 0x0000aaa0, 0x00000000, 0x00000000, 0x0000cb10, 0x0000cb10, 0x0000cb10 }, 4371 {0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14},
4377 { 0x0000aaa4, 0x00000000, 0x00000000, 0x0000cb14, 0x0000cb14, 0x0000cb14 }, 4372 {0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18},
4378 { 0x0000aaa8, 0x00000000, 0x00000000, 0x0000cb18, 0x0000cb18, 0x0000cb18 }, 4373 {0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c},
4379 { 0x0000aaac, 0x00000000, 0x00000000, 0x0000cb8c, 0x0000cb8c, 0x0000cb8c }, 4374 {0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90},
4380 { 0x0000aab0, 0x00000000, 0x00000000, 0x0000cb90, 0x0000cb90, 0x0000cb90 }, 4375 {0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18},
4381 { 0x0000aab4, 0x00000000, 0x00000000, 0x0000cf18, 0x0000cf18, 0x0000cf18 }, 4376 {0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24},
4382 { 0x0000aab8, 0x00000000, 0x00000000, 0x0000cf24, 0x0000cf24, 0x0000cf24 }, 4377 {0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28},
4383 { 0x0000aabc, 0x00000000, 0x00000000, 0x0000cf28, 0x0000cf28, 0x0000cf28 }, 4378 {0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314},
4384 { 0x0000aac0, 0x00000000, 0x00000000, 0x0000d314, 0x0000d314, 0x0000d314 }, 4379 {0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318},
4385 { 0x0000aac4, 0x00000000, 0x00000000, 0x0000d318, 0x0000d318, 0x0000d318 }, 4380 {0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c},
4386 { 0x0000aac8, 0x00000000, 0x00000000, 0x0000d38c, 0x0000d38c, 0x0000d38c }, 4381 {0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390},
4387 { 0x0000aacc, 0x00000000, 0x00000000, 0x0000d390, 0x0000d390, 0x0000d390 }, 4382 {0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394},
4388 { 0x0000aad0, 0x00000000, 0x00000000, 0x0000d394, 0x0000d394, 0x0000d394 }, 4383 {0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398},
4389 { 0x0000aad4, 0x00000000, 0x00000000, 0x0000d398, 0x0000d398, 0x0000d398 }, 4384 {0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4},
4390 { 0x0000aad8, 0x00000000, 0x00000000, 0x0000d3a4, 0x0000d3a4, 0x0000d3a4 }, 4385 {0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8},
4391 { 0x0000aadc, 0x00000000, 0x00000000, 0x0000d3a8, 0x0000d3a8, 0x0000d3a8 }, 4386 {0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac},
4392 { 0x0000aae0, 0x00000000, 0x00000000, 0x0000d3ac, 0x0000d3ac, 0x0000d3ac }, 4387 {0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0},
4393 { 0x0000aae4, 0x00000000, 0x00000000, 0x0000d3b0, 0x0000d3b0, 0x0000d3b0 }, 4388 {0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380},
4394 { 0x0000aae8, 0x00000000, 0x00000000, 0x0000f380, 0x0000f380, 0x0000f380 }, 4389 {0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384},
4395 { 0x0000aaec, 0x00000000, 0x00000000, 0x0000f384, 0x0000f384, 0x0000f384 }, 4390 {0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388},
4396 { 0x0000aaf0, 0x00000000, 0x00000000, 0x0000f388, 0x0000f388, 0x0000f388 }, 4391 {0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710},
4397 { 0x0000aaf4, 0x00000000, 0x00000000, 0x0000f710, 0x0000f710, 0x0000f710 }, 4392 {0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714},
4398 { 0x0000aaf8, 0x00000000, 0x00000000, 0x0000f714, 0x0000f714, 0x0000f714 }, 4393 {0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718},
4399 { 0x0000aafc, 0x00000000, 0x00000000, 0x0000f718, 0x0000f718, 0x0000f718 }, 4394 {0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10},
4400 { 0x0000ab00, 0x00000000, 0x00000000, 0x0000fb10, 0x0000fb10, 0x0000fb10 }, 4395 {0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14},
4401 { 0x0000ab04, 0x00000000, 0x00000000, 0x0000fb14, 0x0000fb14, 0x0000fb14 }, 4396 {0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18},
4402 { 0x0000ab08, 0x00000000, 0x00000000, 0x0000fb18, 0x0000fb18, 0x0000fb18 }, 4397 {0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c},
4403 { 0x0000ab0c, 0x00000000, 0x00000000, 0x0000fb8c, 0x0000fb8c, 0x0000fb8c }, 4398 {0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90},
4404 { 0x0000ab10, 0x00000000, 0x00000000, 0x0000fb90, 0x0000fb90, 0x0000fb90 }, 4399 {0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94},
4405 { 0x0000ab14, 0x00000000, 0x00000000, 0x0000fb94, 0x0000fb94, 0x0000fb94 }, 4400 {0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c},
4406 { 0x0000ab18, 0x00000000, 0x00000000, 0x0000ff8c, 0x0000ff8c, 0x0000ff8c }, 4401 {0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90},
4407 { 0x0000ab1c, 0x00000000, 0x00000000, 0x0000ff90, 0x0000ff90, 0x0000ff90 }, 4402 {0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94},
4408 { 0x0000ab20, 0x00000000, 0x00000000, 0x0000ff94, 0x0000ff94, 0x0000ff94 }, 4403 {0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0},
4409 { 0x0000ab24, 0x00000000, 0x00000000, 0x0000ffa0, 0x0000ffa0, 0x0000ffa0 }, 4404 {0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4},
4410 { 0x0000ab28, 0x00000000, 0x00000000, 0x0000ffa4, 0x0000ffa4, 0x0000ffa4 }, 4405 {0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8},
4411 { 0x0000ab2c, 0x00000000, 0x00000000, 0x0000ffa8, 0x0000ffa8, 0x0000ffa8 }, 4406 {0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac},
4412 { 0x0000ab30, 0x00000000, 0x00000000, 0x0000ffac, 0x0000ffac, 0x0000ffac }, 4407 {0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0},
4413 { 0x0000ab34, 0x00000000, 0x00000000, 0x0000ffb0, 0x0000ffb0, 0x0000ffb0 }, 4408 {0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4},
4414 { 0x0000ab38, 0x00000000, 0x00000000, 0x0000ffb4, 0x0000ffb4, 0x0000ffb4 }, 4409 {0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1},
4415 { 0x0000ab3c, 0x00000000, 0x00000000, 0x0000ffa1, 0x0000ffa1, 0x0000ffa1 }, 4410 {0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5},
4416 { 0x0000ab40, 0x00000000, 0x00000000, 0x0000ffa5, 0x0000ffa5, 0x0000ffa5 }, 4411 {0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9},
4417 { 0x0000ab44, 0x00000000, 0x00000000, 0x0000ffa9, 0x0000ffa9, 0x0000ffa9 }, 4412 {0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad},
4418 { 0x0000ab48, 0x00000000, 0x00000000, 0x0000ffad, 0x0000ffad, 0x0000ffad }, 4413 {0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1},
4419 { 0x0000ab4c, 0x00000000, 0x00000000, 0x0000ffb1, 0x0000ffb1, 0x0000ffb1 }, 4414 {0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5},
4420 { 0x0000ab50, 0x00000000, 0x00000000, 0x0000ffb5, 0x0000ffb5, 0x0000ffb5 }, 4415 {0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9},
4421 { 0x0000ab54, 0x00000000, 0x00000000, 0x0000ffb9, 0x0000ffb9, 0x0000ffb9 }, 4416 {0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5},
4422 { 0x0000ab58, 0x00000000, 0x00000000, 0x0000ffc5, 0x0000ffc5, 0x0000ffc5 }, 4417 {0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9},
4423 { 0x0000ab5c, 0x00000000, 0x00000000, 0x0000ffc9, 0x0000ffc9, 0x0000ffc9 }, 4418 {0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd},
4424 { 0x0000ab60, 0x00000000, 0x00000000, 0x0000ffcd, 0x0000ffcd, 0x0000ffcd }, 4419 {0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1},
4425 { 0x0000ab64, 0x00000000, 0x00000000, 0x0000ffd1, 0x0000ffd1, 0x0000ffd1 }, 4420 {0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5},
4426 { 0x0000ab68, 0x00000000, 0x00000000, 0x0000ffd5, 0x0000ffd5, 0x0000ffd5 }, 4421 {0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2},
4427 { 0x0000ab6c, 0x00000000, 0x00000000, 0x0000ffc2, 0x0000ffc2, 0x0000ffc2 }, 4422 {0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6},
4428 { 0x0000ab70, 0x00000000, 0x00000000, 0x0000ffc6, 0x0000ffc6, 0x0000ffc6 }, 4423 {0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca},
4429 { 0x0000ab74, 0x00000000, 0x00000000, 0x0000ffca, 0x0000ffca, 0x0000ffca }, 4424 {0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce},
4430 { 0x0000ab78, 0x00000000, 0x00000000, 0x0000ffce, 0x0000ffce, 0x0000ffce }, 4425 {0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2},
4431 { 0x0000ab7c, 0x00000000, 0x00000000, 0x0000ffd2, 0x0000ffd2, 0x0000ffd2 }, 4426 {0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6},
4432 { 0x0000ab80, 0x00000000, 0x00000000, 0x0000ffd6, 0x0000ffd6, 0x0000ffd6 }, 4427 {0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda},
4433 { 0x0000ab84, 0x00000000, 0x00000000, 0x0000ffda, 0x0000ffda, 0x0000ffda }, 4428 {0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7},
4434 { 0x0000ab88, 0x00000000, 0x00000000, 0x0000ffc7, 0x0000ffc7, 0x0000ffc7 }, 4429 {0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb},
4435 { 0x0000ab8c, 0x00000000, 0x00000000, 0x0000ffcb, 0x0000ffcb, 0x0000ffcb }, 4430 {0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf},
4436 { 0x0000ab90, 0x00000000, 0x00000000, 0x0000ffcf, 0x0000ffcf, 0x0000ffcf }, 4431 {0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3},
4437 { 0x0000ab94, 0x00000000, 0x00000000, 0x0000ffd3, 0x0000ffd3, 0x0000ffd3 }, 4432 {0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7},
4438 { 0x0000ab98, 0x00000000, 0x00000000, 0x0000ffd7, 0x0000ffd7, 0x0000ffd7 }, 4433 {0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4439 { 0x0000ab9c, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4434 {0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4440 { 0x0000aba0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4435 {0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4441 { 0x0000aba4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4436 {0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4442 { 0x0000aba8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4437 {0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4443 { 0x0000abac, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4438 {0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4444 { 0x0000abb0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4439 {0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4445 { 0x0000abb4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4440 {0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4446 { 0x0000abb8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4441 {0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4447 { 0x0000abbc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4442 {0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4448 { 0x0000abc0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4443 {0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4449 { 0x0000abc4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4444 {0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4450 { 0x0000abc8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4445 {0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4451 { 0x0000abcc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4446 {0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4452 { 0x0000abd0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4447 {0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4453 { 0x0000abd4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4448 {0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4454 { 0x0000abd8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4449 {0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4455 { 0x0000abdc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4450 {0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4456 { 0x0000abe0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4451 {0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4457 { 0x0000abe4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4452 {0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4458 { 0x0000abe8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4453 {0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4459 { 0x0000abec, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4454 {0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4460 { 0x0000abf0, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4455 {0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4461 { 0x0000abf4, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4456 {0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4462 { 0x0000abf8, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4457 {0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb},
4463 { 0x0000abfc, 0x00000000, 0x00000000, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb }, 4458 {0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067},
4464 { 0x00009848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 }, 4459 {0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067},
4465 { 0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067, 0x00001067 },
4466}; 4460};
4467 4461
4468static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_1[][2] = { 4462static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_1[][2] = {
4469 {0x00004040, 0x9248fd00 }, 4463 /* Addr allmodes */
4470 {0x00004040, 0x24924924 }, 4464 {0x00004040, 0x9248fd00},
4471 {0x00004040, 0xa8000019 }, 4465 {0x00004040, 0x24924924},
4472 {0x00004040, 0x13160820 }, 4466 {0x00004040, 0xa8000019},
4473 {0x00004040, 0xe5980560 }, 4467 {0x00004040, 0x13160820},
4474 {0x00004040, 0xc01dcffd }, 4468 {0x00004040, 0xe5980560},
4475 {0x00004040, 0x1aaabe41 }, 4469 {0x00004040, 0xc01dcffd},
4476 {0x00004040, 0xbe105554 }, 4470 {0x00004040, 0x1aaabe41},
4477 {0x00004040, 0x00043007 }, 4471 {0x00004040, 0xbe105554},
4478 {0x00004044, 0x00000000 }, 4472 {0x00004040, 0x00043007},
4473 {0x00004044, 0x00000000},
4479}; 4474};
4480 4475
4481static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_1[][2] = { 4476static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_1[][2] = {
4482 {0x00004040, 0x9248fd00 }, 4477 /* Addr allmodes */
4483 {0x00004040, 0x24924924 }, 4478 {0x00004040, 0x9248fd00},
4484 {0x00004040, 0xa8000019 }, 4479 {0x00004040, 0x24924924},
4485 {0x00004040, 0x13160820 }, 4480 {0x00004040, 0xa8000019},
4486 {0x00004040, 0xe5980560 }, 4481 {0x00004040, 0x13160820},
4487 {0x00004040, 0xc01dcffc }, 4482 {0x00004040, 0xe5980560},
4488 {0x00004040, 0x1aaabe41 }, 4483 {0x00004040, 0xc01dcffc},
4489 {0x00004040, 0xbe105554 }, 4484 {0x00004040, 0x1aaabe41},
4490 {0x00004040, 0x00043007 }, 4485 {0x00004040, 0xbe105554},
4491 {0x00004044, 0x00000000 }, 4486 {0x00004040, 0x00043007},
4487 {0x00004044, 0x00000000},
4492}; 4488};
4493 4489
4494
4495/* AR9271 initialization values automaticaly created: 03/31/10 */
4496static const u32 ar9271Modes_9271[][6] = { 4490static const u32 ar9271Modes_9271[][6] = {
4497 { 0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0 }, 4491 {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
4498 { 0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0 }, 4492 {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
4499 { 0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180 }, 4493 {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
4500 { 0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008 }, 4494 {0x000010f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008},
4501 { 0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0 }, 4495 {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
4502 { 0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f }, 4496 {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b, 0x0988004f},
4503 { 0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880 }, 4497 {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440, 0x00006880},
4504 { 0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303 }, 4498 {0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
4505 { 0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200 }, 4499 {0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
4506 { 0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e }, 4500 {0x00009824, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
4507 { 0x00009828, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001 }, 4501 {0x00009828, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001, 0x3a020001},
4508 { 0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e }, 4502 {0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
4509 { 0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007 }, 4503 {0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
4510 { 0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e }, 4504 {0x00009840, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e, 0x206a012e},
4511 { 0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0 }, 4505 {0x00009844, 0x0372161e, 0x0372161e, 0x03721620, 0x03721620, 0x037216a0},
4512 { 0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, 4506 {0x00009848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059},
4513 { 0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059 }, 4507 {0x0000a848, 0x00001066, 0x00001066, 0x00001053, 0x00001053, 0x00001059},
4514 { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, 4508 {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2},
4515 { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, 4509 {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e},
4516 { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, 4510 {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e},
4517 { 0x00009860, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18 }, 4511 {0x00009860, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18, 0x00058d18},
4518 { 0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00 }, 4512 {0x00009864, 0x0000fe00, 0x0000fe00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
4519 { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, 4513 {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
4520 { 0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881 }, 4514 {0x0000986c, 0x06903081, 0x06903081, 0x06903881, 0x06903881, 0x06903881},
4521 { 0x00009910, 0x30002310, 0x30002310, 0x30002310, 0x30002310, 0x30002310 }, 4515 {0x00009910, 0x30002310, 0x30002310, 0x30002310, 0x30002310, 0x30002310},
4522 { 0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0 }, 4516 {0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
4523 { 0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016 }, 4517 {0x00009918, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b, 0x00000016},
4524 { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, 4518 {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d},
4525 { 0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010 }, 4519 {0x00009944, 0xffbc1010, 0xffbc1010, 0xffbc1020, 0xffbc1020, 0xffbc1010},
4526 { 0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 4520 {0x00009960, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4527 { 0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 4521 {0x00009964, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4528 { 0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c }, 4522 {0x000099b8, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c, 0x0000421c},
4529 { 0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00 }, 4523 {0x000099bc, 0x00000600, 0x00000600, 0x00000c00, 0x00000c00, 0x00000c00},
4530 { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 4524 {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
4531 { 0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77 }, 4525 {0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
4532 { 0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f }, 4526 {0x000099c8, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f, 0x6af6532f},
4533 { 0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8 }, 4527 {0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
4534 { 0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384 }, 4528 {0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
4535 { 0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 4529 {0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4536 { 0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 4530 {0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4537 { 0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, 4531 {0x00009a00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000},
4538 { 0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, 4532 {0x00009a04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000},
4539 { 0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, 4533 {0x00009a08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000},
4540 { 0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, 4534 {0x00009a0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000},
4541 { 0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, 4535 {0x00009a10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000},
4542 { 0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, 4536 {0x00009a14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000},
4543 { 0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, 4537 {0x00009a18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000},
4544 { 0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, 4538 {0x00009a1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000},
4545 { 0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, 4539 {0x00009a20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000},
4546 { 0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, 4540 {0x00009a24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000},
4547 { 0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, 4541 {0x00009a28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000},
4548 { 0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, 4542 {0x00009a2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000},
4549 { 0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, 4543 {0x00009a30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000},
4550 { 0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, 4544 {0x00009a34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000},
4551 { 0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, 4545 {0x00009a38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000},
4552 { 0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, 4546 {0x00009a3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000},
4553 { 0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, 4547 {0x00009a40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000},
4554 { 0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, 4548 {0x00009a44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000},
4555 { 0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, 4549 {0x00009a48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000},
4556 { 0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, 4550 {0x00009a4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000},
4557 { 0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, 4551 {0x00009a50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000},
4558 { 0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, 4552 {0x00009a54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000},
4559 { 0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, 4553 {0x00009a58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000},
4560 { 0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, 4554 {0x00009a5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000},
4561 { 0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, 4555 {0x00009a60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000},
4562 { 0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, 4556 {0x00009a64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000},
4563 { 0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, 4557 {0x00009a68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000},
4564 { 0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, 4558 {0x00009a6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000},
4565 { 0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, 4559 {0x00009a70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000},
4566 { 0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, 4560 {0x00009a74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000},
4567 { 0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, 4561 {0x00009a78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000},
4568 { 0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, 4562 {0x00009a7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000},
4569 { 0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, 4563 {0x00009a80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000},
4570 { 0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, 4564 {0x00009a84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000},
4571 { 0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, 4565 {0x00009a88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000},
4572 { 0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, 4566 {0x00009a8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000},
4573 { 0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, 4567 {0x00009a90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000},
4574 { 0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, 4568 {0x00009a94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000},
4575 { 0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, 4569 {0x00009a98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000},
4576 { 0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, 4570 {0x00009a9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000},
4577 { 0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, 4571 {0x00009aa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000},
4578 { 0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, 4572 {0x00009aa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000},
4579 { 0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, 4573 {0x00009aa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000},
4580 { 0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, 4574 {0x00009aac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000},
4581 { 0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, 4575 {0x00009ab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000},
4582 { 0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, 4576 {0x00009ab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000},
4583 { 0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, 4577 {0x00009ab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000},
4584 { 0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, 4578 {0x00009abc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000},
4585 { 0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, 4579 {0x00009ac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000},
4586 { 0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, 4580 {0x00009ac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000},
4587 { 0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, 4581 {0x00009ac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000},
4588 { 0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, 4582 {0x00009acc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000},
4589 { 0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, 4583 {0x00009ad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000},
4590 { 0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, 4584 {0x00009ad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000},
4591 { 0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, 4585 {0x00009ad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000},
4592 { 0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, 4586 {0x00009adc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000},
4593 { 0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, 4587 {0x00009ae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000},
4594 { 0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, 4588 {0x00009ae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000},
4595 { 0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, 4589 {0x00009ae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000},
4596 { 0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, 4590 {0x00009aec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000},
4597 { 0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, 4591 {0x00009af0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000},
4598 { 0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, 4592 {0x00009af4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000},
4599 { 0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, 4593 {0x00009af8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000},
4600 { 0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, 4594 {0x00009afc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000},
4601 { 0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, 4595 {0x00009b00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000},
4602 { 0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, 4596 {0x00009b04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000},
4603 { 0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, 4597 {0x00009b08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000},
4604 { 0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, 4598 {0x00009b0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000},
4605 { 0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, 4599 {0x00009b10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000},
4606 { 0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, 4600 {0x00009b14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000},
4607 { 0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, 4601 {0x00009b18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000},
4608 { 0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, 4602 {0x00009b1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000},
4609 { 0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, 4603 {0x00009b20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000},
4610 { 0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, 4604 {0x00009b24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000},
4611 { 0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, 4605 {0x00009b28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000},
4612 { 0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, 4606 {0x00009b2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000},
4613 { 0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, 4607 {0x00009b30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000},
4614 { 0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, 4608 {0x00009b34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000},
4615 { 0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, 4609 {0x00009b38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000},
4616 { 0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, 4610 {0x00009b3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000},
4617 { 0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, 4611 {0x00009b40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000},
4618 { 0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, 4612 {0x00009b44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000},
4619 { 0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, 4613 {0x00009b48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000},
4620 { 0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, 4614 {0x00009b4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000},
4621 { 0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, 4615 {0x00009b50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000},
4622 { 0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, 4616 {0x00009b54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000},
4623 { 0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, 4617 {0x00009b58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000},
4624 { 0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, 4618 {0x00009b5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000},
4625 { 0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, 4619 {0x00009b60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000},
4626 { 0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4620 {0x00009b64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4627 { 0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4621 {0x00009b68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4628 { 0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4622 {0x00009b6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4629 { 0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4623 {0x00009b70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4630 { 0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4624 {0x00009b74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4631 { 0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4625 {0x00009b78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4632 { 0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4626 {0x00009b7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4633 { 0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4627 {0x00009b80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4634 { 0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4628 {0x00009b84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4635 { 0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4629 {0x00009b88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4636 { 0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4630 {0x00009b8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4637 { 0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4631 {0x00009b90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4638 { 0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4632 {0x00009b94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4639 { 0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4633 {0x00009b98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4640 { 0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4634 {0x00009b9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4641 { 0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4635 {0x00009ba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4642 { 0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4636 {0x00009ba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4643 { 0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4637 {0x00009ba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4644 { 0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4638 {0x00009bac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4645 { 0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4639 {0x00009bb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4646 { 0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4640 {0x00009bb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4647 { 0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4641 {0x00009bb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4648 { 0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4642 {0x00009bbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4649 { 0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4643 {0x00009bc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4650 { 0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4644 {0x00009bc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4651 { 0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4645 {0x00009bc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4652 { 0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4646 {0x00009bcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4653 { 0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4647 {0x00009bd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4654 { 0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4648 {0x00009bd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4655 { 0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4649 {0x00009bd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4656 { 0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4650 {0x00009bdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4657 { 0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4651 {0x00009be0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4658 { 0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4652 {0x00009be4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4659 { 0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4653 {0x00009be8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4660 { 0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4654 {0x00009bec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4661 { 0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4655 {0x00009bf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4662 { 0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4656 {0x00009bf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4663 { 0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4657 {0x00009bf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4664 { 0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4658 {0x00009bfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4665 { 0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000 }, 4659 {0x0000aa00, 0x00000000, 0x00000000, 0x00058084, 0x00058084, 0x00000000},
4666 { 0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000 }, 4660 {0x0000aa04, 0x00000000, 0x00000000, 0x00058088, 0x00058088, 0x00000000},
4667 { 0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000 }, 4661 {0x0000aa08, 0x00000000, 0x00000000, 0x0005808c, 0x0005808c, 0x00000000},
4668 { 0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000 }, 4662 {0x0000aa0c, 0x00000000, 0x00000000, 0x00058100, 0x00058100, 0x00000000},
4669 { 0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000 }, 4663 {0x0000aa10, 0x00000000, 0x00000000, 0x00058104, 0x00058104, 0x00000000},
4670 { 0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000 }, 4664 {0x0000aa14, 0x00000000, 0x00000000, 0x00058108, 0x00058108, 0x00000000},
4671 { 0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000 }, 4665 {0x0000aa18, 0x00000000, 0x00000000, 0x0005810c, 0x0005810c, 0x00000000},
4672 { 0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000 }, 4666 {0x0000aa1c, 0x00000000, 0x00000000, 0x00058110, 0x00058110, 0x00000000},
4673 { 0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000 }, 4667 {0x0000aa20, 0x00000000, 0x00000000, 0x00058114, 0x00058114, 0x00000000},
4674 { 0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000 }, 4668 {0x0000aa24, 0x00000000, 0x00000000, 0x00058180, 0x00058180, 0x00000000},
4675 { 0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000 }, 4669 {0x0000aa28, 0x00000000, 0x00000000, 0x00058184, 0x00058184, 0x00000000},
4676 { 0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000 }, 4670 {0x0000aa2c, 0x00000000, 0x00000000, 0x00058188, 0x00058188, 0x00000000},
4677 { 0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000 }, 4671 {0x0000aa30, 0x00000000, 0x00000000, 0x0005818c, 0x0005818c, 0x00000000},
4678 { 0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000 }, 4672 {0x0000aa34, 0x00000000, 0x00000000, 0x00058190, 0x00058190, 0x00000000},
4679 { 0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000 }, 4673 {0x0000aa38, 0x00000000, 0x00000000, 0x00058194, 0x00058194, 0x00000000},
4680 { 0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000 }, 4674 {0x0000aa3c, 0x00000000, 0x00000000, 0x000581a0, 0x000581a0, 0x00000000},
4681 { 0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000 }, 4675 {0x0000aa40, 0x00000000, 0x00000000, 0x0005820c, 0x0005820c, 0x00000000},
4682 { 0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000 }, 4676 {0x0000aa44, 0x00000000, 0x00000000, 0x000581a8, 0x000581a8, 0x00000000},
4683 { 0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000 }, 4677 {0x0000aa48, 0x00000000, 0x00000000, 0x00058284, 0x00058284, 0x00000000},
4684 { 0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000 }, 4678 {0x0000aa4c, 0x00000000, 0x00000000, 0x00058288, 0x00058288, 0x00000000},
4685 { 0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000 }, 4679 {0x0000aa50, 0x00000000, 0x00000000, 0x00058224, 0x00058224, 0x00000000},
4686 { 0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000 }, 4680 {0x0000aa54, 0x00000000, 0x00000000, 0x00058290, 0x00058290, 0x00000000},
4687 { 0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000 }, 4681 {0x0000aa58, 0x00000000, 0x00000000, 0x00058300, 0x00058300, 0x00000000},
4688 { 0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000 }, 4682 {0x0000aa5c, 0x00000000, 0x00000000, 0x00058304, 0x00058304, 0x00000000},
4689 { 0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000 }, 4683 {0x0000aa60, 0x00000000, 0x00000000, 0x00058308, 0x00058308, 0x00000000},
4690 { 0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000 }, 4684 {0x0000aa64, 0x00000000, 0x00000000, 0x0005830c, 0x0005830c, 0x00000000},
4691 { 0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000 }, 4685 {0x0000aa68, 0x00000000, 0x00000000, 0x00058380, 0x00058380, 0x00000000},
4692 { 0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000 }, 4686 {0x0000aa6c, 0x00000000, 0x00000000, 0x00058384, 0x00058384, 0x00000000},
4693 { 0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000 }, 4687 {0x0000aa70, 0x00000000, 0x00000000, 0x00068700, 0x00068700, 0x00000000},
4694 { 0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000 }, 4688 {0x0000aa74, 0x00000000, 0x00000000, 0x00068704, 0x00068704, 0x00000000},
4695 { 0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000 }, 4689 {0x0000aa78, 0x00000000, 0x00000000, 0x00068708, 0x00068708, 0x00000000},
4696 { 0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000 }, 4690 {0x0000aa7c, 0x00000000, 0x00000000, 0x0006870c, 0x0006870c, 0x00000000},
4697 { 0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000 }, 4691 {0x0000aa80, 0x00000000, 0x00000000, 0x00068780, 0x00068780, 0x00000000},
4698 { 0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000 }, 4692 {0x0000aa84, 0x00000000, 0x00000000, 0x00068784, 0x00068784, 0x00000000},
4699 { 0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000 }, 4693 {0x0000aa88, 0x00000000, 0x00000000, 0x00078b00, 0x00078b00, 0x00000000},
4700 { 0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000 }, 4694 {0x0000aa8c, 0x00000000, 0x00000000, 0x00078b04, 0x00078b04, 0x00000000},
4701 { 0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000 }, 4695 {0x0000aa90, 0x00000000, 0x00000000, 0x00078b08, 0x00078b08, 0x00000000},
4702 { 0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000 }, 4696 {0x0000aa94, 0x00000000, 0x00000000, 0x00078b0c, 0x00078b0c, 0x00000000},
4703 { 0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000 }, 4697 {0x0000aa98, 0x00000000, 0x00000000, 0x00078b80, 0x00078b80, 0x00000000},
4704 { 0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000 }, 4698 {0x0000aa9c, 0x00000000, 0x00000000, 0x00078b84, 0x00078b84, 0x00000000},
4705 { 0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000 }, 4699 {0x0000aaa0, 0x00000000, 0x00000000, 0x00078b88, 0x00078b88, 0x00000000},
4706 { 0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000 }, 4700 {0x0000aaa4, 0x00000000, 0x00000000, 0x00078b8c, 0x00078b8c, 0x00000000},
4707 { 0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000 }, 4701 {0x0000aaa8, 0x00000000, 0x00000000, 0x00078b90, 0x00078b90, 0x00000000},
4708 { 0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000 }, 4702 {0x0000aaac, 0x00000000, 0x00000000, 0x000caf80, 0x000caf80, 0x00000000},
4709 { 0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000 }, 4703 {0x0000aab0, 0x00000000, 0x00000000, 0x000caf84, 0x000caf84, 0x00000000},
4710 { 0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000 }, 4704 {0x0000aab4, 0x00000000, 0x00000000, 0x000caf88, 0x000caf88, 0x00000000},
4711 { 0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000 }, 4705 {0x0000aab8, 0x00000000, 0x00000000, 0x000caf8c, 0x000caf8c, 0x00000000},
4712 { 0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000 }, 4706 {0x0000aabc, 0x00000000, 0x00000000, 0x000caf90, 0x000caf90, 0x00000000},
4713 { 0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000 }, 4707 {0x0000aac0, 0x00000000, 0x00000000, 0x000db30c, 0x000db30c, 0x00000000},
4714 { 0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000 }, 4708 {0x0000aac4, 0x00000000, 0x00000000, 0x000db310, 0x000db310, 0x00000000},
4715 { 0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000 }, 4709 {0x0000aac8, 0x00000000, 0x00000000, 0x000db384, 0x000db384, 0x00000000},
4716 { 0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000 }, 4710 {0x0000aacc, 0x00000000, 0x00000000, 0x000db388, 0x000db388, 0x00000000},
4717 { 0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000 }, 4711 {0x0000aad0, 0x00000000, 0x00000000, 0x000db324, 0x000db324, 0x00000000},
4718 { 0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000 }, 4712 {0x0000aad4, 0x00000000, 0x00000000, 0x000eb704, 0x000eb704, 0x00000000},
4719 { 0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000 }, 4713 {0x0000aad8, 0x00000000, 0x00000000, 0x000eb6a4, 0x000eb6a4, 0x00000000},
4720 { 0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000 }, 4714 {0x0000aadc, 0x00000000, 0x00000000, 0x000eb6a8, 0x000eb6a8, 0x00000000},
4721 { 0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000 }, 4715 {0x0000aae0, 0x00000000, 0x00000000, 0x000eb710, 0x000eb710, 0x00000000},
4722 { 0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000 }, 4716 {0x0000aae4, 0x00000000, 0x00000000, 0x000eb714, 0x000eb714, 0x00000000},
4723 { 0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000 }, 4717 {0x0000aae8, 0x00000000, 0x00000000, 0x000eb720, 0x000eb720, 0x00000000},
4724 { 0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000 }, 4718 {0x0000aaec, 0x00000000, 0x00000000, 0x000eb724, 0x000eb724, 0x00000000},
4725 { 0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000 }, 4719 {0x0000aaf0, 0x00000000, 0x00000000, 0x000eb728, 0x000eb728, 0x00000000},
4726 { 0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000 }, 4720 {0x0000aaf4, 0x00000000, 0x00000000, 0x000eb72c, 0x000eb72c, 0x00000000},
4727 { 0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000 }, 4721 {0x0000aaf8, 0x00000000, 0x00000000, 0x000eb7a0, 0x000eb7a0, 0x00000000},
4728 { 0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000 }, 4722 {0x0000aafc, 0x00000000, 0x00000000, 0x000eb7a4, 0x000eb7a4, 0x00000000},
4729 { 0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000 }, 4723 {0x0000ab00, 0x00000000, 0x00000000, 0x000eb7a8, 0x000eb7a8, 0x00000000},
4730 { 0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000 }, 4724 {0x0000ab04, 0x00000000, 0x00000000, 0x000eb7b0, 0x000eb7b0, 0x00000000},
4731 { 0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000 }, 4725 {0x0000ab08, 0x00000000, 0x00000000, 0x000eb7b4, 0x000eb7b4, 0x00000000},
4732 { 0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000 }, 4726 {0x0000ab0c, 0x00000000, 0x00000000, 0x000eb7b8, 0x000eb7b8, 0x00000000},
4733 { 0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000 }, 4727 {0x0000ab10, 0x00000000, 0x00000000, 0x000eb7a5, 0x000eb7a5, 0x00000000},
4734 { 0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000 }, 4728 {0x0000ab14, 0x00000000, 0x00000000, 0x000eb7a9, 0x000eb7a9, 0x00000000},
4735 { 0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000 }, 4729 {0x0000ab18, 0x00000000, 0x00000000, 0x000eb7ad, 0x000eb7ad, 0x00000000},
4736 { 0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000 }, 4730 {0x0000ab1c, 0x00000000, 0x00000000, 0x000eb7b1, 0x000eb7b1, 0x00000000},
4737 { 0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000 }, 4731 {0x0000ab20, 0x00000000, 0x00000000, 0x000eb7b5, 0x000eb7b5, 0x00000000},
4738 { 0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000 }, 4732 {0x0000ab24, 0x00000000, 0x00000000, 0x000eb7b9, 0x000eb7b9, 0x00000000},
4739 { 0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000 }, 4733 {0x0000ab28, 0x00000000, 0x00000000, 0x000eb7c5, 0x000eb7c5, 0x00000000},
4740 { 0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000 }, 4734 {0x0000ab2c, 0x00000000, 0x00000000, 0x000eb7c9, 0x000eb7c9, 0x00000000},
4741 { 0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000 }, 4735 {0x0000ab30, 0x00000000, 0x00000000, 0x000eb7d1, 0x000eb7d1, 0x00000000},
4742 { 0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000 }, 4736 {0x0000ab34, 0x00000000, 0x00000000, 0x000eb7d5, 0x000eb7d5, 0x00000000},
4743 { 0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000 }, 4737 {0x0000ab38, 0x00000000, 0x00000000, 0x000eb7d9, 0x000eb7d9, 0x00000000},
4744 { 0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000 }, 4738 {0x0000ab3c, 0x00000000, 0x00000000, 0x000eb7c6, 0x000eb7c6, 0x00000000},
4745 { 0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000 }, 4739 {0x0000ab40, 0x00000000, 0x00000000, 0x000eb7ca, 0x000eb7ca, 0x00000000},
4746 { 0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000 }, 4740 {0x0000ab44, 0x00000000, 0x00000000, 0x000eb7ce, 0x000eb7ce, 0x00000000},
4747 { 0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000 }, 4741 {0x0000ab48, 0x00000000, 0x00000000, 0x000eb7d2, 0x000eb7d2, 0x00000000},
4748 { 0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000 }, 4742 {0x0000ab4c, 0x00000000, 0x00000000, 0x000eb7d6, 0x000eb7d6, 0x00000000},
4749 { 0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000 }, 4743 {0x0000ab50, 0x00000000, 0x00000000, 0x000eb7c3, 0x000eb7c3, 0x00000000},
4750 { 0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000 }, 4744 {0x0000ab54, 0x00000000, 0x00000000, 0x000eb7c7, 0x000eb7c7, 0x00000000},
4751 { 0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000 }, 4745 {0x0000ab58, 0x00000000, 0x00000000, 0x000eb7cb, 0x000eb7cb, 0x00000000},
4752 { 0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000 }, 4746 {0x0000ab5c, 0x00000000, 0x00000000, 0x000eb7cf, 0x000eb7cf, 0x00000000},
4753 { 0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000 }, 4747 {0x0000ab60, 0x00000000, 0x00000000, 0x000eb7d7, 0x000eb7d7, 0x00000000},
4754 { 0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4748 {0x0000ab64, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4755 { 0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4749 {0x0000ab68, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4756 { 0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4750 {0x0000ab6c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4757 { 0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4751 {0x0000ab70, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4758 { 0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4752 {0x0000ab74, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4759 { 0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4753 {0x0000ab78, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4760 { 0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4754 {0x0000ab7c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4761 { 0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4755 {0x0000ab80, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4762 { 0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4756 {0x0000ab84, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4763 { 0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4757 {0x0000ab88, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4764 { 0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4758 {0x0000ab8c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4765 { 0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4759 {0x0000ab90, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4766 { 0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4760 {0x0000ab94, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4767 { 0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4761 {0x0000ab98, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4768 { 0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4762 {0x0000ab9c, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4769 { 0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4763 {0x0000aba0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4770 { 0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4764 {0x0000aba4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4771 { 0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4765 {0x0000aba8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4772 { 0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4766 {0x0000abac, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4773 { 0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4767 {0x0000abb0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4774 { 0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4768 {0x0000abb4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4775 { 0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4769 {0x0000abb8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4776 { 0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4770 {0x0000abbc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4777 { 0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4771 {0x0000abc0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4778 { 0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4772 {0x0000abc4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4779 { 0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4773 {0x0000abc8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4780 { 0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4774 {0x0000abcc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4781 { 0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4775 {0x0000abd0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4782 { 0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4776 {0x0000abd4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4783 { 0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4777 {0x0000abd8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4784 { 0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4778 {0x0000abdc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4785 { 0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4779 {0x0000abe0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4786 { 0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4780 {0x0000abe4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4787 { 0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4781 {0x0000abe8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4788 { 0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4782 {0x0000abec, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4789 { 0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4783 {0x0000abf0, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4790 { 0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4784 {0x0000abf4, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4791 { 0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4785 {0x0000abf8, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4792 { 0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000 }, 4786 {0x0000abfc, 0x00000000, 0x00000000, 0x000eb7db, 0x000eb7db, 0x00000000},
4793 { 0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004 }, 4787 {0x0000a204, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004},
4794 { 0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, 4788 {0x0000a20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000},
4795 { 0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000 }, 4789 {0x0000b20c, 0x00000014, 0x00000014, 0x0001f000, 0x0001f000, 0x0001f000},
4796 { 0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a }, 4790 {0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
4797 { 0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000 }, 4791 {0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
4798 { 0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000 }, 4792 {0x0000a250, 0x0004f000, 0x0004f000, 0x0004a000, 0x0004a000, 0x0004a000},
4799 { 0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e }, 4793 {0x0000a358, 0x7999aa02, 0x7999aa02, 0x7999aa0e, 0x7999aa0e, 0x7999aa0e},
4800}; 4794};
4801 4795
4802static const u32 ar9271Common_9271[][2] = { 4796static const u32 ar9271Common_9271[][2] = {
4803 { 0x0000000c, 0x00000000 }, 4797 /* Addr allmodes */
4804 { 0x00000030, 0x00020045 }, 4798 {0x0000000c, 0x00000000},
4805 { 0x00000034, 0x00000005 }, 4799 {0x00000030, 0x00020045},
4806 { 0x00000040, 0x00000000 }, 4800 {0x00000034, 0x00000005},
4807 { 0x00000044, 0x00000008 }, 4801 {0x00000040, 0x00000000},
4808 { 0x00000048, 0x00000008 }, 4802 {0x00000044, 0x00000008},
4809 { 0x0000004c, 0x00000010 }, 4803 {0x00000048, 0x00000008},
4810 { 0x00000050, 0x00000000 }, 4804 {0x0000004c, 0x00000010},
4811 { 0x00000054, 0x0000001f }, 4805 {0x00000050, 0x00000000},
4812 { 0x00000800, 0x00000000 }, 4806 {0x00000054, 0x0000001f},
4813 { 0x00000804, 0x00000000 }, 4807 {0x00000800, 0x00000000},
4814 { 0x00000808, 0x00000000 }, 4808 {0x00000804, 0x00000000},
4815 { 0x0000080c, 0x00000000 }, 4809 {0x00000808, 0x00000000},
4816 { 0x00000810, 0x00000000 }, 4810 {0x0000080c, 0x00000000},
4817 { 0x00000814, 0x00000000 }, 4811 {0x00000810, 0x00000000},
4818 { 0x00000818, 0x00000000 }, 4812 {0x00000814, 0x00000000},
4819 { 0x0000081c, 0x00000000 }, 4813 {0x00000818, 0x00000000},
4820 { 0x00000820, 0x00000000 }, 4814 {0x0000081c, 0x00000000},
4821 { 0x00000824, 0x00000000 }, 4815 {0x00000820, 0x00000000},
4822 { 0x00001040, 0x002ffc0f }, 4816 {0x00000824, 0x00000000},
4823 { 0x00001044, 0x002ffc0f }, 4817 {0x00001040, 0x002ffc0f},
4824 { 0x00001048, 0x002ffc0f }, 4818 {0x00001044, 0x002ffc0f},
4825 { 0x0000104c, 0x002ffc0f }, 4819 {0x00001048, 0x002ffc0f},
4826 { 0x00001050, 0x002ffc0f }, 4820 {0x0000104c, 0x002ffc0f},
4827 { 0x00001054, 0x002ffc0f }, 4821 {0x00001050, 0x002ffc0f},
4828 { 0x00001058, 0x002ffc0f }, 4822 {0x00001054, 0x002ffc0f},
4829 { 0x0000105c, 0x002ffc0f }, 4823 {0x00001058, 0x002ffc0f},
4830 { 0x00001060, 0x002ffc0f }, 4824 {0x0000105c, 0x002ffc0f},
4831 { 0x00001064, 0x002ffc0f }, 4825 {0x00001060, 0x002ffc0f},
4832 { 0x00001230, 0x00000000 }, 4826 {0x00001064, 0x002ffc0f},
4833 { 0x00001270, 0x00000000 }, 4827 {0x00001230, 0x00000000},
4834 { 0x00001038, 0x00000000 }, 4828 {0x00001270, 0x00000000},
4835 { 0x00001078, 0x00000000 }, 4829 {0x00001038, 0x00000000},
4836 { 0x000010b8, 0x00000000 }, 4830 {0x00001078, 0x00000000},
4837 { 0x000010f8, 0x00000000 }, 4831 {0x000010b8, 0x00000000},
4838 { 0x00001138, 0x00000000 }, 4832 {0x000010f8, 0x00000000},
4839 { 0x00001178, 0x00000000 }, 4833 {0x00001138, 0x00000000},
4840 { 0x000011b8, 0x00000000 }, 4834 {0x00001178, 0x00000000},
4841 { 0x000011f8, 0x00000000 }, 4835 {0x000011b8, 0x00000000},
4842 { 0x00001238, 0x00000000 }, 4836 {0x000011f8, 0x00000000},
4843 { 0x00001278, 0x00000000 }, 4837 {0x00001238, 0x00000000},
4844 { 0x000012b8, 0x00000000 }, 4838 {0x00001278, 0x00000000},
4845 { 0x000012f8, 0x00000000 }, 4839 {0x000012b8, 0x00000000},
4846 { 0x00001338, 0x00000000 }, 4840 {0x000012f8, 0x00000000},
4847 { 0x00001378, 0x00000000 }, 4841 {0x00001338, 0x00000000},
4848 { 0x000013b8, 0x00000000 }, 4842 {0x00001378, 0x00000000},
4849 { 0x000013f8, 0x00000000 }, 4843 {0x000013b8, 0x00000000},
4850 { 0x00001438, 0x00000000 }, 4844 {0x000013f8, 0x00000000},
4851 { 0x00001478, 0x00000000 }, 4845 {0x00001438, 0x00000000},
4852 { 0x000014b8, 0x00000000 }, 4846 {0x00001478, 0x00000000},
4853 { 0x000014f8, 0x00000000 }, 4847 {0x000014b8, 0x00000000},
4854 { 0x00001538, 0x00000000 }, 4848 {0x000014f8, 0x00000000},
4855 { 0x00001578, 0x00000000 }, 4849 {0x00001538, 0x00000000},
4856 { 0x000015b8, 0x00000000 }, 4850 {0x00001578, 0x00000000},
4857 { 0x000015f8, 0x00000000 }, 4851 {0x000015b8, 0x00000000},
4858 { 0x00001638, 0x00000000 }, 4852 {0x000015f8, 0x00000000},
4859 { 0x00001678, 0x00000000 }, 4853 {0x00001638, 0x00000000},
4860 { 0x000016b8, 0x00000000 }, 4854 {0x00001678, 0x00000000},
4861 { 0x000016f8, 0x00000000 }, 4855 {0x000016b8, 0x00000000},
4862 { 0x00001738, 0x00000000 }, 4856 {0x000016f8, 0x00000000},
4863 { 0x00001778, 0x00000000 }, 4857 {0x00001738, 0x00000000},
4864 { 0x000017b8, 0x00000000 }, 4858 {0x00001778, 0x00000000},
4865 { 0x000017f8, 0x00000000 }, 4859 {0x000017b8, 0x00000000},
4866 { 0x0000103c, 0x00000000 }, 4860 {0x000017f8, 0x00000000},
4867 { 0x0000107c, 0x00000000 }, 4861 {0x0000103c, 0x00000000},
4868 { 0x000010bc, 0x00000000 }, 4862 {0x0000107c, 0x00000000},
4869 { 0x000010fc, 0x00000000 }, 4863 {0x000010bc, 0x00000000},
4870 { 0x0000113c, 0x00000000 }, 4864 {0x000010fc, 0x00000000},
4871 { 0x0000117c, 0x00000000 }, 4865 {0x0000113c, 0x00000000},
4872 { 0x000011bc, 0x00000000 }, 4866 {0x0000117c, 0x00000000},
4873 { 0x000011fc, 0x00000000 }, 4867 {0x000011bc, 0x00000000},
4874 { 0x0000123c, 0x00000000 }, 4868 {0x000011fc, 0x00000000},
4875 { 0x0000127c, 0x00000000 }, 4869 {0x0000123c, 0x00000000},
4876 { 0x000012bc, 0x00000000 }, 4870 {0x0000127c, 0x00000000},
4877 { 0x000012fc, 0x00000000 }, 4871 {0x000012bc, 0x00000000},
4878 { 0x0000133c, 0x00000000 }, 4872 {0x000012fc, 0x00000000},
4879 { 0x0000137c, 0x00000000 }, 4873 {0x0000133c, 0x00000000},
4880 { 0x000013bc, 0x00000000 }, 4874 {0x0000137c, 0x00000000},
4881 { 0x000013fc, 0x00000000 }, 4875 {0x000013bc, 0x00000000},
4882 { 0x0000143c, 0x00000000 }, 4876 {0x000013fc, 0x00000000},
4883 { 0x0000147c, 0x00000000 }, 4877 {0x0000143c, 0x00000000},
4884 { 0x00004030, 0x00000002 }, 4878 {0x0000147c, 0x00000000},
4885 { 0x0000403c, 0x00000002 }, 4879 {0x00004030, 0x00000002},
4886 { 0x00004024, 0x0000001f }, 4880 {0x0000403c, 0x00000002},
4887 { 0x00004060, 0x00000000 }, 4881 {0x00004024, 0x0000001f},
4888 { 0x00004064, 0x00000000 }, 4882 {0x00004060, 0x00000000},
4889 { 0x00008004, 0x00000000 }, 4883 {0x00004064, 0x00000000},
4890 { 0x00008008, 0x00000000 }, 4884 {0x00008004, 0x00000000},
4891 { 0x0000800c, 0x00000000 }, 4885 {0x00008008, 0x00000000},
4892 { 0x00008018, 0x00000700 }, 4886 {0x0000800c, 0x00000000},
4893 { 0x00008020, 0x00000000 }, 4887 {0x00008018, 0x00000700},
4894 { 0x00008038, 0x00000000 }, 4888 {0x00008020, 0x00000000},
4895 { 0x0000803c, 0x00000000 }, 4889 {0x00008038, 0x00000000},
4896 { 0x00008048, 0x00000000 }, 4890 {0x0000803c, 0x00000000},
4897 { 0x00008054, 0x00000000 }, 4891 {0x00008048, 0x00000000},
4898 { 0x00008058, 0x00000000 }, 4892 {0x00008054, 0x00000000},
4899 { 0x0000805c, 0x000fc78f }, 4893 {0x00008058, 0x00000000},
4900 { 0x00008060, 0x0000000f }, 4894 {0x0000805c, 0x000fc78f},
4901 { 0x00008064, 0x00000000 }, 4895 {0x00008060, 0x0000000f},
4902 { 0x00008070, 0x00000000 }, 4896 {0x00008064, 0x00000000},
4903 { 0x000080b0, 0x00000000 }, 4897 {0x00008070, 0x00000000},
4904 { 0x000080b4, 0x00000000 }, 4898 {0x000080b0, 0x00000000},
4905 { 0x000080b8, 0x00000000 }, 4899 {0x000080b4, 0x00000000},
4906 { 0x000080bc, 0x00000000 }, 4900 {0x000080b8, 0x00000000},
4907 { 0x000080c0, 0x2a80001a }, 4901 {0x000080bc, 0x00000000},
4908 { 0x000080c4, 0x05dc01e0 }, 4902 {0x000080c0, 0x2a80001a},
4909 { 0x000080c8, 0x1f402710 }, 4903 {0x000080c4, 0x05dc01e0},
4910 { 0x000080cc, 0x01f40000 }, 4904 {0x000080c8, 0x1f402710},
4911 { 0x000080d0, 0x00001e00 }, 4905 {0x000080cc, 0x01f40000},
4912 { 0x000080d4, 0x00000000 }, 4906 {0x000080d0, 0x00001e00},
4913 { 0x000080d8, 0x00400000 }, 4907 {0x000080d4, 0x00000000},
4914 { 0x000080e0, 0xffffffff }, 4908 {0x000080d8, 0x00400000},
4915 { 0x000080e4, 0x0000ffff }, 4909 {0x000080e0, 0xffffffff},
4916 { 0x000080e8, 0x003f3f3f }, 4910 {0x000080e4, 0x0000ffff},
4917 { 0x000080ec, 0x00000000 }, 4911 {0x000080e8, 0x003f3f3f},
4918 { 0x000080f0, 0x00000000 }, 4912 {0x000080ec, 0x00000000},
4919 { 0x000080f4, 0x00000000 }, 4913 {0x000080f0, 0x00000000},
4920 { 0x000080f8, 0x00000000 }, 4914 {0x000080f4, 0x00000000},
4921 { 0x000080fc, 0x00020000 }, 4915 {0x000080f8, 0x00000000},
4922 { 0x00008100, 0x00020000 }, 4916 {0x000080fc, 0x00020000},
4923 { 0x00008104, 0x00000001 }, 4917 {0x00008100, 0x00020000},
4924 { 0x00008108, 0x00000052 }, 4918 {0x00008104, 0x00000001},
4925 { 0x0000810c, 0x00000000 }, 4919 {0x00008108, 0x00000052},
4926 { 0x00008110, 0x00000168 }, 4920 {0x0000810c, 0x00000000},
4927 { 0x00008118, 0x000100aa }, 4921 {0x00008110, 0x00000168},
4928 { 0x0000811c, 0x00003210 }, 4922 {0x00008118, 0x000100aa},
4929 { 0x00008120, 0x08f04810 }, 4923 {0x0000811c, 0x00003210},
4930 { 0x00008124, 0x00000000 }, 4924 {0x00008120, 0x08f04810},
4931 { 0x00008128, 0x00000000 }, 4925 {0x00008124, 0x00000000},
4932 { 0x0000812c, 0x00000000 }, 4926 {0x00008128, 0x00000000},
4933 { 0x00008130, 0x00000000 }, 4927 {0x0000812c, 0x00000000},
4934 { 0x00008134, 0x00000000 }, 4928 {0x00008130, 0x00000000},
4935 { 0x00008138, 0x00000000 }, 4929 {0x00008134, 0x00000000},
4936 { 0x0000813c, 0x00000000 }, 4930 {0x00008138, 0x00000000},
4937 { 0x00008144, 0xffffffff }, 4931 {0x0000813c, 0x00000000},
4938 { 0x00008168, 0x00000000 }, 4932 {0x00008144, 0xffffffff},
4939 { 0x0000816c, 0x00000000 }, 4933 {0x00008168, 0x00000000},
4940 { 0x00008170, 0x32143320 }, 4934 {0x0000816c, 0x00000000},
4941 { 0x00008174, 0xfaa4fa50 }, 4935 {0x00008170, 0x32143320},
4942 { 0x00008178, 0x00000100 }, 4936 {0x00008174, 0xfaa4fa50},
4943 { 0x0000817c, 0x00000000 }, 4937 {0x00008178, 0x00000100},
4944 { 0x000081c0, 0x00000000 }, 4938 {0x0000817c, 0x00000000},
4945 { 0x000081d0, 0x0000320a }, 4939 {0x000081c0, 0x00000000},
4946 { 0x000081ec, 0x00000000 }, 4940 {0x000081d0, 0x0000320a},
4947 { 0x000081f0, 0x00000000 }, 4941 {0x000081ec, 0x00000000},
4948 { 0x000081f4, 0x00000000 }, 4942 {0x000081f0, 0x00000000},
4949 { 0x000081f8, 0x00000000 }, 4943 {0x000081f4, 0x00000000},
4950 { 0x000081fc, 0x00000000 }, 4944 {0x000081f8, 0x00000000},
4951 { 0x00008200, 0x00000000 }, 4945 {0x000081fc, 0x00000000},
4952 { 0x00008204, 0x00000000 }, 4946 {0x00008200, 0x00000000},
4953 { 0x00008208, 0x00000000 }, 4947 {0x00008204, 0x00000000},
4954 { 0x0000820c, 0x00000000 }, 4948 {0x00008208, 0x00000000},
4955 { 0x00008210, 0x00000000 }, 4949 {0x0000820c, 0x00000000},
4956 { 0x00008214, 0x00000000 }, 4950 {0x00008210, 0x00000000},
4957 { 0x00008218, 0x00000000 }, 4951 {0x00008214, 0x00000000},
4958 { 0x0000821c, 0x00000000 }, 4952 {0x00008218, 0x00000000},
4959 { 0x00008220, 0x00000000 }, 4953 {0x0000821c, 0x00000000},
4960 { 0x00008224, 0x00000000 }, 4954 {0x00008220, 0x00000000},
4961 { 0x00008228, 0x00000000 }, 4955 {0x00008224, 0x00000000},
4962 { 0x0000822c, 0x00000000 }, 4956 {0x00008228, 0x00000000},
4963 { 0x00008230, 0x00000000 }, 4957 {0x0000822c, 0x00000000},
4964 { 0x00008234, 0x00000000 }, 4958 {0x00008230, 0x00000000},
4965 { 0x00008238, 0x00000000 }, 4959 {0x00008234, 0x00000000},
4966 { 0x0000823c, 0x00000000 }, 4960 {0x00008238, 0x00000000},
4967 { 0x00008240, 0x00100000 }, 4961 {0x0000823c, 0x00000000},
4968 { 0x00008244, 0x0010f400 }, 4962 {0x00008240, 0x00100000},
4969 { 0x00008248, 0x00000100 }, 4963 {0x00008244, 0x0010f400},
4970 { 0x0000824c, 0x0001e800 }, 4964 {0x00008248, 0x00000100},
4971 { 0x00008250, 0x00000000 }, 4965 {0x0000824c, 0x0001e800},
4972 { 0x00008254, 0x00000000 }, 4966 {0x00008250, 0x00000000},
4973 { 0x00008258, 0x00000000 }, 4967 {0x00008254, 0x00000000},
4974 { 0x0000825c, 0x400000ff }, 4968 {0x00008258, 0x00000000},
4975 { 0x00008260, 0x00080922 }, 4969 {0x0000825c, 0x400000ff},
4976 { 0x00008264, 0x88a00010 }, 4970 {0x00008260, 0x00080922},
4977 { 0x00008270, 0x00000000 }, 4971 {0x00008264, 0x88a00010},
4978 { 0x00008274, 0x40000000 }, 4972 {0x00008270, 0x00000000},
4979 { 0x00008278, 0x003e4180 }, 4973 {0x00008274, 0x40000000},
4980 { 0x0000827c, 0x00000000 }, 4974 {0x00008278, 0x003e4180},
4981 { 0x00008284, 0x0000002c }, 4975 {0x0000827c, 0x00000000},
4982 { 0x00008288, 0x0000002c }, 4976 {0x00008284, 0x0000002c},
4983 { 0x0000828c, 0x00000000 }, 4977 {0x00008288, 0x0000002c},
4984 { 0x00008294, 0x00000000 }, 4978 {0x0000828c, 0x00000000},
4985 { 0x00008298, 0x00000000 }, 4979 {0x00008294, 0x00000000},
4986 { 0x0000829c, 0x00000000 }, 4980 {0x00008298, 0x00000000},
4987 { 0x00008300, 0x00000040 }, 4981 {0x0000829c, 0x00000000},
4988 { 0x00008314, 0x00000000 }, 4982 {0x00008300, 0x00000040},
4989 { 0x00008328, 0x00000000 }, 4983 {0x00008314, 0x00000000},
4990 { 0x0000832c, 0x00000001 }, 4984 {0x00008328, 0x00000000},
4991 { 0x00008330, 0x00000302 }, 4985 {0x0000832c, 0x00000001},
4992 { 0x00008334, 0x00000e00 }, 4986 {0x00008330, 0x00000302},
4993 { 0x00008338, 0x00ff0000 }, 4987 {0x00008334, 0x00000e00},
4994 { 0x0000833c, 0x00000000 }, 4988 {0x00008338, 0x00ff0000},
4995 { 0x00008340, 0x00010380 }, 4989 {0x0000833c, 0x00000000},
4996 { 0x00008344, 0x00581043 }, 4990 {0x00008340, 0x00010380},
4997 { 0x00007010, 0x00000030 }, 4991 {0x00008344, 0x00581043},
4998 { 0x00007034, 0x00000002 }, 4992 {0x00007010, 0x00000030},
4999 { 0x00007038, 0x000004c2 }, 4993 {0x00007034, 0x00000002},
5000 { 0x00007800, 0x00140000 }, 4994 {0x00007038, 0x000004c2},
5001 { 0x00007804, 0x0e4548d8 }, 4995 {0x00007800, 0x00140000},
5002 { 0x00007808, 0x54214514 }, 4996 {0x00007804, 0x0e4548d8},
5003 { 0x0000780c, 0x02025820 }, 4997 {0x00007808, 0x54214514},
5004 { 0x00007810, 0x71c0d388 }, 4998 {0x0000780c, 0x02025820},
5005 { 0x00007814, 0x924934a8 }, 4999 {0x00007810, 0x71c0d388},
5006 { 0x0000781c, 0x00000000 }, 5000 {0x00007814, 0x924934a8},
5007 { 0x00007828, 0x66964300 }, 5001 {0x0000781c, 0x00000000},
5008 { 0x0000782c, 0x8db6d961 }, 5002 {0x00007828, 0x66964300},
5009 { 0x00007830, 0x8db6d96c }, 5003 {0x0000782c, 0x8db6d961},
5010 { 0x00007834, 0x6140008b }, 5004 {0x00007830, 0x8db6d96c},
5011 { 0x0000783c, 0x72ee0a72 }, 5005 {0x00007834, 0x6140008b},
5012 { 0x00007840, 0xbbfffffc }, 5006 {0x0000783c, 0x72ee0a72},
5013 { 0x00007844, 0x000c0db6 }, 5007 {0x00007840, 0xbbfffffc},
5014 { 0x00007848, 0x6db6246f }, 5008 {0x00007844, 0x000c0db6},
5015 { 0x0000784c, 0x6d9b66db }, 5009 {0x00007848, 0x6db6246f},
5016 { 0x00007850, 0x6d8c6dba }, 5010 {0x0000784c, 0x6d9b66db},
5017 { 0x00007854, 0x00040000 }, 5011 {0x00007850, 0x6d8c6dba},
5018 { 0x00007858, 0xdb003012 }, 5012 {0x00007854, 0x00040000},
5019 { 0x0000785c, 0x04924914 }, 5013 {0x00007858, 0xdb003012},
5020 { 0x00007860, 0x21084210 }, 5014 {0x0000785c, 0x04924914},
5021 { 0x00007864, 0xf7d7ffde }, 5015 {0x00007860, 0x21084210},
5022 { 0x00007868, 0xc2034080 }, 5016 {0x00007864, 0xf7d7ffde},
5023 { 0x00007870, 0x10142c00 }, 5017 {0x00007868, 0xc2034080},
5024 { 0x00009808, 0x00000000 }, 5018 {0x00007870, 0x10142c00},
5025 { 0x0000980c, 0xafe68e30 }, 5019 {0x00009808, 0x00000000},
5026 { 0x00009810, 0xfd14e000 }, 5020 {0x0000980c, 0xafe68e30},
5027 { 0x00009814, 0x9c0a9f6b }, 5021 {0x00009810, 0xfd14e000},
5028 { 0x0000981c, 0x00000000 }, 5022 {0x00009814, 0x9c0a9f6b},
5029 { 0x0000982c, 0x0000a000 }, 5023 {0x0000981c, 0x00000000},
5030 { 0x00009830, 0x00000000 }, 5024 {0x0000982c, 0x0000a000},
5031 { 0x0000983c, 0x00200400 }, 5025 {0x00009830, 0x00000000},
5032 { 0x0000984c, 0x0040233c }, 5026 {0x0000983c, 0x00200400},
5033 { 0x00009854, 0x00000044 }, 5027 {0x0000984c, 0x0040233c},
5034 { 0x00009900, 0x00000000 }, 5028 {0x00009854, 0x00000044},
5035 { 0x00009904, 0x00000000 }, 5029 {0x00009900, 0x00000000},
5036 { 0x00009908, 0x00000000 }, 5030 {0x00009904, 0x00000000},
5037 { 0x0000990c, 0x00000000 }, 5031 {0x00009908, 0x00000000},
5038 { 0x0000991c, 0x10000fff }, 5032 {0x0000990c, 0x00000000},
5039 { 0x00009920, 0x04900000 }, 5033 {0x0000991c, 0x10000fff},
5040 { 0x00009928, 0x00000001 }, 5034 {0x00009920, 0x04900000},
5041 { 0x0000992c, 0x00000004 }, 5035 {0x00009928, 0x00000001},
5042 { 0x00009934, 0x1e1f2022 }, 5036 {0x0000992c, 0x00000004},
5043 { 0x00009938, 0x0a0b0c0d }, 5037 {0x00009934, 0x1e1f2022},
5044 { 0x0000993c, 0x00000000 }, 5038 {0x00009938, 0x0a0b0c0d},
5045 { 0x00009940, 0x14750604 }, 5039 {0x0000993c, 0x00000000},
5046 { 0x00009948, 0x9280c00a }, 5040 {0x00009940, 0x14750604},
5047 { 0x0000994c, 0x00020028 }, 5041 {0x00009948, 0x9280c00a},
5048 { 0x00009954, 0x5f3ca3de }, 5042 {0x0000994c, 0x00020028},
5049 { 0x00009958, 0x0108ecff }, 5043 {0x00009954, 0x5f3ca3de},
5050 { 0x00009968, 0x000003ce }, 5044 {0x00009958, 0x0108ecff},
5051 { 0x00009970, 0x192bb514 }, 5045 {0x00009968, 0x000003ce},
5052 { 0x00009974, 0x00000000 }, 5046 {0x00009970, 0x192bb514},
5053 { 0x00009978, 0x00000001 }, 5047 {0x00009974, 0x00000000},
5054 { 0x0000997c, 0x00000000 }, 5048 {0x00009978, 0x00000001},
5055 { 0x00009980, 0x00000000 }, 5049 {0x0000997c, 0x00000000},
5056 { 0x00009984, 0x00000000 }, 5050 {0x00009980, 0x00000000},
5057 { 0x00009988, 0x00000000 }, 5051 {0x00009984, 0x00000000},
5058 { 0x0000998c, 0x00000000 }, 5052 {0x00009988, 0x00000000},
5059 { 0x00009990, 0x00000000 }, 5053 {0x0000998c, 0x00000000},
5060 { 0x00009994, 0x00000000 }, 5054 {0x00009990, 0x00000000},
5061 { 0x00009998, 0x00000000 }, 5055 {0x00009994, 0x00000000},
5062 { 0x0000999c, 0x00000000 }, 5056 {0x00009998, 0x00000000},
5063 { 0x000099a0, 0x00000000 }, 5057 {0x0000999c, 0x00000000},
5064 { 0x000099a4, 0x00000001 }, 5058 {0x000099a0, 0x00000000},
5065 { 0x000099a8, 0x201fff00 }, 5059 {0x000099a4, 0x00000001},
5066 { 0x000099ac, 0x2def0400 }, 5060 {0x000099a8, 0x201fff00},
5067 { 0x000099b0, 0x03051000 }, 5061 {0x000099ac, 0x2def0400},
5068 { 0x000099b4, 0x00000820 }, 5062 {0x000099b0, 0x03051000},
5069 { 0x000099dc, 0x00000000 }, 5063 {0x000099b4, 0x00000820},
5070 { 0x000099e0, 0x00000000 }, 5064 {0x000099dc, 0x00000000},
5071 { 0x000099e4, 0xaaaaaaaa }, 5065 {0x000099e0, 0x00000000},
5072 { 0x000099e8, 0x3c466478 }, 5066 {0x000099e4, 0xaaaaaaaa},
5073 { 0x000099ec, 0x0cc80caa }, 5067 {0x000099e8, 0x3c466478},
5074 { 0x000099f0, 0x00000000 }, 5068 {0x000099ec, 0x0cc80caa},
5075 { 0x0000a208, 0x803e68c8 }, 5069 {0x000099f0, 0x00000000},
5076 { 0x0000a210, 0x4080a333 }, 5070 {0x0000a208, 0x803e68c8},
5077 { 0x0000a214, 0x00206c10 }, 5071 {0x0000a210, 0x4080a333},
5078 { 0x0000a218, 0x009c4060 }, 5072 {0x0000a214, 0x00206c10},
5079 { 0x0000a220, 0x01834061 }, 5073 {0x0000a218, 0x009c4060},
5080 { 0x0000a224, 0x00000400 }, 5074 {0x0000a220, 0x01834061},
5081 { 0x0000a228, 0x000003b5 }, 5075 {0x0000a224, 0x00000400},
5082 { 0x0000a22c, 0x00000000 }, 5076 {0x0000a228, 0x000003b5},
5083 { 0x0000a234, 0x20202020 }, 5077 {0x0000a22c, 0x00000000},
5084 { 0x0000a238, 0x20202020 }, 5078 {0x0000a234, 0x20202020},
5085 { 0x0000a244, 0x00000000 }, 5079 {0x0000a238, 0x20202020},
5086 { 0x0000a248, 0xfffffffc }, 5080 {0x0000a244, 0x00000000},
5087 { 0x0000a24c, 0x00000000 }, 5081 {0x0000a248, 0xfffffffc},
5088 { 0x0000a254, 0x00000000 }, 5082 {0x0000a24c, 0x00000000},
5089 { 0x0000a258, 0x0ccb5380 }, 5083 {0x0000a254, 0x00000000},
5090 { 0x0000a25c, 0x15151501 }, 5084 {0x0000a258, 0x0ccb5380},
5091 { 0x0000a260, 0xdfa90f01 }, 5085 {0x0000a25c, 0x15151501},
5092 { 0x0000a268, 0x00000000 }, 5086 {0x0000a260, 0xdfa90f01},
5093 { 0x0000a26c, 0x0ebae9e6 }, 5087 {0x0000a268, 0x00000000},
5094 { 0x0000a388, 0x0c000000 }, 5088 {0x0000a26c, 0x0ebae9e6},
5095 { 0x0000a38c, 0x20202020 }, 5089 {0x0000a388, 0x0c000000},
5096 { 0x0000a390, 0x20202020 }, 5090 {0x0000a38c, 0x20202020},
5097 { 0x0000a39c, 0x00000001 }, 5091 {0x0000a390, 0x20202020},
5098 { 0x0000a3a0, 0x00000000 }, 5092 {0x0000a39c, 0x00000001},
5099 { 0x0000a3a4, 0x00000000 }, 5093 {0x0000a3a0, 0x00000000},
5100 { 0x0000a3a8, 0x00000000 }, 5094 {0x0000a3a4, 0x00000000},
5101 { 0x0000a3ac, 0x00000000 }, 5095 {0x0000a3a8, 0x00000000},
5102 { 0x0000a3b0, 0x00000000 }, 5096 {0x0000a3ac, 0x00000000},
5103 { 0x0000a3b4, 0x00000000 }, 5097 {0x0000a3b0, 0x00000000},
5104 { 0x0000a3b8, 0x00000000 }, 5098 {0x0000a3b4, 0x00000000},
5105 { 0x0000a3bc, 0x00000000 }, 5099 {0x0000a3b8, 0x00000000},
5106 { 0x0000a3c0, 0x00000000 }, 5100 {0x0000a3bc, 0x00000000},
5107 { 0x0000a3c4, 0x00000000 }, 5101 {0x0000a3c0, 0x00000000},
5108 { 0x0000a3cc, 0x20202020 }, 5102 {0x0000a3c4, 0x00000000},
5109 { 0x0000a3d0, 0x20202020 }, 5103 {0x0000a3cc, 0x20202020},
5110 { 0x0000a3d4, 0x20202020 }, 5104 {0x0000a3d0, 0x20202020},
5111 { 0x0000a3e4, 0x00000000 }, 5105 {0x0000a3d4, 0x20202020},
5112 { 0x0000a3e8, 0x18c43433 }, 5106 {0x0000a3e4, 0x00000000},
5113 { 0x0000a3ec, 0x00f70081 }, 5107 {0x0000a3e8, 0x18c43433},
5114 { 0x0000a3f0, 0x01036a2f }, 5108 {0x0000a3ec, 0x00f70081},
5115 { 0x0000a3f4, 0x00000000 }, 5109 {0x0000a3f0, 0x01036a2f},
5116 { 0x0000d270, 0x0d820820 }, 5110 {0x0000a3f4, 0x00000000},
5117 { 0x0000d35c, 0x07ffffef }, 5111 {0x0000d270, 0x0d820820},
5118 { 0x0000d360, 0x0fffffe7 }, 5112 {0x0000d35c, 0x07ffffef},
5119 { 0x0000d364, 0x17ffffe5 }, 5113 {0x0000d360, 0x0fffffe7},
5120 { 0x0000d368, 0x1fffffe4 }, 5114 {0x0000d364, 0x17ffffe5},
5121 { 0x0000d36c, 0x37ffffe3 }, 5115 {0x0000d368, 0x1fffffe4},
5122 { 0x0000d370, 0x3fffffe3 }, 5116 {0x0000d36c, 0x37ffffe3},
5123 { 0x0000d374, 0x57ffffe3 }, 5117 {0x0000d370, 0x3fffffe3},
5124 { 0x0000d378, 0x5fffffe2 }, 5118 {0x0000d374, 0x57ffffe3},
5125 { 0x0000d37c, 0x7fffffe2 }, 5119 {0x0000d378, 0x5fffffe2},
5126 { 0x0000d380, 0x7f3c7bba }, 5120 {0x0000d37c, 0x7fffffe2},
5127 { 0x0000d384, 0xf3307ff0 }, 5121 {0x0000d380, 0x7f3c7bba},
5122 {0x0000d384, 0xf3307ff0},
5128}; 5123};
5129 5124
5130static const u32 ar9271Common_normal_cck_fir_coeff_9271[][2] = { 5125static const u32 ar9271Common_normal_cck_fir_coeff_9271[][2] = {
5131 { 0x0000a1f4, 0x00fffeff }, 5126 /* Addr allmodes */
5132 { 0x0000a1f8, 0x00f5f9ff }, 5127 {0x0000a1f4, 0x00fffeff},
5133 { 0x0000a1fc, 0xb79f6427 }, 5128 {0x0000a1f8, 0x00f5f9ff},
5129 {0x0000a1fc, 0xb79f6427},
5134}; 5130};
5135 5131
5136static const u32 ar9271Common_japan_2484_cck_fir_coeff_9271[][2] = { 5132static const u32 ar9271Common_japan_2484_cck_fir_coeff_9271[][2] = {
5137 { 0x0000a1f4, 0x00000000 }, 5133 /* Addr allmodes */
5138 { 0x0000a1f8, 0xefff0301 }, 5134 {0x0000a1f4, 0x00000000},
5139 { 0x0000a1fc, 0xca9228ee }, 5135 {0x0000a1f8, 0xefff0301},
5136 {0x0000a1fc, 0xca9228ee},
5140}; 5137};
5141 5138
5142static const u32 ar9271Modes_9271_1_0_only[][6] = { 5139static const u32 ar9271Modes_9271_1_0_only[][6] = {
5143 { 0x00009910, 0x30002311, 0x30002311, 0x30002311, 0x30002311, 0x30002311 }, 5140 {0x00009910, 0x30002311, 0x30002311, 0x30002311, 0x30002311, 0x30002311},
5144 { 0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001 }, 5141 {0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
5145}; 5142};
5146 5143
5147static const u32 ar9271Modes_9271_ANI_reg[][6] = { 5144static const u32 ar9271Modes_9271_ANI_reg[][6] = {
5148 { 0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2 }, 5145 {0x00009850, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2, 0x6d4000e2},
5149 { 0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e }, 5146 {0x0000985c, 0x3139605e, 0x3139605e, 0x3137605e, 0x3137605e, 0x3139605e},
5150 { 0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e }, 5147 {0x00009858, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e, 0x7ec84d2e},
5151 { 0x0000986c, 0x06903881, 0x06903881, 0x06903881, 0x06903881, 0x06903881 }, 5148 {0x0000986c, 0x06903881, 0x06903881, 0x06903881, 0x06903881, 0x06903881},
5152 { 0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0 }, 5149 {0x00009868, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
5153 { 0x0000a208, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8 }, 5150 {0x0000a208, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8, 0x803e68c8},
5154 { 0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d }, 5151 {0x00009924, 0xd00a8007, 0xd00a8007, 0xd00a800d, 0xd00a800d, 0xd00a800d},
5155 { 0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4 }, 5152 {0x000099c0, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
5156}; 5153};
5157 5154
5158static const u32 ar9271Modes_normal_power_tx_gain_9271[][6] = { 5155static const u32 ar9271Modes_normal_power_tx_gain_9271[][6] = {
5159 { 0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, 5156 {0x0000a300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
5160 { 0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000 }, 5157 {0x0000a304, 0x00000000, 0x00000000, 0x00009200, 0x00009200, 0x00000000},
5161 { 0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000 }, 5158 {0x0000a308, 0x00000000, 0x00000000, 0x00010208, 0x00010208, 0x00000000},
5162 { 0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000 }, 5159 {0x0000a30c, 0x00000000, 0x00000000, 0x00019608, 0x00019608, 0x00000000},
5163 { 0x0000a310, 0x00000000, 0x00000000, 0x0001e610, 0x0001e610, 0x00000000 }, 5160 {0x0000a310, 0x00000000, 0x00000000, 0x0001e610, 0x0001e610, 0x00000000},
5164 { 0x0000a314, 0x00000000, 0x00000000, 0x0002d6d0, 0x0002d6d0, 0x00000000 }, 5161 {0x0000a314, 0x00000000, 0x00000000, 0x0002d6d0, 0x0002d6d0, 0x00000000},
5165 { 0x0000a318, 0x00000000, 0x00000000, 0x00039758, 0x00039758, 0x00000000 }, 5162 {0x0000a318, 0x00000000, 0x00000000, 0x00039758, 0x00039758, 0x00000000},
5166 { 0x0000a31c, 0x00000000, 0x00000000, 0x0003b759, 0x0003b759, 0x00000000 }, 5163 {0x0000a31c, 0x00000000, 0x00000000, 0x0003b759, 0x0003b759, 0x00000000},
5167 { 0x0000a320, 0x00000000, 0x00000000, 0x0003d75a, 0x0003d75a, 0x00000000 }, 5164 {0x0000a320, 0x00000000, 0x00000000, 0x0003d75a, 0x0003d75a, 0x00000000},
5168 { 0x0000a324, 0x00000000, 0x00000000, 0x0004175c, 0x0004175c, 0x00000000 }, 5165 {0x0000a324, 0x00000000, 0x00000000, 0x0004175c, 0x0004175c, 0x00000000},
5169 { 0x0000a328, 0x00000000, 0x00000000, 0x0004575e, 0x0004575e, 0x00000000 }, 5166 {0x0000a328, 0x00000000, 0x00000000, 0x0004575e, 0x0004575e, 0x00000000},
5170 { 0x0000a32c, 0x00000000, 0x00000000, 0x0004979f, 0x0004979f, 0x00000000 }, 5167 {0x0000a32c, 0x00000000, 0x00000000, 0x0004979f, 0x0004979f, 0x00000000},
5171 { 0x0000a330, 0x00000000, 0x00000000, 0x0004d7df, 0x0004d7df, 0x00000000 }, 5168 {0x0000a330, 0x00000000, 0x00000000, 0x0004d7df, 0x0004d7df, 0x00000000},
5172 { 0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000 }, 5169 {0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000},
5173 { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, 5170 {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000},
5174 { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, 5171 {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000},
5175 { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5172 {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5176 { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5173 {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5177 { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5174 {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5178 { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5175 {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5179 { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5176 {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5180 { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5177 {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5181 { 0x00007838, 0x00000029, 0x00000029, 0x00000029, 0x00000029, 0x00000029 }, 5178 {0x00007838, 0x00000029, 0x00000029, 0x00000029, 0x00000029, 0x00000029},
5182 { 0x00007824, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff }, 5179 {0x00007824, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff, 0x00d8abff},
5183 { 0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4 }, 5180 {0x0000786c, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4, 0x48609eb4},
5184 { 0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04 }, 5181 {0x00007820, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04, 0x00000c04},
5185 { 0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a218652, 0x0a218652, 0x0a22a652 }, 5182 {0x0000a274, 0x0a21c652, 0x0a21c652, 0x0a218652, 0x0a218652, 0x0a22a652},
5186 { 0x0000a278, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, 5183 {0x0000a278, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd},
5187 { 0x0000a27c, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd }, 5184 {0x0000a27c, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd, 0x050e83bd},
5188 { 0x0000a394, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, 5185 {0x0000a394, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd},
5189 { 0x0000a398, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd }, 5186 {0x0000a398, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd},
5190 { 0x0000a3dc, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd }, 5187 {0x0000a3dc, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd, 0x3bdef7bd},
5191 { 0x0000a3e0, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd }, 5188 {0x0000a3e0, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd, 0x000003bd},
5192}; 5189};
5193 5190
5194static const u32 ar9271Modes_high_power_tx_gain_9271[][6] = { 5191static const u32 ar9271Modes_high_power_tx_gain_9271[][6] = {
5195 { 0x0000a300, 0x00000000, 0x00000000, 0x00010000, 0x00010000, 0x00000000 }, 5192 {0x0000a300, 0x00000000, 0x00000000, 0x00010000, 0x00010000, 0x00000000},
5196 { 0x0000a304, 0x00000000, 0x00000000, 0x00016200, 0x00016200, 0x00000000 }, 5193 {0x0000a304, 0x00000000, 0x00000000, 0x00016200, 0x00016200, 0x00000000},
5197 { 0x0000a308, 0x00000000, 0x00000000, 0x00018201, 0x00018201, 0x00000000 }, 5194 {0x0000a308, 0x00000000, 0x00000000, 0x00018201, 0x00018201, 0x00000000},
5198 { 0x0000a30c, 0x00000000, 0x00000000, 0x0001b240, 0x0001b240, 0x00000000 }, 5195 {0x0000a30c, 0x00000000, 0x00000000, 0x0001b240, 0x0001b240, 0x00000000},
5199 { 0x0000a310, 0x00000000, 0x00000000, 0x0001d241, 0x0001d241, 0x00000000 }, 5196 {0x0000a310, 0x00000000, 0x00000000, 0x0001d241, 0x0001d241, 0x00000000},
5200 { 0x0000a314, 0x00000000, 0x00000000, 0x0001f600, 0x0001f600, 0x00000000 }, 5197 {0x0000a314, 0x00000000, 0x00000000, 0x0001f600, 0x0001f600, 0x00000000},
5201 { 0x0000a318, 0x00000000, 0x00000000, 0x00022800, 0x00022800, 0x00000000 }, 5198 {0x0000a318, 0x00000000, 0x00000000, 0x00022800, 0x00022800, 0x00000000},
5202 { 0x0000a31c, 0x00000000, 0x00000000, 0x00026802, 0x00026802, 0x00000000 }, 5199 {0x0000a31c, 0x00000000, 0x00000000, 0x00026802, 0x00026802, 0x00000000},
5203 { 0x0000a320, 0x00000000, 0x00000000, 0x0002b805, 0x0002b805, 0x00000000 }, 5200 {0x0000a320, 0x00000000, 0x00000000, 0x0002b805, 0x0002b805, 0x00000000},
5204 { 0x0000a324, 0x00000000, 0x00000000, 0x0002ea41, 0x0002ea41, 0x00000000 }, 5201 {0x0000a324, 0x00000000, 0x00000000, 0x0002ea41, 0x0002ea41, 0x00000000},
5205 { 0x0000a328, 0x00000000, 0x00000000, 0x00038b00, 0x00038b00, 0x00000000 }, 5202 {0x0000a328, 0x00000000, 0x00000000, 0x00038b00, 0x00038b00, 0x00000000},
5206 { 0x0000a32c, 0x00000000, 0x00000000, 0x0003ab40, 0x0003ab40, 0x00000000 }, 5203 {0x0000a32c, 0x00000000, 0x00000000, 0x0003ab40, 0x0003ab40, 0x00000000},
5207 { 0x0000a330, 0x00000000, 0x00000000, 0x0003cd80, 0x0003cd80, 0x00000000 }, 5204 {0x0000a330, 0x00000000, 0x00000000, 0x0003cd80, 0x0003cd80, 0x00000000},
5208 { 0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000 }, 5205 {0x0000a334, 0x000368de, 0x000368de, 0x000368de, 0x000368de, 0x00000000},
5209 { 0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000 }, 5206 {0x0000a338, 0x0003891e, 0x0003891e, 0x0003891e, 0x0003891e, 0x00000000},
5210 { 0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000 }, 5207 {0x0000a33c, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x0003a95e, 0x00000000},
5211 { 0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5208 {0x0000a340, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5212 { 0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5209 {0x0000a344, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5213 { 0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5210 {0x0000a348, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5214 { 0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5211 {0x0000a34c, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5215 { 0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5212 {0x0000a350, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5216 { 0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000 }, 5213 {0x0000a354, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x00000000},
5217 { 0x00007838, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b }, 5214 {0x00007838, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b},
5218 { 0x00007824, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff }, 5215 {0x00007824, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff, 0x00d8a7ff},
5219 { 0x0000786c, 0x08609eb6, 0x08609eb6, 0x08609eba, 0x08609eba, 0x08609eb6 }, 5216 {0x0000786c, 0x08609eb6, 0x08609eb6, 0x08609eba, 0x08609eba, 0x08609eb6},
5220 { 0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00 }, 5217 {0x00007820, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00, 0x00000c00},
5221 { 0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a214652, 0x0a214652, 0x0a22a652 }, 5218 {0x0000a274, 0x0a22a652, 0x0a22a652, 0x0a214652, 0x0a214652, 0x0a22a652},
5222 { 0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7 }, 5219 {0x0000a278, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7, 0x0e739ce7},
5223 { 0x0000a27c, 0x05018063, 0x05038063, 0x05018063, 0x05018063, 0x05018063 }, 5220 {0x0000a27c, 0x05018063, 0x05038063, 0x05018063, 0x05018063, 0x05018063},
5224 { 0x0000a394, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63 }, 5221 {0x0000a394, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63},
5225 { 0x0000a398, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063 }, 5222 {0x0000a398, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063},
5226 { 0x0000a3dc, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63 }, 5223 {0x0000a3dc, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63, 0x06318c63},
5227 { 0x0000a3e0, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063 }, 5224 {0x0000a3e0, 0x00000063, 0x00000063, 0x00000063, 0x00000063, 0x00000063},
5228}; 5225};
5229 5226
5230#endif /* INITVALS_9002_10_H */
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
index 2be20d2070c..50dda394f8b 100644
--- 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 ath_hw *ah, void *ds,
287 ts->ts_shortretry = MS(ads->ds_txstatus1, AR_RTSFailCnt); 287 ts->ts_shortretry = MS(ads->ds_txstatus1, AR_RTSFailCnt);
288 ts->ts_longretry = MS(ads->ds_txstatus1, AR_DataFailCnt); 288 ts->ts_longretry = MS(ads->ds_txstatus1, AR_DataFailCnt);
289 ts->ts_virtcol = MS(ads->ds_txstatus1, AR_VirtRetryCnt); 289 ts->ts_virtcol = MS(ads->ds_txstatus1, AR_VirtRetryCnt);
290 ts->tid = MS(ads->ds_txstatus9, AR_TxTid);
290 ts->ts_antenna = 0; 291 ts->ts_antenna = 0;
291 292
292 return 0; 293 return 0;
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_phy.c b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
index ed314e89bfe..4922b8d4a93 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
@@ -471,52 +471,45 @@ static u32 ar9002_hw_compute_pll_control(struct ath_hw *ah,
471static void ar9002_hw_do_getnf(struct ath_hw *ah, 471static void ar9002_hw_do_getnf(struct ath_hw *ah,
472 int16_t nfarray[NUM_NF_READINGS]) 472 int16_t nfarray[NUM_NF_READINGS])
473{ 473{
474 struct ath_common *common = ath9k_hw_common(ah);
475 int16_t nf; 474 int16_t nf;
476 475
477 nf = MS(REG_READ(ah, AR_PHY_CCA), AR9280_PHY_MINCCA_PWR); 476 nf = MS(REG_READ(ah, AR_PHY_CCA), AR9280_PHY_MINCCA_PWR);
478 477 nfarray[0] = sign_extend(nf, 9);
479 if (nf & 0x100)
480 nf = 0 - ((nf ^ 0x1ff) + 1);
481 ath_print(common, ATH_DBG_CALIBRATE,
482 "NF calibrated [ctl] [chain 0] is %d\n", nf);
483
484 if (AR_SREV_9271(ah) && (nf >= -114))
485 nf = -116;
486
487 nfarray[0] = nf;
488
489 if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) {
490 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA),
491 AR9280_PHY_CH1_MINCCA_PWR);
492
493 if (nf & 0x100)
494 nf = 0 - ((nf ^ 0x1ff) + 1);
495 ath_print(common, ATH_DBG_CALIBRATE,
496 "NF calibrated [ctl] [chain 1] is %d\n", nf);
497 nfarray[1] = nf;
498 }
499 478
500 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR); 479 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR);
501 if (nf & 0x100) 480 nfarray[3] = sign_extend(nf, 9);
502 nf = 0 - ((nf ^ 0x1ff) + 1);
503 ath_print(common, ATH_DBG_CALIBRATE,
504 "NF calibrated [ext] [chain 0] is %d\n", nf);
505 481
506 if (AR_SREV_9271(ah) && (nf >= -114)) 482 if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
507 nf = -116; 483 return;
508 484
509 nfarray[3] = nf; 485 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR9280_PHY_CH1_MINCCA_PWR);
486 nfarray[1] = sign_extend(nf, 9);
510 487
511 if (!AR_SREV_9285(ah) && !AR_SREV_9271(ah)) { 488 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR);
512 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), 489 nfarray[4] = sign_extend(nf, 9);
513 AR9280_PHY_CH1_EXT_MINCCA_PWR); 490}
514 491
515 if (nf & 0x100) 492static void ar9002_hw_set_nf_limits(struct ath_hw *ah)
516 nf = 0 - ((nf ^ 0x1ff) + 1); 493{
517 ath_print(common, ATH_DBG_CALIBRATE, 494 if (AR_SREV_9285(ah)) {
518 "NF calibrated [ext] [chain 1] is %d\n", nf); 495 ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9285_2GHZ;
519 nfarray[4] = nf; 496 ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9285_2GHZ;
497 ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9285_2GHZ;
498 } else if (AR_SREV_9287(ah)) {
499 ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9287_2GHZ;
500 ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9287_2GHZ;
501 ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9287_2GHZ;
502 } else if (AR_SREV_9271(ah)) {
503 ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9271_2GHZ;
504 ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9271_2GHZ;
505 ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9271_2GHZ;
506 } else {
507 ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9280_2GHZ;
508 ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9280_2GHZ;
509 ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9280_2GHZ;
510 ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_9280_5GHZ;
511 ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_9280_5GHZ;
512 ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_9280_5GHZ;
520 } 513 }
521} 514}
522 515
@@ -532,4 +525,6 @@ void ar9002_hw_attach_phy_ops(struct ath_hw *ah)
532 priv_ops->olc_init = ar9002_olc_init; 525 priv_ops->olc_init = ar9002_olc_init;
533 priv_ops->compute_pll_control = ar9002_hw_compute_pll_control; 526 priv_ops->compute_pll_control = ar9002_hw_compute_pll_control;
534 priv_ops->do_getnf = ar9002_hw_do_getnf; 527 priv_ops->do_getnf = ar9002_hw_do_getnf;
528
529 ar9002_hw_set_nf_limits(ah);
535} 530}
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_phy.h b/drivers/net/wireless/ath/ath9k/ar9002_phy.h
index ce8bb001c6d..c5151a4dd10 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.h
+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.h
@@ -576,4 +576,30 @@
576#define AR_PHY_CH2_EXT_MINCCA_PWR 0xFF800000 576#define AR_PHY_CH2_EXT_MINCCA_PWR 0xFF800000
577#define AR_PHY_CH2_EXT_MINCCA_PWR_S 23 577#define AR_PHY_CH2_EXT_MINCCA_PWR_S 23
578 578
579#define AR_PHY_CCA_NOM_VAL_5416_2GHZ -90
580#define AR_PHY_CCA_NOM_VAL_5416_5GHZ -100
581#define AR_PHY_CCA_MIN_GOOD_VAL_5416_2GHZ -100
582#define AR_PHY_CCA_MIN_GOOD_VAL_5416_5GHZ -110
583#define AR_PHY_CCA_MAX_GOOD_VAL_5416_2GHZ -80
584#define AR_PHY_CCA_MAX_GOOD_VAL_5416_5GHZ -90
585
586#define AR_PHY_CCA_NOM_VAL_9280_2GHZ -112
587#define AR_PHY_CCA_NOM_VAL_9280_5GHZ -112
588#define AR_PHY_CCA_MIN_GOOD_VAL_9280_2GHZ -127
589#define AR_PHY_CCA_MIN_GOOD_VAL_9280_5GHZ -122
590#define AR_PHY_CCA_MAX_GOOD_VAL_9280_2GHZ -97
591#define AR_PHY_CCA_MAX_GOOD_VAL_9280_5GHZ -102
592
593#define AR_PHY_CCA_NOM_VAL_9285_2GHZ -118
594#define AR_PHY_CCA_MIN_GOOD_VAL_9285_2GHZ -127
595#define AR_PHY_CCA_MAX_GOOD_VAL_9285_2GHZ -108
596
597#define AR_PHY_CCA_NOM_VAL_9271_2GHZ -118
598#define AR_PHY_CCA_MIN_GOOD_VAL_9271_2GHZ -127
599#define AR_PHY_CCA_MAX_GOOD_VAL_9271_2GHZ -116
600
601#define AR_PHY_CCA_NOM_VAL_9287_2GHZ -120
602#define AR_PHY_CCA_MIN_GOOD_VAL_9287_2GHZ -127
603#define AR_PHY_CCA_MAX_GOOD_VAL_9287_2GHZ -110
604
579#endif 605#endif
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index 343c9a427ac..ace8d2678b1 100644
--- 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_config(struct ath_hw *ah,
951 return 1; 951 return 1;
952} 952}
953 953
954static u16 ath9k_hw_ar9300_get_eeprom_antenna_cfg(struct ath_hw *ah, 954static u32 ath9k_hw_ar9300_get_eeprom_antenna_cfg(struct ath_hw *ah,
955 struct ath9k_channel *chan) 955 struct ath9k_channel *chan)
956{ 956{
957 return -EINVAL; 957 return -EINVAL;
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.h b/drivers/net/wireless/ath/ath9k/ar9003_mac.h
index f76f27d16f7..9f2cea70a84 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.h
@@ -33,9 +33,6 @@
33#define AR_TxDescId_S 16 33#define AR_TxDescId_S 16
34#define AR_TxPtrChkSum 0x0000ffff 34#define AR_TxPtrChkSum 0x0000ffff
35 35
36#define AR_TxTid 0xf0000000
37#define AR_TxTid_S 28
38
39#define AR_LowRxChain 0x00004000 36#define AR_LowRxChain 0x00004000
40 37
41#define AR_Not_Sounding 0x20000000 38#define AR_Not_Sounding 0x20000000
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
index 19bc05c4113..7c93338540a 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
@@ -1015,213 +1015,38 @@ static bool ar9003_hw_ani_control(struct ath_hw *ah,
1015 return true; 1015 return true;
1016} 1016}
1017 1017
1018static void ar9003_hw_nf_sanitize_2g(struct ath_hw *ah, s16 *nf)
1019{
1020 struct ath_common *common = ath9k_hw_common(ah);
1021
1022 if (*nf > ah->nf_2g_max) {
1023 ath_print(common, ATH_DBG_CALIBRATE,
1024 "2 GHz NF (%d) > MAX (%d), "
1025 "correcting to MAX",
1026 *nf, ah->nf_2g_max);
1027 *nf = ah->nf_2g_max;
1028 } else if (*nf < ah->nf_2g_min) {
1029 ath_print(common, ATH_DBG_CALIBRATE,
1030 "2 GHz NF (%d) < MIN (%d), "
1031 "correcting to MIN",
1032 *nf, ah->nf_2g_min);
1033 *nf = ah->nf_2g_min;
1034 }
1035}
1036
1037static void ar9003_hw_nf_sanitize_5g(struct ath_hw *ah, s16 *nf)
1038{
1039 struct ath_common *common = ath9k_hw_common(ah);
1040
1041 if (*nf > ah->nf_5g_max) {
1042 ath_print(common, ATH_DBG_CALIBRATE,
1043 "5 GHz NF (%d) > MAX (%d), "
1044 "correcting to MAX",
1045 *nf, ah->nf_5g_max);
1046 *nf = ah->nf_5g_max;
1047 } else if (*nf < ah->nf_5g_min) {
1048 ath_print(common, ATH_DBG_CALIBRATE,
1049 "5 GHz NF (%d) < MIN (%d), "
1050 "correcting to MIN",
1051 *nf, ah->nf_5g_min);
1052 *nf = ah->nf_5g_min;
1053 }
1054}
1055
1056static void ar9003_hw_nf_sanitize(struct ath_hw *ah, s16 *nf)
1057{
1058 if (IS_CHAN_2GHZ(ah->curchan))
1059 ar9003_hw_nf_sanitize_2g(ah, nf);
1060 else
1061 ar9003_hw_nf_sanitize_5g(ah, nf);
1062}
1063
1064static void ar9003_hw_do_getnf(struct ath_hw *ah, 1018static void ar9003_hw_do_getnf(struct ath_hw *ah,
1065 int16_t nfarray[NUM_NF_READINGS]) 1019 int16_t nfarray[NUM_NF_READINGS])
1066{ 1020{
1067 struct ath_common *common = ath9k_hw_common(ah);
1068 int16_t nf; 1021 int16_t nf;
1069 1022
1070 nf = MS(REG_READ(ah, AR_PHY_CCA_0), AR_PHY_MINCCA_PWR); 1023 nf = MS(REG_READ(ah, AR_PHY_CCA_0), AR_PHY_MINCCA_PWR);
1071 if (nf & 0x100) 1024 nfarray[0] = sign_extend(nf, 9);
1072 nf = 0 - ((nf ^ 0x1ff) + 1);
1073 ar9003_hw_nf_sanitize(ah, &nf);
1074 ath_print(common, ATH_DBG_CALIBRATE,
1075 "NF calibrated [ctl] [chain 0] is %d\n", nf);
1076 nfarray[0] = nf;
1077 1025
1078 nf = MS(REG_READ(ah, AR_PHY_CCA_1), AR_PHY_CH1_MINCCA_PWR); 1026 nf = MS(REG_READ(ah, AR_PHY_CCA_1), AR_PHY_CH1_MINCCA_PWR);
1079 if (nf & 0x100) 1027 nfarray[1] = sign_extend(nf, 9);
1080 nf = 0 - ((nf ^ 0x1ff) + 1);
1081 ar9003_hw_nf_sanitize(ah, &nf);
1082 ath_print(common, ATH_DBG_CALIBRATE,
1083 "NF calibrated [ctl] [chain 1] is %d\n", nf);
1084 nfarray[1] = nf;
1085 1028
1086 nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); 1029 nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR);
1087 if (nf & 0x100) 1030 nfarray[2] = sign_extend(nf, 9);
1088 nf = 0 - ((nf ^ 0x1ff) + 1);
1089 ar9003_hw_nf_sanitize(ah, &nf);
1090 ath_print(common, ATH_DBG_CALIBRATE,
1091 "NF calibrated [ctl] [chain 2] is %d\n", nf);
1092 nfarray[2] = nf;
1093 1031
1094 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); 1032 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
1095 if (nf & 0x100) 1033 nfarray[3] = sign_extend(nf, 9);
1096 nf = 0 - ((nf ^ 0x1ff) + 1);
1097 ar9003_hw_nf_sanitize(ah, &nf);
1098 ath_print(common, ATH_DBG_CALIBRATE,
1099 "NF calibrated [ext] [chain 0] is %d\n", nf);
1100 nfarray[3] = nf;
1101 1034
1102 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_1), AR_PHY_CH1_EXT_MINCCA_PWR); 1035 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_1), AR_PHY_CH1_EXT_MINCCA_PWR);
1103 if (nf & 0x100) 1036 nfarray[4] = sign_extend(nf, 9);
1104 nf = 0 - ((nf ^ 0x1ff) + 1);
1105 ar9003_hw_nf_sanitize(ah, &nf);
1106 ath_print(common, ATH_DBG_CALIBRATE,
1107 "NF calibrated [ext] [chain 1] is %d\n", nf);
1108 nfarray[4] = nf;
1109 1037
1110 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_2), AR_PHY_CH2_EXT_MINCCA_PWR); 1038 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA_2), AR_PHY_CH2_EXT_MINCCA_PWR);
1111 if (nf & 0x100) 1039 nfarray[5] = sign_extend(nf, 9);
1112 nf = 0 - ((nf ^ 0x1ff) + 1);
1113 ar9003_hw_nf_sanitize(ah, &nf);
1114 ath_print(common, ATH_DBG_CALIBRATE,
1115 "NF calibrated [ext] [chain 2] is %d\n", nf);
1116 nfarray[5] = nf;
1117} 1040}
1118 1041
1119void ar9003_hw_set_nf_limits(struct ath_hw *ah) 1042static void ar9003_hw_set_nf_limits(struct ath_hw *ah)
1120{ 1043{
1121 ah->nf_2g_max = AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ; 1044 ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_2GHZ;
1122 ah->nf_2g_min = AR_PHY_CCA_MIN_GOOD_VAL_9300_2GHZ; 1045 ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_2GHZ;
1123 ah->nf_5g_max = AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ; 1046 ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_9300_2GHZ;
1124 ah->nf_5g_min = AR_PHY_CCA_MIN_GOOD_VAL_9300_5GHZ; 1047 ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_9300_5GHZ;
1125} 1048 ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_9300_5GHZ;
1126 1049 ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_9300_5GHZ;
1127/*
1128 * Find out which of the RX chains are enabled
1129 */
1130static u32 ar9003_hw_get_rx_chainmask(struct ath_hw *ah)
1131{
1132 u32 chain = REG_READ(ah, AR_PHY_RX_CHAINMASK);
1133 /*
1134 * The bits [2:0] indicate the rx chain mask and are to be
1135 * interpreted as follows:
1136 * 00x => Only chain 0 is enabled
1137 * 01x => Chain 1 and 0 enabled
1138 * 1xx => Chain 2,1 and 0 enabled
1139 */
1140 return chain & 0x7;
1141}
1142
1143static void ar9003_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan)
1144{
1145 struct ath9k_nfcal_hist *h;
1146 unsigned i, j;
1147 int32_t val;
1148 const u32 ar9300_cca_regs[6] = {
1149 AR_PHY_CCA_0,
1150 AR_PHY_CCA_1,
1151 AR_PHY_CCA_2,
1152 AR_PHY_EXT_CCA,
1153 AR_PHY_EXT_CCA_1,
1154 AR_PHY_EXT_CCA_2,
1155 };
1156 u8 chainmask, rx_chain_status;
1157 struct ath_common *common = ath9k_hw_common(ah);
1158
1159 rx_chain_status = ar9003_hw_get_rx_chainmask(ah);
1160
1161 chainmask = 0x3F;
1162 h = ah->nfCalHist;
1163
1164 for (i = 0; i < NUM_NF_READINGS; i++) {
1165 if (chainmask & (1 << i)) {
1166 val = REG_READ(ah, ar9300_cca_regs[i]);
1167 val &= 0xFFFFFE00;
1168 val |= (((u32) (h[i].privNF) << 1) & 0x1ff);
1169 REG_WRITE(ah, ar9300_cca_regs[i], val);
1170 }
1171 }
1172
1173 /*
1174 * Load software filtered NF value into baseband internal minCCApwr
1175 * variable.
1176 */
1177 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
1178 AR_PHY_AGC_CONTROL_ENABLE_NF);
1179 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
1180 AR_PHY_AGC_CONTROL_NO_UPDATE_NF);
1181 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF);
1182
1183 /*
1184 * Wait for load to complete, should be fast, a few 10s of us.
1185 * The max delay was changed from an original 250us to 10000us
1186 * since 250us often results in NF load timeout and causes deaf
1187 * condition during stress testing 12/12/2009
1188 */
1189 for (j = 0; j < 1000; j++) {
1190 if ((REG_READ(ah, AR_PHY_AGC_CONTROL) &
1191 AR_PHY_AGC_CONTROL_NF) == 0)
1192 break;
1193 udelay(10);
1194 }
1195
1196 /*
1197 * We timed out waiting for the noisefloor to load, probably due to an
1198 * in-progress rx. Simply return here and allow the load plenty of time
1199 * to complete before the next calibration interval. We need to avoid
1200 * trying to load -50 (which happens below) while the previous load is
1201 * still in progress as this can cause rx deafness. Instead by returning
1202 * here, the baseband nf cal will just be capped by our present
1203 * noisefloor until the next calibration timer.
1204 */
1205 if (j == 1000) {
1206 ath_print(common, ATH_DBG_ANY, "Timeout while waiting for nf "
1207 "to load: AR_PHY_AGC_CONTROL=0x%x\n",
1208 REG_READ(ah, AR_PHY_AGC_CONTROL));
1209 return;
1210 }
1211
1212 /*
1213 * Restore maxCCAPower register parameter again so that we're not capped
1214 * by the median we just loaded. This will be initial (and max) value
1215 * of next noise floor calibration the baseband does.
1216 */
1217 for (i = 0; i < NUM_NF_READINGS; i++) {
1218 if (chainmask & (1 << i)) {
1219 val = REG_READ(ah, ar9300_cca_regs[i]);
1220 val &= 0xFFFFFE00;
1221 val |= (((u32) (-50) << 1) & 0x1ff);
1222 REG_WRITE(ah, ar9300_cca_regs[i], val);
1223 }
1224 }
1225} 1050}
1226 1051
1227/* 1052/*
@@ -1291,6 +1116,14 @@ static void ar9003_hw_ani_cache_ini_regs(struct ath_hw *ah)
1291void ar9003_hw_attach_phy_ops(struct ath_hw *ah) 1116void ar9003_hw_attach_phy_ops(struct ath_hw *ah)
1292{ 1117{
1293 struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); 1118 struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah);
1119 const u32 ar9300_cca_regs[6] = {
1120 AR_PHY_CCA_0,
1121 AR_PHY_CCA_1,
1122 AR_PHY_CCA_2,
1123 AR_PHY_EXT_CCA,
1124 AR_PHY_EXT_CCA_1,
1125 AR_PHY_EXT_CCA_2,
1126 };
1294 1127
1295 priv_ops->rf_set_freq = ar9003_hw_set_channel; 1128 priv_ops->rf_set_freq = ar9003_hw_set_channel;
1296 priv_ops->spur_mitigate_freq = ar9003_hw_spur_mitigate; 1129 priv_ops->spur_mitigate_freq = ar9003_hw_spur_mitigate;
@@ -1307,8 +1140,10 @@ void ar9003_hw_attach_phy_ops(struct ath_hw *ah)
1307 priv_ops->set_diversity = ar9003_hw_set_diversity; 1140 priv_ops->set_diversity = ar9003_hw_set_diversity;
1308 priv_ops->ani_control = ar9003_hw_ani_control; 1141 priv_ops->ani_control = ar9003_hw_ani_control;
1309 priv_ops->do_getnf = ar9003_hw_do_getnf; 1142 priv_ops->do_getnf = ar9003_hw_do_getnf;
1310 priv_ops->loadnf = ar9003_hw_loadnf;
1311 priv_ops->ani_cache_ini_regs = ar9003_hw_ani_cache_ini_regs; 1143 priv_ops->ani_cache_ini_regs = ar9003_hw_ani_cache_ini_regs;
1144
1145 ar9003_hw_set_nf_limits(ah);
1146 memcpy(ah->nf_regs, ar9300_cca_regs, sizeof(ah->nf_regs));
1312} 1147}
1313 1148
1314void ar9003_hw_bb_watchdog_config(struct ath_hw *ah) 1149void ar9003_hw_bb_watchdog_config(struct ath_hw *ah)
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 72d5e52abb8..6e486a508ed 100644
--- 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 *sc);
428 428
429#define ATH_PAPRD_TIMEOUT 100 /* msecs */ 429#define ATH_PAPRD_TIMEOUT 100 /* msecs */
430 430
431void ath_hw_check(struct work_struct *work);
431void ath_paprd_calibrate(struct work_struct *work); 432void ath_paprd_calibrate(struct work_struct *work);
432void ath_ani_calibrate(unsigned long data); 433void ath_ani_calibrate(unsigned long data);
433 434
@@ -562,6 +563,7 @@ struct ath_softc {
562 spinlock_t sc_pm_lock; 563 spinlock_t sc_pm_lock;
563 struct mutex mutex; 564 struct mutex mutex;
564 struct work_struct paprd_work; 565 struct work_struct paprd_work;
566 struct work_struct hw_check_work;
565 struct completion paprd_complete; 567 struct completion paprd_complete;
566 568
567 u32 intrstatus; 569 u32 intrstatus;
diff --git a/drivers/net/wireless/ath/ath9k/calib.c b/drivers/net/wireless/ath/ath9k/calib.c
index 07b8fa6fb62..7f4c55f90e7 100644
--- 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_buffer(struct ath9k_nfcal_hist *h,
74 h[i].currIndex = 0; 74 h[i].currIndex = 0;
75 75
76 if (h[i].invalidNFcount > 0) { 76 if (h[i].invalidNFcount > 0) {
77 if (nfarray[i] < AR_PHY_CCA_MIN_BAD_VALUE || 77 h[i].invalidNFcount--;
78 nfarray[i] > AR_PHY_CCA_MAX_HIGH_VALUE) { 78 h[i].privNF = nfarray[i];
79 h[i].invalidNFcount = ATH9K_NF_CAL_HIST_MAX;
80 } else {
81 h[i].invalidNFcount--;
82 h[i].privNF = nfarray[i];
83 }
84 } else { 79 } else {
85 h[i].privNF = 80 h[i].privNF =
86 ath9k_hw_get_nf_hist_mid(h[i].nfCalBuffer); 81 ath9k_hw_get_nf_hist_mid(h[i].nfCalBuffer);
@@ -172,6 +167,133 @@ void ath9k_hw_start_nfcal(struct ath_hw *ah)
172 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); 167 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF);
173} 168}
174 169
170void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan)
171{
172 struct ath9k_nfcal_hist *h;
173 unsigned i, j;
174 int32_t val;
175 u8 chainmask;
176 struct ath_common *common = ath9k_hw_common(ah);
177
178 if (AR_SREV_9300_20_OR_LATER(ah))
179 chainmask = 0x3F;
180 else if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
181 chainmask = 0x9;
182 else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) {
183 if ((ah->rxchainmask & 0x2) || (ah->rxchainmask & 0x4))
184 chainmask = 0x1B;
185 else
186 chainmask = 0x09;
187 } else {
188 if (ah->rxchainmask & 0x4)
189 chainmask = 0x3F;
190 else if (ah->rxchainmask & 0x2)
191 chainmask = 0x1B;
192 else
193 chainmask = 0x09;
194 }
195 h = ah->nfCalHist;
196
197 for (i = 0; i < NUM_NF_READINGS; i++) {
198 if (chainmask & (1 << i)) {
199 val = REG_READ(ah, ah->nf_regs[i]);
200 val &= 0xFFFFFE00;
201 val |= (((u32) (h[i].privNF) << 1) & 0x1ff);
202 REG_WRITE(ah, ah->nf_regs[i], val);
203 }
204 }
205
206 /*
207 * Load software filtered NF value into baseband internal minCCApwr
208 * variable.
209 */
210 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
211 AR_PHY_AGC_CONTROL_ENABLE_NF);
212 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
213 AR_PHY_AGC_CONTROL_NO_UPDATE_NF);
214 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF);
215
216 /*
217 * Wait for load to complete, should be fast, a few 10s of us.
218 * The max delay was changed from an original 250us to 10000us
219 * since 250us often results in NF load timeout and causes deaf
220 * condition during stress testing 12/12/2009
221 */
222 for (j = 0; j < 1000; j++) {
223 if ((REG_READ(ah, AR_PHY_AGC_CONTROL) &
224 AR_PHY_AGC_CONTROL_NF) == 0)
225 break;
226 udelay(10);
227 }
228
229 /*
230 * We timed out waiting for the noisefloor to load, probably due to an
231 * in-progress rx. Simply return here and allow the load plenty of time
232 * to complete before the next calibration interval. We need to avoid
233 * trying to load -50 (which happens below) while the previous load is
234 * still in progress as this can cause rx deafness. Instead by returning
235 * here, the baseband nf cal will just be capped by our present
236 * noisefloor until the next calibration timer.
237 */
238 if (j == 1000) {
239 ath_print(common, ATH_DBG_ANY, "Timeout while waiting for nf "
240 "to load: AR_PHY_AGC_CONTROL=0x%x\n",
241 REG_READ(ah, AR_PHY_AGC_CONTROL));
242 return;
243 }
244
245 /*
246 * Restore maxCCAPower register parameter again so that we're not capped
247 * by the median we just loaded. This will be initial (and max) value
248 * of next noise floor calibration the baseband does.
249 */
250 ENABLE_REGWRITE_BUFFER(ah);
251 for (i = 0; i < NUM_NF_READINGS; i++) {
252 if (chainmask & (1 << i)) {
253 val = REG_READ(ah, ah->nf_regs[i]);
254 val &= 0xFFFFFE00;
255 val |= (((u32) (-50) << 1) & 0x1ff);
256 REG_WRITE(ah, ah->nf_regs[i], val);
257 }
258 }
259 REGWRITE_BUFFER_FLUSH(ah);
260 DISABLE_REGWRITE_BUFFER(ah);
261}
262
263
264static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf)
265{
266 struct ath_common *common = ath9k_hw_common(ah);
267 struct ath_nf_limits *limit;
268 int i;
269
270 if (IS_CHAN_2GHZ(ah->curchan))
271 limit = &ah->nf_2g;
272 else
273 limit = &ah->nf_5g;
274
275 for (i = 0; i < NUM_NF_READINGS; i++) {
276 if (!nf[i])
277 continue;
278
279 ath_print(common, ATH_DBG_CALIBRATE,
280 "NF calibrated [%s] [chain %d] is %d\n",
281 (i > 3 ? "ext" : "ctl"), i % 3, nf[i]);
282
283 if (nf[i] > limit->max) {
284 ath_print(common, ATH_DBG_CALIBRATE,
285 "NF[%d] (%d) > MAX (%d), correcting to MAX",
286 i, nf[i], limit->max);
287 nf[i] = limit->max;
288 } else if (nf[i] < limit->min) {
289 ath_print(common, ATH_DBG_CALIBRATE,
290 "NF[%d] (%d) < MIN (%d), correcting to NOM",
291 i, nf[i], limit->min);
292 nf[i] = limit->nominal;
293 }
294 }
295}
296
175int16_t ath9k_hw_getnf(struct ath_hw *ah, 297int16_t ath9k_hw_getnf(struct ath_hw *ah,
176 struct ath9k_channel *chan) 298 struct ath9k_channel *chan)
177{ 299{
@@ -190,6 +312,7 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah,
190 return chan->rawNoiseFloor; 312 return chan->rawNoiseFloor;
191 } else { 313 } else {
192 ath9k_hw_do_getnf(ah, nfarray); 314 ath9k_hw_do_getnf(ah, nfarray);
315 ath9k_hw_nf_sanitize(ah, nfarray);
193 nf = nfarray[0]; 316 nf = nfarray[0];
194 if (ath9k_hw_get_nf_thresh(ah, c->band, &nfThresh) 317 if (ath9k_hw_get_nf_thresh(ah, c->band, &nfThresh)
195 && nf > nfThresh) { 318 && nf > nfThresh) {
@@ -211,25 +334,21 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah,
211 334
212void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah) 335void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah)
213{ 336{
337 struct ath_nf_limits *limit;
214 int i, j; 338 int i, j;
215 s16 noise_floor;
216 339
217 if (AR_SREV_9280(ah)) 340 if (!ah->curchan || IS_CHAN_2GHZ(ah->curchan))
218 noise_floor = AR_PHY_CCA_MAX_AR9280_GOOD_VALUE; 341 limit = &ah->nf_2g;
219 else if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
220 noise_floor = AR_PHY_CCA_MAX_AR9285_GOOD_VALUE;
221 else if (AR_SREV_9287(ah))
222 noise_floor = AR_PHY_CCA_MAX_AR9287_GOOD_VALUE;
223 else 342 else
224 noise_floor = AR_PHY_CCA_MAX_AR5416_GOOD_VALUE; 343 limit = &ah->nf_5g;
225 344
226 for (i = 0; i < NUM_NF_READINGS; i++) { 345 for (i = 0; i < NUM_NF_READINGS; i++) {
227 ah->nfCalHist[i].currIndex = 0; 346 ah->nfCalHist[i].currIndex = 0;
228 ah->nfCalHist[i].privNF = noise_floor; 347 ah->nfCalHist[i].privNF = limit->nominal;
229 ah->nfCalHist[i].invalidNFcount = 348 ah->nfCalHist[i].invalidNFcount =
230 AR_PHY_CCA_FILTERWINDOW_LENGTH; 349 AR_PHY_CCA_FILTERWINDOW_LENGTH;
231 for (j = 0; j < ATH9K_NF_CAL_HIST_MAX; j++) { 350 for (j = 0; j < ATH9K_NF_CAL_HIST_MAX; j++) {
232 ah->nfCalHist[i].nfCalBuffer[j] = noise_floor; 351 ah->nfCalHist[i].nfCalBuffer[j] = limit->nominal;
233 } 352 }
234 } 353 }
235} 354}
diff --git a/drivers/net/wireless/ath/ath9k/calib.h b/drivers/net/wireless/ath/ath9k/calib.h
index 24538bdb912..cd60d09cdda 100644
--- a/drivers/net/wireless/ath/ath9k/calib.h
+++ b/drivers/net/wireless/ath/ath9k/calib.h
@@ -19,12 +19,6 @@
19 19
20#include "hw.h" 20#include "hw.h"
21 21
22#define AR_PHY_CCA_MAX_AR5416_GOOD_VALUE -85
23#define AR_PHY_CCA_MAX_AR9280_GOOD_VALUE -112
24#define AR_PHY_CCA_MAX_AR9285_GOOD_VALUE -118
25#define AR_PHY_CCA_MAX_AR9287_GOOD_VALUE -118
26#define AR_PHY_CCA_MAX_HIGH_VALUE -62
27#define AR_PHY_CCA_MIN_BAD_VALUE -140
28#define AR_PHY_CCA_FILTERWINDOW_LENGTH_INIT 3 22#define AR_PHY_CCA_FILTERWINDOW_LENGTH_INIT 3
29#define AR_PHY_CCA_FILTERWINDOW_LENGTH 5 23#define AR_PHY_CCA_FILTERWINDOW_LENGTH 5
30 24
@@ -115,6 +109,7 @@ struct ath9k_pacal_info{
115 109
116bool ath9k_hw_reset_calvalid(struct ath_hw *ah); 110bool ath9k_hw_reset_calvalid(struct ath_hw *ah);
117void ath9k_hw_start_nfcal(struct ath_hw *ah); 111void ath9k_hw_start_nfcal(struct ath_hw *ah);
112void ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan);
118int16_t ath9k_hw_getnf(struct ath_hw *ah, 113int16_t ath9k_hw_getnf(struct ath_hw *ah,
119 struct ath9k_channel *chan); 114 struct ath9k_channel *chan);
120void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah); 115void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah);
diff --git a/drivers/net/wireless/ath/ath9k/common.c b/drivers/net/wireless/ath/ath9k/common.c
index 16e2849f644..c86f7d3593a 100644
--- 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_common *common,
319 idx = ath_reserve_key_cache_slot(common, key->alg); 319 idx = ath_reserve_key_cache_slot(common, key->alg);
320 break; 320 break;
321 case NL80211_IFTYPE_ADHOC: 321 case NL80211_IFTYPE_ADHOC:
322 if (!sta) {
323 idx = key->keyidx;
324 break;
325 }
322 memcpy(gmac, sta->addr, ETH_ALEN); 326 memcpy(gmac, sta->addr, ETH_ALEN);
323 gmac[0] |= 0x01; 327 gmac[0] |= 0x01;
324 mac = gmac; 328 mac = gmac;
diff --git a/drivers/net/wireless/ath/ath9k/eeprom.h b/drivers/net/wireless/ath/ath9k/eeprom.h
index bdd8aa054b8..8750c558c22 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom.h
+++ b/drivers/net/wireless/ath/ath9k/eeprom.h
@@ -670,7 +670,7 @@ struct eeprom_ops {
670 int (*get_eeprom_ver)(struct ath_hw *hw); 670 int (*get_eeprom_ver)(struct ath_hw *hw);
671 int (*get_eeprom_rev)(struct ath_hw *hw); 671 int (*get_eeprom_rev)(struct ath_hw *hw);
672 u8 (*get_num_ant_config)(struct ath_hw *hw, enum ieee80211_band band); 672 u8 (*get_num_ant_config)(struct ath_hw *hw, enum ieee80211_band band);
673 u16 (*get_eeprom_antenna_cfg)(struct ath_hw *hw, 673 u32 (*get_eeprom_antenna_cfg)(struct ath_hw *hw,
674 struct ath9k_channel *chan); 674 struct ath9k_channel *chan);
675 void (*set_board_values)(struct ath_hw *hw, struct ath9k_channel *chan); 675 void (*set_board_values)(struct ath_hw *hw, struct ath9k_channel *chan);
676 void (*set_addac)(struct ath_hw *hw, struct ath9k_channel *chan); 676 void (*set_addac)(struct ath_hw *hw, struct ath9k_channel *chan);
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_4k.c b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
index e25a2abbf56..afafc4d4b8f 100644
--- 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(struct ath_hw *ah,
1150 } 1150 }
1151} 1151}
1152 1152
1153static u16 ath9k_hw_4k_get_eeprom_antenna_cfg(struct ath_hw *ah, 1153static u32 ath9k_hw_4k_get_eeprom_antenna_cfg(struct ath_hw *ah,
1154 struct ath9k_channel *chan) 1154 struct ath9k_channel *chan)
1155{ 1155{
1156 struct ar5416_eeprom_4k *eep = &ah->eeprom.map4k; 1156 struct ar5416_eeprom_4k *eep = &ah->eeprom.map4k;
1157 struct modal_eep_4k_header *pModal = &eep->modalHeader; 1157 struct modal_eep_4k_header *pModal = &eep->modalHeader;
1158 1158
1159 return pModal->antCtrlCommon & 0xFFFF; 1159 return pModal->antCtrlCommon;
1160} 1160}
1161 1161
1162static u8 ath9k_hw_4k_get_num_ant_config(struct ath_hw *ah, 1162static u8 ath9k_hw_4k_get_num_ant_config(struct ath_hw *ah,
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
index 39a41053705..37207dfd179 100644
--- 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_config(struct ath_hw *ah,
1130 return 1; 1130 return 1;
1131} 1131}
1132 1132
1133static u16 ath9k_hw_ar9287_get_eeprom_antenna_cfg(struct ath_hw *ah, 1133static u32 ath9k_hw_ar9287_get_eeprom_antenna_cfg(struct ath_hw *ah,
1134 struct ath9k_channel *chan) 1134 struct ath9k_channel *chan)
1135{ 1135{
1136 struct ar9287_eeprom *eep = &ah->eeprom.map9287; 1136 struct ar9287_eeprom *eep = &ah->eeprom.map9287;
1137 struct modal_eep_ar9287_header *pModal = &eep->modalHeader; 1137 struct modal_eep_ar9287_header *pModal = &eep->modalHeader;
1138 1138
1139 return pModal->antCtrlCommon & 0xFFFF; 1139 return pModal->antCtrlCommon;
1140} 1140}
1141 1141
1142static u16 ath9k_hw_ar9287_get_spur_channel(struct ath_hw *ah, 1142static u16 ath9k_hw_ar9287_get_spur_channel(struct ath_hw *ah,
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_def.c b/drivers/net/wireless/ath/ath9k/eeprom_def.c
index 77b1433312c..02e6c2a55fe 100644
--- 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_boundaries_pdadcs(struct ath_hw *ah,
730 vpdTableI[i][sizeCurrVpdTable - 2]); 730 vpdTableI[i][sizeCurrVpdTable - 2]);
731 vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep); 731 vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
732 732
733 if (tgtIndex > maxIndex) { 733 if (tgtIndex >= maxIndex) {
734 while ((ss <= tgtIndex) && 734 while ((ss <= tgtIndex) &&
735 (k < (AR5416_NUM_PDADC_VALUES - 1))) { 735 (k < (AR5416_NUM_PDADC_VALUES - 1))) {
736 tmpVal = (int16_t)((vpdTableI[i][sizeCurrVpdTable - 1] + 736 tmpVal = (int16_t)((vpdTableI[i][sizeCurrVpdTable - 1] +
@@ -1438,14 +1438,14 @@ static u8 ath9k_hw_def_get_num_ant_config(struct ath_hw *ah,
1438 return num_ant_config; 1438 return num_ant_config;
1439} 1439}
1440 1440
1441static u16 ath9k_hw_def_get_eeprom_antenna_cfg(struct ath_hw *ah, 1441static u32 ath9k_hw_def_get_eeprom_antenna_cfg(struct ath_hw *ah,
1442 struct ath9k_channel *chan) 1442 struct ath9k_channel *chan)
1443{ 1443{
1444 struct ar5416_eeprom_def *eep = &ah->eeprom.def; 1444 struct ar5416_eeprom_def *eep = &ah->eeprom.def;
1445 struct modal_eep_header *pModal = 1445 struct modal_eep_header *pModal =
1446 &(eep->modalHeader[IS_CHAN_2GHZ(chan)]); 1446 &(eep->modalHeader[IS_CHAN_2GHZ(chan)]);
1447 1447
1448 return pModal->antCtrlCommon & 0xFFFF; 1448 return pModal->antCtrlCommon;
1449} 1449}
1450 1450
1451static u16 ath9k_hw_def_get_spur_channel(struct ath_hw *ah, u16 i, bool is2GHz) 1451static u16 ath9k_hw_def_get_spur_channel(struct ath_hw *ah, u16 i, bool is2GHz)
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index ad9134bddd1..61c1bee3f26 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -745,13 +745,17 @@ static int ath9k_hif_usb_alloc_urbs(struct hif_device_usb *hif_dev)
745 745
746 /* RX */ 746 /* RX */
747 if (ath9k_hif_usb_alloc_rx_urbs(hif_dev) < 0) 747 if (ath9k_hif_usb_alloc_rx_urbs(hif_dev) < 0)
748 goto err; 748 goto err_rx;
749 749
750 /* Register Read */ 750 /* Register Read */
751 if (ath9k_hif_usb_alloc_reg_in_urb(hif_dev) < 0) 751 if (ath9k_hif_usb_alloc_reg_in_urb(hif_dev) < 0)
752 goto err; 752 goto err_reg;
753 753
754 return 0; 754 return 0;
755err_reg:
756 ath9k_hif_usb_dealloc_rx_urbs(hif_dev);
757err_rx:
758 ath9k_hif_usb_dealloc_tx_urbs(hif_dev);
755err: 759err:
756 return -ENOMEM; 760 return -ENOMEM;
757} 761}
diff --git a/drivers/net/wireless/ath/ath9k/hw-ops.h b/drivers/net/wireless/ath/ath9k/hw-ops.h
index 381da6c93b1..ffecbadaea4 100644
--- 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(struct ath_hw *ah,
264 ath9k_hw_private_ops(ah)->do_getnf(ah, nfarray); 264 ath9k_hw_private_ops(ah)->do_getnf(ah, nfarray);
265} 265}
266 266
267static inline void ath9k_hw_loadnf(struct ath_hw *ah,
268 struct ath9k_channel *chan)
269{
270 ath9k_hw_private_ops(ah)->loadnf(ah, chan);
271}
272
273static inline bool ath9k_hw_init_cal(struct ath_hw *ah, 267static inline bool ath9k_hw_init_cal(struct ath_hw *ah,
274 struct ath9k_channel *chan) 268 struct ath9k_channel *chan)
275{ 269{
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 3ed5c9ec7bc..2f83f975b89 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -609,9 +609,6 @@ static int __ath9k_hw_init(struct ath_hw *ah)
609 else 609 else
610 ah->tx_trig_level = (AR_FTRIG_512B >> AR_FTRIG_S); 610 ah->tx_trig_level = (AR_FTRIG_512B >> AR_FTRIG_S);
611 611
612 if (AR_SREV_9300_20_OR_LATER(ah))
613 ar9003_hw_set_nf_limits(ah);
614
615 ath9k_init_nfcal_hist_buffer(ah); 612 ath9k_init_nfcal_hist_buffer(ah);
616 ah->bb_watchdog_timeout_ms = 25; 613 ah->bb_watchdog_timeout_ms = 25;
617 614
@@ -1235,9 +1232,11 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1235 1232
1236 if (!ah->chip_fullsleep) { 1233 if (!ah->chip_fullsleep) {
1237 ath9k_hw_abortpcurecv(ah); 1234 ath9k_hw_abortpcurecv(ah);
1238 if (!ath9k_hw_stopdmarecv(ah)) 1235 if (!ath9k_hw_stopdmarecv(ah)) {
1239 ath_print(common, ATH_DBG_XMIT, 1236 ath_print(common, ATH_DBG_XMIT,
1240 "Failed to stop receive dma\n"); 1237 "Failed to stop receive dma\n");
1238 bChannelChange = false;
1239 }
1241 } 1240 }
1242 1241
1243 if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) 1242 if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE))
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index bb99e2e1f94..2d30efc0b94 100644
--- 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 {
510 * AR_RTC_PLL_CONTROL for a given channel 510 * AR_RTC_PLL_CONTROL for a given channel
511 * @setup_calibration: set up calibration 511 * @setup_calibration: set up calibration
512 * @iscal_supported: used to query if a type of calibration is supported 512 * @iscal_supported: used to query if a type of calibration is supported
513 * @loadnf: load noise floor read from each chain on the CCA registers
514 * 513 *
515 * @ani_reset: reset ANI parameters to default values 514 * @ani_reset: reset ANI parameters to default values
516 * @ani_lower_immunity: lower the noise immunity level. The level controls 515 * @ani_lower_immunity: lower the noise immunity level. The level controls
@@ -564,7 +563,6 @@ struct ath_hw_private_ops {
564 bool (*ani_control)(struct ath_hw *ah, enum ath9k_ani_cmd cmd, 563 bool (*ani_control)(struct ath_hw *ah, enum ath9k_ani_cmd cmd,
565 int param); 564 int param);
566 void (*do_getnf)(struct ath_hw *ah, int16_t nfarray[NUM_NF_READINGS]); 565 void (*do_getnf)(struct ath_hw *ah, int16_t nfarray[NUM_NF_READINGS]);
567 void (*loadnf)(struct ath_hw *ah, struct ath9k_channel *chan);
568 566
569 /* ANI */ 567 /* ANI */
570 void (*ani_reset)(struct ath_hw *ah, bool is_scanning); 568 void (*ani_reset)(struct ath_hw *ah, bool is_scanning);
@@ -630,6 +628,12 @@ struct ath_hw_ops {
630 void (*ani_monitor)(struct ath_hw *ah, struct ath9k_channel *chan); 628 void (*ani_monitor)(struct ath_hw *ah, struct ath9k_channel *chan);
631}; 629};
632 630
631struct ath_nf_limits {
632 s16 max;
633 s16 min;
634 s16 nominal;
635};
636
633struct ath_hw { 637struct ath_hw {
634 struct ieee80211_hw *hw; 638 struct ieee80211_hw *hw;
635 struct ath_common common; 639 struct ath_common common;
@@ -651,10 +655,10 @@ struct ath_hw {
651 bool is_pciexpress; 655 bool is_pciexpress;
652 bool need_an_top2_fixup; 656 bool need_an_top2_fixup;
653 u16 tx_trig_level; 657 u16 tx_trig_level;
654 s16 nf_2g_max; 658
655 s16 nf_2g_min; 659 u32 nf_regs[6];
656 s16 nf_5g_max; 660 struct ath_nf_limits nf_2g;
657 s16 nf_5g_min; 661 struct ath_nf_limits nf_5g;
658 u16 rfsilent; 662 u16 rfsilent;
659 u32 rfkill_gpio; 663 u32 rfkill_gpio;
660 u32 rfkill_polarity; 664 u32 rfkill_polarity;
@@ -848,6 +852,12 @@ static inline struct ath_hw_ops *ath9k_hw_ops(struct ath_hw *ah)
848 return &ah->ops; 852 return &ah->ops;
849} 853}
850 854
855static inline int sign_extend(int val, const int nbits)
856{
857 int order = BIT(nbits-1);
858 return (val ^ order) - order;
859}
860
851/* Initialization, Detach, Reset */ 861/* Initialization, Detach, Reset */
852const char *ath9k_hw_probe(u16 vendorid, u16 devid); 862const char *ath9k_hw_probe(u16 vendorid, u16 devid);
853void ath9k_hw_deinit(struct ath_hw *ah); 863void ath9k_hw_deinit(struct ath_hw *ah);
@@ -943,7 +953,6 @@ void ar9002_hw_enable_wep_aggregation(struct ath_hw *ah);
943 * Code specific to AR9003, we stuff these here to avoid callbacks 953 * Code specific to AR9003, we stuff these here to avoid callbacks
944 * for older families 954 * for older families
945 */ 955 */
946void ar9003_hw_set_nf_limits(struct ath_hw *ah);
947void ar9003_hw_bb_watchdog_config(struct ath_hw *ah); 956void ar9003_hw_bb_watchdog_config(struct ath_hw *ah);
948void ar9003_hw_bb_watchdog_read(struct ath_hw *ah); 957void ar9003_hw_bb_watchdog_read(struct ath_hw *ah);
949void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah); 958void ar9003_hw_bb_watchdog_dbg_info(struct ath_hw *ah);
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 8700e3dc53c..fe730cb16ec 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -718,6 +718,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
718 goto error_world; 718 goto error_world;
719 } 719 }
720 720
721 INIT_WORK(&sc->hw_check_work, ath_hw_check);
721 INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); 722 INIT_WORK(&sc->paprd_work, ath_paprd_calibrate);
722 INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work); 723 INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work);
723 INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work); 724 INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work);
diff --git a/drivers/net/wireless/ath/ath9k/mac.h b/drivers/net/wireless/ath/ath9k/mac.h
index 7559fb2b28a..2633896d399 100644
--- a/drivers/net/wireless/ath/ath9k/mac.h
+++ b/drivers/net/wireless/ath/ath9k/mac.h
@@ -485,6 +485,9 @@ struct ar5416_desc {
485#define AR_TxRSSICombined 0xff000000 485#define AR_TxRSSICombined 0xff000000
486#define AR_TxRSSICombined_S 24 486#define AR_TxRSSICombined_S 24
487 487
488#define AR_TxTid 0xf0000000
489#define AR_TxTid_S 28
490
488#define AR_TxEVM0 ds_txstatus5 491#define AR_TxEVM0 ds_txstatus5
489#define AR_TxEVM1 ds_txstatus6 492#define AR_TxEVM1 ds_txstatus6
490#define AR_TxEVM2 ds_txstatus7 493#define AR_TxEVM2 ds_txstatus7
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index efbf53534ad..4c0831ff6e9 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -515,6 +515,25 @@ static void ath_node_detach(struct ath_softc *sc, struct ieee80211_sta *sta)
515 ath_tx_node_cleanup(sc, an); 515 ath_tx_node_cleanup(sc, an);
516} 516}
517 517
518void ath_hw_check(struct work_struct *work)
519{
520 struct ath_softc *sc = container_of(work, struct ath_softc, hw_check_work);
521 int i;
522
523 ath9k_ps_wakeup(sc);
524
525 for (i = 0; i < 3; i++) {
526 if (ath9k_hw_check_alive(sc->sc_ah))
527 goto out;
528
529 msleep(1);
530 }
531 ath_reset(sc, false);
532
533out:
534 ath9k_ps_restore(sc);
535}
536
518void ath9k_tasklet(unsigned long data) 537void ath9k_tasklet(unsigned long data)
519{ 538{
520 struct ath_softc *sc = (struct ath_softc *)data; 539 struct ath_softc *sc = (struct ath_softc *)data;
@@ -526,13 +545,15 @@ void ath9k_tasklet(unsigned long data)
526 545
527 ath9k_ps_wakeup(sc); 546 ath9k_ps_wakeup(sc);
528 547
529 if ((status & ATH9K_INT_FATAL) || 548 if (status & ATH9K_INT_FATAL) {
530 !ath9k_hw_check_alive(ah)) {
531 ath_reset(sc, false); 549 ath_reset(sc, false);
532 ath9k_ps_restore(sc); 550 ath9k_ps_restore(sc);
533 return; 551 return;
534 } 552 }
535 553
554 if (!ath9k_hw_check_alive(ah))
555 ieee80211_queue_work(sc->hw, &sc->hw_check_work);
556
536 if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) 557 if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)
537 rxmask = (ATH9K_INT_RXHP | ATH9K_INT_RXLP | ATH9K_INT_RXEOL | 558 rxmask = (ATH9K_INT_RXHP | ATH9K_INT_RXLP | ATH9K_INT_RXEOL |
538 ATH9K_INT_RXORN); 559 ATH9K_INT_RXORN);
@@ -1253,6 +1274,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
1253 1274
1254 cancel_delayed_work_sync(&sc->tx_complete_work); 1275 cancel_delayed_work_sync(&sc->tx_complete_work);
1255 cancel_work_sync(&sc->paprd_work); 1276 cancel_work_sync(&sc->paprd_work);
1277 cancel_work_sync(&sc->hw_check_work);
1256 1278
1257 if (!sc->num_sec_wiphy) { 1279 if (!sc->num_sec_wiphy) {
1258 cancel_delayed_work_sync(&sc->wiphy_work); 1280 cancel_delayed_work_sync(&sc->wiphy_work);
@@ -1976,6 +1998,7 @@ static void ath9k_sw_scan_start(struct ieee80211_hw *hw)
1976 sc->sc_flags |= SC_OP_SCANNING; 1998 sc->sc_flags |= SC_OP_SCANNING;
1977 del_timer_sync(&common->ani.timer); 1999 del_timer_sync(&common->ani.timer);
1978 cancel_work_sync(&sc->paprd_work); 2000 cancel_work_sync(&sc->paprd_work);
2001 cancel_work_sync(&sc->hw_check_work);
1979 cancel_delayed_work_sync(&sc->tx_complete_work); 2002 cancel_delayed_work_sync(&sc->tx_complete_work);
1980 mutex_unlock(&sc->mutex); 2003 mutex_unlock(&sc->mutex);
1981} 2004}
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index c3681a1dc94..bd52ac11179 100644
--- 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 ath_softc *sc, struct ath_txq *txq,
329 int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0; 329 int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0;
330 bool rc_update = true; 330 bool rc_update = true;
331 struct ieee80211_tx_rate rates[4]; 331 struct ieee80211_tx_rate rates[4];
332 unsigned long flags;
332 333
333 skb = bf->bf_mpdu; 334 skb = bf->bf_mpdu;
334 hdr = (struct ieee80211_hdr *)skb->data; 335 hdr = (struct ieee80211_hdr *)skb->data;
@@ -344,12 +345,24 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq,
344 sta = ieee80211_find_sta_by_hw(hw, hdr->addr1); 345 sta = ieee80211_find_sta_by_hw(hw, hdr->addr1);
345 if (!sta) { 346 if (!sta) {
346 rcu_read_unlock(); 347 rcu_read_unlock();
348
349 spin_lock_irqsave(&sc->tx.txbuflock, flags);
350 list_splice_tail_init(bf_q, &sc->tx.txbuf);
351 spin_unlock_irqrestore(&sc->tx.txbuflock, flags);
347 return; 352 return;
348 } 353 }
349 354
350 an = (struct ath_node *)sta->drv_priv; 355 an = (struct ath_node *)sta->drv_priv;
351 tid = ATH_AN_2_TID(an, bf->bf_tidno); 356 tid = ATH_AN_2_TID(an, bf->bf_tidno);
352 357
358 /*
359 * The hardware occasionally sends a tx status for the wrong TID.
360 * In this case, the BA status cannot be considered valid and all
361 * subframes need to be retransmitted
362 */
363 if (bf->bf_tidno != ts->tid)
364 txok = false;
365
353 isaggr = bf_isaggr(bf); 366 isaggr = bf_isaggr(bf);
354 memset(ba, 0, WME_BA_BMP_SIZE >> 3); 367 memset(ba, 0, WME_BA_BMP_SIZE >> 3);
355 368
@@ -2430,37 +2443,37 @@ void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an)
2430 2443
2431void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an) 2444void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an)
2432{ 2445{
2433 int i; 2446 struct ath_atx_ac *ac;
2434 struct ath_atx_ac *ac, *ac_tmp; 2447 struct ath_atx_tid *tid;
2435 struct ath_atx_tid *tid, *tid_tmp;
2436 struct ath_txq *txq; 2448 struct ath_txq *txq;
2449 int i, tidno;
2437 2450
2438 for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { 2451 for (tidno = 0, tid = &an->tid[tidno];
2439 if (ATH_TXQ_SETUP(sc, i)) { 2452 tidno < WME_NUM_TID; tidno++, tid++) {
2440 txq = &sc->tx.txq[i]; 2453 i = tid->ac->qnum;
2441 2454
2442 spin_lock_bh(&txq->axq_lock); 2455 if (!ATH_TXQ_SETUP(sc, i))
2456 continue;
2443 2457
2444 list_for_each_entry_safe(ac, 2458 txq = &sc->tx.txq[i];
2445 ac_tmp, &txq->axq_acq, list) { 2459 ac = tid->ac;
2446 tid = list_first_entry(&ac->tid_q,
2447 struct ath_atx_tid, list);
2448 if (tid && tid->an != an)
2449 continue;
2450 list_del(&ac->list);
2451 ac->sched = false;
2452
2453 list_for_each_entry_safe(tid,
2454 tid_tmp, &ac->tid_q, list) {
2455 list_del(&tid->list);
2456 tid->sched = false;
2457 ath_tid_drain(sc, txq, tid);
2458 tid->state &= ~AGGR_ADDBA_COMPLETE;
2459 tid->state &= ~AGGR_CLEANUP;
2460 }
2461 }
2462 2460
2463 spin_unlock_bh(&txq->axq_lock); 2461 spin_lock_bh(&txq->axq_lock);
2462
2463 if (tid->sched) {
2464 list_del(&tid->list);
2465 tid->sched = false;
2464 } 2466 }
2467
2468 if (ac->sched) {
2469 list_del(&ac->list);
2470 tid->ac->sched = false;
2471 }
2472
2473 ath_tid_drain(sc, txq, tid);
2474 tid->state &= ~AGGR_ADDBA_COMPLETE;
2475 tid->state &= ~AGGR_CLEANUP;
2476
2477 spin_unlock_bh(&txq->axq_lock);
2465 } 2478 }
2466} 2479}
diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c
index eaee84b5588..25a2722c8a9 100644
--- a/drivers/net/wireless/hostap/hostap_main.c
+++ b/drivers/net/wireless/hostap/hostap_main.c
@@ -186,7 +186,7 @@ int prism2_wds_add(local_info_t *local, u8 *remote_addr,
186 return -ENOBUFS; 186 return -ENOBUFS;
187 187
188 /* verify that there is room for wds# postfix in the interface name */ 188 /* verify that there is room for wds# postfix in the interface name */
189 if (strlen(local->dev->name) > IFNAMSIZ - 5) { 189 if (strlen(local->dev->name) >= IFNAMSIZ - 5) {
190 printk(KERN_DEBUG "'%s' too long base device name\n", 190 printk(KERN_DEBUG "'%s' too long base device name\n",
191 local->dev->name); 191 local->dev->name);
192 return -EINVAL; 192 return -EINVAL;
diff --git a/drivers/net/wireless/iwlwifi/Kconfig b/drivers/net/wireless/iwlwifi/Kconfig
index 6491e27baac..a51e4da1bdf 100644
--- a/drivers/net/wireless/iwlwifi/Kconfig
+++ b/drivers/net/wireless/iwlwifi/Kconfig
@@ -87,10 +87,15 @@ config IWL4965
87 This option enables support for Intel Wireless WiFi Link 4965AGN 87 This option enables support for Intel Wireless WiFi Link 4965AGN
88 88
89config IWL5000 89config IWL5000
90 bool "Intel Wireless WiFi 5000AGN; Intel WiFi Link 1000, 6000, and 6050 Series" 90 bool "Intel Wireless-N/Advanced-N/Ultimate-N WiFi Link"
91 depends on IWLAGN 91 depends on IWLAGN
92 ---help--- 92 ---help---
93 This option enables support for Intel Wireless WiFi Link 5000AGN Family 93 This option enables support for use with the following hardware:
94 Intel Wireless WiFi Link 6250AGN Adapter
95 Intel 6000 Series Wi-Fi Adapters (6200AGN and 6300AGN)
96 Intel WiFi Link 1000BGN
97 Intel Wireless WiFi 5150AGN
98 Intel Wireless WiFi 5100AGN, 5300AGN, and 5350AGN
94 99
95config IWL3945 100config IWL3945
96 tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)" 101 tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)"
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index 1daf159914a..c281d07ec5e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -129,8 +129,8 @@ static int iwl1000_hw_set_hw_params(struct iwl_priv *priv)
129 priv->cfg->num_of_queues * 129 priv->cfg->num_of_queues *
130 sizeof(struct iwlagn_scd_bc_tbl); 130 sizeof(struct iwlagn_scd_bc_tbl);
131 priv->hw_params.tfd_size = sizeof(struct iwl_tfd); 131 priv->hw_params.tfd_size = sizeof(struct iwl_tfd);
132 priv->hw_params.max_stations = IWL5000_STATION_COUNT; 132 priv->hw_params.max_stations = IWLAGN_STATION_COUNT;
133 priv->hw_params.bcast_sta_id = IWL5000_BROADCAST_ID; 133 priv->hw_params.bcast_sta_id = IWLAGN_BROADCAST_ID;
134 134
135 priv->hw_params.max_data_size = IWLAGN_RTC_DATA_SIZE; 135 priv->hw_params.max_data_size = IWLAGN_RTC_DATA_SIZE;
136 priv->hw_params.max_inst_size = IWLAGN_RTC_INST_SIZE; 136 priv->hw_params.max_inst_size = IWLAGN_RTC_INST_SIZE;
@@ -226,6 +226,8 @@ static struct iwl_lib_ops iwl1000_lib = {
226 .recover_from_tx_stall = iwl_bg_monitor_recover, 226 .recover_from_tx_stall = iwl_bg_monitor_recover,
227 .check_plcp_health = iwl_good_plcp_health, 227 .check_plcp_health = iwl_good_plcp_health,
228 .check_ack_health = iwl_good_ack_health, 228 .check_ack_health = iwl_good_ack_health,
229 .txfifo_flush = iwlagn_txfifo_flush,
230 .dev_txfifo_flush = iwlagn_dev_txfifo_flush,
229}; 231};
230 232
231static const struct iwl_ops iwl1000_ops = { 233static const struct iwl_ops iwl1000_ops = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index b8f3e20f2c8..7d89d99ce19 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -179,8 +179,8 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
179 priv->cfg->num_of_queues * 179 priv->cfg->num_of_queues *
180 sizeof(struct iwlagn_scd_bc_tbl); 180 sizeof(struct iwlagn_scd_bc_tbl);
181 priv->hw_params.tfd_size = sizeof(struct iwl_tfd); 181 priv->hw_params.tfd_size = sizeof(struct iwl_tfd);
182 priv->hw_params.max_stations = IWL5000_STATION_COUNT; 182 priv->hw_params.max_stations = IWLAGN_STATION_COUNT;
183 priv->hw_params.bcast_sta_id = IWL5000_BROADCAST_ID; 183 priv->hw_params.bcast_sta_id = IWLAGN_BROADCAST_ID;
184 184
185 priv->hw_params.max_data_size = IWLAGN_RTC_DATA_SIZE; 185 priv->hw_params.max_data_size = IWLAGN_RTC_DATA_SIZE;
186 priv->hw_params.max_inst_size = IWLAGN_RTC_INST_SIZE; 186 priv->hw_params.max_inst_size = IWLAGN_RTC_INST_SIZE;
@@ -226,8 +226,8 @@ static int iwl5150_hw_set_hw_params(struct iwl_priv *priv)
226 priv->cfg->num_of_queues * 226 priv->cfg->num_of_queues *
227 sizeof(struct iwlagn_scd_bc_tbl); 227 sizeof(struct iwlagn_scd_bc_tbl);
228 priv->hw_params.tfd_size = sizeof(struct iwl_tfd); 228 priv->hw_params.tfd_size = sizeof(struct iwl_tfd);
229 priv->hw_params.max_stations = IWL5000_STATION_COUNT; 229 priv->hw_params.max_stations = IWLAGN_STATION_COUNT;
230 priv->hw_params.bcast_sta_id = IWL5000_BROADCAST_ID; 230 priv->hw_params.bcast_sta_id = IWLAGN_BROADCAST_ID;
231 231
232 priv->hw_params.max_data_size = IWLAGN_RTC_DATA_SIZE; 232 priv->hw_params.max_data_size = IWLAGN_RTC_DATA_SIZE;
233 priv->hw_params.max_inst_size = IWLAGN_RTC_INST_SIZE; 233 priv->hw_params.max_inst_size = IWLAGN_RTC_INST_SIZE;
@@ -402,6 +402,8 @@ static struct iwl_lib_ops iwl5000_lib = {
402 .recover_from_tx_stall = iwl_bg_monitor_recover, 402 .recover_from_tx_stall = iwl_bg_monitor_recover,
403 .check_plcp_health = iwl_good_plcp_health, 403 .check_plcp_health = iwl_good_plcp_health,
404 .check_ack_health = iwl_good_ack_health, 404 .check_ack_health = iwl_good_ack_health,
405 .txfifo_flush = iwlagn_txfifo_flush,
406 .dev_txfifo_flush = iwlagn_dev_txfifo_flush,
405}; 407};
406 408
407static struct iwl_lib_ops iwl5150_lib = { 409static struct iwl_lib_ops iwl5150_lib = {
@@ -465,6 +467,8 @@ static struct iwl_lib_ops iwl5150_lib = {
465 .recover_from_tx_stall = iwl_bg_monitor_recover, 467 .recover_from_tx_stall = iwl_bg_monitor_recover,
466 .check_plcp_health = iwl_good_plcp_health, 468 .check_plcp_health = iwl_good_plcp_health,
467 .check_ack_health = iwl_good_ack_health, 469 .check_ack_health = iwl_good_ack_health,
470 .txfifo_flush = iwlagn_txfifo_flush,
471 .dev_txfifo_flush = iwlagn_dev_txfifo_flush,
468}; 472};
469 473
470static const struct iwl_ops iwl5000_ops = { 474static const struct iwl_ops iwl5000_ops = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 8577664da77..095521952bb 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -160,8 +160,8 @@ static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
160 priv->cfg->num_of_queues * 160 priv->cfg->num_of_queues *
161 sizeof(struct iwlagn_scd_bc_tbl); 161 sizeof(struct iwlagn_scd_bc_tbl);
162 priv->hw_params.tfd_size = sizeof(struct iwl_tfd); 162 priv->hw_params.tfd_size = sizeof(struct iwl_tfd);
163 priv->hw_params.max_stations = IWL5000_STATION_COUNT; 163 priv->hw_params.max_stations = IWLAGN_STATION_COUNT;
164 priv->hw_params.bcast_sta_id = IWL5000_BROADCAST_ID; 164 priv->hw_params.bcast_sta_id = IWLAGN_BROADCAST_ID;
165 165
166 priv->hw_params.max_data_size = IWL60_RTC_DATA_SIZE; 166 priv->hw_params.max_data_size = IWL60_RTC_DATA_SIZE;
167 priv->hw_params.max_inst_size = IWL60_RTC_INST_SIZE; 167 priv->hw_params.max_inst_size = IWL60_RTC_INST_SIZE;
@@ -327,6 +327,8 @@ static struct iwl_lib_ops iwl6000_lib = {
327 .recover_from_tx_stall = iwl_bg_monitor_recover, 327 .recover_from_tx_stall = iwl_bg_monitor_recover,
328 .check_plcp_health = iwl_good_plcp_health, 328 .check_plcp_health = iwl_good_plcp_health,
329 .check_ack_health = iwl_good_ack_health, 329 .check_ack_health = iwl_good_ack_health,
330 .txfifo_flush = iwlagn_txfifo_flush,
331 .dev_txfifo_flush = iwlagn_dev_txfifo_flush,
330}; 332};
331 333
332static const struct iwl_ops iwl6000_ops = { 334static const struct iwl_ops iwl6000_ops = {
@@ -827,6 +829,44 @@ struct iwl_cfg iwl6050_2agn_cfg = {
827 .need_dc_calib = true, 829 .need_dc_calib = true,
828}; 830};
829 831
832struct iwl_cfg iwl6050g2_bgn_cfg = {
833 .name = "6050 Series 1x2 BGN Gen2",
834 .fw_name_pre = IWL6050_FW_PRE,
835 .ucode_api_max = IWL6050_UCODE_API_MAX,
836 .ucode_api_min = IWL6050_UCODE_API_MIN,
837 .sku = IWL_SKU_G|IWL_SKU_N,
838 .ops = &iwl6000_ops,
839 .eeprom_size = OTP_LOW_IMAGE_SIZE,
840 .eeprom_ver = EEPROM_6050G2_EEPROM_VERSION,
841 .eeprom_calib_ver = EEPROM_6050G2_TX_POWER_VERSION,
842 .num_of_queues = IWLAGN_NUM_QUEUES,
843 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
844 .mod_params = &iwlagn_mod_params,
845 .valid_tx_ant = ANT_A,
846 .valid_rx_ant = ANT_AB,
847 .pll_cfg_val = 0,
848 .set_l0s = true,
849 .use_bsm = false,
850 .pa_type = IWL_PA_SYSTEM,
851 .max_ll_items = OTP_MAX_LL_ITEMS_6x50,
852 .shadow_ram_support = true,
853 .ht_greenfield_support = true,
854 .led_compensation = 51,
855 .use_rts_for_ht = true, /* use rts/cts protection */
856 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
857 .supports_idle = true,
858 .adv_thermal_throttle = true,
859 .support_ct_kill_exit = true,
860 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
861 .chain_noise_scale = 1500,
862 .monitor_recover_period = IWL_MONITORING_PERIOD,
863 .max_event_log_size = 1024,
864 .ucode_tracing = true,
865 .sensitivity_calib_by_driver = true,
866 .chain_noise_calib_by_driver = true,
867 .need_dc_calib = true,
868};
869
830struct iwl_cfg iwl6050_2abg_cfg = { 870struct iwl_cfg iwl6050_2abg_cfg = {
831 .name = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 ABG", 871 .name = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 ABG",
832 .fw_name_pre = IWL6050_FW_PRE, 872 .fw_name_pre = IWL6050_FW_PRE,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
index eb052b05e79..90033e8752b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
@@ -409,46 +409,34 @@ static int iwl_sens_auto_corr_ofdm(struct iwl_priv *priv,
409 return 0; 409 return 0;
410} 410}
411 411
412/* Prepare a SENSITIVITY_CMD, send to uCode if values have changed */ 412static void iwl_prepare_legacy_sensitivity_tbl(struct iwl_priv *priv,
413static int iwl_sensitivity_write(struct iwl_priv *priv) 413 struct iwl_sensitivity_data *data,
414 __le16 *tbl)
414{ 415{
415 struct iwl_sensitivity_cmd cmd ; 416 tbl[HD_AUTO_CORR32_X4_TH_ADD_MIN_INDEX] =
416 struct iwl_sensitivity_data *data = NULL;
417 struct iwl_host_cmd cmd_out = {
418 .id = SENSITIVITY_CMD,
419 .len = sizeof(struct iwl_sensitivity_cmd),
420 .flags = CMD_ASYNC,
421 .data = &cmd,
422 };
423
424 data = &(priv->sensitivity_data);
425
426 memset(&cmd, 0, sizeof(cmd));
427
428 cmd.table[HD_AUTO_CORR32_X4_TH_ADD_MIN_INDEX] =
429 cpu_to_le16((u16)data->auto_corr_ofdm); 417 cpu_to_le16((u16)data->auto_corr_ofdm);
430 cmd.table[HD_AUTO_CORR32_X4_TH_ADD_MIN_MRC_INDEX] = 418 tbl[HD_AUTO_CORR32_X4_TH_ADD_MIN_MRC_INDEX] =
431 cpu_to_le16((u16)data->auto_corr_ofdm_mrc); 419 cpu_to_le16((u16)data->auto_corr_ofdm_mrc);
432 cmd.table[HD_AUTO_CORR32_X1_TH_ADD_MIN_INDEX] = 420 tbl[HD_AUTO_CORR32_X1_TH_ADD_MIN_INDEX] =
433 cpu_to_le16((u16)data->auto_corr_ofdm_x1); 421 cpu_to_le16((u16)data->auto_corr_ofdm_x1);
434 cmd.table[HD_AUTO_CORR32_X1_TH_ADD_MIN_MRC_INDEX] = 422 tbl[HD_AUTO_CORR32_X1_TH_ADD_MIN_MRC_INDEX] =
435 cpu_to_le16((u16)data->auto_corr_ofdm_mrc_x1); 423 cpu_to_le16((u16)data->auto_corr_ofdm_mrc_x1);
436 424
437 cmd.table[HD_AUTO_CORR40_X4_TH_ADD_MIN_INDEX] = 425 tbl[HD_AUTO_CORR40_X4_TH_ADD_MIN_INDEX] =
438 cpu_to_le16((u16)data->auto_corr_cck); 426 cpu_to_le16((u16)data->auto_corr_cck);
439 cmd.table[HD_AUTO_CORR40_X4_TH_ADD_MIN_MRC_INDEX] = 427 tbl[HD_AUTO_CORR40_X4_TH_ADD_MIN_MRC_INDEX] =
440 cpu_to_le16((u16)data->auto_corr_cck_mrc); 428 cpu_to_le16((u16)data->auto_corr_cck_mrc);
441 429
442 cmd.table[HD_MIN_ENERGY_CCK_DET_INDEX] = 430 tbl[HD_MIN_ENERGY_CCK_DET_INDEX] =
443 cpu_to_le16((u16)data->nrg_th_cck); 431 cpu_to_le16((u16)data->nrg_th_cck);
444 cmd.table[HD_MIN_ENERGY_OFDM_DET_INDEX] = 432 tbl[HD_MIN_ENERGY_OFDM_DET_INDEX] =
445 cpu_to_le16((u16)data->nrg_th_ofdm); 433 cpu_to_le16((u16)data->nrg_th_ofdm);
446 434
447 cmd.table[HD_BARKER_CORR_TH_ADD_MIN_INDEX] = 435 tbl[HD_BARKER_CORR_TH_ADD_MIN_INDEX] =
448 cpu_to_le16(data->barker_corr_th_min); 436 cpu_to_le16(data->barker_corr_th_min);
449 cmd.table[HD_BARKER_CORR_TH_ADD_MIN_MRC_INDEX] = 437 tbl[HD_BARKER_CORR_TH_ADD_MIN_MRC_INDEX] =
450 cpu_to_le16(data->barker_corr_th_min_mrc); 438 cpu_to_le16(data->barker_corr_th_min_mrc);
451 cmd.table[HD_OFDM_ENERGY_TH_IN_INDEX] = 439 tbl[HD_OFDM_ENERGY_TH_IN_INDEX] =
452 cpu_to_le16(data->nrg_th_cca); 440 cpu_to_le16(data->nrg_th_cca);
453 441
454 IWL_DEBUG_CALIB(priv, "ofdm: ac %u mrc %u x1 %u mrc_x1 %u thresh %u\n", 442 IWL_DEBUG_CALIB(priv, "ofdm: ac %u mrc %u x1 %u mrc_x1 %u thresh %u\n",
@@ -459,6 +447,25 @@ static int iwl_sensitivity_write(struct iwl_priv *priv)
459 IWL_DEBUG_CALIB(priv, "cck: ac %u mrc %u thresh %u\n", 447 IWL_DEBUG_CALIB(priv, "cck: ac %u mrc %u thresh %u\n",
460 data->auto_corr_cck, data->auto_corr_cck_mrc, 448 data->auto_corr_cck, data->auto_corr_cck_mrc,
461 data->nrg_th_cck); 449 data->nrg_th_cck);
450}
451
452/* Prepare a SENSITIVITY_CMD, send to uCode if values have changed */
453static int iwl_sensitivity_write(struct iwl_priv *priv)
454{
455 struct iwl_sensitivity_cmd cmd;
456 struct iwl_sensitivity_data *data = NULL;
457 struct iwl_host_cmd cmd_out = {
458 .id = SENSITIVITY_CMD,
459 .len = sizeof(struct iwl_sensitivity_cmd),
460 .flags = CMD_ASYNC,
461 .data = &cmd,
462 };
463
464 data = &(priv->sensitivity_data);
465
466 memset(&cmd, 0, sizeof(cmd));
467
468 iwl_prepare_legacy_sensitivity_tbl(priv, data, &cmd.table[0]);
462 469
463 /* Update uCode's "work" table, and copy it to DSP */ 470 /* Update uCode's "work" table, and copy it to DSP */
464 cmd.control = SENSITIVITY_CMD_CONTROL_WORK_TABLE; 471 cmd.control = SENSITIVITY_CMD_CONTROL_WORK_TABLE;
@@ -477,6 +484,70 @@ static int iwl_sensitivity_write(struct iwl_priv *priv)
477 return iwl_send_cmd(priv, &cmd_out); 484 return iwl_send_cmd(priv, &cmd_out);
478} 485}
479 486
487/* Prepare a SENSITIVITY_CMD, send to uCode if values have changed */
488static int iwl_enhance_sensitivity_write(struct iwl_priv *priv)
489{
490 struct iwl_enhance_sensitivity_cmd cmd;
491 struct iwl_sensitivity_data *data = NULL;
492 struct iwl_host_cmd cmd_out = {
493 .id = SENSITIVITY_CMD,
494 .len = sizeof(struct iwl_enhance_sensitivity_cmd),
495 .flags = CMD_ASYNC,
496 .data = &cmd,
497 };
498
499 data = &(priv->sensitivity_data);
500
501 memset(&cmd, 0, sizeof(cmd));
502
503 iwl_prepare_legacy_sensitivity_tbl(priv, data, &cmd.enhance_table[0]);
504
505 cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX] =
506 HD_INA_NON_SQUARE_DET_OFDM_DATA;
507 cmd.enhance_table[HD_INA_NON_SQUARE_DET_CCK_INDEX] =
508 HD_INA_NON_SQUARE_DET_CCK_DATA;
509 cmd.enhance_table[HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX] =
510 HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA;
511 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX] =
512 HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA;
513 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] =
514 HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA;
515 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX] =
516 HD_OFDM_NON_SQUARE_DET_SLOPE_DATA;
517 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX] =
518 HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA;
519 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX] =
520 HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA;
521 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] =
522 HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA;
523 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_INDEX] =
524 HD_CCK_NON_SQUARE_DET_SLOPE_DATA;
525 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX] =
526 HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA;
527
528 /* Update uCode's "work" table, and copy it to DSP */
529 cmd.control = SENSITIVITY_CMD_CONTROL_WORK_TABLE;
530
531 /* Don't send command to uCode if nothing has changed */
532 if (!memcmp(&cmd.enhance_table[0], &(priv->sensitivity_tbl[0]),
533 sizeof(u16)*HD_TABLE_SIZE) &&
534 !memcmp(&cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX],
535 &(priv->enhance_sensitivity_tbl[0]),
536 sizeof(u16)*ENHANCE_HD_TABLE_ENTRIES)) {
537 IWL_DEBUG_CALIB(priv, "No change in SENSITIVITY_CMD\n");
538 return 0;
539 }
540
541 /* Copy table for comparison next time */
542 memcpy(&(priv->sensitivity_tbl[0]), &(cmd.enhance_table[0]),
543 sizeof(u16)*HD_TABLE_SIZE);
544 memcpy(&(priv->enhance_sensitivity_tbl[0]),
545 &(cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX]),
546 sizeof(u16)*ENHANCE_HD_TABLE_ENTRIES);
547
548 return iwl_send_cmd(priv, &cmd_out);
549}
550
480void iwl_init_sensitivity(struct iwl_priv *priv) 551void iwl_init_sensitivity(struct iwl_priv *priv)
481{ 552{
482 int ret = 0; 553 int ret = 0;
@@ -527,7 +598,10 @@ void iwl_init_sensitivity(struct iwl_priv *priv)
527 data->last_bad_plcp_cnt_cck = 0; 598 data->last_bad_plcp_cnt_cck = 0;
528 data->last_fa_cnt_cck = 0; 599 data->last_fa_cnt_cck = 0;
529 600
530 ret |= iwl_sensitivity_write(priv); 601 if (priv->enhance_sensitivity_table)
602 ret |= iwl_enhance_sensitivity_write(priv);
603 else
604 ret |= iwl_sensitivity_write(priv);
531 IWL_DEBUG_CALIB(priv, "<<return 0x%X\n", ret); 605 IWL_DEBUG_CALIB(priv, "<<return 0x%X\n", ret);
532} 606}
533 607
@@ -633,7 +707,10 @@ void iwl_sensitivity_calibration(struct iwl_priv *priv,
633 707
634 iwl_sens_auto_corr_ofdm(priv, norm_fa_ofdm, rx_enable_time); 708 iwl_sens_auto_corr_ofdm(priv, norm_fa_ofdm, rx_enable_time);
635 iwl_sens_energy_cck(priv, norm_fa_cck, rx_enable_time, &statis); 709 iwl_sens_energy_cck(priv, norm_fa_cck, rx_enable_time, &statis);
636 iwl_sensitivity_write(priv); 710 if (priv->enhance_sensitivity_table)
711 iwl_enhance_sensitivity_write(priv);
712 else
713 iwl_sensitivity_write(priv);
637} 714}
638 715
639static inline u8 find_first_chain(u8 mask) 716static inline u8 find_first_chain(u8 mask)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 5f1e7d802cb..74623e0d535 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -205,7 +205,9 @@ void iwl_check_abort_status(struct iwl_priv *priv,
205 u8 frame_count, u32 status) 205 u8 frame_count, u32 status)
206{ 206{
207 if (frame_count == 1 && status == TX_STATUS_FAIL_RFKILL_FLUSH) { 207 if (frame_count == 1 && status == TX_STATUS_FAIL_RFKILL_FLUSH) {
208 IWL_ERR(priv, "TODO: Implement Tx flush command!!!\n"); 208 IWL_ERR(priv, "Tx flush command to flush out all frames\n");
209 if (!test_bit(STATUS_EXIT_PENDING, &priv->status))
210 queue_work(priv->workqueue, &priv->tx_flush);
209 } 211 }
210} 212}
211 213
@@ -1435,3 +1437,81 @@ void iwl_free_tfds_in_queue(struct iwl_priv *priv,
1435 priv->stations[sta_id].tid[tid].tfds_in_queue = 0; 1437 priv->stations[sta_id].tid[tid].tfds_in_queue = 0;
1436 } 1438 }
1437} 1439}
1440
1441#define IWL_FLUSH_WAIT_MS 2000
1442
1443int iwlagn_wait_tx_queue_empty(struct iwl_priv *priv)
1444{
1445 struct iwl_tx_queue *txq;
1446 struct iwl_queue *q;
1447 int cnt;
1448 unsigned long now = jiffies;
1449 int ret = 0;
1450
1451 /* waiting for all the tx frames complete might take a while */
1452 for (cnt = 0; cnt < priv->hw_params.max_txq_num; cnt++) {
1453 if (cnt == IWL_CMD_QUEUE_NUM)
1454 continue;
1455 txq = &priv->txq[cnt];
1456 q = &txq->q;
1457 while (q->read_ptr != q->write_ptr && !time_after(jiffies,
1458 now + msecs_to_jiffies(IWL_FLUSH_WAIT_MS)))
1459 msleep(1);
1460
1461 if (q->read_ptr != q->write_ptr) {
1462 IWL_ERR(priv, "fail to flush all tx fifo queues\n");
1463 ret = -ETIMEDOUT;
1464 break;
1465 }
1466 }
1467 return ret;
1468}
1469
1470#define IWL_TX_QUEUE_MSK 0xfffff
1471
1472/**
1473 * iwlagn_txfifo_flush: send REPLY_TXFIFO_FLUSH command to uCode
1474 *
1475 * pre-requirements:
1476 * 1. acquire mutex before calling
1477 * 2. make sure rf is on and not in exit state
1478 */
1479int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control)
1480{
1481 struct iwl_txfifo_flush_cmd flush_cmd;
1482 struct iwl_host_cmd cmd = {
1483 .id = REPLY_TXFIFO_FLUSH,
1484 .len = sizeof(struct iwl_txfifo_flush_cmd),
1485 .flags = CMD_SYNC,
1486 .data = &flush_cmd,
1487 };
1488
1489 might_sleep();
1490
1491 memset(&flush_cmd, 0, sizeof(flush_cmd));
1492 flush_cmd.fifo_control = IWL_TX_FIFO_VO_MSK | IWL_TX_FIFO_VI_MSK |
1493 IWL_TX_FIFO_BE_MSK | IWL_TX_FIFO_BK_MSK;
1494 if (priv->cfg->sku & IWL_SKU_N)
1495 flush_cmd.fifo_control |= IWL_AGG_TX_QUEUE_MSK;
1496
1497 IWL_DEBUG_INFO(priv, "fifo queue control: 0X%x\n",
1498 flush_cmd.fifo_control);
1499 flush_cmd.flush_control = cpu_to_le16(flush_control);
1500
1501 return iwl_send_cmd(priv, &cmd);
1502}
1503
1504void iwlagn_dev_txfifo_flush(struct iwl_priv *priv, u16 flush_control)
1505{
1506 mutex_lock(&priv->mutex);
1507 ieee80211_stop_queues(priv->hw);
1508 if (priv->cfg->ops->lib->txfifo_flush(priv, IWL_DROP_ALL)) {
1509 IWL_ERR(priv, "flush request fail\n");
1510 goto done;
1511 }
1512 IWL_DEBUG_INFO(priv, "wait transmit/flush all frames\n");
1513 iwlagn_wait_tx_queue_empty(priv);
1514done:
1515 ieee80211_wake_queues(priv->hw);
1516 mutex_unlock(&priv->mutex);
1517}
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
index 2573234e4db..55a1b31fd09 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
@@ -950,9 +950,12 @@ void iwlagn_txq_ctx_stop(struct iwl_priv *priv)
950 /* Stop each Tx DMA channel, and wait for it to be idle */ 950 /* Stop each Tx DMA channel, and wait for it to be idle */
951 for (ch = 0; ch < priv->hw_params.dma_chnl_num; ch++) { 951 for (ch = 0; ch < priv->hw_params.dma_chnl_num; ch++) {
952 iwl_write_direct32(priv, FH_TCSR_CHNL_TX_CONFIG_REG(ch), 0x0); 952 iwl_write_direct32(priv, FH_TCSR_CHNL_TX_CONFIG_REG(ch), 0x0);
953 iwl_poll_direct_bit(priv, FH_TSSR_TX_STATUS_REG, 953 if (iwl_poll_direct_bit(priv, FH_TSSR_TX_STATUS_REG,
954 FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch), 954 FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch),
955 1000); 955 1000))
956 IWL_ERR(priv, "Failing on timeout while stopping"
957 " DMA channel %d [0x%08x]", ch,
958 iwl_read_direct32(priv, FH_TSSR_TX_STATUS_REG));
956 } 959 }
957 spin_unlock_irqrestore(&priv->lock, flags); 960 spin_unlock_irqrestore(&priv->lock, flags);
958} 961}
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 3368cfd25a9..7391c63fb02 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -859,6 +859,24 @@ int iwl_set_pwr_src(struct iwl_priv *priv, enum iwl_pwr_src src)
859 return 0; 859 return 0;
860} 860}
861 861
862static void iwl_bg_tx_flush(struct work_struct *work)
863{
864 struct iwl_priv *priv =
865 container_of(work, struct iwl_priv, tx_flush);
866
867 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
868 return;
869
870 /* do nothing if rf-kill is on */
871 if (!iwl_is_ready_rf(priv))
872 return;
873
874 if (priv->cfg->ops->lib->txfifo_flush) {
875 IWL_DEBUG_INFO(priv, "device request: flush all tx frames\n");
876 iwlagn_dev_txfifo_flush(priv, IWL_DROP_ALL);
877 }
878}
879
862/** 880/**
863 * iwl_setup_rx_handlers - Initialize Rx handler callbacks 881 * iwl_setup_rx_handlers - Initialize Rx handler callbacks
864 * 882 *
@@ -1806,12 +1824,21 @@ static int iwlagn_load_firmware(struct iwl_priv *priv,
1806 const u8 *data; 1824 const u8 *data;
1807 int wanted_alternative = iwlagn_wanted_ucode_alternative, tmp; 1825 int wanted_alternative = iwlagn_wanted_ucode_alternative, tmp;
1808 u64 alternatives; 1826 u64 alternatives;
1827 u32 tlv_len;
1828 enum iwl_ucode_tlv_type tlv_type;
1829 const u8 *tlv_data;
1830 int ret = 0;
1809 1831
1810 if (len < sizeof(*ucode)) 1832 if (len < sizeof(*ucode)) {
1833 IWL_ERR(priv, "uCode has invalid length: %zd\n", len);
1811 return -EINVAL; 1834 return -EINVAL;
1835 }
1812 1836
1813 if (ucode->magic != cpu_to_le32(IWL_TLV_UCODE_MAGIC)) 1837 if (ucode->magic != cpu_to_le32(IWL_TLV_UCODE_MAGIC)) {
1838 IWL_ERR(priv, "invalid uCode magic: 0X%x\n",
1839 le32_to_cpu(ucode->magic));
1814 return -EINVAL; 1840 return -EINVAL;
1841 }
1815 1842
1816 /* 1843 /*
1817 * Check which alternatives are present, and "downgrade" 1844 * Check which alternatives are present, and "downgrade"
@@ -1836,11 +1863,9 @@ static int iwlagn_load_firmware(struct iwl_priv *priv,
1836 1863
1837 len -= sizeof(*ucode); 1864 len -= sizeof(*ucode);
1838 1865
1839 while (len >= sizeof(*tlv)) { 1866 while (len >= sizeof(*tlv) && !ret) {
1840 u32 tlv_len;
1841 enum iwl_ucode_tlv_type tlv_type;
1842 u16 tlv_alt; 1867 u16 tlv_alt;
1843 const u8 *tlv_data; 1868 u32 fixed_tlv_size = 4;
1844 1869
1845 len -= sizeof(*tlv); 1870 len -= sizeof(*tlv);
1846 tlv = (void *)data; 1871 tlv = (void *)data;
@@ -1850,8 +1875,11 @@ static int iwlagn_load_firmware(struct iwl_priv *priv,
1850 tlv_alt = le16_to_cpu(tlv->alternative); 1875 tlv_alt = le16_to_cpu(tlv->alternative);
1851 tlv_data = tlv->data; 1876 tlv_data = tlv->data;
1852 1877
1853 if (len < tlv_len) 1878 if (len < tlv_len) {
1879 IWL_ERR(priv, "invalid TLV len: %zd/%u\n",
1880 len, tlv_len);
1854 return -EINVAL; 1881 return -EINVAL;
1882 }
1855 len -= ALIGN(tlv_len, 4); 1883 len -= ALIGN(tlv_len, 4);
1856 data += sizeof(*tlv) + ALIGN(tlv_len, 4); 1884 data += sizeof(*tlv) + ALIGN(tlv_len, 4);
1857 1885
@@ -1885,56 +1913,77 @@ static int iwlagn_load_firmware(struct iwl_priv *priv,
1885 pieces->boot_size = tlv_len; 1913 pieces->boot_size = tlv_len;
1886 break; 1914 break;
1887 case IWL_UCODE_TLV_PROBE_MAX_LEN: 1915 case IWL_UCODE_TLV_PROBE_MAX_LEN:
1888 if (tlv_len != 4) 1916 if (tlv_len != fixed_tlv_size)
1889 return -EINVAL; 1917 ret = -EINVAL;
1890 capa->max_probe_length = 1918 else
1891 le32_to_cpup((__le32 *)tlv_data); 1919 capa->max_probe_length =
1920 le32_to_cpup((__le32 *)tlv_data);
1892 break; 1921 break;
1893 case IWL_UCODE_TLV_INIT_EVTLOG_PTR: 1922 case IWL_UCODE_TLV_INIT_EVTLOG_PTR:
1894 if (tlv_len != 4) 1923 if (tlv_len != fixed_tlv_size)
1895 return -EINVAL; 1924 ret = -EINVAL;
1896 pieces->init_evtlog_ptr = 1925 else
1897 le32_to_cpup((__le32 *)tlv_data); 1926 pieces->init_evtlog_ptr =
1927 le32_to_cpup((__le32 *)tlv_data);
1898 break; 1928 break;
1899 case IWL_UCODE_TLV_INIT_EVTLOG_SIZE: 1929 case IWL_UCODE_TLV_INIT_EVTLOG_SIZE:
1900 if (tlv_len != 4) 1930 if (tlv_len != fixed_tlv_size)
1901 return -EINVAL; 1931 ret = -EINVAL;
1902 pieces->init_evtlog_size = 1932 else
1903 le32_to_cpup((__le32 *)tlv_data); 1933 pieces->init_evtlog_size =
1934 le32_to_cpup((__le32 *)tlv_data);
1904 break; 1935 break;
1905 case IWL_UCODE_TLV_INIT_ERRLOG_PTR: 1936 case IWL_UCODE_TLV_INIT_ERRLOG_PTR:
1906 if (tlv_len != 4) 1937 if (tlv_len != fixed_tlv_size)
1907 return -EINVAL; 1938 ret = -EINVAL;
1908 pieces->init_errlog_ptr = 1939 else
1909 le32_to_cpup((__le32 *)tlv_data); 1940 pieces->init_errlog_ptr =
1941 le32_to_cpup((__le32 *)tlv_data);
1910 break; 1942 break;
1911 case IWL_UCODE_TLV_RUNT_EVTLOG_PTR: 1943 case IWL_UCODE_TLV_RUNT_EVTLOG_PTR:
1912 if (tlv_len != 4) 1944 if (tlv_len != fixed_tlv_size)
1913 return -EINVAL; 1945 ret = -EINVAL;
1914 pieces->inst_evtlog_ptr = 1946 else
1915 le32_to_cpup((__le32 *)tlv_data); 1947 pieces->inst_evtlog_ptr =
1948 le32_to_cpup((__le32 *)tlv_data);
1916 break; 1949 break;
1917 case IWL_UCODE_TLV_RUNT_EVTLOG_SIZE: 1950 case IWL_UCODE_TLV_RUNT_EVTLOG_SIZE:
1918 if (tlv_len != 4) 1951 if (tlv_len != fixed_tlv_size)
1919 return -EINVAL; 1952 ret = -EINVAL;
1920 pieces->inst_evtlog_size = 1953 else
1921 le32_to_cpup((__le32 *)tlv_data); 1954 pieces->inst_evtlog_size =
1955 le32_to_cpup((__le32 *)tlv_data);
1922 break; 1956 break;
1923 case IWL_UCODE_TLV_RUNT_ERRLOG_PTR: 1957 case IWL_UCODE_TLV_RUNT_ERRLOG_PTR:
1924 if (tlv_len != 4) 1958 if (tlv_len != fixed_tlv_size)
1925 return -EINVAL; 1959 ret = -EINVAL;
1926 pieces->inst_errlog_ptr = 1960 else
1927 le32_to_cpup((__le32 *)tlv_data); 1961 pieces->inst_errlog_ptr =
1962 le32_to_cpup((__le32 *)tlv_data);
1963 break;
1964 case IWL_UCODE_TLV_ENHANCE_SENS_TBL:
1965 if (tlv_len)
1966 ret = -EINVAL;
1967 else
1968 priv->enhance_sensitivity_table = true;
1928 break; 1969 break;
1929 default: 1970 default:
1971 IWL_WARN(priv, "unknown TLV: %d\n", tlv_type);
1930 break; 1972 break;
1931 } 1973 }
1932 } 1974 }
1933 1975
1934 if (len) 1976 if (len) {
1935 return -EINVAL; 1977 IWL_ERR(priv, "invalid TLV after parsing: %zd\n", len);
1978 iwl_print_hex_dump(priv, IWL_DL_FW, (u8 *)data, len);
1979 ret = -EINVAL;
1980 } else if (ret) {
1981 IWL_ERR(priv, "TLV %d has invalid size: %u\n",
1982 tlv_type, tlv_len);
1983 iwl_print_hex_dump(priv, IWL_DL_FW, (u8 *)tlv_data, tlv_len);
1984 }
1936 1985
1937 return 0; 1986 return ret;
1938} 1987}
1939 1988
1940/** 1989/**
@@ -2247,17 +2296,41 @@ static const char *desc_lookup_text[] = {
2247 "DEBUG_1", 2296 "DEBUG_1",
2248 "DEBUG_2", 2297 "DEBUG_2",
2249 "DEBUG_3", 2298 "DEBUG_3",
2250 "ADVANCED SYSASSERT"
2251}; 2299};
2252 2300
2253static const char *desc_lookup(int i) 2301static struct { char *name; u8 num; } advanced_lookup[] = {
2302 { "NMI_INTERRUPT_WDG", 0x34 },
2303 { "SYSASSERT", 0x35 },
2304 { "UCODE_VERSION_MISMATCH", 0x37 },
2305 { "BAD_COMMAND", 0x38 },
2306 { "NMI_INTERRUPT_DATA_ACTION_PT", 0x3C },
2307 { "FATAL_ERROR", 0x3D },
2308 { "NMI_TRM_HW_ERR", 0x46 },
2309 { "NMI_INTERRUPT_TRM", 0x4C },
2310 { "NMI_INTERRUPT_BREAK_POINT", 0x54 },
2311 { "NMI_INTERRUPT_WDG_RXF_FULL", 0x5C },
2312 { "NMI_INTERRUPT_WDG_NO_RBD_RXF_FULL", 0x64 },
2313 { "NMI_INTERRUPT_HOST", 0x66 },
2314 { "NMI_INTERRUPT_ACTION_PT", 0x7C },
2315 { "NMI_INTERRUPT_UNKNOWN", 0x84 },
2316 { "NMI_INTERRUPT_INST_ACTION_PT", 0x86 },
2317 { "ADVANCED_SYSASSERT", 0 },
2318};
2319
2320static const char *desc_lookup(u32 num)
2254{ 2321{
2255 int max = ARRAY_SIZE(desc_lookup_text) - 1; 2322 int i;
2323 int max = ARRAY_SIZE(desc_lookup_text);
2256 2324
2257 if (i < 0 || i > max) 2325 if (num < max)
2258 i = max; 2326 return desc_lookup_text[num];
2259 2327
2260 return desc_lookup_text[i]; 2328 max = ARRAY_SIZE(advanced_lookup) - 1;
2329 for (i = 0; i < max; i++) {
2330 if (advanced_lookup[i].num == num)
2331 break;;
2332 }
2333 return advanced_lookup[i].name;
2261} 2334}
2262 2335
2263#define ERROR_START_OFFSET (1 * sizeof(u32)) 2336#define ERROR_START_OFFSET (1 * sizeof(u32))
@@ -3614,6 +3687,44 @@ out_exit:
3614 IWL_DEBUG_MAC80211(priv, "leave\n"); 3687 IWL_DEBUG_MAC80211(priv, "leave\n");
3615} 3688}
3616 3689
3690static void iwl_mac_flush(struct ieee80211_hw *hw, bool drop)
3691{
3692 struct iwl_priv *priv = hw->priv;
3693
3694 mutex_lock(&priv->mutex);
3695 IWL_DEBUG_MAC80211(priv, "enter\n");
3696
3697 /* do not support "flush" */
3698 if (!priv->cfg->ops->lib->txfifo_flush)
3699 goto done;
3700
3701 if (test_bit(STATUS_EXIT_PENDING, &priv->status)) {
3702 IWL_DEBUG_TX(priv, "Aborting flush due to device shutdown\n");
3703 goto done;
3704 }
3705 if (iwl_is_rfkill(priv)) {
3706 IWL_DEBUG_TX(priv, "Aborting flush due to RF Kill\n");
3707 goto done;
3708 }
3709
3710 /*
3711 * mac80211 will not push any more frames for transmit
3712 * until the flush is completed
3713 */
3714 if (drop) {
3715 IWL_DEBUG_MAC80211(priv, "send flush command\n");
3716 if (priv->cfg->ops->lib->txfifo_flush(priv, IWL_DROP_ALL)) {
3717 IWL_ERR(priv, "flush request fail\n");
3718 goto done;
3719 }
3720 }
3721 IWL_DEBUG_MAC80211(priv, "wait transmit/flush all frames\n");
3722 iwlagn_wait_tx_queue_empty(priv);
3723done:
3724 mutex_unlock(&priv->mutex);
3725 IWL_DEBUG_MAC80211(priv, "leave\n");
3726}
3727
3617/***************************************************************************** 3728/*****************************************************************************
3618 * 3729 *
3619 * driver setup and teardown 3730 * driver setup and teardown
@@ -3630,6 +3741,7 @@ static void iwl_setup_deferred_work(struct iwl_priv *priv)
3630 INIT_WORK(&priv->rx_replenish, iwl_bg_rx_replenish); 3741 INIT_WORK(&priv->rx_replenish, iwl_bg_rx_replenish);
3631 INIT_WORK(&priv->beacon_update, iwl_bg_beacon_update); 3742 INIT_WORK(&priv->beacon_update, iwl_bg_beacon_update);
3632 INIT_WORK(&priv->run_time_calib_work, iwl_bg_run_time_calib_work); 3743 INIT_WORK(&priv->run_time_calib_work, iwl_bg_run_time_calib_work);
3744 INIT_WORK(&priv->tx_flush, iwl_bg_tx_flush);
3633 INIT_DELAYED_WORK(&priv->init_alive_start, iwl_bg_init_alive_start); 3745 INIT_DELAYED_WORK(&priv->init_alive_start, iwl_bg_init_alive_start);
3634 INIT_DELAYED_WORK(&priv->alive_start, iwl_bg_alive_start); 3746 INIT_DELAYED_WORK(&priv->alive_start, iwl_bg_alive_start);
3635 3747
@@ -3787,6 +3899,7 @@ static struct ieee80211_ops iwl_hw_ops = {
3787 .sta_add = iwlagn_mac_sta_add, 3899 .sta_add = iwlagn_mac_sta_add,
3788 .sta_remove = iwl_mac_sta_remove, 3900 .sta_remove = iwl_mac_sta_remove,
3789 .channel_switch = iwl_mac_channel_switch, 3901 .channel_switch = iwl_mac_channel_switch,
3902 .flush = iwl_mac_flush,
3790}; 3903};
3791 3904
3792static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 3905static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
@@ -4234,6 +4347,14 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
4234 {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)}, 4347 {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)},
4235 {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)}, 4348 {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)},
4236 4349
4350/* 6x50 WiFi/WiMax Series Gen2 */
4351 {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6050g2_bgn_cfg)},
4352 {IWL_PCI_DEVICE(0x0885, 0x1306, iwl6050g2_bgn_cfg)},
4353 {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6050g2_bgn_cfg)},
4354 {IWL_PCI_DEVICE(0x0885, 0x1326, iwl6050g2_bgn_cfg)},
4355 {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6050g2_bgn_cfg)},
4356 {IWL_PCI_DEVICE(0x0886, 0x1316, iwl6050g2_bgn_cfg)},
4357
4237/* 1000 Series WiFi */ 4358/* 1000 Series WiFi */
4238 {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)}, 4359 {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)},
4239 {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)}, 4360 {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)},
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index be9d298cae2..cc6464dc72e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -89,6 +89,7 @@ extern struct iwl_cfg iwl6000i_2bg_cfg;
89extern struct iwl_cfg iwl6000_3agn_cfg; 89extern struct iwl_cfg iwl6000_3agn_cfg;
90extern struct iwl_cfg iwl6050_2agn_cfg; 90extern struct iwl_cfg iwl6050_2agn_cfg;
91extern struct iwl_cfg iwl6050_2abg_cfg; 91extern struct iwl_cfg iwl6050_2abg_cfg;
92extern struct iwl_cfg iwl6050g2_bgn_cfg;
92extern struct iwl_cfg iwl1000_bgn_cfg; 93extern struct iwl_cfg iwl1000_bgn_cfg;
93extern struct iwl_cfg iwl1000_bg_cfg; 94extern struct iwl_cfg iwl1000_bg_cfg;
94 95
@@ -147,6 +148,9 @@ const u8 *iwlagn_eeprom_query_addr(const struct iwl_priv *priv,
147void iwlagn_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq); 148void iwlagn_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq);
148int iwlagn_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq); 149int iwlagn_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq);
149int iwlagn_hw_nic_init(struct iwl_priv *priv); 150int iwlagn_hw_nic_init(struct iwl_priv *priv);
151int iwlagn_wait_tx_queue_empty(struct iwl_priv *priv);
152int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control);
153void iwlagn_dev_txfifo_flush(struct iwl_priv *priv, u16 flush_control);
150 154
151/* rx */ 155/* rx */
152void iwlagn_rx_queue_restock(struct iwl_priv *priv); 156void iwlagn_rx_queue_restock(struct iwl_priv *priv);
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index acf8e980b1f..8d2db9d2204 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -97,6 +97,7 @@ enum {
97 REPLY_ADD_STA = 0x18, 97 REPLY_ADD_STA = 0x18,
98 REPLY_REMOVE_STA = 0x19, 98 REPLY_REMOVE_STA = 0x19,
99 REPLY_REMOVE_ALL_STA = 0x1a, /* not used */ 99 REPLY_REMOVE_ALL_STA = 0x1a, /* not used */
100 REPLY_TXFIFO_FLUSH = 0x1e,
100 101
101 /* Security */ 102 /* Security */
102 REPLY_WEPKEY = 0x20, 103 REPLY_WEPKEY = 0x20,
@@ -957,8 +958,8 @@ struct iwl_qosparam_cmd {
957#define IWL3945_STATION_COUNT 25 958#define IWL3945_STATION_COUNT 25
958#define IWL4965_BROADCAST_ID 31 959#define IWL4965_BROADCAST_ID 31
959#define IWL4965_STATION_COUNT 32 960#define IWL4965_STATION_COUNT 32
960#define IWL5000_BROADCAST_ID 15 961#define IWLAGN_BROADCAST_ID 15
961#define IWL5000_STATION_COUNT 16 962#define IWLAGN_STATION_COUNT 16
962 963
963#define IWL_STATION_COUNT 32 /* MAX(3945,4965)*/ 964#define IWL_STATION_COUNT 32 /* MAX(3945,4965)*/
964#define IWL_INVALID_STATION 255 965#define IWL_INVALID_STATION 255
@@ -1209,6 +1210,43 @@ struct iwl_rem_sta_cmd {
1209 u8 reserved2[2]; 1210 u8 reserved2[2];
1210} __packed; 1211} __packed;
1211 1212
1213#define IWL_TX_FIFO_BK_MSK cpu_to_le32(BIT(0))
1214#define IWL_TX_FIFO_BE_MSK cpu_to_le32(BIT(1))
1215#define IWL_TX_FIFO_VI_MSK cpu_to_le32(BIT(2))
1216#define IWL_TX_FIFO_VO_MSK cpu_to_le32(BIT(3))
1217#define IWL_AGG_TX_QUEUE_MSK cpu_to_le32(0xffc00)
1218
1219#define IWL_DROP_SINGLE 0
1220#define IWL_DROP_SELECTED 1
1221#define IWL_DROP_ALL 2
1222
1223/*
1224 * REPLY_TXFIFO_FLUSH = 0x1e(command and response)
1225 *
1226 * When using full FIFO flush this command checks the scheduler HW block WR/RD
1227 * pointers to check if all the frames were transferred by DMA into the
1228 * relevant TX FIFO queue. Only when the DMA is finished and the queue is
1229 * empty the command can finish.
1230 * This command is used to flush the TXFIFO from transmit commands, it may
1231 * operate on single or multiple queues, the command queue can't be flushed by
1232 * this command. The command response is returned when all the queue flush
1233 * operations are done. Each TX command flushed return response with the FLUSH
1234 * status set in the TX response status. When FIFO flush operation is used,
1235 * the flush operation ends when both the scheduler DMA done and TXFIFO empty
1236 * are set.
1237 *
1238 * @fifo_control: bit mask for which queues to flush
1239 * @flush_control: flush controls
1240 * 0: Dump single MSDU
1241 * 1: Dump multiple MSDU according to PS, INVALID STA, TTL, TID disable.
1242 * 2: Dump all FIFO
1243 */
1244struct iwl_txfifo_flush_cmd {
1245 __le32 fifo_control;
1246 __le16 flush_control;
1247 __le16 reserved;
1248} __attribute__ ((packed));
1249
1212/* 1250/*
1213 * REPLY_WEP_KEY = 0x20 1251 * REPLY_WEP_KEY = 0x20
1214 */ 1252 */
@@ -3452,6 +3490,41 @@ struct iwl_missed_beacon_notif {
3452#define HD_AUTO_CORR40_X4_TH_ADD_MIN_INDEX (9) 3490#define HD_AUTO_CORR40_X4_TH_ADD_MIN_INDEX (9)
3453#define HD_OFDM_ENERGY_TH_IN_INDEX (10) 3491#define HD_OFDM_ENERGY_TH_IN_INDEX (10)
3454 3492
3493/*
3494 * Additional table entries in enhance SENSITIVITY_CMD
3495 */
3496#define HD_INA_NON_SQUARE_DET_OFDM_INDEX (11)
3497#define HD_INA_NON_SQUARE_DET_CCK_INDEX (12)
3498#define HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX (13)
3499#define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX (14)
3500#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX (15)
3501#define HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX (16)
3502#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX (17)
3503#define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX (18)
3504#define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX (19)
3505#define HD_CCK_NON_SQUARE_DET_SLOPE_INDEX (20)
3506#define HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX (21)
3507#define HD_RESERVED (22)
3508
3509/* number of entries for enhanced tbl */
3510#define ENHANCE_HD_TABLE_SIZE (23)
3511
3512/* number of additional entries for enhanced tbl */
3513#define ENHANCE_HD_TABLE_ENTRIES (ENHANCE_HD_TABLE_SIZE - HD_TABLE_SIZE)
3514
3515#define HD_INA_NON_SQUARE_DET_OFDM_DATA cpu_to_le16(0)
3516#define HD_INA_NON_SQUARE_DET_CCK_DATA cpu_to_le16(0)
3517#define HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA cpu_to_le16(0)
3518#define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA cpu_to_le16(668)
3519#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA cpu_to_le16(4)
3520#define HD_OFDM_NON_SQUARE_DET_SLOPE_DATA cpu_to_le16(486)
3521#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA cpu_to_le16(37)
3522#define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA cpu_to_le16(853)
3523#define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA cpu_to_le16(4)
3524#define HD_CCK_NON_SQUARE_DET_SLOPE_DATA cpu_to_le16(476)
3525#define HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA cpu_to_le16(99)
3526
3527
3455/* Control field in struct iwl_sensitivity_cmd */ 3528/* Control field in struct iwl_sensitivity_cmd */
3456#define SENSITIVITY_CMD_CONTROL_DEFAULT_TABLE cpu_to_le16(0) 3529#define SENSITIVITY_CMD_CONTROL_DEFAULT_TABLE cpu_to_le16(0)
3457#define SENSITIVITY_CMD_CONTROL_WORK_TABLE cpu_to_le16(1) 3530#define SENSITIVITY_CMD_CONTROL_WORK_TABLE cpu_to_le16(1)
@@ -3468,6 +3541,14 @@ struct iwl_sensitivity_cmd {
3468 __le16 table[HD_TABLE_SIZE]; /* use HD_* as index */ 3541 __le16 table[HD_TABLE_SIZE]; /* use HD_* as index */
3469} __packed; 3542} __packed;
3470 3543
3544/*
3545 *
3546 */
3547struct iwl_enhance_sensitivity_cmd {
3548 __le16 control; /* always use "1" */
3549 __le16 enhance_table[ENHANCE_HD_TABLE_SIZE]; /* use HD_* as index */
3550} __attribute__ ((packed));
3551
3471 3552
3472/** 3553/**
3473 * REPLY_PHY_CALIBRATION_CMD = 0xb0 (command, has simple generic response) 3554 * REPLY_PHY_CALIBRATION_CMD = 0xb0 (command, has simple generic response)
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index a56fb466d0b..f73eb08a949 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -2627,7 +2627,7 @@ static void iwl_force_rf_reset(struct iwl_priv *priv)
2627} 2627}
2628 2628
2629 2629
2630int iwl_force_reset(struct iwl_priv *priv, int mode) 2630int iwl_force_reset(struct iwl_priv *priv, int mode, bool external)
2631{ 2631{
2632 struct iwl_force_reset *force_reset; 2632 struct iwl_force_reset *force_reset;
2633 2633
@@ -2640,12 +2640,14 @@ int iwl_force_reset(struct iwl_priv *priv, int mode)
2640 } 2640 }
2641 force_reset = &priv->force_reset[mode]; 2641 force_reset = &priv->force_reset[mode];
2642 force_reset->reset_request_count++; 2642 force_reset->reset_request_count++;
2643 if (force_reset->last_force_reset_jiffies && 2643 if (!external) {
2644 time_after(force_reset->last_force_reset_jiffies + 2644 if (force_reset->last_force_reset_jiffies &&
2645 force_reset->reset_duration, jiffies)) { 2645 time_after(force_reset->last_force_reset_jiffies +
2646 IWL_DEBUG_INFO(priv, "force reset rejected\n"); 2646 force_reset->reset_duration, jiffies)) {
2647 force_reset->reset_reject_count++; 2647 IWL_DEBUG_INFO(priv, "force reset rejected\n");
2648 return -EAGAIN; 2648 force_reset->reset_reject_count++;
2649 return -EAGAIN;
2650 }
2649 } 2651 }
2650 force_reset->reset_success_count++; 2652 force_reset->reset_success_count++;
2651 force_reset->last_force_reset_jiffies = jiffies; 2653 force_reset->last_force_reset_jiffies = jiffies;
@@ -2655,6 +2657,19 @@ int iwl_force_reset(struct iwl_priv *priv, int mode)
2655 iwl_force_rf_reset(priv); 2657 iwl_force_rf_reset(priv);
2656 break; 2658 break;
2657 case IWL_FW_RESET: 2659 case IWL_FW_RESET:
2660 /*
2661 * if the request is from external(ex: debugfs),
2662 * then always perform the request in regardless the module
2663 * parameter setting
2664 * if the request is from internal (uCode error or driver
2665 * detect failure), then fw_restart module parameter
2666 * need to be check before performing firmware reload
2667 */
2668 if (!external && !priv->cfg->mod_params->restart_fw) {
2669 IWL_DEBUG_INFO(priv, "Cancel firmware reload based on "
2670 "module parameter setting\n");
2671 break;
2672 }
2658 IWL_ERR(priv, "On demand firmware reload\n"); 2673 IWL_ERR(priv, "On demand firmware reload\n");
2659 /* Set the FW error flag -- cleared on iwl_down */ 2674 /* Set the FW error flag -- cleared on iwl_down */
2660 set_bit(STATUS_FW_ERROR, &priv->status); 2675 set_bit(STATUS_FW_ERROR, &priv->status);
@@ -2713,7 +2728,7 @@ static int iwl_check_stuck_queue(struct iwl_priv *priv, int cnt)
2713 "queue %d stuck %d time. Fw reload.\n", 2728 "queue %d stuck %d time. Fw reload.\n",
2714 q->id, q->repeat_same_read_ptr); 2729 q->id, q->repeat_same_read_ptr);
2715 q->repeat_same_read_ptr = 0; 2730 q->repeat_same_read_ptr = 0;
2716 iwl_force_reset(priv, IWL_FW_RESET); 2731 iwl_force_reset(priv, IWL_FW_RESET, false);
2717 } else { 2732 } else {
2718 q->repeat_same_read_ptr++; 2733 q->repeat_same_read_ptr++;
2719 IWL_DEBUG_RADIO(priv, 2734 IWL_DEBUG_RADIO(priv,
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 15930e06402..fcbba3d604d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -205,6 +205,9 @@ struct iwl_lib_ops {
205 /* check for ack health */ 205 /* check for ack health */
206 bool (*check_ack_health)(struct iwl_priv *priv, 206 bool (*check_ack_health)(struct iwl_priv *priv,
207 struct iwl_rx_packet *pkt); 207 struct iwl_rx_packet *pkt);
208 int (*txfifo_flush)(struct iwl_priv *priv, u16 flush_control);
209 void (*dev_txfifo_flush)(struct iwl_priv *priv, u16 flush_control);
210
208 struct iwl_debugfs_ops debugfs_ops; 211 struct iwl_debugfs_ops debugfs_ops;
209}; 212};
210 213
@@ -525,7 +528,7 @@ int iwl_mac_hw_scan(struct ieee80211_hw *hw,
525 struct cfg80211_scan_request *req); 528 struct cfg80211_scan_request *req);
526void iwl_bg_start_internal_scan(struct work_struct *work); 529void iwl_bg_start_internal_scan(struct work_struct *work);
527void iwl_internal_short_hw_scan(struct iwl_priv *priv); 530void iwl_internal_short_hw_scan(struct iwl_priv *priv);
528int iwl_force_reset(struct iwl_priv *priv, int mode); 531int iwl_force_reset(struct iwl_priv *priv, int mode, bool external);
529u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame, 532u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
530 const u8 *ta, const u8 *ie, int ie_len, int left); 533 const u8 *ta, const u8 *ie, int ie_len, int left);
531void iwl_setup_rx_scan_handlers(struct iwl_priv *priv); 534void iwl_setup_rx_scan_handlers(struct iwl_priv *priv);
diff --git a/drivers/net/wireless/iwlwifi/iwl-csr.h b/drivers/net/wireless/iwlwifi/iwl-csr.h
index 254c35ae8b3..ecf98e7ac4e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-csr.h
+++ b/drivers/net/wireless/iwlwifi/iwl-csr.h
@@ -298,6 +298,7 @@
298#define CSR_HW_REV_TYPE_1000 (0x0000060) 298#define CSR_HW_REV_TYPE_1000 (0x0000060)
299#define CSR_HW_REV_TYPE_6x00 (0x0000070) 299#define CSR_HW_REV_TYPE_6x00 (0x0000070)
300#define CSR_HW_REV_TYPE_6x50 (0x0000080) 300#define CSR_HW_REV_TYPE_6x50 (0x0000080)
301#define CSR_HW_REV_TYPE_6x50g2 (0x0000084)
301#define CSR_HW_REV_TYPE_6x00g2 (0x00000B0) 302#define CSR_HW_REV_TYPE_6x00g2 (0x00000B0)
302#define CSR_HW_REV_TYPE_NONE (0x00000F0) 303#define CSR_HW_REV_TYPE_NONE (0x00000F0)
303 304
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
index 7d9ffc1575d..088a2c13f59 100644
--- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
@@ -1487,7 +1487,7 @@ static ssize_t iwl_dbgfs_force_reset_write(struct file *file,
1487 switch (reset) { 1487 switch (reset) {
1488 case IWL_RF_RESET: 1488 case IWL_RF_RESET:
1489 case IWL_FW_RESET: 1489 case IWL_FW_RESET:
1490 ret = iwl_force_reset(priv, reset); 1490 ret = iwl_force_reset(priv, reset, true);
1491 break; 1491 break;
1492 default: 1492 default:
1493 return -EINVAL; 1493 return -EINVAL;
@@ -1495,6 +1495,30 @@ static ssize_t iwl_dbgfs_force_reset_write(struct file *file,
1495 return ret ? ret : count; 1495 return ret ? ret : count;
1496} 1496}
1497 1497
1498static ssize_t iwl_dbgfs_txfifo_flush_write(struct file *file,
1499 const char __user *user_buf,
1500 size_t count, loff_t *ppos) {
1501
1502 struct iwl_priv *priv = file->private_data;
1503 char buf[8];
1504 int buf_size;
1505 int flush;
1506
1507 memset(buf, 0, sizeof(buf));
1508 buf_size = min(count, sizeof(buf) - 1);
1509 if (copy_from_user(buf, user_buf, buf_size))
1510 return -EFAULT;
1511 if (sscanf(buf, "%d", &flush) != 1)
1512 return -EINVAL;
1513
1514 if (iwl_is_rfkill(priv))
1515 return -EFAULT;
1516
1517 priv->cfg->ops->lib->dev_txfifo_flush(priv, IWL_DROP_ALL);
1518
1519 return count;
1520}
1521
1498DEBUGFS_READ_FILE_OPS(rx_statistics); 1522DEBUGFS_READ_FILE_OPS(rx_statistics);
1499DEBUGFS_READ_FILE_OPS(tx_statistics); 1523DEBUGFS_READ_FILE_OPS(tx_statistics);
1500DEBUGFS_READ_WRITE_FILE_OPS(traffic_log); 1524DEBUGFS_READ_WRITE_FILE_OPS(traffic_log);
@@ -1516,6 +1540,7 @@ DEBUGFS_READ_WRITE_FILE_OPS(plcp_delta);
1516DEBUGFS_READ_WRITE_FILE_OPS(force_reset); 1540DEBUGFS_READ_WRITE_FILE_OPS(force_reset);
1517DEBUGFS_READ_FILE_OPS(rxon_flags); 1541DEBUGFS_READ_FILE_OPS(rxon_flags);
1518DEBUGFS_READ_FILE_OPS(rxon_filter_flags); 1542DEBUGFS_READ_FILE_OPS(rxon_filter_flags);
1543DEBUGFS_WRITE_FILE_OPS(txfifo_flush);
1519 1544
1520/* 1545/*
1521 * Create the debugfs files and directories 1546 * Create the debugfs files and directories
@@ -1574,6 +1599,8 @@ int iwl_dbgfs_register(struct iwl_priv *priv, const char *name)
1574 DEBUGFS_ADD_FILE(ucode_rx_stats, dir_debug, S_IRUSR); 1599 DEBUGFS_ADD_FILE(ucode_rx_stats, dir_debug, S_IRUSR);
1575 DEBUGFS_ADD_FILE(ucode_tx_stats, dir_debug, S_IRUSR); 1600 DEBUGFS_ADD_FILE(ucode_tx_stats, dir_debug, S_IRUSR);
1576 DEBUGFS_ADD_FILE(ucode_general_stats, dir_debug, S_IRUSR); 1601 DEBUGFS_ADD_FILE(ucode_general_stats, dir_debug, S_IRUSR);
1602 if (priv->cfg->ops->lib->dev_txfifo_flush)
1603 DEBUGFS_ADD_FILE(txfifo_flush, dir_debug, S_IWUSR);
1577 1604
1578 if (priv->cfg->sensitivity_calib_by_driver) 1605 if (priv->cfg->sensitivity_calib_by_driver)
1579 DEBUGFS_ADD_FILE(sensitivity, dir_debug, S_IRUSR); 1606 DEBUGFS_ADD_FILE(sensitivity, dir_debug, S_IRUSR);
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 728752aa1bb..c4dba62b74a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -570,6 +570,7 @@ enum iwl_ucode_tlv_type {
570 IWL_UCODE_TLV_INIT_EVTLOG_PTR = 11, 570 IWL_UCODE_TLV_INIT_EVTLOG_PTR = 11,
571 IWL_UCODE_TLV_INIT_EVTLOG_SIZE = 12, 571 IWL_UCODE_TLV_INIT_EVTLOG_SIZE = 12,
572 IWL_UCODE_TLV_INIT_ERRLOG_PTR = 13, 572 IWL_UCODE_TLV_INIT_ERRLOG_PTR = 13,
573 IWL_UCODE_TLV_ENHANCE_SENS_TBL = 14,
573}; 574};
574 575
575struct iwl_ucode_tlv { 576struct iwl_ucode_tlv {
@@ -1193,7 +1194,9 @@ struct iwl_priv {
1193 u8 start_calib; 1194 u8 start_calib;
1194 struct iwl_sensitivity_data sensitivity_data; 1195 struct iwl_sensitivity_data sensitivity_data;
1195 struct iwl_chain_noise_data chain_noise_data; 1196 struct iwl_chain_noise_data chain_noise_data;
1197 bool enhance_sensitivity_table;
1196 __le16 sensitivity_tbl[HD_TABLE_SIZE]; 1198 __le16 sensitivity_tbl[HD_TABLE_SIZE];
1199 __le16 enhance_sensitivity_tbl[ENHANCE_HD_TABLE_ENTRIES];
1197 1200
1198 struct iwl_ht_config current_ht_config; 1201 struct iwl_ht_config current_ht_config;
1199 1202
@@ -1345,6 +1348,7 @@ struct iwl_priv {
1345 struct work_struct ct_enter; 1348 struct work_struct ct_enter;
1346 struct work_struct ct_exit; 1349 struct work_struct ct_exit;
1347 struct work_struct start_internal_scan; 1350 struct work_struct start_internal_scan;
1351 struct work_struct tx_flush;
1348 1352
1349 struct tasklet_struct irq_tasklet; 1353 struct tasklet_struct irq_tasklet;
1350 1354
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
index 5488006491a..3452dfa7b57 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
@@ -276,6 +276,10 @@ struct iwl_eeprom_enhanced_txpwr {
276#define EEPROM_6050_TX_POWER_VERSION (4) 276#define EEPROM_6050_TX_POWER_VERSION (4)
277#define EEPROM_6050_EEPROM_VERSION (0x532) 277#define EEPROM_6050_EEPROM_VERSION (0x532)
278 278
279/* 6x50g2 Specific */
280#define EEPROM_6050G2_TX_POWER_VERSION (6)
281#define EEPROM_6050G2_EEPROM_VERSION (0x553)
282
279/* 6x00g2 Specific */ 283/* 6x00g2 Specific */
280#define EEPROM_6000G2_TX_POWER_VERSION (6) 284#define EEPROM_6000G2_TX_POWER_VERSION (6)
281#define EEPROM_6000G2_EEPROM_VERSION (0x709) 285#define EEPROM_6000G2_EEPROM_VERSION (0x709)
diff --git a/drivers/net/wireless/iwlwifi/iwl-fh.h b/drivers/net/wireless/iwlwifi/iwl-fh.h
index a3fcbb5f2c7..55b8370bc6d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-fh.h
+++ b/drivers/net/wireless/iwlwifi/iwl-fh.h
@@ -398,12 +398,7 @@
398 */ 398 */
399#define FH_TSSR_TX_ERROR_REG (FH_TSSR_LOWER_BOUND + 0x018) 399#define FH_TSSR_TX_ERROR_REG (FH_TSSR_LOWER_BOUND + 0x018)
400 400
401#define FH_TSSR_TX_STATUS_REG_BIT_BUFS_EMPTY(_chnl) ((1 << (_chnl)) << 24) 401#define FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(_chnl) ((1 << (_chnl)) << 16)
402#define FH_TSSR_TX_STATUS_REG_BIT_NO_PEND_REQ(_chnl) ((1 << (_chnl)) << 16)
403
404#define FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(_chnl) \
405 (FH_TSSR_TX_STATUS_REG_BIT_BUFS_EMPTY(_chnl) | \
406 FH_TSSR_TX_STATUS_REG_BIT_NO_PEND_REQ(_chnl))
407 402
408/* Tx service channels */ 403/* Tx service channels */
409#define FH_SRVC_CHNL (9) 404#define FH_SRVC_CHNL (9)
diff --git a/drivers/net/wireless/iwlwifi/iwl-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
index 51f89e7ba68..258d059ef41 100644
--- a/drivers/net/wireless/iwlwifi/iwl-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
@@ -49,6 +49,7 @@ const char *get_cmd_string(u8 cmd)
49 IWL_CMD(REPLY_ADD_STA); 49 IWL_CMD(REPLY_ADD_STA);
50 IWL_CMD(REPLY_REMOVE_STA); 50 IWL_CMD(REPLY_REMOVE_STA);
51 IWL_CMD(REPLY_REMOVE_ALL_STA); 51 IWL_CMD(REPLY_REMOVE_ALL_STA);
52 IWL_CMD(REPLY_TXFIFO_FLUSH);
52 IWL_CMD(REPLY_WEPKEY); 53 IWL_CMD(REPLY_WEPKEY);
53 IWL_CMD(REPLY_3945_RX); 54 IWL_CMD(REPLY_3945_RX);
54 IWL_CMD(REPLY_TX); 55 IWL_CMD(REPLY_TX);
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
index b437f317b97..79773e353ba 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
@@ -238,7 +238,7 @@ void iwl_recover_from_statistics(struct iwl_priv *priv,
238 */ 238 */
239 IWL_ERR(priv, "low ack count detected, " 239 IWL_ERR(priv, "low ack count detected, "
240 "restart firmware\n"); 240 "restart firmware\n");
241 if (!iwl_force_reset(priv, IWL_FW_RESET)) 241 if (!iwl_force_reset(priv, IWL_FW_RESET, false))
242 return; 242 return;
243 } 243 }
244 } 244 }
@@ -249,7 +249,7 @@ void iwl_recover_from_statistics(struct iwl_priv *priv,
249 * high plcp error detected 249 * high plcp error detected
250 * reset Radio 250 * reset Radio
251 */ 251 */
252 iwl_force_reset(priv, IWL_RF_RESET); 252 iwl_force_reset(priv, IWL_RF_RESET, false);
253 } 253 }
254 } 254 }
255 } 255 }
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.h b/drivers/net/wireless/iwlwifi/iwl-sta.h
index ba95b1a590a..d38a350ba0b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.h
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.h
@@ -98,6 +98,17 @@ static inline void iwl_clear_driver_stations(struct iwl_priv *priv)
98 spin_lock_irqsave(&priv->sta_lock, flags); 98 spin_lock_irqsave(&priv->sta_lock, flags);
99 memset(priv->stations, 0, sizeof(priv->stations)); 99 memset(priv->stations, 0, sizeof(priv->stations));
100 priv->num_stations = 0; 100 priv->num_stations = 0;
101
102 /*
103 * Remove all key information that is not stored as part of station
104 * information since mac80211 may not have had a
105 * chance to remove all the keys. When device is reconfigured by
106 * mac80211 after an error all keys will be reconfigured.
107 */
108 priv->ucode_key_table = 0;
109 priv->key_mapping_key = 0;
110 memset(priv->wep_keys, 0, sizeof(priv->wep_keys));
111
101 spin_unlock_irqrestore(&priv->sta_lock, flags); 112 spin_unlock_irqrestore(&priv->sta_lock, flags);
102} 113}
103 114
diff --git a/drivers/net/wireless/libertas/README b/drivers/net/wireless/libertas/README
index 2726c044430..60fd1afe89a 100644
--- a/drivers/net/wireless/libertas/README
+++ b/drivers/net/wireless/libertas/README
@@ -226,6 +226,18 @@ setuserscan
226 All entries in the scan table (not just the new scan data when keep=1) 226 All entries in the scan table (not just the new scan data when keep=1)
227 will be displayed upon completion by use of the getscantable ioctl. 227 will be displayed upon completion by use of the getscantable ioctl.
228 228
229hostsleep
230 This command is used to enable/disable host sleep.
231 Note: Host sleep parameters should be configured using
232 "ethtool -s ethX wol X" command before enabling host sleep.
233
234 Path: /sys/kernel/debug/libertas_wireless/ethX/
235
236 Usage:
237 cat hostsleep: reads the current hostsleep state
238 echo "1" > hostsleep : enable host sleep.
239 echo "0" > hostsleep : disable host sleep
240
229======================== 241========================
230IWCONFIG COMMANDS 242IWCONFIG COMMANDS
231======================== 243========================
diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c
index 6c8a9d952a0..749fbde4fd5 100644
--- a/drivers/net/wireless/libertas/cmd.c
+++ b/drivers/net/wireless/libertas/cmd.c
@@ -181,7 +181,7 @@ static int lbs_ret_host_sleep_cfg(struct lbs_private *priv, unsigned long dummy,
181 struct cmd_header *resp) 181 struct cmd_header *resp)
182{ 182{
183 lbs_deb_enter(LBS_DEB_CMD); 183 lbs_deb_enter(LBS_DEB_CMD);
184 if (priv->wol_criteria == EHS_REMOVE_WAKEUP) { 184 if (priv->is_host_sleep_activated) {
185 priv->is_host_sleep_configured = 0; 185 priv->is_host_sleep_configured = 0;
186 if (priv->psstate == PS_STATE_FULL_POWER) { 186 if (priv->psstate == PS_STATE_FULL_POWER) {
187 priv->is_host_sleep_activated = 0; 187 priv->is_host_sleep_activated = 0;
@@ -361,6 +361,65 @@ int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep)
361 return ret; 361 return ret;
362} 362}
363 363
364static int lbs_ret_host_sleep_activate(struct lbs_private *priv,
365 unsigned long dummy,
366 struct cmd_header *cmd)
367{
368 lbs_deb_enter(LBS_DEB_FW);
369 priv->is_host_sleep_activated = 1;
370 wake_up_interruptible(&priv->host_sleep_q);
371 lbs_deb_leave(LBS_DEB_FW);
372 return 0;
373}
374
375int lbs_set_host_sleep(struct lbs_private *priv, int host_sleep)
376{
377 struct cmd_header cmd;
378 int ret = 0;
379 uint32_t criteria = EHS_REMOVE_WAKEUP;
380
381 lbs_deb_enter(LBS_DEB_CMD);
382
383 if (host_sleep) {
384 if (priv->is_host_sleep_activated != 1) {
385 memset(&cmd, 0, sizeof(cmd));
386 ret = lbs_host_sleep_cfg(priv, priv->wol_criteria,
387 (struct wol_config *)NULL);
388 if (ret) {
389 lbs_pr_info("Host sleep configuration failed: "
390 "%d\n", ret);
391 return ret;
392 }
393 if (priv->psstate == PS_STATE_FULL_POWER) {
394 ret = __lbs_cmd(priv,
395 CMD_802_11_HOST_SLEEP_ACTIVATE,
396 &cmd,
397 sizeof(cmd),
398 lbs_ret_host_sleep_activate, 0);
399 if (ret)
400 lbs_pr_info("HOST_SLEEP_ACTIVATE "
401 "failed: %d\n", ret);
402 }
403
404 if (!wait_event_interruptible_timeout(
405 priv->host_sleep_q,
406 priv->is_host_sleep_activated,
407 (10 * HZ))) {
408 lbs_pr_err("host_sleep_q: timer expired\n");
409 ret = -1;
410 }
411 } else {
412 lbs_pr_err("host sleep: already enabled\n");
413 }
414 } else {
415 if (priv->is_host_sleep_activated)
416 ret = lbs_host_sleep_cfg(priv, criteria,
417 (struct wol_config *)NULL);
418 }
419
420 return ret;
421}
422
364/** 423/**
365 * @brief Set an SNMP MIB value 424 * @brief Set an SNMP MIB value
366 * 425 *
diff --git a/drivers/net/wireless/libertas/cmd.h b/drivers/net/wireless/libertas/cmd.h
index cb4138a55fd..386e565d99a 100644
--- a/drivers/net/wireless/libertas/cmd.h
+++ b/drivers/net/wireless/libertas/cmd.h
@@ -127,4 +127,6 @@ int lbs_set_tx_power(struct lbs_private *priv, s16 dbm);
127 127
128int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep); 128int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep);
129 129
130int lbs_set_host_sleep(struct lbs_private *priv, int host_sleep);
131
130#endif /* _LBS_CMD_H */ 132#endif /* _LBS_CMD_H */
diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c
index 17367463c85..acaf8116462 100644
--- a/drivers/net/wireless/libertas/debugfs.c
+++ b/drivers/net/wireless/libertas/debugfs.c
@@ -124,6 +124,70 @@ out_unlock:
124 return ret; 124 return ret;
125} 125}
126 126
127static ssize_t lbs_host_sleep_write(struct file *file,
128 const char __user *user_buf, size_t count,
129 loff_t *ppos)
130{
131 struct lbs_private *priv = file->private_data;
132 ssize_t buf_size, ret;
133 int host_sleep;
134 unsigned long addr = get_zeroed_page(GFP_KERNEL);
135 char *buf = (char *)addr;
136 if (!buf)
137 return -ENOMEM;
138
139 buf_size = min(count, len - 1);
140 if (copy_from_user(buf, user_buf, buf_size)) {
141 ret = -EFAULT;
142 goto out_unlock;
143 }
144 ret = sscanf(buf, "%d", &host_sleep);
145 if (ret != 1) {
146 ret = -EINVAL;
147 goto out_unlock;
148 }
149
150 if (host_sleep == 0)
151 ret = lbs_set_host_sleep(priv, 0);
152 else if (host_sleep == 1) {
153 if (priv->wol_criteria == EHS_REMOVE_WAKEUP) {
154 lbs_pr_info("wake parameters not configured");
155 ret = -EINVAL;
156 goto out_unlock;
157 }
158 ret = lbs_set_host_sleep(priv, 1);
159 } else {
160 lbs_pr_err("invalid option\n");
161 ret = -EINVAL;
162 }
163
164 if (!ret)
165 ret = count;
166
167out_unlock:
168 free_page(addr);
169 return ret;
170}
171
172static ssize_t lbs_host_sleep_read(struct file *file, char __user *userbuf,
173 size_t count, loff_t *ppos)
174{
175 struct lbs_private *priv = file->private_data;
176 ssize_t ret;
177 size_t pos = 0;
178 unsigned long addr = get_zeroed_page(GFP_KERNEL);
179 char *buf = (char *)addr;
180 if (!buf)
181 return -ENOMEM;
182
183 pos += snprintf(buf, len, "%d\n", priv->is_host_sleep_activated);
184
185 ret = simple_read_from_buffer(userbuf, count, ppos, buf, pos);
186
187 free_page(addr);
188 return ret;
189}
190
127/* 191/*
128 * When calling CMD_802_11_SUBSCRIBE_EVENT with CMD_ACT_GET, me might 192 * When calling CMD_802_11_SUBSCRIBE_EVENT with CMD_ACT_GET, me might
129 * get a bunch of vendor-specific TLVs (a.k.a. IEs) back from the 193 * get a bunch of vendor-specific TLVs (a.k.a. IEs) back from the
@@ -675,6 +739,8 @@ static const struct lbs_debugfs_files debugfs_files[] = {
675 { "info", 0444, FOPS(lbs_dev_info, write_file_dummy), }, 739 { "info", 0444, FOPS(lbs_dev_info, write_file_dummy), },
676 { "sleepparams", 0644, FOPS(lbs_sleepparams_read, 740 { "sleepparams", 0644, FOPS(lbs_sleepparams_read,
677 lbs_sleepparams_write), }, 741 lbs_sleepparams_write), },
742 { "hostsleep", 0644, FOPS(lbs_host_sleep_read,
743 lbs_host_sleep_write), },
678}; 744};
679 745
680static const struct lbs_debugfs_files debugfs_events_files[] = { 746static const struct lbs_debugfs_files debugfs_events_files[] = {
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
index b519fc70f04..2a0b590a93f 100644
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
@@ -544,20 +544,8 @@ static int lbs_thread(void *data)
544 return 0; 544 return 0;
545} 545}
546 546
547static int lbs_ret_host_sleep_activate(struct lbs_private *priv,
548 unsigned long dummy,
549 struct cmd_header *cmd)
550{
551 lbs_deb_enter(LBS_DEB_FW);
552 priv->is_host_sleep_activated = 1;
553 wake_up_interruptible(&priv->host_sleep_q);
554 lbs_deb_leave(LBS_DEB_FW);
555 return 0;
556}
557
558int lbs_suspend(struct lbs_private *priv) 547int lbs_suspend(struct lbs_private *priv)
559{ 548{
560 struct cmd_header cmd;
561 int ret; 549 int ret;
562 550
563 lbs_deb_enter(LBS_DEB_FW); 551 lbs_deb_enter(LBS_DEB_FW);
@@ -571,25 +559,8 @@ int lbs_suspend(struct lbs_private *priv)
571 priv->deep_sleep_required = 1; 559 priv->deep_sleep_required = 1;
572 } 560 }
573 561
574 memset(&cmd, 0, sizeof(cmd)); 562 ret = lbs_set_host_sleep(priv, 1);
575 ret = lbs_host_sleep_cfg(priv, priv->wol_criteria,
576 (struct wol_config *)NULL);
577 if (ret) {
578 lbs_pr_info("Host sleep configuration failed: %d\n", ret);
579 return ret;
580 }
581 if (priv->psstate == PS_STATE_FULL_POWER) {
582 ret = __lbs_cmd(priv, CMD_802_11_HOST_SLEEP_ACTIVATE, &cmd,
583 sizeof(cmd), lbs_ret_host_sleep_activate, 0);
584 if (ret)
585 lbs_pr_info("HOST_SLEEP_ACTIVATE failed: %d\n", ret);
586 }
587 563
588 if (!wait_event_interruptible_timeout(priv->host_sleep_q,
589 priv->is_host_sleep_activated, (10 * HZ))) {
590 lbs_pr_err("host_sleep_q: timer expired\n");
591 ret = -1;
592 }
593 netif_device_detach(priv->dev); 564 netif_device_detach(priv->dev);
594 if (priv->mesh_dev) 565 if (priv->mesh_dev)
595 netif_device_detach(priv->mesh_dev); 566 netif_device_detach(priv->mesh_dev);
@@ -602,11 +573,10 @@ EXPORT_SYMBOL_GPL(lbs_suspend);
602int lbs_resume(struct lbs_private *priv) 573int lbs_resume(struct lbs_private *priv)
603{ 574{
604 int ret; 575 int ret;
605 uint32_t criteria = EHS_REMOVE_WAKEUP;
606 576
607 lbs_deb_enter(LBS_DEB_FW); 577 lbs_deb_enter(LBS_DEB_FW);
608 578
609 ret = lbs_host_sleep_cfg(priv, criteria, (struct wol_config *)NULL); 579 ret = lbs_set_host_sleep(priv, 0);
610 580
611 netif_device_attach(priv->dev); 581 netif_device_attach(priv->dev);
612 if (priv->mesh_dev) 582 if (priv->mesh_dev)
diff --git a/drivers/net/wireless/prism54/isl_ioctl.c b/drivers/net/wireless/prism54/isl_ioctl.c
index 912fdc022d0..77cd65db850 100644
--- a/drivers/net/wireless/prism54/isl_ioctl.c
+++ b/drivers/net/wireless/prism54/isl_ioctl.c
@@ -2067,7 +2067,7 @@ send_simple_event(islpci_private *priv, const char *str)
2067 memptr = kmalloc(IW_CUSTOM_MAX, GFP_KERNEL); 2067 memptr = kmalloc(IW_CUSTOM_MAX, GFP_KERNEL);
2068 if (!memptr) 2068 if (!memptr)
2069 return; 2069 return;
2070 BUG_ON(n > IW_CUSTOM_MAX); 2070 BUG_ON(n >= IW_CUSTOM_MAX);
2071 wrqu.data.pointer = memptr; 2071 wrqu.data.pointer = memptr;
2072 wrqu.data.length = n; 2072 wrqu.data.length = n;
2073 strcpy(memptr, str); 2073 strcpy(memptr, str);
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 3bedf566c8e..5063e01410e 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -586,9 +586,11 @@ static void rt2400pci_link_stats(struct rt2x00_dev *rt2x00dev,
586static inline void rt2400pci_set_vgc(struct rt2x00_dev *rt2x00dev, 586static inline void rt2400pci_set_vgc(struct rt2x00_dev *rt2x00dev,
587 struct link_qual *qual, u8 vgc_level) 587 struct link_qual *qual, u8 vgc_level)
588{ 588{
589 rt2400pci_bbp_write(rt2x00dev, 13, vgc_level); 589 if (qual->vgc_level_reg != vgc_level) {
590 qual->vgc_level = vgc_level; 590 rt2400pci_bbp_write(rt2x00dev, 13, vgc_level);
591 qual->vgc_level_reg = vgc_level; 591 qual->vgc_level = vgc_level;
592 qual->vgc_level_reg = vgc_level;
593 }
592} 594}
593 595
594static void rt2400pci_reset_tuner(struct rt2x00_dev *rt2x00dev, 596static void rt2400pci_reset_tuner(struct rt2x00_dev *rt2x00dev,
@@ -877,7 +879,8 @@ static void rt2400pci_toggle_rx(struct rt2x00_dev *rt2x00dev,
877static void rt2400pci_toggle_irq(struct rt2x00_dev *rt2x00dev, 879static void rt2400pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
878 enum dev_state state) 880 enum dev_state state)
879{ 881{
880 int mask = (state == STATE_RADIO_IRQ_OFF); 882 int mask = (state == STATE_RADIO_IRQ_OFF) ||
883 (state == STATE_RADIO_IRQ_OFF_ISR);
881 u32 reg; 884 u32 reg;
882 885
883 /* 886 /*
@@ -978,7 +981,9 @@ static int rt2400pci_set_device_state(struct rt2x00_dev *rt2x00dev,
978 rt2400pci_toggle_rx(rt2x00dev, state); 981 rt2400pci_toggle_rx(rt2x00dev, state);
979 break; 982 break;
980 case STATE_RADIO_IRQ_ON: 983 case STATE_RADIO_IRQ_ON:
984 case STATE_RADIO_IRQ_ON_ISR:
981 case STATE_RADIO_IRQ_OFF: 985 case STATE_RADIO_IRQ_OFF:
986 case STATE_RADIO_IRQ_OFF_ISR:
982 rt2400pci_toggle_irq(rt2x00dev, state); 987 rt2400pci_toggle_irq(rt2x00dev, state);
983 break; 988 break;
984 case STATE_DEEP_SLEEP: 989 case STATE_DEEP_SLEEP:
@@ -1233,23 +1238,10 @@ static void rt2400pci_txdone(struct rt2x00_dev *rt2x00dev,
1233 } 1238 }
1234} 1239}
1235 1240
1236static irqreturn_t rt2400pci_interrupt(int irq, void *dev_instance) 1241static irqreturn_t rt2400pci_interrupt_thread(int irq, void *dev_instance)
1237{ 1242{
1238 struct rt2x00_dev *rt2x00dev = dev_instance; 1243 struct rt2x00_dev *rt2x00dev = dev_instance;
1239 u32 reg; 1244 u32 reg = rt2x00dev->irqvalue[0];
1240
1241 /*
1242 * Get the interrupt sources & saved to local variable.
1243 * Write register value back to clear pending interrupts.
1244 */
1245 rt2x00pci_register_read(rt2x00dev, CSR7, &reg);
1246 rt2x00pci_register_write(rt2x00dev, CSR7, reg);
1247
1248 if (!reg)
1249 return IRQ_NONE;
1250
1251 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
1252 return IRQ_HANDLED;
1253 1245
1254 /* 1246 /*
1255 * Handle interrupts, walk through all bits 1247 * Handle interrupts, walk through all bits
@@ -1287,9 +1279,40 @@ static irqreturn_t rt2400pci_interrupt(int irq, void *dev_instance)
1287 if (rt2x00_get_field32(reg, CSR7_TXDONE_TXRING)) 1279 if (rt2x00_get_field32(reg, CSR7_TXDONE_TXRING))
1288 rt2400pci_txdone(rt2x00dev, QID_AC_BK); 1280 rt2400pci_txdone(rt2x00dev, QID_AC_BK);
1289 1281
1282 /* Enable interrupts again. */
1283 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
1284 STATE_RADIO_IRQ_ON_ISR);
1290 return IRQ_HANDLED; 1285 return IRQ_HANDLED;
1291} 1286}
1292 1287
1288static irqreturn_t rt2400pci_interrupt(int irq, void *dev_instance)
1289{
1290 struct rt2x00_dev *rt2x00dev = dev_instance;
1291 u32 reg;
1292
1293 /*
1294 * Get the interrupt sources & saved to local variable.
1295 * Write register value back to clear pending interrupts.
1296 */
1297 rt2x00pci_register_read(rt2x00dev, CSR7, &reg);
1298 rt2x00pci_register_write(rt2x00dev, CSR7, reg);
1299
1300 if (!reg)
1301 return IRQ_NONE;
1302
1303 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
1304 return IRQ_HANDLED;
1305
1306 /* Store irqvalues for use in the interrupt thread. */
1307 rt2x00dev->irqvalue[0] = reg;
1308
1309 /* Disable interrupts, will be enabled again in the interrupt thread. */
1310 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
1311 STATE_RADIO_IRQ_OFF_ISR);
1312
1313 return IRQ_WAKE_THREAD;
1314}
1315
1293/* 1316/*
1294 * Device probe functions. 1317 * Device probe functions.
1295 */ 1318 */
@@ -1399,8 +1422,8 @@ static int rt2400pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
1399 /* 1422 /*
1400 * Check if the BBP tuning should be enabled. 1423 * Check if the BBP tuning should be enabled.
1401 */ 1424 */
1402 if (!rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RX_AGCVGC_TUNING)) 1425 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RX_AGCVGC_TUNING))
1403 __set_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags); 1426 __set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
1404 1427
1405 return 0; 1428 return 0;
1406} 1429}
@@ -1566,7 +1589,8 @@ static const struct ieee80211_ops rt2400pci_mac80211_ops = {
1566 .remove_interface = rt2x00mac_remove_interface, 1589 .remove_interface = rt2x00mac_remove_interface,
1567 .config = rt2x00mac_config, 1590 .config = rt2x00mac_config,
1568 .configure_filter = rt2x00mac_configure_filter, 1591 .configure_filter = rt2x00mac_configure_filter,
1569 .set_tim = rt2x00mac_set_tim, 1592 .sw_scan_start = rt2x00mac_sw_scan_start,
1593 .sw_scan_complete = rt2x00mac_sw_scan_complete,
1570 .get_stats = rt2x00mac_get_stats, 1594 .get_stats = rt2x00mac_get_stats,
1571 .bss_info_changed = rt2x00mac_bss_info_changed, 1595 .bss_info_changed = rt2x00mac_bss_info_changed,
1572 .conf_tx = rt2400pci_conf_tx, 1596 .conf_tx = rt2400pci_conf_tx,
@@ -1577,6 +1601,7 @@ static const struct ieee80211_ops rt2400pci_mac80211_ops = {
1577 1601
1578static const struct rt2x00lib_ops rt2400pci_rt2x00_ops = { 1602static const struct rt2x00lib_ops rt2400pci_rt2x00_ops = {
1579 .irq_handler = rt2400pci_interrupt, 1603 .irq_handler = rt2400pci_interrupt,
1604 .irq_handler_thread = rt2400pci_interrupt_thread,
1580 .probe_hw = rt2400pci_probe_hw, 1605 .probe_hw = rt2400pci_probe_hw,
1581 .initialize = rt2x00pci_initialize, 1606 .initialize = rt2x00pci_initialize,
1582 .uninitialize = rt2x00pci_uninitialize, 1607 .uninitialize = rt2x00pci_uninitialize,
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 69d231d8395..c2a555d5376 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -626,6 +626,7 @@ static inline void rt2500pci_set_vgc(struct rt2x00_dev *rt2x00dev,
626{ 626{
627 if (qual->vgc_level_reg != vgc_level) { 627 if (qual->vgc_level_reg != vgc_level) {
628 rt2500pci_bbp_write(rt2x00dev, 17, vgc_level); 628 rt2500pci_bbp_write(rt2x00dev, 17, vgc_level);
629 qual->vgc_level = vgc_level;
629 qual->vgc_level_reg = vgc_level; 630 qual->vgc_level_reg = vgc_level;
630 } 631 }
631} 632}
@@ -700,13 +701,10 @@ dynamic_cca_tune:
700 * R17 is inside the dynamic tuning range, 701 * R17 is inside the dynamic tuning range,
701 * start tuning the link based on the false cca counter. 702 * start tuning the link based on the false cca counter.
702 */ 703 */
703 if (qual->false_cca > 512 && qual->vgc_level_reg < 0x40) { 704 if (qual->false_cca > 512 && qual->vgc_level_reg < 0x40)
704 rt2500pci_set_vgc(rt2x00dev, qual, ++qual->vgc_level_reg); 705 rt2500pci_set_vgc(rt2x00dev, qual, ++qual->vgc_level_reg);
705 qual->vgc_level = qual->vgc_level_reg; 706 else if (qual->false_cca < 100 && qual->vgc_level_reg > 0x32)
706 } else if (qual->false_cca < 100 && qual->vgc_level_reg > 0x32) {
707 rt2500pci_set_vgc(rt2x00dev, qual, --qual->vgc_level_reg); 707 rt2500pci_set_vgc(rt2x00dev, qual, --qual->vgc_level_reg);
708 qual->vgc_level = qual->vgc_level_reg;
709 }
710} 708}
711 709
712/* 710/*
@@ -1035,7 +1033,8 @@ static void rt2500pci_toggle_rx(struct rt2x00_dev *rt2x00dev,
1035static void rt2500pci_toggle_irq(struct rt2x00_dev *rt2x00dev, 1033static void rt2500pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
1036 enum dev_state state) 1034 enum dev_state state)
1037{ 1035{
1038 int mask = (state == STATE_RADIO_IRQ_OFF); 1036 int mask = (state == STATE_RADIO_IRQ_OFF) ||
1037 (state == STATE_RADIO_IRQ_OFF_ISR);
1039 u32 reg; 1038 u32 reg;
1040 1039
1041 /* 1040 /*
@@ -1136,7 +1135,9 @@ static int rt2500pci_set_device_state(struct rt2x00_dev *rt2x00dev,
1136 rt2500pci_toggle_rx(rt2x00dev, state); 1135 rt2500pci_toggle_rx(rt2x00dev, state);
1137 break; 1136 break;
1138 case STATE_RADIO_IRQ_ON: 1137 case STATE_RADIO_IRQ_ON:
1138 case STATE_RADIO_IRQ_ON_ISR:
1139 case STATE_RADIO_IRQ_OFF: 1139 case STATE_RADIO_IRQ_OFF:
1140 case STATE_RADIO_IRQ_OFF_ISR:
1140 rt2500pci_toggle_irq(rt2x00dev, state); 1141 rt2500pci_toggle_irq(rt2x00dev, state);
1141 break; 1142 break;
1142 case STATE_DEEP_SLEEP: 1143 case STATE_DEEP_SLEEP:
@@ -1369,23 +1370,10 @@ static void rt2500pci_txdone(struct rt2x00_dev *rt2x00dev,
1369 } 1370 }
1370} 1371}
1371 1372
1372static irqreturn_t rt2500pci_interrupt(int irq, void *dev_instance) 1373static irqreturn_t rt2500pci_interrupt_thread(int irq, void *dev_instance)
1373{ 1374{
1374 struct rt2x00_dev *rt2x00dev = dev_instance; 1375 struct rt2x00_dev *rt2x00dev = dev_instance;
1375 u32 reg; 1376 u32 reg = rt2x00dev->irqvalue[0];
1376
1377 /*
1378 * Get the interrupt sources & saved to local variable.
1379 * Write register value back to clear pending interrupts.
1380 */
1381 rt2x00pci_register_read(rt2x00dev, CSR7, &reg);
1382 rt2x00pci_register_write(rt2x00dev, CSR7, reg);
1383
1384 if (!reg)
1385 return IRQ_NONE;
1386
1387 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
1388 return IRQ_HANDLED;
1389 1377
1390 /* 1378 /*
1391 * Handle interrupts, walk through all bits 1379 * Handle interrupts, walk through all bits
@@ -1423,9 +1411,41 @@ static irqreturn_t rt2500pci_interrupt(int irq, void *dev_instance)
1423 if (rt2x00_get_field32(reg, CSR7_TXDONE_TXRING)) 1411 if (rt2x00_get_field32(reg, CSR7_TXDONE_TXRING))
1424 rt2500pci_txdone(rt2x00dev, QID_AC_BK); 1412 rt2500pci_txdone(rt2x00dev, QID_AC_BK);
1425 1413
1414 /* Enable interrupts again. */
1415 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
1416 STATE_RADIO_IRQ_ON_ISR);
1417
1426 return IRQ_HANDLED; 1418 return IRQ_HANDLED;
1427} 1419}
1428 1420
1421static irqreturn_t rt2500pci_interrupt(int irq, void *dev_instance)
1422{
1423 struct rt2x00_dev *rt2x00dev = dev_instance;
1424 u32 reg;
1425
1426 /*
1427 * Get the interrupt sources & saved to local variable.
1428 * Write register value back to clear pending interrupts.
1429 */
1430 rt2x00pci_register_read(rt2x00dev, CSR7, &reg);
1431 rt2x00pci_register_write(rt2x00dev, CSR7, reg);
1432
1433 if (!reg)
1434 return IRQ_NONE;
1435
1436 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
1437 return IRQ_HANDLED;
1438
1439 /* Store irqvalues for use in the interrupt thread. */
1440 rt2x00dev->irqvalue[0] = reg;
1441
1442 /* Disable interrupts, will be enabled again in the interrupt thread. */
1443 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
1444 STATE_RADIO_IRQ_OFF_ISR);
1445
1446 return IRQ_WAKE_THREAD;
1447}
1448
1429/* 1449/*
1430 * Device probe functions. 1450 * Device probe functions.
1431 */ 1451 */
@@ -1557,9 +1577,8 @@ static int rt2500pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
1557 * Check if the BBP tuning should be enabled. 1577 * Check if the BBP tuning should be enabled.
1558 */ 1578 */
1559 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &eeprom); 1579 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &eeprom);
1560 1580 if (!rt2x00_get_field16(eeprom, EEPROM_NIC_DYN_BBP_TUNE))
1561 if (rt2x00_get_field16(eeprom, EEPROM_NIC_DYN_BBP_TUNE)) 1581 __set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
1562 __set_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags);
1563 1582
1564 /* 1583 /*
1565 * Read the RSSI <-> dBm offset information. 1584 * Read the RSSI <-> dBm offset information.
@@ -1864,7 +1883,8 @@ static const struct ieee80211_ops rt2500pci_mac80211_ops = {
1864 .remove_interface = rt2x00mac_remove_interface, 1883 .remove_interface = rt2x00mac_remove_interface,
1865 .config = rt2x00mac_config, 1884 .config = rt2x00mac_config,
1866 .configure_filter = rt2x00mac_configure_filter, 1885 .configure_filter = rt2x00mac_configure_filter,
1867 .set_tim = rt2x00mac_set_tim, 1886 .sw_scan_start = rt2x00mac_sw_scan_start,
1887 .sw_scan_complete = rt2x00mac_sw_scan_complete,
1868 .get_stats = rt2x00mac_get_stats, 1888 .get_stats = rt2x00mac_get_stats,
1869 .bss_info_changed = rt2x00mac_bss_info_changed, 1889 .bss_info_changed = rt2x00mac_bss_info_changed,
1870 .conf_tx = rt2x00mac_conf_tx, 1890 .conf_tx = rt2x00mac_conf_tx,
@@ -1875,6 +1895,7 @@ static const struct ieee80211_ops rt2500pci_mac80211_ops = {
1875 1895
1876static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = { 1896static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = {
1877 .irq_handler = rt2500pci_interrupt, 1897 .irq_handler = rt2500pci_interrupt,
1898 .irq_handler_thread = rt2500pci_interrupt_thread,
1878 .probe_hw = rt2500pci_probe_hw, 1899 .probe_hw = rt2500pci_probe_hw,
1879 .initialize = rt2x00pci_initialize, 1900 .initialize = rt2x00pci_initialize,
1880 .uninitialize = rt2x00pci_uninitialize, 1901 .uninitialize = rt2x00pci_uninitialize,
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 44205526013..242d59558b7 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -1004,7 +1004,9 @@ static int rt2500usb_set_device_state(struct rt2x00_dev *rt2x00dev,
1004 rt2500usb_toggle_rx(rt2x00dev, state); 1004 rt2500usb_toggle_rx(rt2x00dev, state);
1005 break; 1005 break;
1006 case STATE_RADIO_IRQ_ON: 1006 case STATE_RADIO_IRQ_ON:
1007 case STATE_RADIO_IRQ_ON_ISR:
1007 case STATE_RADIO_IRQ_OFF: 1008 case STATE_RADIO_IRQ_OFF:
1009 case STATE_RADIO_IRQ_OFF_ISR:
1008 /* No support, but no error either */ 1010 /* No support, but no error either */
1009 break; 1011 break;
1010 case STATE_DEEP_SLEEP: 1012 case STATE_DEEP_SLEEP:
@@ -1471,13 +1473,6 @@ static int rt2500usb_init_eeprom(struct rt2x00_dev *rt2x00dev)
1471 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags); 1473 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags);
1472 1474
1473 /* 1475 /*
1474 * Check if the BBP tuning should be disabled.
1475 */
1476 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &eeprom);
1477 if (rt2x00_get_field16(eeprom, EEPROM_NIC_DYN_BBP_TUNE))
1478 __set_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags);
1479
1480 /*
1481 * Read the RSSI <-> dBm offset information. 1476 * Read the RSSI <-> dBm offset information.
1482 */ 1477 */
1483 rt2x00_eeprom_read(rt2x00dev, EEPROM_CALIBRATE_OFFSET, &eeprom); 1478 rt2x00_eeprom_read(rt2x00dev, EEPROM_CALIBRATE_OFFSET, &eeprom);
@@ -1743,7 +1738,7 @@ static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev)
1743 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags); 1738 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
1744 __set_bit(DRIVER_REQUIRE_COPY_IV, &rt2x00dev->flags); 1739 __set_bit(DRIVER_REQUIRE_COPY_IV, &rt2x00dev->flags);
1745 } 1740 }
1746 __set_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags); 1741 __set_bit(DRIVER_SUPPORT_WATCHDOG, &rt2x00dev->flags);
1747 1742
1748 /* 1743 /*
1749 * Set the rssi offset. 1744 * Set the rssi offset.
@@ -1763,6 +1758,8 @@ static const struct ieee80211_ops rt2500usb_mac80211_ops = {
1763 .configure_filter = rt2x00mac_configure_filter, 1758 .configure_filter = rt2x00mac_configure_filter,
1764 .set_tim = rt2x00mac_set_tim, 1759 .set_tim = rt2x00mac_set_tim,
1765 .set_key = rt2x00mac_set_key, 1760 .set_key = rt2x00mac_set_key,
1761 .sw_scan_start = rt2x00mac_sw_scan_start,
1762 .sw_scan_complete = rt2x00mac_sw_scan_complete,
1766 .get_stats = rt2x00mac_get_stats, 1763 .get_stats = rt2x00mac_get_stats,
1767 .bss_info_changed = rt2x00mac_bss_info_changed, 1764 .bss_info_changed = rt2x00mac_bss_info_changed,
1768 .conf_tx = rt2x00mac_conf_tx, 1765 .conf_tx = rt2x00mac_conf_tx,
@@ -1778,6 +1775,7 @@ static const struct rt2x00lib_ops rt2500usb_rt2x00_ops = {
1778 .rfkill_poll = rt2500usb_rfkill_poll, 1775 .rfkill_poll = rt2500usb_rfkill_poll,
1779 .link_stats = rt2500usb_link_stats, 1776 .link_stats = rt2500usb_link_stats,
1780 .reset_tuner = rt2500usb_reset_tuner, 1777 .reset_tuner = rt2500usb_reset_tuner,
1778 .watchdog = rt2x00usb_watchdog,
1781 .write_tx_desc = rt2500usb_write_tx_desc, 1779 .write_tx_desc = rt2500usb_write_tx_desc,
1782 .write_beacon = rt2500usb_write_beacon, 1780 .write_beacon = rt2500usb_write_beacon,
1783 .get_tx_data_len = rt2500usb_get_tx_data_len, 1781 .get_tx_data_len = rt2500usb_get_tx_data_len,
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index 552f9f4c73d..ed4ebcdde7c 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -74,7 +74,7 @@
74 * Signal information. 74 * Signal information.
75 * Default offset is required for RSSI <-> dBm conversion. 75 * Default offset is required for RSSI <-> dBm conversion.
76 */ 76 */
77#define DEFAULT_RSSI_OFFSET 120 /* FIXME */ 77#define DEFAULT_RSSI_OFFSET 120
78 78
79/* 79/*
80 * Register layout information. 80 * Register layout information.
@@ -719,14 +719,20 @@
719#define TBTT_TIMER 0x1124 719#define TBTT_TIMER 0x1124
720 720
721/* 721/*
722 * INT_TIMER_CFG: 722 * INT_TIMER_CFG: timer configuration
723 * PRE_TBTT_TIMER: leadtime to tbtt for pretbtt interrupt in units of 1/16 TU
724 * GP_TIMER: period of general purpose timer in units of 1/16 TU
723 */ 725 */
724#define INT_TIMER_CFG 0x1128 726#define INT_TIMER_CFG 0x1128
727#define INT_TIMER_CFG_PRE_TBTT_TIMER FIELD32(0x0000ffff)
728#define INT_TIMER_CFG_GP_TIMER FIELD32(0xffff0000)
725 729
726/* 730/*
727 * INT_TIMER_EN: GP-timer and pre-tbtt Int enable 731 * INT_TIMER_EN: GP-timer and pre-tbtt Int enable
728 */ 732 */
729#define INT_TIMER_EN 0x112c 733#define INT_TIMER_EN 0x112c
734#define INT_TIMER_EN_PRE_TBTT_TIMER FIELD32(0x00000001)
735#define INT_TIMER_EN_GP_TIMER FIELD32(0x00000002)
730 736
731/* 737/*
732 * CH_IDLE_STA: channel idle time 738 * CH_IDLE_STA: channel idle time
@@ -803,6 +809,18 @@
803#define EDCA_TID_AC_MAP 0x1310 809#define EDCA_TID_AC_MAP 0x1310
804 810
805/* 811/*
812 * TX_PWR_CFG:
813 */
814#define TX_PWR_CFG_RATE0 FIELD32(0x0000000f)
815#define TX_PWR_CFG_RATE1 FIELD32(0x000000f0)
816#define TX_PWR_CFG_RATE2 FIELD32(0x00000f00)
817#define TX_PWR_CFG_RATE3 FIELD32(0x0000f000)
818#define TX_PWR_CFG_RATE4 FIELD32(0x000f0000)
819#define TX_PWR_CFG_RATE5 FIELD32(0x00f00000)
820#define TX_PWR_CFG_RATE6 FIELD32(0x0f000000)
821#define TX_PWR_CFG_RATE7 FIELD32(0xf0000000)
822
823/*
806 * TX_PWR_CFG_0: 824 * TX_PWR_CFG_0:
807 */ 825 */
808#define TX_PWR_CFG_0 0x1314 826#define TX_PWR_CFG_0 0x1314
@@ -1853,9 +1871,15 @@ struct mac_iveiv_entry {
1853#define EEPROM_TXPOWER_A_2 FIELD16(0xff00) 1871#define EEPROM_TXPOWER_A_2 FIELD16(0xff00)
1854 1872
1855/* 1873/*
1856 * EEPROM TXpower byrate: 20MHZ power 1874 * EEPROM TXPOWER by rate: tx power per tx rate for HT20 mode
1857 */ 1875 */
1858#define EEPROM_TXPOWER_BYRATE 0x006f 1876#define EEPROM_TXPOWER_BYRATE 0x006f
1877#define EEPROM_TXPOWER_BYRATE_SIZE 9
1878
1879#define EEPROM_TXPOWER_BYRATE_RATE0 FIELD16(0x000f)
1880#define EEPROM_TXPOWER_BYRATE_RATE1 FIELD16(0x00f0)
1881#define EEPROM_TXPOWER_BYRATE_RATE2 FIELD16(0x0f00)
1882#define EEPROM_TXPOWER_BYRATE_RATE3 FIELD16(0xf000)
1859 1883
1860/* 1884/*
1861 * EEPROM BBP. 1885 * EEPROM BBP.
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index d3cf0cc3950..b66e0fd8f0f 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -33,6 +33,7 @@
33 Abstract: rt2800 generic device routines. 33 Abstract: rt2800 generic device routines.
34 */ 34 */
35 35
36#include <linux/crc-ccitt.h>
36#include <linux/kernel.h> 37#include <linux/kernel.h>
37#include <linux/module.h> 38#include <linux/module.h>
38#include <linux/slab.h> 39#include <linux/slab.h>
@@ -272,6 +273,160 @@ int rt2800_wait_wpdma_ready(struct rt2x00_dev *rt2x00dev)
272} 273}
273EXPORT_SYMBOL_GPL(rt2800_wait_wpdma_ready); 274EXPORT_SYMBOL_GPL(rt2800_wait_wpdma_ready);
274 275
276static bool rt2800_check_firmware_crc(const u8 *data, const size_t len)
277{
278 u16 fw_crc;
279 u16 crc;
280
281 /*
282 * The last 2 bytes in the firmware array are the crc checksum itself,
283 * this means that we should never pass those 2 bytes to the crc
284 * algorithm.
285 */
286 fw_crc = (data[len - 2] << 8 | data[len - 1]);
287
288 /*
289 * Use the crc ccitt algorithm.
290 * This will return the same value as the legacy driver which
291 * used bit ordering reversion on the both the firmware bytes
292 * before input input as well as on the final output.
293 * Obviously using crc ccitt directly is much more efficient.
294 */
295 crc = crc_ccitt(~0, data, len - 2);
296
297 /*
298 * There is a small difference between the crc-itu-t + bitrev and
299 * the crc-ccitt crc calculation. In the latter method the 2 bytes
300 * will be swapped, use swab16 to convert the crc to the correct
301 * value.
302 */
303 crc = swab16(crc);
304
305 return fw_crc == crc;
306}
307
308int rt2800_check_firmware(struct rt2x00_dev *rt2x00dev,
309 const u8 *data, const size_t len)
310{
311 size_t offset = 0;
312 size_t fw_len;
313 bool multiple;
314
315 /*
316 * PCI(e) & SOC devices require firmware with a length
317 * of 8kb. USB devices require firmware files with a length
318 * of 4kb. Certain USB chipsets however require different firmware,
319 * which Ralink only provides attached to the original firmware
320 * file. Thus for USB devices, firmware files have a length
321 * which is a multiple of 4kb.
322 */
323 if (rt2x00_is_usb(rt2x00dev)) {
324 fw_len = 4096;
325 multiple = true;
326 } else {
327 fw_len = 8192;
328 multiple = true;
329 }
330
331 /*
332 * Validate the firmware length
333 */
334 if (len != fw_len && (!multiple || (len % fw_len) != 0))
335 return FW_BAD_LENGTH;
336
337 /*
338 * Check if the chipset requires one of the upper parts
339 * of the firmware.
340 */
341 if (rt2x00_is_usb(rt2x00dev) &&
342 !rt2x00_rt(rt2x00dev, RT2860) &&
343 !rt2x00_rt(rt2x00dev, RT2872) &&
344 !rt2x00_rt(rt2x00dev, RT3070) &&
345 ((len / fw_len) == 1))
346 return FW_BAD_VERSION;
347
348 /*
349 * 8kb firmware files must be checked as if it were
350 * 2 separate firmware files.
351 */
352 while (offset < len) {
353 if (!rt2800_check_firmware_crc(data + offset, fw_len))
354 return FW_BAD_CRC;
355
356 offset += fw_len;
357 }
358
359 return FW_OK;
360}
361EXPORT_SYMBOL_GPL(rt2800_check_firmware);
362
363int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
364 const u8 *data, const size_t len)
365{
366 unsigned int i;
367 u32 reg;
368
369 /*
370 * Wait for stable hardware.
371 */
372 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
373 rt2800_register_read(rt2x00dev, MAC_CSR0, &reg);
374 if (reg && reg != ~0)
375 break;
376 msleep(1);
377 }
378
379 if (i == REGISTER_BUSY_COUNT) {
380 ERROR(rt2x00dev, "Unstable hardware.\n");
381 return -EBUSY;
382 }
383
384 if (rt2x00_is_pci(rt2x00dev))
385 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000002);
386
387 /*
388 * Disable DMA, will be reenabled later when enabling
389 * the radio.
390 */
391 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
392 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
393 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_DMA_BUSY, 0);
394 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0);
395 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_RX_DMA_BUSY, 0);
396 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
397 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
398
399 /*
400 * Write firmware to the device.
401 */
402 rt2800_drv_write_firmware(rt2x00dev, data, len);
403
404 /*
405 * Wait for device to stabilize.
406 */
407 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
408 rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, &reg);
409 if (rt2x00_get_field32(reg, PBF_SYS_CTRL_READY))
410 break;
411 msleep(1);
412 }
413
414 if (i == REGISTER_BUSY_COUNT) {
415 ERROR(rt2x00dev, "PBF system register not ready.\n");
416 return -EBUSY;
417 }
418
419 /*
420 * Initialize firmware.
421 */
422 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0);
423 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
424 msleep(1);
425
426 return 0;
427}
428EXPORT_SYMBOL_GPL(rt2800_load_firmware);
429
275void rt2800_write_txwi(__le32 *txwi, struct txentry_desc *txdesc) 430void rt2800_write_txwi(__le32 *txwi, struct txentry_desc *txdesc)
276{ 431{
277 u32 word; 432 u32 word;
@@ -325,9 +480,53 @@ void rt2800_write_txwi(__le32 *txwi, struct txentry_desc *txdesc)
325} 480}
326EXPORT_SYMBOL_GPL(rt2800_write_txwi); 481EXPORT_SYMBOL_GPL(rt2800_write_txwi);
327 482
328void rt2800_process_rxwi(struct sk_buff *skb, struct rxdone_entry_desc *rxdesc) 483static int rt2800_agc_to_rssi(struct rt2x00_dev *rt2x00dev, int rxwi_w2)
329{ 484{
330 __le32 *rxwi = (__le32 *) skb->data; 485 int rssi0 = rt2x00_get_field32(rxwi_w2, RXWI_W2_RSSI0);
486 int rssi1 = rt2x00_get_field32(rxwi_w2, RXWI_W2_RSSI1);
487 int rssi2 = rt2x00_get_field32(rxwi_w2, RXWI_W2_RSSI2);
488 u16 eeprom;
489 u8 offset0;
490 u8 offset1;
491 u8 offset2;
492
493 if (rt2x00dev->rx_status.band == IEEE80211_BAND_2GHZ) {
494 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_BG, &eeprom);
495 offset0 = rt2x00_get_field16(eeprom, EEPROM_RSSI_BG_OFFSET0);
496 offset1 = rt2x00_get_field16(eeprom, EEPROM_RSSI_BG_OFFSET1);
497 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom);
498 offset2 = rt2x00_get_field16(eeprom, EEPROM_RSSI_BG2_OFFSET2);
499 } else {
500 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_A, &eeprom);
501 offset0 = rt2x00_get_field16(eeprom, EEPROM_RSSI_A_OFFSET0);
502 offset1 = rt2x00_get_field16(eeprom, EEPROM_RSSI_A_OFFSET1);
503 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom);
504 offset2 = rt2x00_get_field16(eeprom, EEPROM_RSSI_A2_OFFSET2);
505 }
506
507 /*
508 * Convert the value from the descriptor into the RSSI value
509 * If the value in the descriptor is 0, it is considered invalid
510 * and the default (extremely low) rssi value is assumed
511 */
512 rssi0 = (rssi0) ? (-12 - offset0 - rt2x00dev->lna_gain - rssi0) : -128;
513 rssi1 = (rssi1) ? (-12 - offset1 - rt2x00dev->lna_gain - rssi1) : -128;
514 rssi2 = (rssi2) ? (-12 - offset2 - rt2x00dev->lna_gain - rssi2) : -128;
515
516 /*
517 * mac80211 only accepts a single RSSI value. Calculating the
518 * average doesn't deliver a fair answer either since -60:-60 would
519 * be considered equally good as -50:-70 while the second is the one
520 * which gives less energy...
521 */
522 rssi0 = max(rssi0, rssi1);
523 return max(rssi0, rssi2);
524}
525
526void rt2800_process_rxwi(struct queue_entry *entry,
527 struct rxdone_entry_desc *rxdesc)
528{
529 __le32 *rxwi = (__le32 *) entry->skb->data;
331 u32 word; 530 u32 word;
332 531
333 rt2x00_desc_read(rxwi, 0, &word); 532 rt2x00_desc_read(rxwi, 0, &word);
@@ -358,14 +557,15 @@ void rt2800_process_rxwi(struct sk_buff *skb, struct rxdone_entry_desc *rxdesc)
358 557
359 rt2x00_desc_read(rxwi, 2, &word); 558 rt2x00_desc_read(rxwi, 2, &word);
360 559
361 rxdesc->rssi = 560 /*
362 (rt2x00_get_field32(word, RXWI_W2_RSSI0) + 561 * Convert descriptor AGC value to RSSI value.
363 rt2x00_get_field32(word, RXWI_W2_RSSI1)) / 2; 562 */
563 rxdesc->rssi = rt2800_agc_to_rssi(entry->queue->rt2x00dev, word);
364 564
365 /* 565 /*
366 * Remove RXWI descriptor from start of buffer. 566 * Remove RXWI descriptor from start of buffer.
367 */ 567 */
368 skb_pull(skb, RXWI_DESC_SIZE); 568 skb_pull(entry->skb, RXWI_DESC_SIZE);
369} 569}
370EXPORT_SYMBOL_GPL(rt2800_process_rxwi); 570EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
371 571
@@ -428,7 +628,7 @@ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
428 dev_kfree_skb_any(entry->skb); 628 dev_kfree_skb_any(entry->skb);
429 entry->skb = NULL; 629 entry->skb = NULL;
430} 630}
431EXPORT_SYMBOL(rt2800_write_beacon); 631EXPORT_SYMBOL_GPL(rt2800_write_beacon);
432 632
433static void inline rt2800_clear_beacon(struct rt2x00_dev *rt2x00dev, 633static void inline rt2800_clear_beacon(struct rt2x00_dev *rt2x00dev,
434 unsigned int beacon_base) 634 unsigned int beacon_base)
@@ -760,8 +960,18 @@ void rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf,
760 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_TICKING, 1); 960 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_TICKING, 1);
761 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_SYNC, conf->sync); 961 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_SYNC, conf->sync);
762 rt2x00_set_field32(&reg, BCN_TIME_CFG_TBTT_ENABLE, 962 rt2x00_set_field32(&reg, BCN_TIME_CFG_TBTT_ENABLE,
763 (conf->sync == TSF_SYNC_BEACON)); 963 (conf->sync == TSF_SYNC_ADHOC ||
964 conf->sync == TSF_SYNC_AP_NONE));
764 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); 965 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
966
967 /*
968 * Enable pre tbtt interrupt for beaconing modes
969 */
970 rt2800_register_read(rt2x00dev, INT_TIMER_EN, &reg);
971 rt2x00_set_field32(&reg, INT_TIMER_EN_PRE_TBTT_TIMER,
972 (conf->sync == TSF_SYNC_AP_NONE));
973 rt2800_register_write(rt2x00dev, INT_TIMER_EN, reg);
974
765 } 975 }
766 976
767 if (flags & CONFIG_UPDATE_MAC) { 977 if (flags & CONFIG_UPDATE_MAC) {
@@ -1086,66 +1296,115 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
1086} 1296}
1087 1297
1088static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev, 1298static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev,
1089 const int txpower) 1299 const int max_txpower)
1090{ 1300{
1301 u8 txpower;
1302 u8 max_value = (u8)max_txpower;
1303 u16 eeprom;
1304 int i;
1091 u32 reg; 1305 u32 reg;
1092 u32 value = TXPOWER_G_TO_DEV(txpower);
1093 u8 r1; 1306 u8 r1;
1307 u32 offset;
1094 1308
1309 /*
1310 * set to normal tx power mode: +/- 0dBm
1311 */
1095 rt2800_bbp_read(rt2x00dev, 1, &r1); 1312 rt2800_bbp_read(rt2x00dev, 1, &r1);
1096 rt2x00_set_field8(&r1, BBP1_TX_POWER, 0); 1313 rt2x00_set_field8(&r1, BBP1_TX_POWER, 0);
1097 rt2800_bbp_write(rt2x00dev, 1, r1); 1314 rt2800_bbp_write(rt2x00dev, 1, r1);
1098 1315
1099 rt2800_register_read(rt2x00dev, TX_PWR_CFG_0, &reg); 1316 /*
1100 rt2x00_set_field32(&reg, TX_PWR_CFG_0_1MBS, value); 1317 * The eeprom contains the tx power values for each rate. These
1101 rt2x00_set_field32(&reg, TX_PWR_CFG_0_2MBS, value); 1318 * values map to 100% tx power. Each 16bit word contains four tx
1102 rt2x00_set_field32(&reg, TX_PWR_CFG_0_55MBS, value); 1319 * power values and the order is the same as used in the TX_PWR_CFG
1103 rt2x00_set_field32(&reg, TX_PWR_CFG_0_11MBS, value); 1320 * registers.
1104 rt2x00_set_field32(&reg, TX_PWR_CFG_0_6MBS, value); 1321 */
1105 rt2x00_set_field32(&reg, TX_PWR_CFG_0_9MBS, value); 1322 offset = TX_PWR_CFG_0;
1106 rt2x00_set_field32(&reg, TX_PWR_CFG_0_12MBS, value); 1323
1107 rt2x00_set_field32(&reg, TX_PWR_CFG_0_18MBS, value); 1324 for (i = 0; i < EEPROM_TXPOWER_BYRATE_SIZE; i += 2) {
1108 rt2800_register_write(rt2x00dev, TX_PWR_CFG_0, reg); 1325 /* just to be safe */
1109 1326 if (offset > TX_PWR_CFG_4)
1110 rt2800_register_read(rt2x00dev, TX_PWR_CFG_1, &reg); 1327 break;
1111 rt2x00_set_field32(&reg, TX_PWR_CFG_1_24MBS, value); 1328
1112 rt2x00_set_field32(&reg, TX_PWR_CFG_1_36MBS, value); 1329 rt2800_register_read(rt2x00dev, offset, &reg);
1113 rt2x00_set_field32(&reg, TX_PWR_CFG_1_48MBS, value); 1330
1114 rt2x00_set_field32(&reg, TX_PWR_CFG_1_54MBS, value); 1331 /* read the next four txpower values */
1115 rt2x00_set_field32(&reg, TX_PWR_CFG_1_MCS0, value); 1332 rt2x00_eeprom_read(rt2x00dev, EEPROM_TXPOWER_BYRATE + i,
1116 rt2x00_set_field32(&reg, TX_PWR_CFG_1_MCS1, value); 1333 &eeprom);
1117 rt2x00_set_field32(&reg, TX_PWR_CFG_1_MCS2, value); 1334
1118 rt2x00_set_field32(&reg, TX_PWR_CFG_1_MCS3, value); 1335 /* TX_PWR_CFG_0: 1MBS, TX_PWR_CFG_1: 24MBS,
1119 rt2800_register_write(rt2x00dev, TX_PWR_CFG_1, reg); 1336 * TX_PWR_CFG_2: MCS4, TX_PWR_CFG_3: MCS12,
1120 1337 * TX_PWR_CFG_4: unknown */
1121 rt2800_register_read(rt2x00dev, TX_PWR_CFG_2, &reg); 1338 txpower = rt2x00_get_field16(eeprom,
1122 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS4, value); 1339 EEPROM_TXPOWER_BYRATE_RATE0);
1123 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS5, value); 1340 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE0,
1124 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS6, value); 1341 min(txpower, max_value));
1125 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS7, value); 1342
1126 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS8, value); 1343 /* TX_PWR_CFG_0: 2MBS, TX_PWR_CFG_1: 36MBS,
1127 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS9, value); 1344 * TX_PWR_CFG_2: MCS5, TX_PWR_CFG_3: MCS13,
1128 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS10, value); 1345 * TX_PWR_CFG_4: unknown */
1129 rt2x00_set_field32(&reg, TX_PWR_CFG_2_MCS11, value); 1346 txpower = rt2x00_get_field16(eeprom,
1130 rt2800_register_write(rt2x00dev, TX_PWR_CFG_2, reg); 1347 EEPROM_TXPOWER_BYRATE_RATE1);
1131 1348 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE1,
1132 rt2800_register_read(rt2x00dev, TX_PWR_CFG_3, &reg); 1349 min(txpower, max_value));
1133 rt2x00_set_field32(&reg, TX_PWR_CFG_3_MCS12, value); 1350
1134 rt2x00_set_field32(&reg, TX_PWR_CFG_3_MCS13, value); 1351 /* TX_PWR_CFG_0: 55MBS, TX_PWR_CFG_1: 48MBS,
1135 rt2x00_set_field32(&reg, TX_PWR_CFG_3_MCS14, value); 1352 * TX_PWR_CFG_2: MCS6, TX_PWR_CFG_3: MCS14,
1136 rt2x00_set_field32(&reg, TX_PWR_CFG_3_MCS15, value); 1353 * TX_PWR_CFG_4: unknown */
1137 rt2x00_set_field32(&reg, TX_PWR_CFG_3_UKNOWN1, value); 1354 txpower = rt2x00_get_field16(eeprom,
1138 rt2x00_set_field32(&reg, TX_PWR_CFG_3_UKNOWN2, value); 1355 EEPROM_TXPOWER_BYRATE_RATE2);
1139 rt2x00_set_field32(&reg, TX_PWR_CFG_3_UKNOWN3, value); 1356 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE2,
1140 rt2x00_set_field32(&reg, TX_PWR_CFG_3_UKNOWN4, value); 1357 min(txpower, max_value));
1141 rt2800_register_write(rt2x00dev, TX_PWR_CFG_3, reg); 1358
1142 1359 /* TX_PWR_CFG_0: 11MBS, TX_PWR_CFG_1: 54MBS,
1143 rt2800_register_read(rt2x00dev, TX_PWR_CFG_4, &reg); 1360 * TX_PWR_CFG_2: MCS7, TX_PWR_CFG_3: MCS15,
1144 rt2x00_set_field32(&reg, TX_PWR_CFG_4_UKNOWN5, value); 1361 * TX_PWR_CFG_4: unknown */
1145 rt2x00_set_field32(&reg, TX_PWR_CFG_4_UKNOWN6, value); 1362 txpower = rt2x00_get_field16(eeprom,
1146 rt2x00_set_field32(&reg, TX_PWR_CFG_4_UKNOWN7, value); 1363 EEPROM_TXPOWER_BYRATE_RATE3);
1147 rt2x00_set_field32(&reg, TX_PWR_CFG_4_UKNOWN8, value); 1364 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE3,
1148 rt2800_register_write(rt2x00dev, TX_PWR_CFG_4, reg); 1365 min(txpower, max_value));
1366
1367 /* read the next four txpower values */
1368 rt2x00_eeprom_read(rt2x00dev, EEPROM_TXPOWER_BYRATE + i + 1,
1369 &eeprom);
1370
1371 /* TX_PWR_CFG_0: 6MBS, TX_PWR_CFG_1: MCS0,
1372 * TX_PWR_CFG_2: MCS8, TX_PWR_CFG_3: unknown,
1373 * TX_PWR_CFG_4: unknown */
1374 txpower = rt2x00_get_field16(eeprom,
1375 EEPROM_TXPOWER_BYRATE_RATE0);
1376 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE4,
1377 min(txpower, max_value));
1378
1379 /* TX_PWR_CFG_0: 9MBS, TX_PWR_CFG_1: MCS1,
1380 * TX_PWR_CFG_2: MCS9, TX_PWR_CFG_3: unknown,
1381 * TX_PWR_CFG_4: unknown */
1382 txpower = rt2x00_get_field16(eeprom,
1383 EEPROM_TXPOWER_BYRATE_RATE1);
1384 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE5,
1385 min(txpower, max_value));
1386
1387 /* TX_PWR_CFG_0: 12MBS, TX_PWR_CFG_1: MCS2,
1388 * TX_PWR_CFG_2: MCS10, TX_PWR_CFG_3: unknown,
1389 * TX_PWR_CFG_4: unknown */
1390 txpower = rt2x00_get_field16(eeprom,
1391 EEPROM_TXPOWER_BYRATE_RATE2);
1392 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE6,
1393 min(txpower, max_value));
1394
1395 /* TX_PWR_CFG_0: 18MBS, TX_PWR_CFG_1: MCS3,
1396 * TX_PWR_CFG_2: MCS11, TX_PWR_CFG_3: unknown,
1397 * TX_PWR_CFG_4: unknown */
1398 txpower = rt2x00_get_field16(eeprom,
1399 EEPROM_TXPOWER_BYRATE_RATE3);
1400 rt2x00_set_field32(&reg, TX_PWR_CFG_RATE7,
1401 min(txpower, max_value));
1402
1403 rt2800_register_write(rt2x00dev, offset, reg);
1404
1405 /* next TX_PWR_CFG register */
1406 offset += 4;
1407 }
1149} 1408}
1150 1409
1151static void rt2800_config_retry_limit(struct rt2x00_dev *rt2x00dev, 1410static void rt2800_config_retry_limit(struct rt2x00_dev *rt2x00dev,
@@ -1316,7 +1575,7 @@ int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
1316 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000); 1575 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000);
1317 1576
1318 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg); 1577 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg);
1319 rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_INTERVAL, 0); 1578 rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_INTERVAL, 1600);
1320 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_TICKING, 0); 1579 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_TICKING, 0);
1321 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_SYNC, 0); 1580 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_SYNC, 0);
1322 rt2x00_set_field32(&reg, BCN_TIME_CFG_TBTT_ENABLE, 0); 1581 rt2x00_set_field32(&reg, BCN_TIME_CFG_TBTT_ENABLE, 0);
@@ -1638,6 +1897,13 @@ int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
1638 rt2800_register_read(rt2x00dev, TX_STA_CNT1, &reg); 1897 rt2800_register_read(rt2x00dev, TX_STA_CNT1, &reg);
1639 rt2800_register_read(rt2x00dev, TX_STA_CNT2, &reg); 1898 rt2800_register_read(rt2x00dev, TX_STA_CNT2, &reg);
1640 1899
1900 /*
1901 * Setup leadtime for pre tbtt interrupt to 6ms
1902 */
1903 rt2800_register_read(rt2x00dev, INT_TIMER_CFG, &reg);
1904 rt2x00_set_field32(&reg, INT_TIMER_CFG_PRE_TBTT_TIMER, 6 << 4);
1905 rt2800_register_write(rt2x00dev, INT_TIMER_CFG, reg);
1906
1641 return 0; 1907 return 0;
1642} 1908}
1643EXPORT_SYMBOL_GPL(rt2800_init_registers); 1909EXPORT_SYMBOL_GPL(rt2800_init_registers);
@@ -2630,8 +2896,8 @@ EXPORT_SYMBOL_GPL(rt2800_probe_hw_mode);
2630/* 2896/*
2631 * IEEE80211 stack callback functions. 2897 * IEEE80211 stack callback functions.
2632 */ 2898 */
2633static void rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx, 2899void rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx, u32 *iv32,
2634 u32 *iv32, u16 *iv16) 2900 u16 *iv16)
2635{ 2901{
2636 struct rt2x00_dev *rt2x00dev = hw->priv; 2902 struct rt2x00_dev *rt2x00dev = hw->priv;
2637 struct mac_iveiv_entry iveiv_entry; 2903 struct mac_iveiv_entry iveiv_entry;
@@ -2644,8 +2910,9 @@ static void rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx,
2644 memcpy(iv16, &iveiv_entry.iv[0], sizeof(*iv16)); 2910 memcpy(iv16, &iveiv_entry.iv[0], sizeof(*iv16));
2645 memcpy(iv32, &iveiv_entry.iv[4], sizeof(*iv32)); 2911 memcpy(iv32, &iveiv_entry.iv[4], sizeof(*iv32));
2646} 2912}
2913EXPORT_SYMBOL_GPL(rt2800_get_tkip_seq);
2647 2914
2648static int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value) 2915int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
2649{ 2916{
2650 struct rt2x00_dev *rt2x00dev = hw->priv; 2917 struct rt2x00_dev *rt2x00dev = hw->priv;
2651 u32 reg; 2918 u32 reg;
@@ -2681,9 +2948,10 @@ static int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
2681 2948
2682 return 0; 2949 return 0;
2683} 2950}
2951EXPORT_SYMBOL_GPL(rt2800_set_rts_threshold);
2684 2952
2685static int rt2800_conf_tx(struct ieee80211_hw *hw, u16 queue_idx, 2953int rt2800_conf_tx(struct ieee80211_hw *hw, u16 queue_idx,
2686 const struct ieee80211_tx_queue_params *params) 2954 const struct ieee80211_tx_queue_params *params)
2687{ 2955{
2688 struct rt2x00_dev *rt2x00dev = hw->priv; 2956 struct rt2x00_dev *rt2x00dev = hw->priv;
2689 struct data_queue *queue; 2957 struct data_queue *queue;
@@ -2748,8 +3016,9 @@ static int rt2800_conf_tx(struct ieee80211_hw *hw, u16 queue_idx,
2748 3016
2749 return 0; 3017 return 0;
2750} 3018}
3019EXPORT_SYMBOL_GPL(rt2800_conf_tx);
2751 3020
2752static u64 rt2800_get_tsf(struct ieee80211_hw *hw) 3021u64 rt2800_get_tsf(struct ieee80211_hw *hw)
2753{ 3022{
2754 struct rt2x00_dev *rt2x00dev = hw->priv; 3023 struct rt2x00_dev *rt2x00dev = hw->priv;
2755 u64 tsf; 3024 u64 tsf;
@@ -2762,12 +3031,11 @@ static u64 rt2800_get_tsf(struct ieee80211_hw *hw)
2762 3031
2763 return tsf; 3032 return tsf;
2764} 3033}
3034EXPORT_SYMBOL_GPL(rt2800_get_tsf);
2765 3035
2766static int rt2800_ampdu_action(struct ieee80211_hw *hw, 3036int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2767 struct ieee80211_vif *vif, 3037 enum ieee80211_ampdu_mlme_action action,
2768 enum ieee80211_ampdu_mlme_action action, 3038 struct ieee80211_sta *sta, u16 tid, u16 *ssn)
2769 struct ieee80211_sta *sta,
2770 u16 tid, u16 *ssn)
2771{ 3039{
2772 int ret = 0; 3040 int ret = 0;
2773 3041
@@ -2791,27 +3059,7 @@ static int rt2800_ampdu_action(struct ieee80211_hw *hw,
2791 3059
2792 return ret; 3060 return ret;
2793} 3061}
2794 3062EXPORT_SYMBOL_GPL(rt2800_ampdu_action);
2795const struct ieee80211_ops rt2800_mac80211_ops = {
2796 .tx = rt2x00mac_tx,
2797 .start = rt2x00mac_start,
2798 .stop = rt2x00mac_stop,
2799 .add_interface = rt2x00mac_add_interface,
2800 .remove_interface = rt2x00mac_remove_interface,
2801 .config = rt2x00mac_config,
2802 .configure_filter = rt2x00mac_configure_filter,
2803 .set_tim = rt2x00mac_set_tim,
2804 .set_key = rt2x00mac_set_key,
2805 .get_stats = rt2x00mac_get_stats,
2806 .get_tkip_seq = rt2800_get_tkip_seq,
2807 .set_rts_threshold = rt2800_set_rts_threshold,
2808 .bss_info_changed = rt2x00mac_bss_info_changed,
2809 .conf_tx = rt2800_conf_tx,
2810 .get_tsf = rt2800_get_tsf,
2811 .rfkill_poll = rt2x00mac_rfkill_poll,
2812 .ampdu_action = rt2800_ampdu_action,
2813};
2814EXPORT_SYMBOL_GPL(rt2800_mac80211_ops);
2815 3063
2816MODULE_AUTHOR(DRV_PROJECT ", Bartlomiej Zolnierkiewicz"); 3064MODULE_AUTHOR(DRV_PROJECT ", Bartlomiej Zolnierkiewicz");
2817MODULE_VERSION(DRV_VERSION); 3065MODULE_VERSION(DRV_VERSION);
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.h b/drivers/net/wireless/rt2x00/rt2800lib.h
index 8313dbf441a..091641e3c5e 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
@@ -41,6 +41,8 @@ struct rt2800_ops {
41 const unsigned int offset, 41 const unsigned int offset,
42 const struct rt2x00_field32 field, u32 *reg); 42 const struct rt2x00_field32 field, u32 *reg);
43 43
44 int (*drv_write_firmware)(struct rt2x00_dev *rt2x00dev,
45 const u8 *data, const size_t len);
44 int (*drv_init_registers)(struct rt2x00_dev *rt2x00dev); 46 int (*drv_init_registers)(struct rt2x00_dev *rt2x00dev);
45}; 47};
46 48
@@ -48,7 +50,7 @@ static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev,
48 const unsigned int offset, 50 const unsigned int offset,
49 u32 *value) 51 u32 *value)
50{ 52{
51 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 53 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
52 54
53 rt2800ops->register_read(rt2x00dev, offset, value); 55 rt2800ops->register_read(rt2x00dev, offset, value);
54} 56}
@@ -57,7 +59,7 @@ static inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev,
57 const unsigned int offset, 59 const unsigned int offset,
58 u32 *value) 60 u32 *value)
59{ 61{
60 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 62 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
61 63
62 rt2800ops->register_read_lock(rt2x00dev, offset, value); 64 rt2800ops->register_read_lock(rt2x00dev, offset, value);
63} 65}
@@ -66,7 +68,7 @@ static inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev,
66 const unsigned int offset, 68 const unsigned int offset,
67 u32 value) 69 u32 value)
68{ 70{
69 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 71 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
70 72
71 rt2800ops->register_write(rt2x00dev, offset, value); 73 rt2800ops->register_write(rt2x00dev, offset, value);
72} 74}
@@ -75,7 +77,7 @@ static inline void rt2800_register_write_lock(struct rt2x00_dev *rt2x00dev,
75 const unsigned int offset, 77 const unsigned int offset,
76 u32 value) 78 u32 value)
77{ 79{
78 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 80 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
79 81
80 rt2800ops->register_write_lock(rt2x00dev, offset, value); 82 rt2800ops->register_write_lock(rt2x00dev, offset, value);
81} 83}
@@ -84,7 +86,7 @@ static inline void rt2800_register_multiread(struct rt2x00_dev *rt2x00dev,
84 const unsigned int offset, 86 const unsigned int offset,
85 void *value, const u32 length) 87 void *value, const u32 length)
86{ 88{
87 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 89 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
88 90
89 rt2800ops->register_multiread(rt2x00dev, offset, value, length); 91 rt2800ops->register_multiread(rt2x00dev, offset, value, length);
90} 92}
@@ -94,7 +96,7 @@ static inline void rt2800_register_multiwrite(struct rt2x00_dev *rt2x00dev,
94 const void *value, 96 const void *value,
95 const u32 length) 97 const u32 length)
96{ 98{
97 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 99 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
98 100
99 rt2800ops->register_multiwrite(rt2x00dev, offset, value, length); 101 rt2800ops->register_multiwrite(rt2x00dev, offset, value, length);
100} 102}
@@ -104,14 +106,22 @@ static inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev,
104 const struct rt2x00_field32 field, 106 const struct rt2x00_field32 field,
105 u32 *reg) 107 u32 *reg)
106{ 108{
107 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 109 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
108 110
109 return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg); 111 return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg);
110} 112}
111 113
114static inline int rt2800_drv_write_firmware(struct rt2x00_dev *rt2x00dev,
115 const u8 *data, const size_t len)
116{
117 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
118
119 return rt2800ops->drv_write_firmware(rt2x00dev, data, len);
120}
121
112static inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev) 122static inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev)
113{ 123{
114 const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 124 const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
115 125
116 return rt2800ops->drv_init_registers(rt2x00dev); 126 return rt2800ops->drv_init_registers(rt2x00dev);
117} 127}
@@ -120,8 +130,13 @@ void rt2800_mcu_request(struct rt2x00_dev *rt2x00dev,
120 const u8 command, const u8 token, 130 const u8 command, const u8 token,
121 const u8 arg0, const u8 arg1); 131 const u8 arg0, const u8 arg1);
122 132
133int rt2800_check_firmware(struct rt2x00_dev *rt2x00dev,
134 const u8 *data, const size_t len);
135int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
136 const u8 *data, const size_t len);
137
123void rt2800_write_txwi(__le32 *txwi, struct txentry_desc *txdesc); 138void rt2800_write_txwi(__le32 *txwi, struct txentry_desc *txdesc);
124void rt2800_process_rxwi(struct sk_buff *skb, struct rxdone_entry_desc *txdesc); 139void rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *txdesc);
125 140
126void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc); 141void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc);
127 142
@@ -159,6 +174,14 @@ int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev);
159int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev); 174int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev);
160int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev); 175int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev);
161 176
162extern const struct ieee80211_ops rt2800_mac80211_ops; 177void rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx, u32 *iv32,
178 u16 *iv16);
179int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
180int rt2800_conf_tx(struct ieee80211_hw *hw, u16 queue_idx,
181 const struct ieee80211_tx_queue_params *params);
182u64 rt2800_get_tsf(struct ieee80211_hw *hw);
183int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
184 enum ieee80211_ampdu_mlme_action action,
185 struct ieee80211_sta *sta, u16 tid, u16 *ssn);
163 186
164#endif /* RT2800LIB_H */ 187#endif /* RT2800LIB_H */
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 6f11760117d..39b3846fa34 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -31,7 +31,6 @@
31 Supported chipsets: RT2800E & RT2800ED. 31 Supported chipsets: RT2800E & RT2800ED.
32 */ 32 */
33 33
34#include <linux/crc-ccitt.h>
35#include <linux/delay.h> 34#include <linux/delay.h>
36#include <linux/etherdevice.h> 35#include <linux/etherdevice.h>
37#include <linux/init.h> 36#include <linux/init.h>
@@ -192,82 +191,14 @@ static char *rt2800pci_get_firmware_name(struct rt2x00_dev *rt2x00dev)
192 return FIRMWARE_RT2860; 191 return FIRMWARE_RT2860;
193} 192}
194 193
195static int rt2800pci_check_firmware(struct rt2x00_dev *rt2x00dev, 194static int rt2800pci_write_firmware(struct rt2x00_dev *rt2x00dev,
196 const u8 *data, const size_t len) 195 const u8 *data, const size_t len)
197{ 196{
198 u16 fw_crc;
199 u16 crc;
200
201 /*
202 * Only support 8kb firmware files.
203 */
204 if (len != 8192)
205 return FW_BAD_LENGTH;
206
207 /*
208 * The last 2 bytes in the firmware array are the crc checksum itself,
209 * this means that we should never pass those 2 bytes to the crc
210 * algorithm.
211 */
212 fw_crc = (data[len - 2] << 8 | data[len - 1]);
213
214 /*
215 * Use the crc ccitt algorithm.
216 * This will return the same value as the legacy driver which
217 * used bit ordering reversion on the both the firmware bytes
218 * before input input as well as on the final output.
219 * Obviously using crc ccitt directly is much more efficient.
220 */
221 crc = crc_ccitt(~0, data, len - 2);
222
223 /*
224 * There is a small difference between the crc-itu-t + bitrev and
225 * the crc-ccitt crc calculation. In the latter method the 2 bytes
226 * will be swapped, use swab16 to convert the crc to the correct
227 * value.
228 */
229 crc = swab16(crc);
230
231 return (fw_crc == crc) ? FW_OK : FW_BAD_CRC;
232}
233
234static int rt2800pci_load_firmware(struct rt2x00_dev *rt2x00dev,
235 const u8 *data, const size_t len)
236{
237 unsigned int i;
238 u32 reg; 197 u32 reg;
239 198
240 /*
241 * Wait for stable hardware.
242 */
243 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
244 rt2800_register_read(rt2x00dev, MAC_CSR0, &reg);
245 if (reg && reg != ~0)
246 break;
247 msleep(1);
248 }
249
250 if (i == REGISTER_BUSY_COUNT) {
251 ERROR(rt2x00dev, "Unstable hardware.\n");
252 return -EBUSY;
253 }
254
255 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000002);
256 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0x00000000); 199 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0x00000000);
257 200
258 /* 201 /*
259 * Disable DMA, will be reenabled later when enabling
260 * the radio.
261 */
262 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
263 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
264 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_DMA_BUSY, 0);
265 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0);
266 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_RX_DMA_BUSY, 0);
267 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
268 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
269
270 /*
271 * enable Host program ram write selection 202 * enable Host program ram write selection
272 */ 203 */
273 reg = 0; 204 reg = 0;
@@ -278,34 +209,11 @@ static int rt2800pci_load_firmware(struct rt2x00_dev *rt2x00dev,
278 * Write firmware to device. 209 * Write firmware to device.
279 */ 210 */
280 rt2800_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, 211 rt2800_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE,
281 data, len); 212 data, len);
282 213
283 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000); 214 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000);
284 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001); 215 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001);
285 216
286 /*
287 * Wait for device to stabilize.
288 */
289 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
290 rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, &reg);
291 if (rt2x00_get_field32(reg, PBF_SYS_CTRL_READY))
292 break;
293 msleep(1);
294 }
295
296 if (i == REGISTER_BUSY_COUNT) {
297 ERROR(rt2x00dev, "PBF system register not ready.\n");
298 return -EBUSY;
299 }
300
301 /*
302 * Disable interrupts
303 */
304 rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_IRQ_OFF);
305
306 /*
307 * Initialize BBP R/W access agent
308 */
309 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); 217 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0);
310 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); 218 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
311 219
@@ -422,7 +330,8 @@ static void rt2800pci_toggle_rx(struct rt2x00_dev *rt2x00dev,
422static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev, 330static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
423 enum dev_state state) 331 enum dev_state state)
424{ 332{
425 int mask = (state == STATE_RADIO_IRQ_ON); 333 int mask = (state == STATE_RADIO_IRQ_ON) ||
334 (state == STATE_RADIO_IRQ_ON_ISR);
426 u32 reg; 335 u32 reg;
427 336
428 /* 337 /*
@@ -631,7 +540,9 @@ static int rt2800pci_set_device_state(struct rt2x00_dev *rt2x00dev,
631 rt2800pci_toggle_rx(rt2x00dev, state); 540 rt2800pci_toggle_rx(rt2x00dev, state);
632 break; 541 break;
633 case STATE_RADIO_IRQ_ON: 542 case STATE_RADIO_IRQ_ON:
543 case STATE_RADIO_IRQ_ON_ISR:
634 case STATE_RADIO_IRQ_OFF: 544 case STATE_RADIO_IRQ_OFF:
545 case STATE_RADIO_IRQ_OFF_ISR:
635 rt2800pci_toggle_irq(rt2x00dev, state); 546 rt2800pci_toggle_irq(rt2x00dev, state);
636 break; 547 break;
637 case STATE_DEEP_SLEEP: 548 case STATE_DEEP_SLEEP:
@@ -805,7 +716,7 @@ static void rt2800pci_fill_rxdone(struct queue_entry *entry,
805 /* 716 /*
806 * Process the RXWI structure that is at the start of the buffer. 717 * Process the RXWI structure that is at the start of the buffer.
807 */ 718 */
808 rt2800_process_rxwi(entry->skb, rxdesc); 719 rt2800_process_rxwi(entry, rxdesc);
809 720
810 /* 721 /*
811 * Set RX IDX in register to inform hardware that we have handled 722 * Set RX IDX in register to inform hardware that we have handled
@@ -929,42 +840,74 @@ static void rt2800pci_wakeup(struct rt2x00_dev *rt2x00dev)
929 rt2800_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); 840 rt2800_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS);
930} 841}
931 842
932static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance) 843static irqreturn_t rt2800pci_interrupt_thread(int irq, void *dev_instance)
933{ 844{
934 struct rt2x00_dev *rt2x00dev = dev_instance; 845 struct rt2x00_dev *rt2x00dev = dev_instance;
935 u32 reg; 846 u32 reg = rt2x00dev->irqvalue[0];
936
937 /* Read status and ACK all interrupts */
938 rt2800_register_read(rt2x00dev, INT_SOURCE_CSR, &reg);
939 rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
940 847
941 if (!reg) 848 /*
942 return IRQ_NONE; 849 * 1 - Pre TBTT interrupt.
850 */
851 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_PRE_TBTT))
852 rt2x00lib_pretbtt(rt2x00dev);
943 853
944 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) 854 /*
945 return IRQ_HANDLED; 855 * 2 - Beacondone interrupt.
856 */
857 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TBTT))
858 rt2x00lib_beacondone(rt2x00dev);
946 859
947 /* 860 /*
948 * 1 - Rx ring done interrupt. 861 * 3 - Rx ring done interrupt.
949 */ 862 */
950 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_RX_DONE)) 863 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_RX_DONE))
951 rt2x00pci_rxdone(rt2x00dev); 864 rt2x00pci_rxdone(rt2x00dev);
952 865
866 /*
867 * 4 - Tx done interrupt.
868 */
953 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) 869 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS))
954 rt2800pci_txdone(rt2x00dev); 870 rt2800pci_txdone(rt2x00dev);
955 871
956 /* 872 /*
957 * Current beacon was sent out, fetch the next one 873 * 5 - Auto wakeup interrupt.
958 */ 874 */
959 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TBTT))
960 rt2x00lib_beacondone(rt2x00dev);
961
962 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_AUTO_WAKEUP)) 875 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_AUTO_WAKEUP))
963 rt2800pci_wakeup(rt2x00dev); 876 rt2800pci_wakeup(rt2x00dev);
964 877
878 /* Enable interrupts again. */
879 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
880 STATE_RADIO_IRQ_ON_ISR);
881
965 return IRQ_HANDLED; 882 return IRQ_HANDLED;
966} 883}
967 884
885static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance)
886{
887 struct rt2x00_dev *rt2x00dev = dev_instance;
888 u32 reg;
889
890 /* Read status and ACK all interrupts */
891 rt2800_register_read(rt2x00dev, INT_SOURCE_CSR, &reg);
892 rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
893
894 if (!reg)
895 return IRQ_NONE;
896
897 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
898 return IRQ_HANDLED;
899
900 /* Store irqvalue for use in the interrupt thread. */
901 rt2x00dev->irqvalue[0] = reg;
902
903 /* Disable interrupts, will be enabled again in the interrupt thread. */
904 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
905 STATE_RADIO_IRQ_OFF_ISR);
906
907
908 return IRQ_WAKE_THREAD;
909}
910
968/* 911/*
969 * Device probe functions. 912 * Device probe functions.
970 */ 913 */
@@ -983,26 +926,10 @@ static int rt2800pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
983 return rt2800_validate_eeprom(rt2x00dev); 926 return rt2800_validate_eeprom(rt2x00dev);
984} 927}
985 928
986static const struct rt2800_ops rt2800pci_rt2800_ops = {
987 .register_read = rt2x00pci_register_read,
988 .register_read_lock = rt2x00pci_register_read, /* same for PCI */
989 .register_write = rt2x00pci_register_write,
990 .register_write_lock = rt2x00pci_register_write, /* same for PCI */
991
992 .register_multiread = rt2x00pci_register_multiread,
993 .register_multiwrite = rt2x00pci_register_multiwrite,
994
995 .regbusy_read = rt2x00pci_regbusy_read,
996
997 .drv_init_registers = rt2800pci_init_registers,
998};
999
1000static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev) 929static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
1001{ 930{
1002 int retval; 931 int retval;
1003 932
1004 rt2x00dev->priv = (void *)&rt2800pci_rt2800_ops;
1005
1006 /* 933 /*
1007 * Allocate eeprom data. 934 * Allocate eeprom data.
1008 */ 935 */
@@ -1029,6 +956,12 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
1029 __set_bit(DRIVER_SUPPORT_CONTROL_FILTER_PSPOLL, &rt2x00dev->flags); 956 __set_bit(DRIVER_SUPPORT_CONTROL_FILTER_PSPOLL, &rt2x00dev->flags);
1030 957
1031 /* 958 /*
959 * This device has a pre tbtt interrupt and thus fetches
960 * a new beacon directly prior to transmission.
961 */
962 __set_bit(DRIVER_SUPPORT_PRE_TBTT_INTERRUPT, &rt2x00dev->flags);
963
964 /*
1032 * This device requires firmware. 965 * This device requires firmware.
1033 */ 966 */
1034 if (!rt2x00_is_soc(rt2x00dev)) 967 if (!rt2x00_is_soc(rt2x00dev))
@@ -1037,6 +970,7 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
1037 __set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags); 970 __set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags);
1038 if (!modparam_nohwcrypt) 971 if (!modparam_nohwcrypt)
1039 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags); 972 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
973 __set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
1040 974
1041 /* 975 /*
1042 * Set the rssi offset. 976 * Set the rssi offset.
@@ -1046,12 +980,46 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
1046 return 0; 980 return 0;
1047} 981}
1048 982
983static const struct ieee80211_ops rt2800pci_mac80211_ops = {
984 .tx = rt2x00mac_tx,
985 .start = rt2x00mac_start,
986 .stop = rt2x00mac_stop,
987 .add_interface = rt2x00mac_add_interface,
988 .remove_interface = rt2x00mac_remove_interface,
989 .config = rt2x00mac_config,
990 .configure_filter = rt2x00mac_configure_filter,
991 .set_key = rt2x00mac_set_key,
992 .sw_scan_start = rt2x00mac_sw_scan_start,
993 .sw_scan_complete = rt2x00mac_sw_scan_complete,
994 .get_stats = rt2x00mac_get_stats,
995 .get_tkip_seq = rt2800_get_tkip_seq,
996 .set_rts_threshold = rt2800_set_rts_threshold,
997 .bss_info_changed = rt2x00mac_bss_info_changed,
998 .conf_tx = rt2800_conf_tx,
999 .get_tsf = rt2800_get_tsf,
1000 .rfkill_poll = rt2x00mac_rfkill_poll,
1001 .ampdu_action = rt2800_ampdu_action,
1002};
1003
1004static const struct rt2800_ops rt2800pci_rt2800_ops = {
1005 .register_read = rt2x00pci_register_read,
1006 .register_read_lock = rt2x00pci_register_read, /* same for PCI */
1007 .register_write = rt2x00pci_register_write,
1008 .register_write_lock = rt2x00pci_register_write, /* same for PCI */
1009 .register_multiread = rt2x00pci_register_multiread,
1010 .register_multiwrite = rt2x00pci_register_multiwrite,
1011 .regbusy_read = rt2x00pci_regbusy_read,
1012 .drv_write_firmware = rt2800pci_write_firmware,
1013 .drv_init_registers = rt2800pci_init_registers,
1014};
1015
1049static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = { 1016static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = {
1050 .irq_handler = rt2800pci_interrupt, 1017 .irq_handler = rt2800pci_interrupt,
1018 .irq_handler_thread = rt2800pci_interrupt_thread,
1051 .probe_hw = rt2800pci_probe_hw, 1019 .probe_hw = rt2800pci_probe_hw,
1052 .get_firmware_name = rt2800pci_get_firmware_name, 1020 .get_firmware_name = rt2800pci_get_firmware_name,
1053 .check_firmware = rt2800pci_check_firmware, 1021 .check_firmware = rt2800_check_firmware,
1054 .load_firmware = rt2800pci_load_firmware, 1022 .load_firmware = rt2800_load_firmware,
1055 .initialize = rt2x00pci_initialize, 1023 .initialize = rt2x00pci_initialize,
1056 .uninitialize = rt2x00pci_uninitialize, 1024 .uninitialize = rt2x00pci_uninitialize,
1057 .get_entry_state = rt2800pci_get_entry_state, 1025 .get_entry_state = rt2800pci_get_entry_state,
@@ -1109,7 +1077,8 @@ static const struct rt2x00_ops rt2800pci_ops = {
1109 .tx = &rt2800pci_queue_tx, 1077 .tx = &rt2800pci_queue_tx,
1110 .bcn = &rt2800pci_queue_bcn, 1078 .bcn = &rt2800pci_queue_bcn,
1111 .lib = &rt2800pci_rt2x00_ops, 1079 .lib = &rt2800pci_rt2x00_ops,
1112 .hw = &rt2800_mac80211_ops, 1080 .drv = &rt2800pci_rt2800_ops,
1081 .hw = &rt2800pci_mac80211_ops,
1113#ifdef CONFIG_RT2X00_LIB_DEBUGFS 1082#ifdef CONFIG_RT2X00_LIB_DEBUGFS
1114 .debugfs = &rt2800_rt2x00debug, 1083 .debugfs = &rt2800_rt2x00debug,
1115#endif /* CONFIG_RT2X00_LIB_DEBUGFS */ 1084#endif /* CONFIG_RT2X00_LIB_DEBUGFS */
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 4f85f7b4244..5a2dfe87c6b 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -28,7 +28,6 @@
28 Supported chipsets: RT2800U. 28 Supported chipsets: RT2800U.
29 */ 29 */
30 30
31#include <linux/crc-ccitt.h>
32#include <linux/delay.h> 31#include <linux/delay.h>
33#include <linux/etherdevice.h> 32#include <linux/etherdevice.h>
34#include <linux/init.h> 33#include <linux/init.h>
@@ -57,84 +56,10 @@ static char *rt2800usb_get_firmware_name(struct rt2x00_dev *rt2x00dev)
57 return FIRMWARE_RT2870; 56 return FIRMWARE_RT2870;
58} 57}
59 58
60static bool rt2800usb_check_crc(const u8 *data, const size_t len) 59static int rt2800usb_write_firmware(struct rt2x00_dev *rt2x00dev,
61{
62 u16 fw_crc;
63 u16 crc;
64
65 /*
66 * The last 2 bytes in the firmware array are the crc checksum itself,
67 * this means that we should never pass those 2 bytes to the crc
68 * algorithm.
69 */
70 fw_crc = (data[len - 2] << 8 | data[len - 1]);
71
72 /*
73 * Use the crc ccitt algorithm.
74 * This will return the same value as the legacy driver which
75 * used bit ordering reversion on the both the firmware bytes
76 * before input input as well as on the final output.
77 * Obviously using crc ccitt directly is much more efficient.
78 */
79 crc = crc_ccitt(~0, data, len - 2);
80
81 /*
82 * There is a small difference between the crc-itu-t + bitrev and
83 * the crc-ccitt crc calculation. In the latter method the 2 bytes
84 * will be swapped, use swab16 to convert the crc to the correct
85 * value.
86 */
87 crc = swab16(crc);
88
89 return fw_crc == crc;
90}
91
92static int rt2800usb_check_firmware(struct rt2x00_dev *rt2x00dev,
93 const u8 *data, const size_t len) 60 const u8 *data, const size_t len)
94{ 61{
95 size_t offset = 0;
96
97 /*
98 * Firmware files:
99 * There are 2 variations of the rt2870 firmware.
100 * a) size: 4kb
101 * b) size: 8kb
102 * Note that (b) contains 2 separate firmware blobs of 4k
103 * within the file. The first blob is the same firmware as (a),
104 * but the second blob is for the additional chipsets.
105 */
106 if (len != 4096 && len != 8192)
107 return FW_BAD_LENGTH;
108
109 /*
110 * Check if we need the upper 4kb firmware data or not.
111 */
112 if ((len == 4096) &&
113 !rt2x00_rt(rt2x00dev, RT2860) &&
114 !rt2x00_rt(rt2x00dev, RT2872) &&
115 !rt2x00_rt(rt2x00dev, RT3070))
116 return FW_BAD_VERSION;
117
118 /*
119 * 8kb firmware files must be checked as if it were
120 * 2 separate firmware files.
121 */
122 while (offset < len) {
123 if (!rt2800usb_check_crc(data + offset, 4096))
124 return FW_BAD_CRC;
125
126 offset += 4096;
127 }
128
129 return FW_OK;
130}
131
132static int rt2800usb_load_firmware(struct rt2x00_dev *rt2x00dev,
133 const u8 *data, const size_t len)
134{
135 unsigned int i;
136 int status; 62 int status;
137 u32 reg;
138 u32 offset; 63 u32 offset;
139 u32 length; 64 u32 length;
140 65
@@ -152,21 +77,6 @@ static int rt2800usb_load_firmware(struct rt2x00_dev *rt2x00dev,
152 } 77 }
153 78
154 /* 79 /*
155 * Wait for stable hardware.
156 */
157 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
158 rt2800_register_read(rt2x00dev, MAC_CSR0, &reg);
159 if (reg && reg != ~0)
160 break;
161 msleep(1);
162 }
163
164 if (i == REGISTER_BUSY_COUNT) {
165 ERROR(rt2x00dev, "Unstable hardware.\n");
166 return -EBUSY;
167 }
168
169 /*
170 * Write firmware to device. 80 * Write firmware to device.
171 */ 81 */
172 rt2800_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, 82 rt2800_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE,
@@ -203,28 +113,6 @@ static int rt2800usb_load_firmware(struct rt2x00_dev *rt2x00dev,
203 udelay(10); 113 udelay(10);
204 } 114 }
205 115
206 /*
207 * Wait for device to stabilize.
208 */
209 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
210 rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, &reg);
211 if (rt2x00_get_field32(reg, PBF_SYS_CTRL_READY))
212 break;
213 msleep(1);
214 }
215
216 if (i == REGISTER_BUSY_COUNT) {
217 ERROR(rt2x00dev, "PBF system register not ready.\n");
218 return -EBUSY;
219 }
220
221 /*
222 * Initialize firmware.
223 */
224 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0);
225 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
226 msleep(1);
227
228 return 0; 116 return 0;
229} 117}
230 118
@@ -406,7 +294,9 @@ static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev,
406 rt2800usb_toggle_rx(rt2x00dev, state); 294 rt2800usb_toggle_rx(rt2x00dev, state);
407 break; 295 break;
408 case STATE_RADIO_IRQ_ON: 296 case STATE_RADIO_IRQ_ON:
297 case STATE_RADIO_IRQ_ON_ISR:
409 case STATE_RADIO_IRQ_OFF: 298 case STATE_RADIO_IRQ_OFF:
299 case STATE_RADIO_IRQ_OFF_ISR:
410 /* No support, but no error either */ 300 /* No support, but no error either */
411 break; 301 break;
412 case STATE_DEEP_SLEEP: 302 case STATE_DEEP_SLEEP:
@@ -563,7 +453,7 @@ static void rt2800usb_fill_rxdone(struct queue_entry *entry,
563 /* 453 /*
564 * Process the RXWI structure. 454 * Process the RXWI structure.
565 */ 455 */
566 rt2800_process_rxwi(entry->skb, rxdesc); 456 rt2800_process_rxwi(entry, rxdesc);
567} 457}
568 458
569/* 459/*
@@ -580,26 +470,10 @@ static int rt2800usb_validate_eeprom(struct rt2x00_dev *rt2x00dev)
580 return rt2800_validate_eeprom(rt2x00dev); 470 return rt2800_validate_eeprom(rt2x00dev);
581} 471}
582 472
583static const struct rt2800_ops rt2800usb_rt2800_ops = {
584 .register_read = rt2x00usb_register_read,
585 .register_read_lock = rt2x00usb_register_read_lock,
586 .register_write = rt2x00usb_register_write,
587 .register_write_lock = rt2x00usb_register_write_lock,
588
589 .register_multiread = rt2x00usb_register_multiread,
590 .register_multiwrite = rt2x00usb_register_multiwrite,
591
592 .regbusy_read = rt2x00usb_regbusy_read,
593
594 .drv_init_registers = rt2800usb_init_registers,
595};
596
597static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev) 473static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev)
598{ 474{
599 int retval; 475 int retval;
600 476
601 rt2x00dev->priv = (void *)&rt2800usb_rt2800_ops;
602
603 /* 477 /*
604 * Allocate eeprom data. 478 * Allocate eeprom data.
605 */ 479 */
@@ -632,6 +506,8 @@ static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev)
632 __set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags); 506 __set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags);
633 if (!modparam_nohwcrypt) 507 if (!modparam_nohwcrypt)
634 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags); 508 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
509 __set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
510 __set_bit(DRIVER_SUPPORT_WATCHDOG, &rt2x00dev->flags);
635 511
636 /* 512 /*
637 * Set the rssi offset. 513 * Set the rssi offset.
@@ -641,11 +517,45 @@ static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev)
641 return 0; 517 return 0;
642} 518}
643 519
520static const struct ieee80211_ops rt2800usb_mac80211_ops = {
521 .tx = rt2x00mac_tx,
522 .start = rt2x00mac_start,
523 .stop = rt2x00mac_stop,
524 .add_interface = rt2x00mac_add_interface,
525 .remove_interface = rt2x00mac_remove_interface,
526 .config = rt2x00mac_config,
527 .configure_filter = rt2x00mac_configure_filter,
528 .set_tim = rt2x00mac_set_tim,
529 .set_key = rt2x00mac_set_key,
530 .sw_scan_start = rt2x00mac_sw_scan_start,
531 .sw_scan_complete = rt2x00mac_sw_scan_complete,
532 .get_stats = rt2x00mac_get_stats,
533 .get_tkip_seq = rt2800_get_tkip_seq,
534 .set_rts_threshold = rt2800_set_rts_threshold,
535 .bss_info_changed = rt2x00mac_bss_info_changed,
536 .conf_tx = rt2800_conf_tx,
537 .get_tsf = rt2800_get_tsf,
538 .rfkill_poll = rt2x00mac_rfkill_poll,
539 .ampdu_action = rt2800_ampdu_action,
540};
541
542static const struct rt2800_ops rt2800usb_rt2800_ops = {
543 .register_read = rt2x00usb_register_read,
544 .register_read_lock = rt2x00usb_register_read_lock,
545 .register_write = rt2x00usb_register_write,
546 .register_write_lock = rt2x00usb_register_write_lock,
547 .register_multiread = rt2x00usb_register_multiread,
548 .register_multiwrite = rt2x00usb_register_multiwrite,
549 .regbusy_read = rt2x00usb_regbusy_read,
550 .drv_write_firmware = rt2800usb_write_firmware,
551 .drv_init_registers = rt2800usb_init_registers,
552};
553
644static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = { 554static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = {
645 .probe_hw = rt2800usb_probe_hw, 555 .probe_hw = rt2800usb_probe_hw,
646 .get_firmware_name = rt2800usb_get_firmware_name, 556 .get_firmware_name = rt2800usb_get_firmware_name,
647 .check_firmware = rt2800usb_check_firmware, 557 .check_firmware = rt2800_check_firmware,
648 .load_firmware = rt2800usb_load_firmware, 558 .load_firmware = rt2800_load_firmware,
649 .initialize = rt2x00usb_initialize, 559 .initialize = rt2x00usb_initialize,
650 .uninitialize = rt2x00usb_uninitialize, 560 .uninitialize = rt2x00usb_uninitialize,
651 .clear_entry = rt2x00usb_clear_entry, 561 .clear_entry = rt2x00usb_clear_entry,
@@ -654,6 +564,7 @@ static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = {
654 .link_stats = rt2800_link_stats, 564 .link_stats = rt2800_link_stats,
655 .reset_tuner = rt2800_reset_tuner, 565 .reset_tuner = rt2800_reset_tuner,
656 .link_tuner = rt2800_link_tuner, 566 .link_tuner = rt2800_link_tuner,
567 .watchdog = rt2x00usb_watchdog,
657 .write_tx_desc = rt2800usb_write_tx_desc, 568 .write_tx_desc = rt2800usb_write_tx_desc,
658 .write_tx_data = rt2800usb_write_tx_data, 569 .write_tx_data = rt2800usb_write_tx_data,
659 .write_beacon = rt2800_write_beacon, 570 .write_beacon = rt2800_write_beacon,
@@ -703,7 +614,8 @@ static const struct rt2x00_ops rt2800usb_ops = {
703 .tx = &rt2800usb_queue_tx, 614 .tx = &rt2800usb_queue_tx,
704 .bcn = &rt2800usb_queue_bcn, 615 .bcn = &rt2800usb_queue_bcn,
705 .lib = &rt2800usb_rt2x00_ops, 616 .lib = &rt2800usb_rt2x00_ops,
706 .hw = &rt2800_mac80211_ops, 617 .drv = &rt2800usb_rt2800_ops,
618 .hw = &rt2800usb_mac80211_ops,
707#ifdef CONFIG_RT2X00_LIB_DEBUGFS 619#ifdef CONFIG_RT2X00_LIB_DEBUGFS
708 .debugfs = &rt2800_rt2x00debug, 620 .debugfs = &rt2800_rt2x00debug,
709#endif /* CONFIG_RT2X00_LIB_DEBUGFS */ 621#endif /* CONFIG_RT2X00_LIB_DEBUGFS */
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 788b0e452cc..c21af38cc5a 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -332,6 +332,11 @@ struct link {
332 * Work structure for scheduling periodic link tuning. 332 * Work structure for scheduling periodic link tuning.
333 */ 333 */
334 struct delayed_work work; 334 struct delayed_work work;
335
336 /*
337 * Work structure for scheduling periodic watchdog monitoring.
338 */
339 struct delayed_work watchdog_work;
335}; 340};
336 341
337/* 342/*
@@ -510,6 +515,11 @@ struct rt2x00lib_ops {
510 irq_handler_t irq_handler; 515 irq_handler_t irq_handler;
511 516
512 /* 517 /*
518 * Threaded Interrupt handlers.
519 */
520 irq_handler_t irq_handler_thread;
521
522 /*
513 * Device init handlers. 523 * Device init handlers.
514 */ 524 */
515 int (*probe_hw) (struct rt2x00_dev *rt2x00dev); 525 int (*probe_hw) (struct rt2x00_dev *rt2x00dev);
@@ -543,6 +553,7 @@ struct rt2x00lib_ops {
543 struct link_qual *qual); 553 struct link_qual *qual);
544 void (*link_tuner) (struct rt2x00_dev *rt2x00dev, 554 void (*link_tuner) (struct rt2x00_dev *rt2x00dev,
545 struct link_qual *qual, const u32 count); 555 struct link_qual *qual, const u32 count);
556 void (*watchdog) (struct rt2x00_dev *rt2x00dev);
546 557
547 /* 558 /*
548 * TX control handlers 559 * TX control handlers
@@ -610,6 +621,7 @@ struct rt2x00_ops {
610 const struct data_queue_desc *bcn; 621 const struct data_queue_desc *bcn;
611 const struct data_queue_desc *atim; 622 const struct data_queue_desc *atim;
612 const struct rt2x00lib_ops *lib; 623 const struct rt2x00lib_ops *lib;
624 const void *drv;
613 const struct ieee80211_ops *hw; 625 const struct ieee80211_ops *hw;
614#ifdef CONFIG_RT2X00_LIB_DEBUGFS 626#ifdef CONFIG_RT2X00_LIB_DEBUGFS
615 const struct rt2x00debug *debugfs; 627 const struct rt2x00debug *debugfs;
@@ -628,6 +640,7 @@ enum rt2x00_flags {
628 DEVICE_STATE_INITIALIZED, 640 DEVICE_STATE_INITIALIZED,
629 DEVICE_STATE_STARTED, 641 DEVICE_STATE_STARTED,
630 DEVICE_STATE_ENABLED_RADIO, 642 DEVICE_STATE_ENABLED_RADIO,
643 DEVICE_STATE_SCANNING,
631 644
632 /* 645 /*
633 * Driver requirements 646 * Driver requirements
@@ -646,6 +659,9 @@ enum rt2x00_flags {
646 CONFIG_SUPPORT_HW_CRYPTO, 659 CONFIG_SUPPORT_HW_CRYPTO,
647 DRIVER_SUPPORT_CONTROL_FILTERS, 660 DRIVER_SUPPORT_CONTROL_FILTERS,
648 DRIVER_SUPPORT_CONTROL_FILTER_PSPOLL, 661 DRIVER_SUPPORT_CONTROL_FILTER_PSPOLL,
662 DRIVER_SUPPORT_PRE_TBTT_INTERRUPT,
663 DRIVER_SUPPORT_LINK_TUNING,
664 DRIVER_SUPPORT_WATCHDOG,
649 665
650 /* 666 /*
651 * Driver configuration 667 * Driver configuration
@@ -655,7 +671,6 @@ enum rt2x00_flags {
655 CONFIG_EXTERNAL_LNA_A, 671 CONFIG_EXTERNAL_LNA_A,
656 CONFIG_EXTERNAL_LNA_BG, 672 CONFIG_EXTERNAL_LNA_BG,
657 CONFIG_DOUBLE_ANTENNA, 673 CONFIG_DOUBLE_ANTENNA,
658 CONFIG_DISABLE_LINK_TUNING,
659 CONFIG_CHANNEL_HT40, 674 CONFIG_CHANNEL_HT40,
660}; 675};
661 676
@@ -863,9 +878,10 @@ struct rt2x00_dev {
863 const struct firmware *fw; 878 const struct firmware *fw;
864 879
865 /* 880 /*
866 * Driver specific data. 881 * Interrupt values, stored between interrupt service routine
882 * and interrupt thread routine.
867 */ 883 */
868 void *priv; 884 u32 irqvalue[2];
869}; 885};
870 886
871/* 887/*
@@ -1052,6 +1068,7 @@ static inline void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
1052 * Interrupt context handlers. 1068 * Interrupt context handlers.
1053 */ 1069 */
1054void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev); 1070void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev);
1071void rt2x00lib_pretbtt(struct rt2x00_dev *rt2x00dev);
1055void rt2x00lib_txdone(struct queue_entry *entry, 1072void rt2x00lib_txdone(struct queue_entry *entry,
1056 struct txdone_entry_desc *txdesc); 1073 struct txdone_entry_desc *txdesc);
1057void rt2x00lib_rxdone(struct rt2x00_dev *rt2x00dev, 1074void rt2x00lib_rxdone(struct rt2x00_dev *rt2x00dev,
@@ -1081,6 +1098,8 @@ int rt2x00mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
1081#else 1098#else
1082#define rt2x00mac_set_key NULL 1099#define rt2x00mac_set_key NULL
1083#endif /* CONFIG_RT2X00_LIB_CRYPTO */ 1100#endif /* CONFIG_RT2X00_LIB_CRYPTO */
1101void rt2x00mac_sw_scan_start(struct ieee80211_hw *hw);
1102void rt2x00mac_sw_scan_complete(struct ieee80211_hw *hw);
1084int rt2x00mac_get_stats(struct ieee80211_hw *hw, 1103int rt2x00mac_get_stats(struct ieee80211_hw *hw,
1085 struct ieee80211_low_level_stats *stats); 1104 struct ieee80211_low_level_stats *stats);
1086void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw, 1105void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c
index 8dbd634dae2..953dc4f2c6a 100644
--- a/drivers/net/wireless/rt2x00/rt2x00config.c
+++ b/drivers/net/wireless/rt2x00/rt2x00config.c
@@ -41,10 +41,12 @@ void rt2x00lib_config_intf(struct rt2x00_dev *rt2x00dev,
41 41
42 switch (type) { 42 switch (type) {
43 case NL80211_IFTYPE_ADHOC: 43 case NL80211_IFTYPE_ADHOC:
44 conf.sync = TSF_SYNC_ADHOC;
45 break;
44 case NL80211_IFTYPE_AP: 46 case NL80211_IFTYPE_AP:
45 case NL80211_IFTYPE_MESH_POINT: 47 case NL80211_IFTYPE_MESH_POINT:
46 case NL80211_IFTYPE_WDS: 48 case NL80211_IFTYPE_WDS:
47 conf.sync = TSF_SYNC_BEACON; 49 conf.sync = TSF_SYNC_AP_NONE;
48 break; 50 break;
49 case NL80211_IFTYPE_STATION: 51 case NL80211_IFTYPE_STATION:
50 conf.sync = TSF_SYNC_INFRA; 52 conf.sync = TSF_SYNC_INFRA;
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 12ee7bdedd0..f59b9f7226a 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -70,6 +70,11 @@ int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev)
70 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON); 70 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
71 71
72 /* 72 /*
73 * Start watchdog monitoring.
74 */
75 rt2x00link_start_watchdog(rt2x00dev);
76
77 /*
73 * Start the TX queues. 78 * Start the TX queues.
74 */ 79 */
75 ieee80211_wake_queues(rt2x00dev->hw); 80 ieee80211_wake_queues(rt2x00dev->hw);
@@ -89,6 +94,11 @@ void rt2x00lib_disable_radio(struct rt2x00_dev *rt2x00dev)
89 rt2x00queue_stop_queues(rt2x00dev); 94 rt2x00queue_stop_queues(rt2x00dev);
90 95
91 /* 96 /*
97 * Stop watchdog monitoring.
98 */
99 rt2x00link_stop_watchdog(rt2x00dev);
100
101 /*
92 * Disable RX. 102 * Disable RX.
93 */ 103 */
94 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF); 104 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
@@ -168,10 +178,32 @@ static void rt2x00lib_intf_scheduled(struct work_struct *work)
168/* 178/*
169 * Interrupt context handlers. 179 * Interrupt context handlers.
170 */ 180 */
171static void rt2x00lib_beacondone_iter(void *data, u8 *mac, 181static void rt2x00lib_bc_buffer_iter(void *data, u8 *mac,
172 struct ieee80211_vif *vif) 182 struct ieee80211_vif *vif)
173{ 183{
174 struct rt2x00_intf *intf = vif_to_intf(vif); 184 struct rt2x00_dev *rt2x00dev = data;
185 struct sk_buff *skb;
186
187 /*
188 * Only AP mode interfaces do broad- and multicast buffering
189 */
190 if (vif->type != NL80211_IFTYPE_AP)
191 return;
192
193 /*
194 * Send out buffered broad- and multicast frames
195 */
196 skb = ieee80211_get_buffered_bc(rt2x00dev->hw, vif);
197 while (skb) {
198 rt2x00mac_tx(rt2x00dev->hw, skb);
199 skb = ieee80211_get_buffered_bc(rt2x00dev->hw, vif);
200 }
201}
202
203static void rt2x00lib_beaconupdate_iter(void *data, u8 *mac,
204 struct ieee80211_vif *vif)
205{
206 struct rt2x00_dev *rt2x00dev = data;
175 207
176 if (vif->type != NL80211_IFTYPE_AP && 208 if (vif->type != NL80211_IFTYPE_AP &&
177 vif->type != NL80211_IFTYPE_ADHOC && 209 vif->type != NL80211_IFTYPE_ADHOC &&
@@ -179,9 +211,7 @@ static void rt2x00lib_beacondone_iter(void *data, u8 *mac,
179 vif->type != NL80211_IFTYPE_WDS) 211 vif->type != NL80211_IFTYPE_WDS)
180 return; 212 return;
181 213
182 spin_lock(&intf->lock); 214 rt2x00queue_update_beacon(rt2x00dev, vif, true);
183 intf->delayed_flags |= DELAYED_UPDATE_BEACON;
184 spin_unlock(&intf->lock);
185} 215}
186 216
187void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev) 217void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev)
@@ -189,14 +219,37 @@ void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev)
189 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) 219 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
190 return; 220 return;
191 221
192 ieee80211_iterate_active_interfaces_atomic(rt2x00dev->hw, 222 /* send buffered bc/mc frames out for every bssid */
193 rt2x00lib_beacondone_iter, 223 ieee80211_iterate_active_interfaces(rt2x00dev->hw,
194 rt2x00dev); 224 rt2x00lib_bc_buffer_iter,
225 rt2x00dev);
226 /*
227 * Devices with pre tbtt interrupt don't need to update the beacon
228 * here as they will fetch the next beacon directly prior to
229 * transmission.
230 */
231 if (test_bit(DRIVER_SUPPORT_PRE_TBTT_INTERRUPT, &rt2x00dev->flags))
232 return;
195 233
196 ieee80211_queue_work(rt2x00dev->hw, &rt2x00dev->intf_work); 234 /* fetch next beacon */
235 ieee80211_iterate_active_interfaces(rt2x00dev->hw,
236 rt2x00lib_beaconupdate_iter,
237 rt2x00dev);
197} 238}
198EXPORT_SYMBOL_GPL(rt2x00lib_beacondone); 239EXPORT_SYMBOL_GPL(rt2x00lib_beacondone);
199 240
241void rt2x00lib_pretbtt(struct rt2x00_dev *rt2x00dev)
242{
243 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
244 return;
245
246 /* fetch next beacon */
247 ieee80211_iterate_active_interfaces(rt2x00dev->hw,
248 rt2x00lib_beaconupdate_iter,
249 rt2x00dev);
250}
251EXPORT_SYMBOL_GPL(rt2x00lib_pretbtt);
252
200void rt2x00lib_txdone(struct queue_entry *entry, 253void rt2x00lib_txdone(struct queue_entry *entry,
201 struct txdone_entry_desc *txdesc) 254 struct txdone_entry_desc *txdesc)
202{ 255{
@@ -330,9 +383,17 @@ void rt2x00lib_txdone(struct queue_entry *entry,
330 * send the status report back. 383 * send the status report back.
331 */ 384 */
332 if (!(skbdesc_flags & SKBDESC_NOT_MAC80211)) 385 if (!(skbdesc_flags & SKBDESC_NOT_MAC80211))
333 ieee80211_tx_status_irqsafe(rt2x00dev->hw, entry->skb); 386 /*
387 * Only PCI and SOC devices process the tx status in process
388 * context. Hence use ieee80211_tx_status for PCI and SOC
389 * devices and stick to ieee80211_tx_status_irqsafe for USB.
390 */
391 if (rt2x00_is_usb(rt2x00dev))
392 ieee80211_tx_status_irqsafe(rt2x00dev->hw, entry->skb);
393 else
394 ieee80211_tx_status(rt2x00dev->hw, entry->skb);
334 else 395 else
335 dev_kfree_skb_irq(entry->skb); 396 dev_kfree_skb_any(entry->skb);
336 397
337 /* 398 /*
338 * Make this entry available for reuse. 399 * Make this entry available for reuse.
@@ -479,7 +540,16 @@ void rt2x00lib_rxdone(struct rt2x00_dev *rt2x00dev,
479 */ 540 */
480 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry->skb); 541 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry->skb);
481 memcpy(IEEE80211_SKB_RXCB(entry->skb), rx_status, sizeof(*rx_status)); 542 memcpy(IEEE80211_SKB_RXCB(entry->skb), rx_status, sizeof(*rx_status));
482 ieee80211_rx_irqsafe(rt2x00dev->hw, entry->skb); 543
544 /*
545 * Currently only PCI and SOC devices handle rx interrupts in process
546 * context. Hence, use ieee80211_rx_irqsafe for USB and ieee80211_rx_ni
547 * for PCI and SOC devices.
548 */
549 if (rt2x00_is_usb(rt2x00dev))
550 ieee80211_rx_irqsafe(rt2x00dev->hw, entry->skb);
551 else
552 ieee80211_rx_ni(rt2x00dev->hw, entry->skb);
483 553
484 /* 554 /*
485 * Replace the skb with the freshly allocated one. 555 * Replace the skb with the freshly allocated one.
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h
index ed27de1de57..dc5c6574aaf 100644
--- a/drivers/net/wireless/rt2x00/rt2x00lib.h
+++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
@@ -30,6 +30,7 @@
30/* 30/*
31 * Interval defines 31 * Interval defines
32 */ 32 */
33#define WATCHDOG_INTERVAL round_jiffies_relative(HZ)
33#define LINK_TUNE_INTERVAL round_jiffies_relative(HZ) 34#define LINK_TUNE_INTERVAL round_jiffies_relative(HZ)
34 35
35/* 36/*
@@ -257,11 +258,30 @@ void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev);
257void rt2x00link_reset_tuner(struct rt2x00_dev *rt2x00dev, bool antenna); 258void rt2x00link_reset_tuner(struct rt2x00_dev *rt2x00dev, bool antenna);
258 259
259/** 260/**
260 * rt2x00link_register - Initialize link tuning functionality 261 * rt2x00link_start_watchdog - Start periodic watchdog monitoring
261 * @rt2x00dev: Pointer to &struct rt2x00_dev. 262 * @rt2x00dev: Pointer to &struct rt2x00_dev.
262 * 263 *
263 * Initialize work structure and all link tuning related 264 * This start the watchdog periodic work, this work will
264 * parameters. This will not start the link tuning process itself. 265 *be executed periodically until &rt2x00link_stop_watchdog has
266 * been called.
267 */
268void rt2x00link_start_watchdog(struct rt2x00_dev *rt2x00dev);
269
270/**
271 * rt2x00link_stop_watchdog - Stop periodic watchdog monitoring
272 * @rt2x00dev: Pointer to &struct rt2x00_dev.
273 *
274 * After this function completed the watchdog monitoring will not
275 * be running until &rt2x00link_start_watchdog is called.
276 */
277void rt2x00link_stop_watchdog(struct rt2x00_dev *rt2x00dev);
278
279/**
280 * rt2x00link_register - Initialize link tuning & watchdog functionality
281 * @rt2x00dev: Pointer to &struct rt2x00_dev.
282 *
283 * Initialize work structure and all link tuning and watchdog related
284 * parameters. This will not start the periodic work itself.
265 */ 285 */
266void rt2x00link_register(struct rt2x00_dev *rt2x00dev); 286void rt2x00link_register(struct rt2x00_dev *rt2x00dev);
267 287
diff --git a/drivers/net/wireless/rt2x00/rt2x00link.c b/drivers/net/wireless/rt2x00/rt2x00link.c
index 2f8136cab7d..666cef3f847 100644
--- a/drivers/net/wireless/rt2x00/rt2x00link.c
+++ b/drivers/net/wireless/rt2x00/rt2x00link.c
@@ -278,6 +278,15 @@ void rt2x00link_start_tuner(struct rt2x00_dev *rt2x00dev)
278 if (!rt2x00dev->intf_sta_count) 278 if (!rt2x00dev->intf_sta_count)
279 return; 279 return;
280 280
281 /**
282 * While scanning, link tuning is disabled. By default
283 * the most sensitive settings will be used to make sure
284 * that all beacons and probe responses will be recieved
285 * during the scan.
286 */
287 if (test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags))
288 return;
289
281 rt2x00link_reset_tuner(rt2x00dev, false); 290 rt2x00link_reset_tuner(rt2x00dev, false);
282 291
283 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) 292 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
@@ -293,6 +302,7 @@ void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev)
293void rt2x00link_reset_tuner(struct rt2x00_dev *rt2x00dev, bool antenna) 302void rt2x00link_reset_tuner(struct rt2x00_dev *rt2x00dev, bool antenna)
294{ 303{
295 struct link_qual *qual = &rt2x00dev->link.qual; 304 struct link_qual *qual = &rt2x00dev->link.qual;
305 u8 vgc_level = qual->vgc_level_reg;
296 306
297 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) 307 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
298 return; 308 return;
@@ -309,6 +319,13 @@ void rt2x00link_reset_tuner(struct rt2x00_dev *rt2x00dev, bool antenna)
309 memset(qual, 0, sizeof(*qual)); 319 memset(qual, 0, sizeof(*qual));
310 320
311 /* 321 /*
322 * Restore the VGC level as stored in the registers,
323 * the driver can use this to determine if the register
324 * must be updated during reset or not.
325 */
326 qual->vgc_level_reg = vgc_level;
327
328 /*
312 * Reset the link tuner. 329 * Reset the link tuner.
313 */ 330 */
314 rt2x00dev->ops->lib->reset_tuner(rt2x00dev, qual); 331 rt2x00dev->ops->lib->reset_tuner(rt2x00dev, qual);
@@ -338,7 +355,8 @@ static void rt2x00link_tuner(struct work_struct *work)
338 * When the radio is shutting down we should 355 * When the radio is shutting down we should
339 * immediately cease all link tuning. 356 * immediately cease all link tuning.
340 */ 357 */
341 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) 358 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags) ||
359 test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags))
342 return; 360 return;
343 361
344 /* 362 /*
@@ -359,10 +377,11 @@ static void rt2x00link_tuner(struct work_struct *work)
359 qual->rssi = link->avg_rssi.avg; 377 qual->rssi = link->avg_rssi.avg;
360 378
361 /* 379 /*
362 * Only perform the link tuning when Link tuning 380 * Check if link tuning is supported by the hardware, some hardware
363 * has been enabled (This could have been disabled from the EEPROM). 381 * do not support link tuning at all, while other devices can disable
382 * the feature from the EEPROM.
364 */ 383 */
365 if (!test_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags)) 384 if (test_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags))
366 rt2x00dev->ops->lib->link_tuner(rt2x00dev, qual, link->count); 385 rt2x00dev->ops->lib->link_tuner(rt2x00dev, qual, link->count);
367 386
368 /* 387 /*
@@ -388,7 +407,45 @@ static void rt2x00link_tuner(struct work_struct *work)
388 &link->work, LINK_TUNE_INTERVAL); 407 &link->work, LINK_TUNE_INTERVAL);
389} 408}
390 409
410void rt2x00link_start_watchdog(struct rt2x00_dev *rt2x00dev)
411{
412 struct link *link = &rt2x00dev->link;
413
414 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) ||
415 !test_bit(DRIVER_SUPPORT_WATCHDOG, &rt2x00dev->flags))
416 return;
417
418 ieee80211_queue_delayed_work(rt2x00dev->hw,
419 &link->watchdog_work, WATCHDOG_INTERVAL);
420}
421
422void rt2x00link_stop_watchdog(struct rt2x00_dev *rt2x00dev)
423{
424 cancel_delayed_work_sync(&rt2x00dev->link.watchdog_work);
425}
426
427static void rt2x00link_watchdog(struct work_struct *work)
428{
429 struct rt2x00_dev *rt2x00dev =
430 container_of(work, struct rt2x00_dev, link.watchdog_work.work);
431 struct link *link = &rt2x00dev->link;
432
433 /*
434 * When the radio is shutting down we should
435 * immediately cease the watchdog monitoring.
436 */
437 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
438 return;
439
440 rt2x00dev->ops->lib->watchdog(rt2x00dev);
441
442 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
443 ieee80211_queue_delayed_work(rt2x00dev->hw,
444 &link->watchdog_work, WATCHDOG_INTERVAL);
445}
446
391void rt2x00link_register(struct rt2x00_dev *rt2x00dev) 447void rt2x00link_register(struct rt2x00_dev *rt2x00dev)
392{ 448{
449 INIT_DELAYED_WORK(&rt2x00dev->link.watchdog_work, rt2x00link_watchdog);
393 INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00link_tuner); 450 INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00link_tuner);
394} 451}
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index 3b838c0bf59..4d8d2320c9f 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -347,9 +347,11 @@ int rt2x00mac_config(struct ieee80211_hw *hw, u32 changed)
347 /* 347 /*
348 * Some configuration parameters (e.g. channel and antenna values) can 348 * Some configuration parameters (e.g. channel and antenna values) can
349 * only be set when the radio is enabled, but do require the RX to 349 * only be set when the radio is enabled, but do require the RX to
350 * be off. 350 * be off. During this period we should keep link tuning enabled,
351 * if for any reason the link tuner must be reset, this will be
352 * handled by rt2x00lib_config().
351 */ 353 */
352 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF); 354 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF_LINK);
353 355
354 /* 356 /*
355 * When we've just turned on the radio, we want to reprogram 357 * When we've just turned on the radio, we want to reprogram
@@ -367,7 +369,7 @@ int rt2x00mac_config(struct ieee80211_hw *hw, u32 changed)
367 rt2x00lib_config_antenna(rt2x00dev, rt2x00dev->default_ant); 369 rt2x00lib_config_antenna(rt2x00dev, rt2x00dev->default_ant);
368 370
369 /* Turn RX back on */ 371 /* Turn RX back on */
370 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON); 372 rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON_LINK);
371 373
372 return 0; 374 return 0;
373} 375}
@@ -431,12 +433,36 @@ void rt2x00mac_configure_filter(struct ieee80211_hw *hw,
431} 433}
432EXPORT_SYMBOL_GPL(rt2x00mac_configure_filter); 434EXPORT_SYMBOL_GPL(rt2x00mac_configure_filter);
433 435
436static void rt2x00mac_set_tim_iter(void *data, u8 *mac,
437 struct ieee80211_vif *vif)
438{
439 struct rt2x00_intf *intf = vif_to_intf(vif);
440
441 if (vif->type != NL80211_IFTYPE_AP &&
442 vif->type != NL80211_IFTYPE_ADHOC &&
443 vif->type != NL80211_IFTYPE_MESH_POINT &&
444 vif->type != NL80211_IFTYPE_WDS)
445 return;
446
447 spin_lock(&intf->lock);
448 intf->delayed_flags |= DELAYED_UPDATE_BEACON;
449 spin_unlock(&intf->lock);
450}
451
434int rt2x00mac_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, 452int rt2x00mac_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
435 bool set) 453 bool set)
436{ 454{
437 struct rt2x00_dev *rt2x00dev = hw->priv; 455 struct rt2x00_dev *rt2x00dev = hw->priv;
438 456
439 rt2x00lib_beacondone(rt2x00dev); 457 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
458 return 0;
459
460 ieee80211_iterate_active_interfaces_atomic(rt2x00dev->hw,
461 rt2x00mac_set_tim_iter,
462 rt2x00dev);
463
464 /* queue work to upodate the beacon template */
465 ieee80211_queue_work(rt2x00dev->hw, &rt2x00dev->intf_work);
440 return 0; 466 return 0;
441} 467}
442EXPORT_SYMBOL_GPL(rt2x00mac_set_tim); 468EXPORT_SYMBOL_GPL(rt2x00mac_set_tim);
@@ -540,6 +566,22 @@ int rt2x00mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
540EXPORT_SYMBOL_GPL(rt2x00mac_set_key); 566EXPORT_SYMBOL_GPL(rt2x00mac_set_key);
541#endif /* CONFIG_RT2X00_LIB_CRYPTO */ 567#endif /* CONFIG_RT2X00_LIB_CRYPTO */
542 568
569void rt2x00mac_sw_scan_start(struct ieee80211_hw *hw)
570{
571 struct rt2x00_dev *rt2x00dev = hw->priv;
572 __set_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags);
573 rt2x00link_stop_tuner(rt2x00dev);
574}
575EXPORT_SYMBOL_GPL(rt2x00mac_sw_scan_start);
576
577void rt2x00mac_sw_scan_complete(struct ieee80211_hw *hw)
578{
579 struct rt2x00_dev *rt2x00dev = hw->priv;
580 __clear_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags);
581 rt2x00link_start_tuner(rt2x00dev);
582}
583EXPORT_SYMBOL_GPL(rt2x00mac_sw_scan_complete);
584
543int rt2x00mac_get_stats(struct ieee80211_hw *hw, 585int rt2x00mac_get_stats(struct ieee80211_hw *hw,
544 struct ieee80211_low_level_stats *stats) 586 struct ieee80211_low_level_stats *stats)
545{ 587{
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
index fc9da835878..19b262e1ddb 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
@@ -153,8 +153,10 @@ int rt2x00pci_initialize(struct rt2x00_dev *rt2x00dev)
153 /* 153 /*
154 * Register interrupt handler. 154 * Register interrupt handler.
155 */ 155 */
156 status = request_irq(rt2x00dev->irq, rt2x00dev->ops->lib->irq_handler, 156 status = request_threaded_irq(rt2x00dev->irq,
157 IRQF_SHARED, rt2x00dev->name, rt2x00dev); 157 rt2x00dev->ops->lib->irq_handler,
158 rt2x00dev->ops->lib->irq_handler_thread,
159 IRQF_SHARED, rt2x00dev->name, rt2x00dev);
158 if (status) { 160 if (status) {
159 ERROR(rt2x00dev, "IRQ %d allocation failed (error %d).\n", 161 ERROR(rt2x00dev, "IRQ %d allocation failed (error %d).\n",
160 rt2x00dev->irq, status); 162 rt2x00dev->irq, status);
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
index 5097fe0f9f5..a3401d30105 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -688,9 +688,11 @@ void rt2x00queue_index_inc(struct data_queue *queue, enum queue_index index)
688 688
689 if (index == Q_INDEX) { 689 if (index == Q_INDEX) {
690 queue->length++; 690 queue->length++;
691 queue->last_index = jiffies;
691 } else if (index == Q_INDEX_DONE) { 692 } else if (index == Q_INDEX_DONE) {
692 queue->length--; 693 queue->length--;
693 queue->count++; 694 queue->count++;
695 queue->last_index_done = jiffies;
694 } 696 }
695 697
696 spin_unlock_irqrestore(&queue->lock, irqflags); 698 spin_unlock_irqrestore(&queue->lock, irqflags);
@@ -704,6 +706,8 @@ static void rt2x00queue_reset(struct data_queue *queue)
704 706
705 queue->count = 0; 707 queue->count = 0;
706 queue->length = 0; 708 queue->length = 0;
709 queue->last_index = jiffies;
710 queue->last_index_done = jiffies;
707 memset(queue->index, 0, sizeof(queue->index)); 711 memset(queue->index, 0, sizeof(queue->index));
708 712
709 spin_unlock_irqrestore(&queue->lock, irqflags); 713 spin_unlock_irqrestore(&queue->lock, irqflags);
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h
index bd54f55a8cb..191e7775a9c 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.h
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.h
@@ -446,6 +446,8 @@ struct data_queue {
446 enum data_queue_qid qid; 446 enum data_queue_qid qid;
447 447
448 spinlock_t lock; 448 spinlock_t lock;
449 unsigned long last_index;
450 unsigned long last_index_done;
449 unsigned int count; 451 unsigned int count;
450 unsigned short limit; 452 unsigned short limit;
451 unsigned short threshold; 453 unsigned short threshold;
@@ -599,6 +601,15 @@ static inline int rt2x00queue_threshold(struct data_queue *queue)
599} 601}
600 602
601/** 603/**
604 * rt2x00queue_timeout - Check if a timeout occured for this queue
605 * @queue: Queue to check.
606 */
607static inline int rt2x00queue_timeout(struct data_queue *queue)
608{
609 return time_after(queue->last_index, queue->last_index_done + (HZ / 10));
610}
611
612/**
602 * _rt2x00_desc_read - Read a word from the hardware descriptor. 613 * _rt2x00_desc_read - Read a word from the hardware descriptor.
603 * @desc: Base descriptor address 614 * @desc: Base descriptor address
604 * @word: Word index from where the descriptor should be read. 615 * @word: Word index from where the descriptor should be read.
diff --git a/drivers/net/wireless/rt2x00/rt2x00reg.h b/drivers/net/wireless/rt2x00/rt2x00reg.h
index b9fe94873ee..cef94621cef 100644
--- a/drivers/net/wireless/rt2x00/rt2x00reg.h
+++ b/drivers/net/wireless/rt2x00/rt2x00reg.h
@@ -63,7 +63,8 @@ enum led_mode {
63enum tsf_sync { 63enum tsf_sync {
64 TSF_SYNC_NONE = 0, 64 TSF_SYNC_NONE = 0,
65 TSF_SYNC_INFRA = 1, 65 TSF_SYNC_INFRA = 1,
66 TSF_SYNC_BEACON = 2, 66 TSF_SYNC_ADHOC = 2,
67 TSF_SYNC_AP_NONE = 3,
67}; 68};
68 69
69/* 70/*
@@ -88,6 +89,8 @@ enum dev_state {
88 STATE_RADIO_RX_OFF_LINK, 89 STATE_RADIO_RX_OFF_LINK,
89 STATE_RADIO_IRQ_ON, 90 STATE_RADIO_IRQ_ON,
90 STATE_RADIO_IRQ_OFF, 91 STATE_RADIO_IRQ_OFF,
92 STATE_RADIO_IRQ_ON_ISR,
93 STATE_RADIO_IRQ_OFF_ISR,
91}; 94};
92 95
93/* 96/*
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index a22837c560f..ff3a36622d1 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -292,6 +292,56 @@ void rt2x00usb_kill_tx_queue(struct rt2x00_dev *rt2x00dev,
292} 292}
293EXPORT_SYMBOL_GPL(rt2x00usb_kill_tx_queue); 293EXPORT_SYMBOL_GPL(rt2x00usb_kill_tx_queue);
294 294
295static void rt2x00usb_watchdog_reset_tx(struct data_queue *queue)
296{
297 struct queue_entry_priv_usb *entry_priv;
298 unsigned short threshold = queue->threshold;
299
300 WARNING(queue->rt2x00dev, "TX queue %d timed out, invoke reset", queue->qid);
301
302 /*
303 * Temporarily disable the TX queue, this will force mac80211
304 * to use the other queues until this queue has been restored.
305 *
306 * Set the queue threshold to the queue limit. This prevents the
307 * queue from being enabled during the txdone handler.
308 */
309 queue->threshold = queue->limit;
310 ieee80211_stop_queue(queue->rt2x00dev->hw, queue->qid);
311
312 /*
313 * Reset all currently uploaded TX frames.
314 */
315 while (!rt2x00queue_empty(queue)) {
316 entry_priv = rt2x00queue_get_entry(queue, Q_INDEX_DONE)->priv_data;
317 usb_kill_urb(entry_priv->urb);
318
319 /*
320 * We need a short delay here to wait for
321 * the URB to be canceled and invoked the tx_done handler.
322 */
323 udelay(200);
324 }
325
326 /*
327 * The queue has been reset, and mac80211 is allowed to use the
328 * queue again.
329 */
330 queue->threshold = threshold;
331 ieee80211_wake_queue(queue->rt2x00dev->hw, queue->qid);
332}
333
334void rt2x00usb_watchdog(struct rt2x00_dev *rt2x00dev)
335{
336 struct data_queue *queue;
337
338 tx_queue_for_each(rt2x00dev, queue) {
339 if (rt2x00queue_timeout(queue))
340 rt2x00usb_watchdog_reset_tx(queue);
341 }
342}
343EXPORT_SYMBOL_GPL(rt2x00usb_watchdog);
344
295/* 345/*
296 * RX data handlers. 346 * RX data handlers.
297 */ 347 */
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.h b/drivers/net/wireless/rt2x00/rt2x00usb.h
index 2b7a1889e72..d3d3ddc4087 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.h
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.h
@@ -399,6 +399,16 @@ void rt2x00usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev,
399void rt2x00usb_kill_tx_queue(struct rt2x00_dev *rt2x00dev, 399void rt2x00usb_kill_tx_queue(struct rt2x00_dev *rt2x00dev,
400 const enum data_queue_qid qid); 400 const enum data_queue_qid qid);
401 401
402/**
403 * rt2x00usb_watchdog - Watchdog for USB communication
404 * @rt2x00dev: Pointer to &struct rt2x00_dev
405 *
406 * Check the health of the USB communication and determine
407 * if timeouts have occured. If this is the case, this function
408 * will reset all communication to restore functionality again.
409 */
410void rt2x00usb_watchdog(struct rt2x00_dev *rt2x00dev);
411
402/* 412/*
403 * Device initialization handlers. 413 * Device initialization handlers.
404 */ 414 */
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 0123fbc22ca..e539c6cb636 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -1622,7 +1622,8 @@ static void rt61pci_toggle_rx(struct rt2x00_dev *rt2x00dev,
1622static void rt61pci_toggle_irq(struct rt2x00_dev *rt2x00dev, 1622static void rt61pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
1623 enum dev_state state) 1623 enum dev_state state)
1624{ 1624{
1625 int mask = (state == STATE_RADIO_IRQ_OFF); 1625 int mask = (state == STATE_RADIO_IRQ_OFF) ||
1626 (state == STATE_RADIO_IRQ_OFF_ISR);
1626 u32 reg; 1627 u32 reg;
1627 1628
1628 /* 1629 /*
@@ -1739,7 +1740,9 @@ static int rt61pci_set_device_state(struct rt2x00_dev *rt2x00dev,
1739 rt61pci_toggle_rx(rt2x00dev, state); 1740 rt61pci_toggle_rx(rt2x00dev, state);
1740 break; 1741 break;
1741 case STATE_RADIO_IRQ_ON: 1742 case STATE_RADIO_IRQ_ON:
1743 case STATE_RADIO_IRQ_ON_ISR:
1742 case STATE_RADIO_IRQ_OFF: 1744 case STATE_RADIO_IRQ_OFF:
1745 case STATE_RADIO_IRQ_OFF_ISR:
1743 rt61pci_toggle_irq(rt2x00dev, state); 1746 rt61pci_toggle_irq(rt2x00dev, state);
1744 break; 1747 break;
1745 case STATE_DEEP_SLEEP: 1748 case STATE_DEEP_SLEEP:
@@ -2147,27 +2150,11 @@ static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev)
2147 rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); 2150 rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS);
2148} 2151}
2149 2152
2150static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance) 2153static irqreturn_t rt61pci_interrupt_thread(int irq, void *dev_instance)
2151{ 2154{
2152 struct rt2x00_dev *rt2x00dev = dev_instance; 2155 struct rt2x00_dev *rt2x00dev = dev_instance;
2153 u32 reg_mcu; 2156 u32 reg = rt2x00dev->irqvalue[0];
2154 u32 reg; 2157 u32 reg_mcu = rt2x00dev->irqvalue[1];
2155
2156 /*
2157 * Get the interrupt sources & saved to local variable.
2158 * Write register value back to clear pending interrupts.
2159 */
2160 rt2x00pci_register_read(rt2x00dev, MCU_INT_SOURCE_CSR, &reg_mcu);
2161 rt2x00pci_register_write(rt2x00dev, MCU_INT_SOURCE_CSR, reg_mcu);
2162
2163 rt2x00pci_register_read(rt2x00dev, INT_SOURCE_CSR, &reg);
2164 rt2x00pci_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
2165
2166 if (!reg && !reg_mcu)
2167 return IRQ_NONE;
2168
2169 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
2170 return IRQ_HANDLED;
2171 2158
2172 /* 2159 /*
2173 * Handle interrupts, walk through all bits 2160 * Handle interrupts, walk through all bits
@@ -2206,9 +2193,45 @@ static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance)
2206 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_BEACON_DONE)) 2193 if (rt2x00_get_field32(reg, INT_SOURCE_CSR_BEACON_DONE))
2207 rt2x00lib_beacondone(rt2x00dev); 2194 rt2x00lib_beacondone(rt2x00dev);
2208 2195
2196 /* Enable interrupts again. */
2197 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
2198 STATE_RADIO_IRQ_ON_ISR);
2209 return IRQ_HANDLED; 2199 return IRQ_HANDLED;
2210} 2200}
2211 2201
2202
2203static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance)
2204{
2205 struct rt2x00_dev *rt2x00dev = dev_instance;
2206 u32 reg_mcu;
2207 u32 reg;
2208
2209 /*
2210 * Get the interrupt sources & saved to local variable.
2211 * Write register value back to clear pending interrupts.
2212 */
2213 rt2x00pci_register_read(rt2x00dev, MCU_INT_SOURCE_CSR, &reg_mcu);
2214 rt2x00pci_register_write(rt2x00dev, MCU_INT_SOURCE_CSR, reg_mcu);
2215
2216 rt2x00pci_register_read(rt2x00dev, INT_SOURCE_CSR, &reg);
2217 rt2x00pci_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
2218
2219 if (!reg && !reg_mcu)
2220 return IRQ_NONE;
2221
2222 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
2223 return IRQ_HANDLED;
2224
2225 /* Store irqvalues for use in the interrupt thread. */
2226 rt2x00dev->irqvalue[0] = reg;
2227 rt2x00dev->irqvalue[1] = reg_mcu;
2228
2229 /* Disable interrupts, will be enabled again in the interrupt thread. */
2230 rt2x00dev->ops->lib->set_device_state(rt2x00dev,
2231 STATE_RADIO_IRQ_OFF_ISR);
2232 return IRQ_WAKE_THREAD;
2233}
2234
2212/* 2235/*
2213 * Device probe functions. 2236 * Device probe functions.
2214 */ 2237 */
@@ -2690,6 +2713,7 @@ static int rt61pci_probe_hw(struct rt2x00_dev *rt2x00dev)
2690 __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags); 2713 __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
2691 if (!modparam_nohwcrypt) 2714 if (!modparam_nohwcrypt)
2692 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags); 2715 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
2716 __set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
2693 2717
2694 /* 2718 /*
2695 * Set the rssi offset. 2719 * Set the rssi offset.
@@ -2781,8 +2805,9 @@ static const struct ieee80211_ops rt61pci_mac80211_ops = {
2781 .remove_interface = rt2x00mac_remove_interface, 2805 .remove_interface = rt2x00mac_remove_interface,
2782 .config = rt2x00mac_config, 2806 .config = rt2x00mac_config,
2783 .configure_filter = rt2x00mac_configure_filter, 2807 .configure_filter = rt2x00mac_configure_filter,
2784 .set_tim = rt2x00mac_set_tim,
2785 .set_key = rt2x00mac_set_key, 2808 .set_key = rt2x00mac_set_key,
2809 .sw_scan_start = rt2x00mac_sw_scan_start,
2810 .sw_scan_complete = rt2x00mac_sw_scan_complete,
2786 .get_stats = rt2x00mac_get_stats, 2811 .get_stats = rt2x00mac_get_stats,
2787 .bss_info_changed = rt2x00mac_bss_info_changed, 2812 .bss_info_changed = rt2x00mac_bss_info_changed,
2788 .conf_tx = rt61pci_conf_tx, 2813 .conf_tx = rt61pci_conf_tx,
@@ -2792,6 +2817,7 @@ static const struct ieee80211_ops rt61pci_mac80211_ops = {
2792 2817
2793static const struct rt2x00lib_ops rt61pci_rt2x00_ops = { 2818static const struct rt2x00lib_ops rt61pci_rt2x00_ops = {
2794 .irq_handler = rt61pci_interrupt, 2819 .irq_handler = rt61pci_interrupt,
2820 .irq_handler_thread = rt61pci_interrupt_thread,
2795 .probe_hw = rt61pci_probe_hw, 2821 .probe_hw = rt61pci_probe_hw,
2796 .get_firmware_name = rt61pci_get_firmware_name, 2822 .get_firmware_name = rt61pci_get_firmware_name,
2797 .check_firmware = rt61pci_check_firmware, 2823 .check_firmware = rt61pci_check_firmware,
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 286dd97e51d..aa9de18fd41 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -1400,7 +1400,9 @@ static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev,
1400 rt73usb_toggle_rx(rt2x00dev, state); 1400 rt73usb_toggle_rx(rt2x00dev, state);
1401 break; 1401 break;
1402 case STATE_RADIO_IRQ_ON: 1402 case STATE_RADIO_IRQ_ON:
1403 case STATE_RADIO_IRQ_ON_ISR:
1403 case STATE_RADIO_IRQ_OFF: 1404 case STATE_RADIO_IRQ_OFF:
1405 case STATE_RADIO_IRQ_OFF_ISR:
1404 /* No support, but no error either */ 1406 /* No support, but no error either */
1405 break; 1407 break;
1406 case STATE_DEEP_SLEEP: 1408 case STATE_DEEP_SLEEP:
@@ -2135,6 +2137,8 @@ static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev)
2135 __set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags); 2137 __set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags);
2136 if (!modparam_nohwcrypt) 2138 if (!modparam_nohwcrypt)
2137 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags); 2139 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
2140 __set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
2141 __set_bit(DRIVER_SUPPORT_WATCHDOG, &rt2x00dev->flags);
2138 2142
2139 /* 2143 /*
2140 * Set the rssi offset. 2144 * Set the rssi offset.
@@ -2228,6 +2232,8 @@ static const struct ieee80211_ops rt73usb_mac80211_ops = {
2228 .configure_filter = rt2x00mac_configure_filter, 2232 .configure_filter = rt2x00mac_configure_filter,
2229 .set_tim = rt2x00mac_set_tim, 2233 .set_tim = rt2x00mac_set_tim,
2230 .set_key = rt2x00mac_set_key, 2234 .set_key = rt2x00mac_set_key,
2235 .sw_scan_start = rt2x00mac_sw_scan_start,
2236 .sw_scan_complete = rt2x00mac_sw_scan_complete,
2231 .get_stats = rt2x00mac_get_stats, 2237 .get_stats = rt2x00mac_get_stats,
2232 .bss_info_changed = rt2x00mac_bss_info_changed, 2238 .bss_info_changed = rt2x00mac_bss_info_changed,
2233 .conf_tx = rt73usb_conf_tx, 2239 .conf_tx = rt73usb_conf_tx,
@@ -2248,6 +2254,7 @@ static const struct rt2x00lib_ops rt73usb_rt2x00_ops = {
2248 .link_stats = rt73usb_link_stats, 2254 .link_stats = rt73usb_link_stats,
2249 .reset_tuner = rt73usb_reset_tuner, 2255 .reset_tuner = rt73usb_reset_tuner,
2250 .link_tuner = rt73usb_link_tuner, 2256 .link_tuner = rt73usb_link_tuner,
2257 .watchdog = rt2x00usb_watchdog,
2251 .write_tx_desc = rt73usb_write_tx_desc, 2258 .write_tx_desc = rt73usb_write_tx_desc,
2252 .write_beacon = rt73usb_write_beacon, 2259 .write_beacon = rt73usb_write_beacon,
2253 .get_tx_data_len = rt73usb_get_tx_data_len, 2260 .get_tx_data_len = rt73usb_get_tx_data_len,
diff --git a/drivers/net/wireless/wl12xx/Makefile b/drivers/net/wireless/wl12xx/Makefile
index 27ddd2be0a9..078b4398ac1 100644
--- a/drivers/net/wireless/wl12xx/Makefile
+++ b/drivers/net/wireless/wl12xx/Makefile
@@ -10,7 +10,7 @@ obj-$(CONFIG_WL1251_SDIO) += wl1251_sdio.o
10wl1271-objs = wl1271_main.o wl1271_cmd.o wl1271_io.o \ 10wl1271-objs = wl1271_main.o wl1271_cmd.o wl1271_io.o \
11 wl1271_event.o wl1271_tx.o wl1271_rx.o \ 11 wl1271_event.o wl1271_tx.o wl1271_rx.o \
12 wl1271_ps.o wl1271_acx.o wl1271_boot.o \ 12 wl1271_ps.o wl1271_acx.o wl1271_boot.o \
13 wl1271_init.o wl1271_debugfs.o 13 wl1271_init.o wl1271_debugfs.o wl1271_scan.o
14 14
15wl1271-$(CONFIG_NL80211_TESTMODE) += wl1271_testmode.o 15wl1271-$(CONFIG_NL80211_TESTMODE) += wl1271_testmode.o
16obj-$(CONFIG_WL1271) += wl1271.o 16obj-$(CONFIG_WL1271) += wl1271.o
diff --git a/drivers/net/wireless/wl12xx/wl1251_main.c b/drivers/net/wireless/wl12xx/wl1251_main.c
index c8f268951e1..38f72f41718 100644
--- a/drivers/net/wireless/wl12xx/wl1251_main.c
+++ b/drivers/net/wireless/wl12xx/wl1251_main.c
@@ -1417,5 +1417,4 @@ EXPORT_SYMBOL_GPL(wl1251_free_hw);
1417MODULE_DESCRIPTION("TI wl1251 Wireles LAN Driver Core"); 1417MODULE_DESCRIPTION("TI wl1251 Wireles LAN Driver Core");
1418MODULE_LICENSE("GPL"); 1418MODULE_LICENSE("GPL");
1419MODULE_AUTHOR("Kalle Valo <kalle.valo@nokia.com>"); 1419MODULE_AUTHOR("Kalle Valo <kalle.valo@nokia.com>");
1420MODULE_ALIAS("spi:wl1251");
1421MODULE_FIRMWARE(WL1251_FW_NAME); 1420MODULE_FIRMWARE(WL1251_FW_NAME);
diff --git a/drivers/net/wireless/wl12xx/wl1251_spi.c b/drivers/net/wireless/wl12xx/wl1251_spi.c
index e81474203a2..27fdfaaeb07 100644
--- a/drivers/net/wireless/wl12xx/wl1251_spi.c
+++ b/drivers/net/wireless/wl12xx/wl1251_spi.c
@@ -345,3 +345,4 @@ module_exit(wl1251_spi_exit);
345 345
346MODULE_LICENSE("GPL"); 346MODULE_LICENSE("GPL");
347MODULE_AUTHOR("Kalle Valo <kalle.valo@nokia.com>"); 347MODULE_AUTHOR("Kalle Valo <kalle.valo@nokia.com>");
348MODULE_ALIAS("spi:wl1251");
diff --git a/drivers/net/wireless/wl12xx/wl1271.h b/drivers/net/wireless/wl12xx/wl1271.h
index ec09f0d40ca..53d47d7a2a1 100644
--- a/drivers/net/wireless/wl12xx/wl1271.h
+++ b/drivers/net/wireless/wl12xx/wl1271.h
@@ -300,12 +300,10 @@ struct wl1271_rx_mem_pool_addr {
300 300
301struct wl1271_scan { 301struct wl1271_scan {
302 struct cfg80211_scan_request *req; 302 struct cfg80211_scan_request *req;
303 bool *scanned_ch;
303 u8 state; 304 u8 state;
304 u8 ssid[IW_ESSID_MAX_SIZE+1]; 305 u8 ssid[IW_ESSID_MAX_SIZE+1];
305 size_t ssid_len; 306 size_t ssid_len;
306 u8 active;
307 u8 high_prio;
308 u8 probe_requests;
309}; 307};
310 308
311struct wl1271_if_operations { 309struct wl1271_if_operations {
@@ -343,14 +341,14 @@ struct wl1271 {
343#define WL1271_FLAG_JOINED (2) 341#define WL1271_FLAG_JOINED (2)
344#define WL1271_FLAG_GPIO_POWER (3) 342#define WL1271_FLAG_GPIO_POWER (3)
345#define WL1271_FLAG_TX_QUEUE_STOPPED (4) 343#define WL1271_FLAG_TX_QUEUE_STOPPED (4)
346#define WL1271_FLAG_SCANNING (5) 344#define WL1271_FLAG_IN_ELP (5)
347#define WL1271_FLAG_IN_ELP (6) 345#define WL1271_FLAG_PSM (6)
348#define WL1271_FLAG_PSM (7) 346#define WL1271_FLAG_PSM_REQUESTED (7)
349#define WL1271_FLAG_PSM_REQUESTED (8) 347#define WL1271_FLAG_IRQ_PENDING (8)
350#define WL1271_FLAG_IRQ_PENDING (9) 348#define WL1271_FLAG_IRQ_RUNNING (9)
351#define WL1271_FLAG_IRQ_RUNNING (10) 349#define WL1271_FLAG_IDLE (10)
352#define WL1271_FLAG_IDLE (11) 350#define WL1271_FLAG_IDLE_REQUESTED (11)
353#define WL1271_FLAG_IDLE_REQUESTED (12) 351#define WL1271_FLAG_PSPOLL_FAILURE (12)
354 unsigned long flags; 352 unsigned long flags;
355 353
356 struct wl1271_partition_set part; 354 struct wl1271_partition_set part;
@@ -445,6 +443,10 @@ struct wl1271 {
445 443
446 struct completion *elp_compl; 444 struct completion *elp_compl;
447 struct delayed_work elp_work; 445 struct delayed_work elp_work;
446 struct delayed_work pspoll_work;
447
448 /* counter for ps-poll delivery failures */
449 int ps_poll_failures;
448 450
449 /* retry counter for PSM entries */ 451 /* retry counter for PSM entries */
450 u8 psm_entry_retry; 452 u8 psm_entry_retry;
diff --git a/drivers/net/wireless/wl12xx/wl1271_acx.c b/drivers/net/wireless/wl12xx/wl1271_acx.c
index e19e2f8f1e5..bb245f05af4 100644
--- a/drivers/net/wireless/wl12xx/wl1271_acx.c
+++ b/drivers/net/wireless/wl12xx/wl1271_acx.c
@@ -1075,8 +1075,7 @@ out:
1075 return ret; 1075 return ret;
1076} 1076}
1077 1077
1078int wl1271_acx_arp_ip_filter(struct wl1271 *wl, bool enable, u8 *address, 1078int wl1271_acx_arp_ip_filter(struct wl1271 *wl, bool enable, __be32 address)
1079 u8 version)
1080{ 1079{
1081 struct wl1271_acx_arp_filter *acx; 1080 struct wl1271_acx_arp_filter *acx;
1082 int ret; 1081 int ret;
@@ -1089,17 +1088,11 @@ int wl1271_acx_arp_ip_filter(struct wl1271 *wl, bool enable, u8 *address,
1089 goto out; 1088 goto out;
1090 } 1089 }
1091 1090
1092 acx->version = version; 1091 acx->version = ACX_IPV4_VERSION;
1093 acx->enable = enable; 1092 acx->enable = enable;
1094 1093
1095 if (enable == true) { 1094 if (enable == true)
1096 if (version == ACX_IPV4_VERSION) 1095 memcpy(acx->address, &address, ACX_IPV4_ADDR_SIZE);
1097 memcpy(acx->address, address, ACX_IPV4_ADDR_SIZE);
1098 else if (version == ACX_IPV6_VERSION)
1099 memcpy(acx->address, address, sizeof(acx->address));
1100 else
1101 wl1271_error("Invalid IP version");
1102 }
1103 1096
1104 ret = wl1271_cmd_configure(wl, ACX_ARP_IP_FILTER, 1097 ret = wl1271_cmd_configure(wl, ACX_ARP_IP_FILTER,
1105 acx, sizeof(*acx)); 1098 acx, sizeof(*acx));
@@ -1266,3 +1259,29 @@ out:
1266 kfree(acx); 1259 kfree(acx);
1267 return ret; 1260 return ret;
1268} 1261}
1262
1263int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime)
1264{
1265 struct wl1271_acx_fw_tsf_information *tsf_info;
1266 int ret;
1267
1268 tsf_info = kzalloc(sizeof(*tsf_info), GFP_KERNEL);
1269 if (!tsf_info) {
1270 ret = -ENOMEM;
1271 goto out;
1272 }
1273
1274 ret = wl1271_cmd_interrogate(wl, ACX_TSF_INFO,
1275 tsf_info, sizeof(*tsf_info));
1276 if (ret < 0) {
1277 wl1271_warning("acx tsf info interrogate failed");
1278 goto out;
1279 }
1280
1281 *mactime = le32_to_cpu(tsf_info->current_tsf_low) |
1282 ((u64) le32_to_cpu(tsf_info->current_tsf_high) << 32);
1283
1284out:
1285 kfree(tsf_info);
1286 return ret;
1287}
diff --git a/drivers/net/wireless/wl12xx/wl1271_acx.h b/drivers/net/wireless/wl12xx/wl1271_acx.h
index 4c87e601df2..4235bc56f75 100644
--- a/drivers/net/wireless/wl12xx/wl1271_acx.h
+++ b/drivers/net/wireless/wl12xx/wl1271_acx.h
@@ -993,6 +993,17 @@ struct wl1271_acx_rssi_snr_avg_weights {
993 u8 snr_data; 993 u8 snr_data;
994}; 994};
995 995
996struct wl1271_acx_fw_tsf_information {
997 struct acx_header header;
998
999 __le32 current_tsf_high;
1000 __le32 current_tsf_low;
1001 __le32 last_bttt_high;
1002 __le32 last_tbtt_low;
1003 u8 last_dtim_count;
1004 u8 padding[3];
1005} __packed;
1006
996enum { 1007enum {
997 ACX_WAKE_UP_CONDITIONS = 0x0002, 1008 ACX_WAKE_UP_CONDITIONS = 0x0002,
998 ACX_MEM_CFG = 0x0003, 1009 ACX_MEM_CFG = 0x0003,
@@ -1106,13 +1117,13 @@ int wl1271_acx_init_mem_config(struct wl1271 *wl);
1106int wl1271_acx_init_rx_interrupt(struct wl1271 *wl); 1117int wl1271_acx_init_rx_interrupt(struct wl1271 *wl);
1107int wl1271_acx_smart_reflex(struct wl1271 *wl); 1118int wl1271_acx_smart_reflex(struct wl1271 *wl);
1108int wl1271_acx_bet_enable(struct wl1271 *wl, bool enable); 1119int wl1271_acx_bet_enable(struct wl1271 *wl, bool enable);
1109int wl1271_acx_arp_ip_filter(struct wl1271 *wl, bool enable, u8 *address, 1120int wl1271_acx_arp_ip_filter(struct wl1271 *wl, bool enable, __be32 address);
1110 u8 version);
1111int wl1271_acx_pm_config(struct wl1271 *wl); 1121int wl1271_acx_pm_config(struct wl1271 *wl);
1112int wl1271_acx_keep_alive_mode(struct wl1271 *wl, bool enable); 1122int wl1271_acx_keep_alive_mode(struct wl1271 *wl, bool enable);
1113int wl1271_acx_keep_alive_config(struct wl1271 *wl, u8 index, u8 tpl_valid); 1123int wl1271_acx_keep_alive_config(struct wl1271 *wl, u8 index, u8 tpl_valid);
1114int wl1271_acx_rssi_snr_trigger(struct wl1271 *wl, bool enable, 1124int wl1271_acx_rssi_snr_trigger(struct wl1271 *wl, bool enable,
1115 s16 thold, u8 hyst); 1125 s16 thold, u8 hyst);
1116int wl1271_acx_rssi_snr_avg_weights(struct wl1271 *wl); 1126int wl1271_acx_rssi_snr_avg_weights(struct wl1271 *wl);
1127int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime);
1117 1128
1118#endif /* __WL1271_ACX_H__ */ 1129#endif /* __WL1271_ACX_H__ */
diff --git a/drivers/net/wireless/wl12xx/wl1271_boot.c b/drivers/net/wireless/wl12xx/wl1271_boot.c
index 1a36d8a2196..f36430b0336 100644
--- a/drivers/net/wireless/wl12xx/wl1271_boot.c
+++ b/drivers/net/wireless/wl12xx/wl1271_boot.c
@@ -414,7 +414,9 @@ static int wl1271_boot_run_firmware(struct wl1271 *wl)
414 PS_REPORT_EVENT_ID | 414 PS_REPORT_EVENT_ID |
415 JOIN_EVENT_COMPLETE_ID | 415 JOIN_EVENT_COMPLETE_ID |
416 DISCONNECT_EVENT_COMPLETE_ID | 416 DISCONNECT_EVENT_COMPLETE_ID |
417 RSSI_SNR_TRIGGER_0_EVENT_ID; 417 RSSI_SNR_TRIGGER_0_EVENT_ID |
418 PSPOLL_DELIVERY_FAILURE_EVENT_ID |
419 SOFT_GEMINI_SENSE_EVENT_ID;
418 420
419 ret = wl1271_event_unmask(wl); 421 ret = wl1271_event_unmask(wl);
420 if (ret < 0) { 422 if (ret < 0) {
diff --git a/drivers/net/wireless/wl12xx/wl1271_cmd.c b/drivers/net/wireless/wl12xx/wl1271_cmd.c
index 530678e45a1..ce503ddd5a4 100644
--- a/drivers/net/wireless/wl12xx/wl1271_cmd.c
+++ b/drivers/net/wireless/wl12xx/wl1271_cmd.c
@@ -104,100 +104,6 @@ out:
104 return ret; 104 return ret;
105} 105}
106 106
107static int wl1271_cmd_cal_channel_tune(struct wl1271 *wl)
108{
109 struct wl1271_cmd_cal_channel_tune *cmd;
110 int ret = 0;
111
112 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
113 if (!cmd)
114 return -ENOMEM;
115
116 cmd->test.id = TEST_CMD_CHANNEL_TUNE;
117
118 cmd->band = WL1271_CHANNEL_TUNE_BAND_2_4;
119 /* set up any channel, 7 is in the middle of the range */
120 cmd->channel = 7;
121
122 ret = wl1271_cmd_test(wl, cmd, sizeof(*cmd), 0);
123 if (ret < 0)
124 wl1271_warning("TEST_CMD_CHANNEL_TUNE failed");
125
126 kfree(cmd);
127 return ret;
128}
129
130static int wl1271_cmd_cal_update_ref_point(struct wl1271 *wl)
131{
132 struct wl1271_cmd_cal_update_ref_point *cmd;
133 int ret = 0;
134
135 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
136 if (!cmd)
137 return -ENOMEM;
138
139 cmd->test.id = TEST_CMD_UPDATE_PD_REFERENCE_POINT;
140
141 /* FIXME: still waiting for the correct values */
142 cmd->ref_power = 0;
143 cmd->ref_detector = 0;
144
145 cmd->sub_band = WL1271_PD_REFERENCE_POINT_BAND_B_G;
146
147 ret = wl1271_cmd_test(wl, cmd, sizeof(*cmd), 0);
148 if (ret < 0)
149 wl1271_warning("TEST_CMD_UPDATE_PD_REFERENCE_POINT failed");
150
151 kfree(cmd);
152 return ret;
153}
154
155static int wl1271_cmd_cal_p2g(struct wl1271 *wl)
156{
157 struct wl1271_cmd_cal_p2g *cmd;
158 int ret = 0;
159
160 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
161 if (!cmd)
162 return -ENOMEM;
163
164 cmd->test.id = TEST_CMD_P2G_CAL;
165
166 cmd->sub_band_mask = WL1271_CAL_P2G_BAND_B_G;
167
168 ret = wl1271_cmd_test(wl, cmd, sizeof(*cmd), 0);
169 if (ret < 0)
170 wl1271_warning("TEST_CMD_P2G_CAL failed");
171
172 kfree(cmd);
173 return ret;
174}
175
176static int wl1271_cmd_cal(struct wl1271 *wl)
177{
178 /*
179 * FIXME: we must make sure that we're not sleeping when calibration
180 * is done
181 */
182 int ret;
183
184 wl1271_notice("performing tx calibration");
185
186 ret = wl1271_cmd_cal_channel_tune(wl);
187 if (ret < 0)
188 return ret;
189
190 ret = wl1271_cmd_cal_update_ref_point(wl);
191 if (ret < 0)
192 return ret;
193
194 ret = wl1271_cmd_cal_p2g(wl);
195 if (ret < 0)
196 return ret;
197
198 return ret;
199}
200
201int wl1271_cmd_general_parms(struct wl1271 *wl) 107int wl1271_cmd_general_parms(struct wl1271 *wl)
202{ 108{
203 struct wl1271_general_parms_cmd *gen_parms; 109 struct wl1271_general_parms_cmd *gen_parms;
@@ -226,7 +132,7 @@ int wl1271_cmd_general_parms(struct wl1271 *wl)
226int wl1271_cmd_radio_parms(struct wl1271 *wl) 132int wl1271_cmd_radio_parms(struct wl1271 *wl)
227{ 133{
228 struct wl1271_radio_parms_cmd *radio_parms; 134 struct wl1271_radio_parms_cmd *radio_parms;
229 struct conf_radio_parms *rparam = &wl->conf.init.radioparam; 135 struct wl1271_ini_general_params *gp = &wl->nvs->general_params;
230 int ret; 136 int ret;
231 137
232 if (!wl->nvs) 138 if (!wl->nvs)
@@ -242,7 +148,7 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl)
242 memcpy(&radio_parms->static_params_2, &wl->nvs->stat_radio_params_2, 148 memcpy(&radio_parms->static_params_2, &wl->nvs->stat_radio_params_2,
243 sizeof(struct wl1271_ini_band_params_2)); 149 sizeof(struct wl1271_ini_band_params_2));
244 memcpy(&radio_parms->dyn_params_2, 150 memcpy(&radio_parms->dyn_params_2,
245 &wl->nvs->dyn_radio_params_2[rparam->fem].params, 151 &wl->nvs->dyn_radio_params_2[gp->tx_bip_fem_manufacturer].params,
246 sizeof(struct wl1271_ini_fem_params_2)); 152 sizeof(struct wl1271_ini_fem_params_2));
247 153
248 /* 5GHz parameters */ 154 /* 5GHz parameters */
@@ -250,7 +156,7 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl)
250 &wl->nvs->stat_radio_params_5, 156 &wl->nvs->stat_radio_params_5,
251 sizeof(struct wl1271_ini_band_params_5)); 157 sizeof(struct wl1271_ini_band_params_5));
252 memcpy(&radio_parms->dyn_params_5, 158 memcpy(&radio_parms->dyn_params_5,
253 &wl->nvs->dyn_radio_params_5[rparam->fem].params, 159 &wl->nvs->dyn_radio_params_5[gp->tx_bip_fem_manufacturer].params,
254 sizeof(struct wl1271_ini_fem_params_5)); 160 sizeof(struct wl1271_ini_fem_params_5));
255 161
256 wl1271_dump(DEBUG_CMD, "TEST_CMD_INI_FILE_RADIO_PARAM: ", 162 wl1271_dump(DEBUG_CMD, "TEST_CMD_INI_FILE_RADIO_PARAM: ",
@@ -295,20 +201,10 @@ static int wl1271_cmd_wait_for_event(struct wl1271 *wl, u32 mask)
295 201
296int wl1271_cmd_join(struct wl1271 *wl, u8 bss_type) 202int wl1271_cmd_join(struct wl1271 *wl, u8 bss_type)
297{ 203{
298 static bool do_cal = true;
299 struct wl1271_cmd_join *join; 204 struct wl1271_cmd_join *join;
300 int ret, i; 205 int ret, i;
301 u8 *bssid; 206 u8 *bssid;
302 207
303 /* FIXME: remove when we get calibration from the factory */
304 if (do_cal) {
305 ret = wl1271_cmd_cal(wl);
306 if (ret < 0)
307 wl1271_warning("couldn't calibrate");
308 else
309 do_cal = false;
310 }
311
312 join = kzalloc(sizeof(*join), GFP_KERNEL); 208 join = kzalloc(sizeof(*join), GFP_KERNEL);
313 if (!join) { 209 if (!join) {
314 ret = -ENOMEM; 210 ret = -ENOMEM;
@@ -567,142 +463,6 @@ out:
567 return ret; 463 return ret;
568} 464}
569 465
570int wl1271_cmd_scan(struct wl1271 *wl, const u8 *ssid, size_t ssid_len,
571 struct cfg80211_scan_request *req, u8 active_scan,
572 u8 high_prio, u8 band, u8 probe_requests)
573{
574
575 struct wl1271_cmd_trigger_scan_to *trigger = NULL;
576 struct wl1271_cmd_scan *params = NULL;
577 struct ieee80211_channel *channels;
578 u32 rate;
579 int i, j, n_ch, ret;
580 u16 scan_options = 0;
581 u8 ieee_band;
582
583 if (band == WL1271_SCAN_BAND_2_4_GHZ) {
584 ieee_band = IEEE80211_BAND_2GHZ;
585 rate = wl->conf.tx.basic_rate;
586 } else if (band == WL1271_SCAN_BAND_DUAL && wl1271_11a_enabled()) {
587 ieee_band = IEEE80211_BAND_2GHZ;
588 rate = wl->conf.tx.basic_rate;
589 } else if (band == WL1271_SCAN_BAND_5_GHZ && wl1271_11a_enabled()) {
590 ieee_band = IEEE80211_BAND_5GHZ;
591 rate = wl->conf.tx.basic_rate_5;
592 } else
593 return -EINVAL;
594
595 if (wl->hw->wiphy->bands[ieee_band]->channels == NULL)
596 return -EINVAL;
597
598 channels = wl->hw->wiphy->bands[ieee_band]->channels;
599 n_ch = wl->hw->wiphy->bands[ieee_band]->n_channels;
600
601 if (test_bit(WL1271_FLAG_SCANNING, &wl->flags))
602 return -EINVAL;
603
604 params = kzalloc(sizeof(*params), GFP_KERNEL);
605 if (!params)
606 return -ENOMEM;
607
608 params->params.rx_config_options = cpu_to_le32(CFG_RX_ALL_GOOD);
609 params->params.rx_filter_options =
610 cpu_to_le32(CFG_RX_PRSP_EN | CFG_RX_MGMT_EN | CFG_RX_BCN_EN);
611
612 if (!active_scan)
613 scan_options |= WL1271_SCAN_OPT_PASSIVE;
614 if (high_prio)
615 scan_options |= WL1271_SCAN_OPT_PRIORITY_HIGH;
616 params->params.scan_options = cpu_to_le16(scan_options);
617
618 params->params.num_probe_requests = probe_requests;
619 params->params.tx_rate = cpu_to_le32(rate);
620 params->params.tid_trigger = 0;
621 params->params.scan_tag = WL1271_SCAN_DEFAULT_TAG;
622
623 if (band == WL1271_SCAN_BAND_DUAL)
624 params->params.band = WL1271_SCAN_BAND_2_4_GHZ;
625 else
626 params->params.band = band;
627
628 for (i = 0, j = 0; i < n_ch && i < WL1271_SCAN_MAX_CHANNELS; i++) {
629 if (!(channels[i].flags & IEEE80211_CHAN_DISABLED)) {
630 params->channels[j].min_duration =
631 cpu_to_le32(WL1271_SCAN_CHAN_MIN_DURATION);
632 params->channels[j].max_duration =
633 cpu_to_le32(WL1271_SCAN_CHAN_MAX_DURATION);
634 memset(&params->channels[j].bssid_lsb, 0xff, 4);
635 memset(&params->channels[j].bssid_msb, 0xff, 2);
636 params->channels[j].early_termination = 0;
637 params->channels[j].tx_power_att =
638 WL1271_SCAN_CURRENT_TX_PWR;
639 params->channels[j].channel = channels[i].hw_value;
640 j++;
641 }
642 }
643
644 params->params.num_channels = j;
645
646 if (ssid_len && ssid) {
647 params->params.ssid_len = ssid_len;
648 memcpy(params->params.ssid, ssid, ssid_len);
649 }
650
651 ret = wl1271_cmd_build_probe_req(wl, ssid, ssid_len,
652 req->ie, req->ie_len, ieee_band);
653 if (ret < 0) {
654 wl1271_error("PROBE request template failed");
655 goto out;
656 }
657
658 trigger = kzalloc(sizeof(*trigger), GFP_KERNEL);
659 if (!trigger) {
660 ret = -ENOMEM;
661 goto out;
662 }
663
664 /* disable the timeout */
665 trigger->timeout = 0;
666
667 ret = wl1271_cmd_send(wl, CMD_TRIGGER_SCAN_TO, trigger,
668 sizeof(*trigger), 0);
669 if (ret < 0) {
670 wl1271_error("trigger scan to failed for hw scan");
671 goto out;
672 }
673
674 wl1271_dump(DEBUG_SCAN, "SCAN: ", params, sizeof(*params));
675
676 set_bit(WL1271_FLAG_SCANNING, &wl->flags);
677 if (wl1271_11a_enabled()) {
678 wl->scan.state = band;
679 if (band == WL1271_SCAN_BAND_DUAL) {
680 wl->scan.active = active_scan;
681 wl->scan.high_prio = high_prio;
682 wl->scan.probe_requests = probe_requests;
683 if (ssid_len && ssid) {
684 wl->scan.ssid_len = ssid_len;
685 memcpy(wl->scan.ssid, ssid, ssid_len);
686 } else
687 wl->scan.ssid_len = 0;
688 wl->scan.req = req;
689 } else
690 wl->scan.req = NULL;
691 }
692
693 ret = wl1271_cmd_send(wl, CMD_SCAN, params, sizeof(*params), 0);
694 if (ret < 0) {
695 wl1271_error("SCAN failed");
696 clear_bit(WL1271_FLAG_SCANNING, &wl->flags);
697 goto out;
698 }
699
700out:
701 kfree(params);
702 kfree(trigger);
703 return ret;
704}
705
706int wl1271_cmd_template_set(struct wl1271 *wl, u16 template_id, 466int wl1271_cmd_template_set(struct wl1271 *wl, u16 template_id,
707 void *buf, size_t buf_len, int index, u32 rates) 467 void *buf, size_t buf_len, int index, u32 rates)
708{ 468{
@@ -807,7 +567,7 @@ int wl1271_cmd_build_ps_poll(struct wl1271 *wl, u16 aid)
807 goto out; 567 goto out;
808 568
809 ret = wl1271_cmd_template_set(wl, CMD_TEMPL_PS_POLL, skb->data, 569 ret = wl1271_cmd_template_set(wl, CMD_TEMPL_PS_POLL, skb->data,
810 skb->len, 0, wl->basic_rate); 570 skb->len, 0, wl->basic_rate_set);
811 571
812out: 572out:
813 dev_kfree_skb(skb); 573 dev_kfree_skb(skb);
diff --git a/drivers/net/wireless/wl12xx/wl1271_cmd.h b/drivers/net/wireless/wl12xx/wl1271_cmd.h
index f5745d829c9..af577ee8eb0 100644
--- a/drivers/net/wireless/wl12xx/wl1271_cmd.h
+++ b/drivers/net/wireless/wl12xx/wl1271_cmd.h
@@ -41,9 +41,6 @@ int wl1271_cmd_data_path(struct wl1271 *wl, bool enable);
41int wl1271_cmd_ps_mode(struct wl1271 *wl, u8 ps_mode, bool send); 41int wl1271_cmd_ps_mode(struct wl1271 *wl, u8 ps_mode, bool send);
42int wl1271_cmd_read_memory(struct wl1271 *wl, u32 addr, void *answer, 42int wl1271_cmd_read_memory(struct wl1271 *wl, u32 addr, void *answer,
43 size_t len); 43 size_t len);
44int wl1271_cmd_scan(struct wl1271 *wl, const u8 *ssid, size_t ssid_len,
45 struct cfg80211_scan_request *req, u8 active_scan,
46 u8 high_prio, u8 band, u8 probe_requests);
47int wl1271_cmd_template_set(struct wl1271 *wl, u16 template_id, 44int wl1271_cmd_template_set(struct wl1271 *wl, u16 template_id,
48 void *buf, size_t buf_len, int index, u32 rates); 45 void *buf, size_t buf_len, int index, u32 rates);
49int wl1271_cmd_build_null_data(struct wl1271 *wl); 46int wl1271_cmd_build_null_data(struct wl1271 *wl);
@@ -350,71 +347,6 @@ struct wl1271_cmd_set_keys {
350 __le32 ac_seq_num32[NUM_ACCESS_CATEGORIES_COPY]; 347 __le32 ac_seq_num32[NUM_ACCESS_CATEGORIES_COPY];
351} __packed; 348} __packed;
352 349
353
354#define WL1271_SCAN_MAX_CHANNELS 24
355#define WL1271_SCAN_DEFAULT_TAG 1
356#define WL1271_SCAN_CURRENT_TX_PWR 0
357#define WL1271_SCAN_OPT_ACTIVE 0
358#define WL1271_SCAN_OPT_PASSIVE 1
359#define WL1271_SCAN_OPT_PRIORITY_HIGH 4
360#define WL1271_SCAN_CHAN_MIN_DURATION 30000 /* TU */
361#define WL1271_SCAN_CHAN_MAX_DURATION 60000 /* TU */
362#define WL1271_SCAN_BAND_2_4_GHZ 0
363#define WL1271_SCAN_BAND_5_GHZ 1
364#define WL1271_SCAN_BAND_DUAL 2
365
366struct basic_scan_params {
367 __le32 rx_config_options;
368 __le32 rx_filter_options;
369 /* Scan option flags (WL1271_SCAN_OPT_*) */
370 __le16 scan_options;
371 /* Number of scan channels in the list (maximum 30) */
372 u8 num_channels;
373 /* This field indicates the number of probe requests to send
374 per channel for an active scan */
375 u8 num_probe_requests;
376 /* Rate bit field for sending the probes */
377 __le32 tx_rate;
378 u8 tid_trigger;
379 u8 ssid_len;
380 /* in order to align */
381 u8 padding1[2];
382 u8 ssid[IW_ESSID_MAX_SIZE];
383 /* Band to scan */
384 u8 band;
385 u8 use_ssid_list;
386 u8 scan_tag;
387 u8 padding2;
388} __packed;
389
390struct basic_scan_channel_params {
391 /* Duration in TU to wait for frames on a channel for active scan */
392 __le32 min_duration;
393 __le32 max_duration;
394 __le32 bssid_lsb;
395 __le16 bssid_msb;
396 u8 early_termination;
397 u8 tx_power_att;
398 u8 channel;
399 /* FW internal use only! */
400 u8 dfs_candidate;
401 u8 activity_detected;
402 u8 pad;
403} __packed;
404
405struct wl1271_cmd_scan {
406 struct wl1271_cmd_header header;
407
408 struct basic_scan_params params;
409 struct basic_scan_channel_params channels[WL1271_SCAN_MAX_CHANNELS];
410} __packed;
411
412struct wl1271_cmd_trigger_scan_to {
413 struct wl1271_cmd_header header;
414
415 __le32 timeout;
416} __packed;
417
418struct wl1271_cmd_test_header { 350struct wl1271_cmd_test_header {
419 u8 id; 351 u8 id;
420 u8 padding[3]; 352 u8 padding[3];
diff --git a/drivers/net/wireless/wl12xx/wl1271_conf.h b/drivers/net/wireless/wl12xx/wl1271_conf.h
index d046d044b5b..0435ffda8f7 100644
--- a/drivers/net/wireless/wl12xx/wl1271_conf.h
+++ b/drivers/net/wireless/wl12xx/wl1271_conf.h
@@ -874,6 +874,13 @@ struct conf_conn_settings {
874 u8 ps_poll_threshold; 874 u8 ps_poll_threshold;
875 875
876 /* 876 /*
877 * PS Poll failure recovery ACTIVE period length
878 *
879 * Range: u32 (ms)
880 */
881 u32 ps_poll_recovery_period;
882
883 /*
877 * Configuration of signal average weights. 884 * Configuration of signal average weights.
878 */ 885 */
879 struct conf_sig_weights sig_weights; 886 struct conf_sig_weights sig_weights;
@@ -948,14 +955,6 @@ struct conf_radio_parms {
948 u8 fem; 955 u8 fem;
949}; 956};
950 957
951struct conf_init_settings {
952 /*
953 * Configure radio parameters.
954 */
955 struct conf_radio_parms radioparam;
956
957};
958
959struct conf_itrim_settings { 958struct conf_itrim_settings {
960 /* enable dco itrim */ 959 /* enable dco itrim */
961 u8 enable; 960 u8 enable;
@@ -1022,7 +1021,6 @@ struct conf_drv_settings {
1022 struct conf_rx_settings rx; 1021 struct conf_rx_settings rx;
1023 struct conf_tx_settings tx; 1022 struct conf_tx_settings tx;
1024 struct conf_conn_settings conn; 1023 struct conf_conn_settings conn;
1025 struct conf_init_settings init;
1026 struct conf_itrim_settings itrim; 1024 struct conf_itrim_settings itrim;
1027 struct conf_pm_config_settings pm_config; 1025 struct conf_pm_config_settings pm_config;
1028 struct conf_roam_trigger_settings roam_trigger; 1026 struct conf_roam_trigger_settings roam_trigger;
diff --git a/drivers/net/wireless/wl12xx/wl1271_event.c b/drivers/net/wireless/wl12xx/wl1271_event.c
index ca52cdec7a8..25ce2cd5e3f 100644
--- a/drivers/net/wireless/wl12xx/wl1271_event.c
+++ b/drivers/net/wireless/wl12xx/wl1271_event.c
@@ -26,36 +26,64 @@
26#include "wl1271_io.h" 26#include "wl1271_io.h"
27#include "wl1271_event.h" 27#include "wl1271_event.h"
28#include "wl1271_ps.h" 28#include "wl1271_ps.h"
29#include "wl1271_scan.h"
29#include "wl12xx_80211.h" 30#include "wl12xx_80211.h"
30 31
31static int wl1271_event_scan_complete(struct wl1271 *wl, 32void wl1271_pspoll_work(struct work_struct *work)
32 struct event_mailbox *mbox)
33{ 33{
34 wl1271_debug(DEBUG_EVENT, "status: 0x%x", 34 struct delayed_work *dwork;
35 mbox->scheduled_scan_status); 35 struct wl1271 *wl;
36 36
37 if (test_bit(WL1271_FLAG_SCANNING, &wl->flags)) { 37 dwork = container_of(work, struct delayed_work, work);
38 if (wl->scan.state == WL1271_SCAN_BAND_DUAL) { 38 wl = container_of(dwork, struct wl1271, pspoll_work);
39 /* 2.4 GHz band scanned, scan 5 GHz band, pretend 39
40 * to the wl1271_cmd_scan function that we are not 40 wl1271_debug(DEBUG_EVENT, "pspoll work");
41 * scanning as it checks that. 41
42 */ 42 mutex_lock(&wl->mutex);
43 clear_bit(WL1271_FLAG_SCANNING, &wl->flags); 43
44 /* FIXME: ie missing! */ 44 if (!test_and_clear_bit(WL1271_FLAG_PSPOLL_FAILURE, &wl->flags))
45 wl1271_cmd_scan(wl, wl->scan.ssid, wl->scan.ssid_len, 45 goto out;
46 wl->scan.req, 46
47 wl->scan.active, 47 if (!test_bit(WL1271_FLAG_STA_ASSOCIATED, &wl->flags))
48 wl->scan.high_prio, 48 goto out;
49 WL1271_SCAN_BAND_5_GHZ, 49
50 wl->scan.probe_requests); 50 /*
51 } else { 51 * if we end up here, then we were in powersave when the pspoll
52 mutex_unlock(&wl->mutex); 52 * delivery failure occurred, and no-one changed state since, so
53 ieee80211_scan_completed(wl->hw, false); 53 * we should go back to powersave.
54 mutex_lock(&wl->mutex); 54 */
55 clear_bit(WL1271_FLAG_SCANNING, &wl->flags); 55 wl1271_ps_set_mode(wl, STATION_POWER_SAVE_MODE, true);
56 } 56
57out:
58 mutex_unlock(&wl->mutex);
59};
60
61static void wl1271_event_pspoll_delivery_fail(struct wl1271 *wl)
62{
63 int delay = wl->conf.conn.ps_poll_recovery_period;
64 int ret;
65
66 wl->ps_poll_failures++;
67 if (wl->ps_poll_failures == 1)
68 wl1271_info("AP with dysfunctional ps-poll, "
69 "trying to work around it.");
70
71 /* force active mode receive data from the AP */
72 if (test_bit(WL1271_FLAG_PSM, &wl->flags)) {
73 ret = wl1271_ps_set_mode(wl, STATION_ACTIVE_MODE, true);
74 if (ret < 0)
75 return;
76 set_bit(WL1271_FLAG_PSPOLL_FAILURE, &wl->flags);
77 ieee80211_queue_delayed_work(wl->hw, &wl->pspoll_work,
78 msecs_to_jiffies(delay));
57 } 79 }
58 return 0; 80
81 /*
82 * If already in active mode, lets we should be getting data from
83 * the AP right away. If we enter PSM too fast after this, and data
84 * remains on the AP, we will get another event like this, and we'll
85 * go into active once more.
86 */
59} 87}
60 88
61static int wl1271_event_ps_report(struct wl1271 *wl, 89static int wl1271_event_ps_report(struct wl1271 *wl,
@@ -163,9 +191,19 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox)
163 wl1271_debug(DEBUG_EVENT, "vector: 0x%x", vector); 191 wl1271_debug(DEBUG_EVENT, "vector: 0x%x", vector);
164 192
165 if (vector & SCAN_COMPLETE_EVENT_ID) { 193 if (vector & SCAN_COMPLETE_EVENT_ID) {
166 ret = wl1271_event_scan_complete(wl, mbox); 194 wl1271_debug(DEBUG_EVENT, "status: 0x%x",
167 if (ret < 0) 195 mbox->scheduled_scan_status);
168 return ret; 196
197 wl1271_scan_stm(wl);
198 }
199
200 /* disable dynamic PS when requested by the firmware */
201 if (vector & SOFT_GEMINI_SENSE_EVENT_ID &&
202 wl->bss_type == BSS_TYPE_STA_BSS) {
203 if (mbox->soft_gemini_sense_info)
204 ieee80211_disable_dyn_ps(wl->vif);
205 else
206 ieee80211_enable_dyn_ps(wl->vif);
169 } 207 }
170 208
171 /* 209 /*
@@ -191,6 +229,9 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox)
191 return ret; 229 return ret;
192 } 230 }
193 231
232 if (vector & PSPOLL_DELIVERY_FAILURE_EVENT_ID)
233 wl1271_event_pspoll_delivery_fail(wl);
234
194 if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) { 235 if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) {
195 wl1271_debug(DEBUG_EVENT, "RSSI_SNR_TRIGGER_0_EVENT"); 236 wl1271_debug(DEBUG_EVENT, "RSSI_SNR_TRIGGER_0_EVENT");
196 if (wl->vif) 237 if (wl->vif)
diff --git a/drivers/net/wireless/wl12xx/wl1271_event.h b/drivers/net/wireless/wl12xx/wl1271_event.h
index 43d5aeae178..e4751667cf5 100644
--- a/drivers/net/wireless/wl12xx/wl1271_event.h
+++ b/drivers/net/wireless/wl12xx/wl1271_event.h
@@ -121,5 +121,6 @@ struct event_mailbox {
121int wl1271_event_unmask(struct wl1271 *wl); 121int wl1271_event_unmask(struct wl1271 *wl);
122void wl1271_event_mbox_config(struct wl1271 *wl); 122void wl1271_event_mbox_config(struct wl1271 *wl);
123int wl1271_event_handle(struct wl1271 *wl, u8 mbox); 123int wl1271_event_handle(struct wl1271 *wl, u8 mbox);
124void wl1271_pspoll_work(struct work_struct *work);
124 125
125#endif 126#endif
diff --git a/drivers/net/wireless/wl12xx/wl1271_main.c b/drivers/net/wireless/wl12xx/wl1271_main.c
index 7a14da506d7..d30de58cef9 100644
--- a/drivers/net/wireless/wl12xx/wl1271_main.c
+++ b/drivers/net/wireless/wl12xx/wl1271_main.c
@@ -28,7 +28,6 @@
28#include <linux/crc32.h> 28#include <linux/crc32.h>
29#include <linux/etherdevice.h> 29#include <linux/etherdevice.h>
30#include <linux/vmalloc.h> 30#include <linux/vmalloc.h>
31#include <linux/inetdevice.h>
32#include <linux/platform_device.h> 31#include <linux/platform_device.h>
33#include <linux/slab.h> 32#include <linux/slab.h>
34 33
@@ -45,6 +44,7 @@
45#include "wl1271_cmd.h" 44#include "wl1271_cmd.h"
46#include "wl1271_boot.h" 45#include "wl1271_boot.h"
47#include "wl1271_testmode.h" 46#include "wl1271_testmode.h"
47#include "wl1271_scan.h"
48 48
49#define WL1271_BOOT_RETRIES 3 49#define WL1271_BOOT_RETRIES 3
50 50
@@ -55,7 +55,7 @@ static struct conf_drv_settings default_conf = {
55 [CONF_SG_HV3_MAX_OVERRIDE] = 0, 55 [CONF_SG_HV3_MAX_OVERRIDE] = 0,
56 [CONF_SG_BT_NFS_SAMPLE_INTERVAL] = 400, 56 [CONF_SG_BT_NFS_SAMPLE_INTERVAL] = 400,
57 [CONF_SG_BT_LOAD_RATIO] = 50, 57 [CONF_SG_BT_LOAD_RATIO] = 50,
58 [CONF_SG_AUTO_PS_MODE] = 0, 58 [CONF_SG_AUTO_PS_MODE] = 1,
59 [CONF_SG_AUTO_SCAN_PROBE_REQ] = 170, 59 [CONF_SG_AUTO_SCAN_PROBE_REQ] = 170,
60 [CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3] = 50, 60 [CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3] = 50,
61 [CONF_SG_ANTENNA_CONFIGURATION] = 0, 61 [CONF_SG_ANTENNA_CONFIGURATION] = 0,
@@ -234,18 +234,14 @@ static struct conf_drv_settings default_conf = {
234 .beacon_rx_timeout = 10000, 234 .beacon_rx_timeout = 10000,
235 .broadcast_timeout = 20000, 235 .broadcast_timeout = 20000,
236 .rx_broadcast_in_ps = 1, 236 .rx_broadcast_in_ps = 1,
237 .ps_poll_threshold = 20, 237 .ps_poll_threshold = 10,
238 .ps_poll_recovery_period = 700,
238 .bet_enable = CONF_BET_MODE_ENABLE, 239 .bet_enable = CONF_BET_MODE_ENABLE,
239 .bet_max_consecutive = 10, 240 .bet_max_consecutive = 10,
240 .psm_entry_retries = 3, 241 .psm_entry_retries = 3,
241 .keep_alive_interval = 55000, 242 .keep_alive_interval = 55000,
242 .max_listen_interval = 20, 243 .max_listen_interval = 20,
243 }, 244 },
244 .init = {
245 .radioparam = {
246 .fem = 1,
247 }
248 },
249 .itrim = { 245 .itrim = {
250 .enable = false, 246 .enable = false,
251 .timeout = 50000, 247 .timeout = 50000,
@@ -818,93 +814,6 @@ static int wl1271_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
818 return NETDEV_TX_OK; 814 return NETDEV_TX_OK;
819} 815}
820 816
821static int wl1271_dev_notify(struct notifier_block *me, unsigned long what,
822 void *arg)
823{
824 struct net_device *dev;
825 struct wireless_dev *wdev;
826 struct wiphy *wiphy;
827 struct ieee80211_hw *hw;
828 struct wl1271 *wl;
829 struct wl1271 *wl_temp;
830 struct in_device *idev;
831 struct in_ifaddr *ifa = arg;
832 int ret = 0;
833
834 /* FIXME: this ugly function should probably be implemented in the
835 * mac80211, and here should only be a simple callback handling actual
836 * setting of the filters. Now we need to dig up references to
837 * various structures to gain access to what we need.
838 * Also, because of this, there is no "initial" setting of the filter
839 * in "op_start", because we don't want to dig up struct net_device
840 * there - the filter will be set upon first change of the interface
841 * IP address. */
842
843 dev = ifa->ifa_dev->dev;
844
845 wdev = dev->ieee80211_ptr;
846 if (wdev == NULL)
847 return NOTIFY_DONE;
848
849 wiphy = wdev->wiphy;
850 if (wiphy == NULL)
851 return NOTIFY_DONE;
852
853 hw = wiphy_priv(wiphy);
854 if (hw == NULL)
855 return NOTIFY_DONE;
856
857 /* Check that the interface is one supported by this driver. */
858 wl_temp = hw->priv;
859 list_for_each_entry(wl, &wl_list, list) {
860 if (wl == wl_temp)
861 break;
862 }
863 if (wl != wl_temp)
864 return NOTIFY_DONE;
865
866 /* Get the interface IP address for the device. "ifa" will become
867 NULL if:
868 - there is no IPV4 protocol address configured
869 - there are multiple (virtual) IPV4 addresses configured
870 When "ifa" is NULL, filtering will be disabled.
871 */
872 ifa = NULL;
873 idev = dev->ip_ptr;
874 if (idev)
875 ifa = idev->ifa_list;
876
877 if (ifa && ifa->ifa_next)
878 ifa = NULL;
879
880 mutex_lock(&wl->mutex);
881
882 if (wl->state == WL1271_STATE_OFF)
883 goto out;
884
885 ret = wl1271_ps_elp_wakeup(wl, false);
886 if (ret < 0)
887 goto out;
888 if (ifa)
889 ret = wl1271_acx_arp_ip_filter(wl, true,
890 (u8 *)&ifa->ifa_address,
891 ACX_IPV4_VERSION);
892 else
893 ret = wl1271_acx_arp_ip_filter(wl, false, NULL,
894 ACX_IPV4_VERSION);
895 wl1271_ps_elp_sleep(wl);
896
897out:
898 mutex_unlock(&wl->mutex);
899
900 return NOTIFY_OK;
901}
902
903static struct notifier_block wl1271_dev_notifier = {
904 .notifier_call = wl1271_dev_notify,
905};
906
907
908static int wl1271_op_start(struct ieee80211_hw *hw) 817static int wl1271_op_start(struct ieee80211_hw *hw)
909{ 818{
910 wl1271_debug(DEBUG_MAC80211, "mac80211 start"); 819 wl1271_debug(DEBUG_MAC80211, "mac80211 start");
@@ -1008,10 +917,8 @@ power_off:
1008out: 917out:
1009 mutex_unlock(&wl->mutex); 918 mutex_unlock(&wl->mutex);
1010 919
1011 if (!ret) { 920 if (!ret)
1012 list_add(&wl->list, &wl_list); 921 list_add(&wl->list, &wl_list);
1013 register_inetaddr_notifier(&wl1271_dev_notifier);
1014 }
1015 922
1016 return ret; 923 return ret;
1017} 924}
@@ -1022,8 +929,6 @@ static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
1022 struct wl1271 *wl = hw->priv; 929 struct wl1271 *wl = hw->priv;
1023 int i; 930 int i;
1024 931
1025 unregister_inetaddr_notifier(&wl1271_dev_notifier);
1026
1027 mutex_lock(&wl->mutex); 932 mutex_lock(&wl->mutex);
1028 wl1271_debug(DEBUG_MAC80211, "mac80211 remove interface"); 933 wl1271_debug(DEBUG_MAC80211, "mac80211 remove interface");
1029 934
@@ -1033,10 +938,17 @@ static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
1033 938
1034 WARN_ON(wl->state != WL1271_STATE_ON); 939 WARN_ON(wl->state != WL1271_STATE_ON);
1035 940
1036 if (test_and_clear_bit(WL1271_FLAG_SCANNING, &wl->flags)) { 941 /* enable dyn ps just in case (if left on due to fw crash etc) */
942 if (wl->bss_type == BSS_TYPE_STA_BSS)
943 ieee80211_enable_dyn_ps(wl->vif);
944
945 if (wl->scan.state != WL1271_SCAN_STATE_IDLE) {
1037 mutex_unlock(&wl->mutex); 946 mutex_unlock(&wl->mutex);
1038 ieee80211_scan_completed(wl->hw, true); 947 ieee80211_scan_completed(wl->hw, true);
1039 mutex_lock(&wl->mutex); 948 mutex_lock(&wl->mutex);
949 wl->scan.state = WL1271_SCAN_STATE_IDLE;
950 kfree(wl->scan.scanned_ch);
951 wl->scan.scanned_ch = NULL;
1040 } 952 }
1041 953
1042 wl->state = WL1271_STATE_OFF; 954 wl->state = WL1271_STATE_OFF;
@@ -1047,6 +959,7 @@ static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
1047 959
1048 cancel_work_sync(&wl->irq_work); 960 cancel_work_sync(&wl->irq_work);
1049 cancel_work_sync(&wl->tx_work); 961 cancel_work_sync(&wl->tx_work);
962 cancel_delayed_work_sync(&wl->pspoll_work);
1050 963
1051 mutex_lock(&wl->mutex); 964 mutex_lock(&wl->mutex);
1052 965
@@ -1352,6 +1265,13 @@ static int wl1271_op_config(struct ieee80211_hw *hw, u32 changed)
1352 wl1271_warning("idle mode change failed %d", ret); 1265 wl1271_warning("idle mode change failed %d", ret);
1353 } 1266 }
1354 1267
1268 /*
1269 * if mac80211 changes the PSM mode, make sure the mode is not
1270 * incorrectly changed after the pspoll failure active window.
1271 */
1272 if (changed & IEEE80211_CONF_CHANGE_PS)
1273 clear_bit(WL1271_FLAG_PSPOLL_FAILURE, &wl->flags);
1274
1355 if (conf->flags & IEEE80211_CONF_PS && 1275 if (conf->flags & IEEE80211_CONF_PS &&
1356 !test_bit(WL1271_FLAG_PSM_REQUESTED, &wl->flags)) { 1276 !test_bit(WL1271_FLAG_PSM_REQUESTED, &wl->flags)) {
1357 set_bit(WL1271_FLAG_PSM_REQUESTED, &wl->flags); 1277 set_bit(WL1271_FLAG_PSM_REQUESTED, &wl->flags);
@@ -1634,11 +1554,9 @@ static int wl1271_op_hw_scan(struct ieee80211_hw *hw,
1634 goto out; 1554 goto out;
1635 1555
1636 if (wl1271_11a_enabled()) 1556 if (wl1271_11a_enabled())
1637 ret = wl1271_cmd_scan(hw->priv, ssid, len, req, 1557 ret = wl1271_scan(hw->priv, ssid, len, req);
1638 1, 0, WL1271_SCAN_BAND_DUAL, 3);
1639 else 1558 else
1640 ret = wl1271_cmd_scan(hw->priv, ssid, len, req, 1559 ret = wl1271_scan(hw->priv, ssid, len, req);
1641 1, 0, WL1271_SCAN_BAND_2_4_GHZ, 3);
1642 1560
1643 wl1271_ps_elp_sleep(wl); 1561 wl1271_ps_elp_sleep(wl);
1644 1562
@@ -1811,6 +1729,8 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw,
1811 wl->aid = bss_conf->aid; 1729 wl->aid = bss_conf->aid;
1812 set_assoc = true; 1730 set_assoc = true;
1813 1731
1732 wl->ps_poll_failures = 0;
1733
1814 /* 1734 /*
1815 * use basic rates from AP, and determine lowest rate 1735 * use basic rates from AP, and determine lowest rate
1816 * to use with control frames. 1736 * to use with control frames.
@@ -1860,6 +1780,9 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw,
1860 clear_bit(WL1271_FLAG_STA_ASSOCIATED, &wl->flags); 1780 clear_bit(WL1271_FLAG_STA_ASSOCIATED, &wl->flags);
1861 wl->aid = 0; 1781 wl->aid = 0;
1862 1782
1783 /* re-enable dynamic ps - just in case */
1784 ieee80211_enable_dyn_ps(wl->vif);
1785
1863 /* revert back to minimum rates for the current band */ 1786 /* revert back to minimum rates for the current band */
1864 wl1271_set_band_rate(wl); 1787 wl1271_set_band_rate(wl);
1865 wl->basic_rate = wl1271_min_rate_get(wl); 1788 wl->basic_rate = wl1271_min_rate_get(wl);
@@ -1908,6 +1831,19 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw,
1908 } 1831 }
1909 } 1832 }
1910 1833
1834 if (changed & BSS_CHANGED_ARP_FILTER) {
1835 __be32 addr = bss_conf->arp_addr_list[0];
1836 WARN_ON(wl->bss_type != BSS_TYPE_STA_BSS);
1837
1838 if (bss_conf->arp_addr_cnt == 1 && bss_conf->arp_filter_enabled)
1839 ret = wl1271_acx_arp_ip_filter(wl, true, addr);
1840 else
1841 ret = wl1271_acx_arp_ip_filter(wl, false, addr);
1842
1843 if (ret < 0)
1844 goto out_sleep;
1845 }
1846
1911 if (do_join) { 1847 if (do_join) {
1912 ret = wl1271_join(wl, set_assoc); 1848 ret = wl1271_join(wl, set_assoc);
1913 if (ret < 0) { 1849 if (ret < 0) {
@@ -1966,6 +1902,32 @@ out:
1966 return ret; 1902 return ret;
1967} 1903}
1968 1904
1905static u64 wl1271_op_get_tsf(struct ieee80211_hw *hw)
1906{
1907
1908 struct wl1271 *wl = hw->priv;
1909 u64 mactime = ULLONG_MAX;
1910 int ret;
1911
1912 wl1271_debug(DEBUG_MAC80211, "mac80211 get tsf");
1913
1914 mutex_lock(&wl->mutex);
1915
1916 ret = wl1271_ps_elp_wakeup(wl, false);
1917 if (ret < 0)
1918 goto out;
1919
1920 ret = wl1271_acx_tsf_info(wl, &mactime);
1921 if (ret < 0)
1922 goto out_sleep;
1923
1924out_sleep:
1925 wl1271_ps_elp_sleep(wl);
1926
1927out:
1928 mutex_unlock(&wl->mutex);
1929 return mactime;
1930}
1969 1931
1970/* can't be const, mac80211 writes to this */ 1932/* can't be const, mac80211 writes to this */
1971static struct ieee80211_rate wl1271_rates[] = { 1933static struct ieee80211_rate wl1271_rates[] = {
@@ -2195,6 +2157,7 @@ static const struct ieee80211_ops wl1271_ops = {
2195 .bss_info_changed = wl1271_op_bss_info_changed, 2157 .bss_info_changed = wl1271_op_bss_info_changed,
2196 .set_rts_threshold = wl1271_op_set_rts_threshold, 2158 .set_rts_threshold = wl1271_op_set_rts_threshold,
2197 .conf_tx = wl1271_op_conf_tx, 2159 .conf_tx = wl1271_op_conf_tx,
2160 .get_tsf = wl1271_op_get_tsf,
2198 CFG80211_TESTMODE_CMD(wl1271_tm_cmd) 2161 CFG80211_TESTMODE_CMD(wl1271_tm_cmd)
2199}; 2162};
2200 2163
@@ -2407,6 +2370,7 @@ struct ieee80211_hw *wl1271_alloc_hw(void)
2407 skb_queue_head_init(&wl->tx_queue); 2370 skb_queue_head_init(&wl->tx_queue);
2408 2371
2409 INIT_DELAYED_WORK(&wl->elp_work, wl1271_elp_work); 2372 INIT_DELAYED_WORK(&wl->elp_work, wl1271_elp_work);
2373 INIT_DELAYED_WORK(&wl->pspoll_work, wl1271_pspoll_work);
2410 wl->channel = WL1271_DEFAULT_CHANNEL; 2374 wl->channel = WL1271_DEFAULT_CHANNEL;
2411 wl->beacon_int = WL1271_DEFAULT_BEACON_INT; 2375 wl->beacon_int = WL1271_DEFAULT_BEACON_INT;
2412 wl->default_key = 0; 2376 wl->default_key = 0;
diff --git a/drivers/net/wireless/wl12xx/wl1271_rx.c b/drivers/net/wireless/wl12xx/wl1271_rx.c
index b98fb643fab..e98f22b3c3b 100644
--- a/drivers/net/wireless/wl12xx/wl1271_rx.c
+++ b/drivers/net/wireless/wl12xx/wl1271_rx.c
@@ -53,12 +53,6 @@ static void wl1271_rx_status(struct wl1271 *wl,
53 status->band = wl->band; 53 status->band = wl->band;
54 status->rate_idx = wl1271_rate_to_idx(wl, desc->rate); 54 status->rate_idx = wl1271_rate_to_idx(wl, desc->rate);
55 55
56 /*
57 * FIXME: Add mactime handling. For IBSS (ad-hoc) we need to get the
58 * timestamp from the beacon (acx_tsf_info). In BSS mode (infra) we
59 * only need the mactime for monitor mode. For now the mactime is
60 * not valid, so RX_FLAG_TSFT should not be set
61 */
62 status->signal = desc->rssi; 56 status->signal = desc->rssi;
63 57
64 status->freq = ieee80211_channel_to_frequency(desc->channel); 58 status->freq = ieee80211_channel_to_frequency(desc->channel);
diff --git a/drivers/net/wireless/wl12xx/wl1271_scan.c b/drivers/net/wireless/wl12xx/wl1271_scan.c
new file mode 100644
index 00000000000..fec43eed8c5
--- /dev/null
+++ b/drivers/net/wireless/wl12xx/wl1271_scan.c
@@ -0,0 +1,257 @@
1/*
2 * This file is part of wl1271
3 *
4 * Copyright (C) 2009-2010 Nokia Corporation
5 *
6 * Contact: Luciano Coelho <luciano.coelho@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 *
22 */
23
24#include <linux/ieee80211.h>
25
26#include "wl1271.h"
27#include "wl1271_cmd.h"
28#include "wl1271_scan.h"
29#include "wl1271_acx.h"
30
31static int wl1271_get_scan_channels(struct wl1271 *wl,
32 struct cfg80211_scan_request *req,
33 struct basic_scan_channel_params *channels,
34 enum ieee80211_band band, bool passive)
35{
36 int i, j;
37 u32 flags;
38
39 for (i = 0, j = 0;
40 i < req->n_channels && j < WL1271_SCAN_MAX_CHANNELS;
41 i++) {
42
43 flags = req->channels[i]->flags;
44
45 if (!wl->scan.scanned_ch[i] &&
46 !(flags & IEEE80211_CHAN_DISABLED) &&
47 ((!!(flags & IEEE80211_CHAN_PASSIVE_SCAN)) == passive) &&
48 (req->channels[i]->band == band)) {
49
50 wl1271_debug(DEBUG_SCAN, "band %d, center_freq %d ",
51 req->channels[i]->band,
52 req->channels[i]->center_freq);
53 wl1271_debug(DEBUG_SCAN, "hw_value %d, flags %X",
54 req->channels[i]->hw_value,
55 req->channels[i]->flags);
56 wl1271_debug(DEBUG_SCAN,
57 "max_antenna_gain %d, max_power %d",
58 req->channels[i]->max_antenna_gain,
59 req->channels[i]->max_power);
60 wl1271_debug(DEBUG_SCAN, "beacon_found %d",
61 req->channels[i]->beacon_found);
62
63 channels[j].min_duration =
64 cpu_to_le32(WL1271_SCAN_CHAN_MIN_DURATION);
65 channels[j].max_duration =
66 cpu_to_le32(WL1271_SCAN_CHAN_MAX_DURATION);
67 channels[j].early_termination = 0;
68 channels[j].tx_power_att = req->channels[i]->max_power;
69 channels[j].channel = req->channels[i]->hw_value;
70
71 memset(&channels[j].bssid_lsb, 0xff, 4);
72 memset(&channels[j].bssid_msb, 0xff, 2);
73
74 /* Mark the channels we already used */
75 wl->scan.scanned_ch[i] = true;
76
77 j++;
78 }
79 }
80
81 return j;
82}
83
84#define WL1271_NOTHING_TO_SCAN 1
85
86static int wl1271_scan_send(struct wl1271 *wl, enum ieee80211_band band,
87 bool passive, u32 basic_rate)
88{
89 struct wl1271_cmd_scan *cmd;
90 struct wl1271_cmd_trigger_scan_to *trigger;
91 int ret;
92 u16 scan_options = 0;
93
94 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
95 trigger = kzalloc(sizeof(*trigger), GFP_KERNEL);
96 if (!cmd || !trigger) {
97 ret = -ENOMEM;
98 goto out;
99 }
100
101 /* We always use high priority scans */
102 scan_options = WL1271_SCAN_OPT_PRIORITY_HIGH;
103 if(passive)
104 scan_options |= WL1271_SCAN_OPT_PASSIVE;
105 cmd->params.scan_options = cpu_to_le16(scan_options);
106
107 cmd->params.n_ch = wl1271_get_scan_channels(wl, wl->scan.req,
108 cmd->channels,
109 band, passive);
110 if (cmd->params.n_ch == 0) {
111 ret = WL1271_NOTHING_TO_SCAN;
112 goto out;
113 }
114
115 cmd->params.tx_rate = cpu_to_le32(basic_rate);
116 cmd->params.rx_config_options = cpu_to_le32(CFG_RX_ALL_GOOD);
117 cmd->params.rx_filter_options =
118 cpu_to_le32(CFG_RX_PRSP_EN | CFG_RX_MGMT_EN | CFG_RX_BCN_EN);
119
120 cmd->params.n_probe_reqs = WL1271_SCAN_PROBE_REQS;
121 cmd->params.tx_rate = cpu_to_le32(basic_rate);
122 cmd->params.tid_trigger = 0;
123 cmd->params.scan_tag = WL1271_SCAN_DEFAULT_TAG;
124
125 if (band == IEEE80211_BAND_2GHZ)
126 cmd->params.band = WL1271_SCAN_BAND_2_4_GHZ;
127 else
128 cmd->params.band = WL1271_SCAN_BAND_5_GHZ;
129
130 if (wl->scan.ssid_len && wl->scan.ssid) {
131 cmd->params.ssid_len = wl->scan.ssid_len;
132 memcpy(cmd->params.ssid, wl->scan.ssid, wl->scan.ssid_len);
133 }
134
135 ret = wl1271_cmd_build_probe_req(wl, wl->scan.ssid, wl->scan.ssid_len,
136 wl->scan.req->ie, wl->scan.req->ie_len,
137 band);
138 if (ret < 0) {
139 wl1271_error("PROBE request template failed");
140 goto out;
141 }
142
143 /* disable the timeout */
144 trigger->timeout = 0;
145 ret = wl1271_cmd_send(wl, CMD_TRIGGER_SCAN_TO, trigger,
146 sizeof(*trigger), 0);
147 if (ret < 0) {
148 wl1271_error("trigger scan to failed for hw scan");
149 goto out;
150 }
151
152 wl1271_dump(DEBUG_SCAN, "SCAN: ", cmd, sizeof(*cmd));
153
154 ret = wl1271_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd), 0);
155 if (ret < 0) {
156 wl1271_error("SCAN failed");
157 goto out;
158 }
159
160out:
161 kfree(cmd);
162 kfree(trigger);
163 return ret;
164}
165
166void wl1271_scan_stm(struct wl1271 *wl)
167{
168 int ret;
169
170 switch (wl->scan.state) {
171 case WL1271_SCAN_STATE_IDLE:
172 break;
173
174 case WL1271_SCAN_STATE_2GHZ_ACTIVE:
175 ret = wl1271_scan_send(wl, IEEE80211_BAND_2GHZ, false,
176 wl->conf.tx.basic_rate);
177 if (ret == WL1271_NOTHING_TO_SCAN) {
178 wl->scan.state = WL1271_SCAN_STATE_2GHZ_PASSIVE;
179 wl1271_scan_stm(wl);
180 }
181
182 break;
183
184 case WL1271_SCAN_STATE_2GHZ_PASSIVE:
185 ret = wl1271_scan_send(wl, IEEE80211_BAND_2GHZ, true,
186 wl->conf.tx.basic_rate);
187 if (ret == WL1271_NOTHING_TO_SCAN) {
188 if (wl1271_11a_enabled())
189 wl->scan.state = WL1271_SCAN_STATE_5GHZ_ACTIVE;
190 else
191 wl->scan.state = WL1271_SCAN_STATE_DONE;
192 wl1271_scan_stm(wl);
193 }
194
195 break;
196
197 case WL1271_SCAN_STATE_5GHZ_ACTIVE:
198 ret = wl1271_scan_send(wl, IEEE80211_BAND_5GHZ, false,
199 wl->conf.tx.basic_rate_5);
200 if (ret == WL1271_NOTHING_TO_SCAN) {
201 wl->scan.state = WL1271_SCAN_STATE_5GHZ_PASSIVE;
202 wl1271_scan_stm(wl);
203 }
204
205 break;
206
207 case WL1271_SCAN_STATE_5GHZ_PASSIVE:
208 ret = wl1271_scan_send(wl, IEEE80211_BAND_5GHZ, true,
209 wl->conf.tx.basic_rate_5);
210 if (ret == WL1271_NOTHING_TO_SCAN) {
211 wl->scan.state = WL1271_SCAN_STATE_DONE;
212 wl1271_scan_stm(wl);
213 }
214
215 break;
216
217 case WL1271_SCAN_STATE_DONE:
218 mutex_unlock(&wl->mutex);
219 ieee80211_scan_completed(wl->hw, false);
220 mutex_lock(&wl->mutex);
221
222 kfree(wl->scan.scanned_ch);
223 wl->scan.scanned_ch = NULL;
224
225 wl->scan.state = WL1271_SCAN_STATE_IDLE;
226 break;
227
228 default:
229 wl1271_error("invalid scan state");
230 break;
231 }
232}
233
234int wl1271_scan(struct wl1271 *wl, const u8 *ssid, size_t ssid_len,
235 struct cfg80211_scan_request *req)
236{
237 if (wl->scan.state != WL1271_SCAN_STATE_IDLE)
238 return -EBUSY;
239
240 wl->scan.state = WL1271_SCAN_STATE_2GHZ_ACTIVE;
241
242 if (ssid_len && ssid) {
243 wl->scan.ssid_len = ssid_len;
244 memcpy(wl->scan.ssid, ssid, ssid_len);
245 } else {
246 wl->scan.ssid_len = 0;
247 }
248
249 wl->scan.req = req;
250
251 wl->scan.scanned_ch = kzalloc(req->n_channels *
252 sizeof(*wl->scan.scanned_ch),
253 GFP_KERNEL);
254 wl1271_scan_stm(wl);
255
256 return 0;
257}
diff --git a/drivers/net/wireless/wl12xx/wl1271_scan.h b/drivers/net/wireless/wl12xx/wl1271_scan.h
new file mode 100644
index 00000000000..f1815700f5f
--- /dev/null
+++ b/drivers/net/wireless/wl12xx/wl1271_scan.h
@@ -0,0 +1,109 @@
1/*
2 * This file is part of wl1271
3 *
4 * Copyright (C) 2009-2010 Nokia Corporation
5 *
6 * Contact: Luciano Coelho <luciano.coelho@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 *
22 */
23
24#ifndef __WL1271_SCAN_H__
25#define __WL1271_SCAN_H__
26
27#include "wl1271.h"
28
29int wl1271_scan(struct wl1271 *wl, const u8 *ssid, size_t ssid_len,
30 struct cfg80211_scan_request *req);
31int wl1271_scan_build_probe_req(struct wl1271 *wl,
32 const u8 *ssid, size_t ssid_len,
33 const u8 *ie, size_t ie_len, u8 band);
34void wl1271_scan_stm(struct wl1271 *wl);
35
36#define WL1271_SCAN_MAX_CHANNELS 24
37#define WL1271_SCAN_DEFAULT_TAG 1
38#define WL1271_SCAN_CURRENT_TX_PWR 0
39#define WL1271_SCAN_OPT_ACTIVE 0
40#define WL1271_SCAN_OPT_PASSIVE 1
41#define WL1271_SCAN_OPT_PRIORITY_HIGH 4
42#define WL1271_SCAN_CHAN_MIN_DURATION 30000 /* TU */
43#define WL1271_SCAN_CHAN_MAX_DURATION 60000 /* TU */
44#define WL1271_SCAN_BAND_2_4_GHZ 0
45#define WL1271_SCAN_BAND_5_GHZ 1
46#define WL1271_SCAN_PROBE_REQS 3
47
48enum {
49 WL1271_SCAN_STATE_IDLE,
50 WL1271_SCAN_STATE_2GHZ_ACTIVE,
51 WL1271_SCAN_STATE_2GHZ_PASSIVE,
52 WL1271_SCAN_STATE_5GHZ_ACTIVE,
53 WL1271_SCAN_STATE_5GHZ_PASSIVE,
54 WL1271_SCAN_STATE_DONE
55};
56
57struct basic_scan_params {
58 __le32 rx_config_options;
59 __le32 rx_filter_options;
60 /* Scan option flags (WL1271_SCAN_OPT_*) */
61 __le16 scan_options;
62 /* Number of scan channels in the list (maximum 30) */
63 u8 n_ch;
64 /* This field indicates the number of probe requests to send
65 per channel for an active scan */
66 u8 n_probe_reqs;
67 /* Rate bit field for sending the probes */
68 __le32 tx_rate;
69 u8 tid_trigger;
70 u8 ssid_len;
71 /* in order to align */
72 u8 padding1[2];
73 u8 ssid[IW_ESSID_MAX_SIZE];
74 /* Band to scan */
75 u8 band;
76 u8 use_ssid_list;
77 u8 scan_tag;
78 u8 padding2;
79} __packed;
80
81struct basic_scan_channel_params {
82 /* Duration in TU to wait for frames on a channel for active scan */
83 __le32 min_duration;
84 __le32 max_duration;
85 __le32 bssid_lsb;
86 __le16 bssid_msb;
87 u8 early_termination;
88 u8 tx_power_att;
89 u8 channel;
90 /* FW internal use only! */
91 u8 dfs_candidate;
92 u8 activity_detected;
93 u8 pad;
94} __packed;
95
96struct wl1271_cmd_scan {
97 struct wl1271_cmd_header header;
98
99 struct basic_scan_params params;
100 struct basic_scan_channel_params channels[WL1271_SCAN_MAX_CHANNELS];
101} __packed;
102
103struct wl1271_cmd_trigger_scan_to {
104 struct wl1271_cmd_header header;
105
106 __le32 timeout;
107} __packed;
108
109#endif /* __WL1271_SCAN_H__ */
diff --git a/drivers/net/wireless/wl12xx/wl1271_spi.c b/drivers/net/wireless/wl12xx/wl1271_spi.c
index 5189b812f93..96d25fb5049 100644
--- a/drivers/net/wireless/wl12xx/wl1271_spi.c
+++ b/drivers/net/wireless/wl12xx/wl1271_spi.c
@@ -461,3 +461,4 @@ MODULE_LICENSE("GPL");
461MODULE_AUTHOR("Luciano Coelho <luciano.coelho@nokia.com>"); 461MODULE_AUTHOR("Luciano Coelho <luciano.coelho@nokia.com>");
462MODULE_AUTHOR("Juuso Oikarinen <juuso.oikarinen@nokia.com>"); 462MODULE_AUTHOR("Juuso Oikarinen <juuso.oikarinen@nokia.com>");
463MODULE_FIRMWARE(WL1271_FW_NAME); 463MODULE_FIRMWARE(WL1271_FW_NAME);
464MODULE_ALIAS("spi:wl1271");