diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-04-22 15:39:31 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-04-22 15:39:31 +0000 | 
| commit | a850143071b5d5e48ce580bae1d744be2db6b6fb (patch) | |
| tree | 2f92327af6db3b6ce0eb773f9879cfdf286b9b6f /package/mac80211/patches/550-ath9k_pending_work.patch | |
| parent | e711a7c8843438ad1d01382dca307112e5d40320 (diff) | |
mac80211: update to wireless-testing 2010-04-21
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21089 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/550-ath9k_pending_work.patch')
| -rw-r--r-- | package/mac80211/patches/550-ath9k_pending_work.patch | 476 | 
1 files changed, 476 insertions, 0 deletions
diff --git a/package/mac80211/patches/550-ath9k_pending_work.patch b/package/mac80211/patches/550-ath9k_pending_work.patch new file mode 100644 index 000000000..1a6f06d20 --- /dev/null +++ b/package/mac80211/patches/550-ath9k_pending_work.patch @@ -0,0 +1,476 @@ +--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c +@@ -852,7 +852,8 @@ static int ar5008_hw_process_ini(struct  +  + 	REG_WRITE_ARRAY(&ah->iniBB_RfGain, freqIndex, regWrites); +  +-	if (AR_SREV_9280_20(ah) && IS_CHAN_A_5MHZ_SPACED(chan)) { ++	if (AR_SREV_9280_20(ah) && ++	    (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK)) { + 		REG_WRITE_ARRAY(&ah->iniModesAdditional, modesIndex, + 				regWrites); + 	} +@@ -895,7 +896,7 @@ static void ar5008_hw_set_rfmode(struct  + 			AR_PHY_MODE_RF5GHZ : AR_PHY_MODE_RF2GHZ; +  + 	if ((AR_SREV_9280_20(ah) || AR_SREV_9300_20_OR_LATER(ah)) +-	    && IS_CHAN_A_5MHZ_SPACED(chan)) ++	    && (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK)) + 		rfMode |= (AR_PHY_MODE_DYNAMIC | AR_PHY_MODE_DYN_CCK_DISABLE); +  + 	REG_WRITE(ah, AR_PHY_MODE, rfMode); +--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c +@@ -755,7 +755,8 @@ static bool ar9003_hw_init_cal(struct at + 	} +  + 	/* Do Tx IQ Calibration */ +-	ar9003_hw_tx_iq_cal(ah); ++	if (ah->config.tx_iq_calibration) ++		ar9003_hw_tx_iq_cal(ah); +  + 	/* Revert chainmasks to their original values before NF cal */ + 	ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask); +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h +@@ -265,7 +265,7 @@ struct cal_ctl_edge_pwr { + } __packed; +  + struct cal_ctl_data_2g { +-	struct cal_ctl_edge_pwr ctlEdges[AR9300_NUM_BAND_EDGES_5G]; ++	struct cal_ctl_edge_pwr ctlEdges[AR9300_NUM_BAND_EDGES_2G]; + } __packed; +  + struct cal_ctl_data_5g { +--- a/drivers/net/wireless/ath/ath9k/ar9003_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9003_initvals.h +@@ -31,7 +31,7 @@ static const u32 ar9300_2p0_radio_postam +  + static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p0[][5] = { + 	/* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ +-	{0x0000a410, 0x000050da, 0x000050da, 0x000050da, 0x000050da}, ++	{0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, + 	{0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + 	{0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, + 	{0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004}, +@@ -545,7 +545,7 @@ static const u32 ar9300_2p0_soc_postambl + }; +  + static const u32 ar9200_merlin_2p0_radio_core[][2] = { +-	/* Addr      common    */ ++	/* Addr      allmodes  */ + 	{0x00007800, 0x00040000}, + 	{0x00007804, 0xdb005012}, + 	{0x00007808, 0x04924914}, +@@ -835,71 +835,71 @@ static const u32 ar9300_2p0_baseband_cor +  + static const u32 ar9300Modes_high_power_tx_gain_table_2p0[][5] = { + 	/* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ +-	{0x0000a410, 0x000050d9, 0x000050d9, 0x000050da, 0x000050da}, ++	{0x0000a410, 0x000050db, 0x000050db, 0x000050d9, 0x000050d9}, + 	{0x0000a500, 0x00020220, 0x00020220, 0x00000000, 0x00000000}, + 	{0x0000a504, 0x06020223, 0x06020223, 0x04000002, 0x04000002}, +-	{0x0000a508, 0x0b022220, 0x0b022220, 0x08000004, 0x08000004}, +-	{0x0000a50c, 0x10022223, 0x10022223, 0x0b000200, 0x0b000200}, +-	{0x0000a510, 0x17022620, 0x17022620, 0x0f000202, 0x0f000202}, +-	{0x0000a514, 0x1b022622, 0x1b022622, 0x11000400, 0x11000400}, +-	{0x0000a518, 0x1f022822, 0x1f022822, 0x15000402, 0x15000402}, +-	{0x0000a51c, 0x24022842, 0x24022842, 0x19000404, 0x19000404}, +-	{0x0000a520, 0x28042840, 0x28042840, 0x1b000603, 0x1b000603}, +-	{0x0000a524, 0x2c042842, 0x2c042842, 0x1f000a02, 0x1f000a02}, +-	{0x0000a528, 0x30042844, 0x30042844, 0x23000a04, 0x23000a04}, +-	{0x0000a52c, 0x34042846, 0x34042846, 0x26000a20, 0x26000a20}, +-	{0x0000a530, 0x39042869, 0x39042869, 0x2a000e20, 0x2a000e20}, +-	{0x0000a534, 0x3d062869, 0x3d062869, 0x2e000e22, 0x2e000e22}, +-	{0x0000a538, 0x44062c69, 0x44062c69, 0x31000e24, 0x31000e24}, +-	{0x0000a53c, 0x48063069, 0x48063069, 0x34001640, 0x34001640}, +-	{0x0000a540, 0x4c0a3065, 0x4c0a3065, 0x38001660, 0x38001660}, +-	{0x0000a544, 0x500a3069, 0x500a3069, 0x3b001861, 0x3b001861}, +-	{0x0000a548, 0x530a3469, 0x530a3469, 0x3e001a81, 0x3e001a81}, +-	{0x0000a54c, 0x590a7464, 0x590a7464, 0x42001a83, 0x42001a83}, +-	{0x0000a550, 0x5e0a7865, 0x5e0a7865, 0x44001c84, 0x44001c84}, +-	{0x0000a554, 0x630a7e66, 0x630a7e66, 0x48001ce3, 0x48001ce3}, +-	{0x0000a558, 0x680a7e89, 0x680a7e89, 0x4c001ce5, 0x4c001ce5}, +-	{0x0000a55c, 0x6e0a7e8c, 0x6e0a7e8c, 0x50001ce9, 0x50001ce9}, +-	{0x0000a560, 0x730e7e8c, 0x730e7e8c, 0x54001ceb, 0x54001ceb}, +-	{0x0000a564, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a568, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a56c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a570, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a574, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a578, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a57c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, ++	{0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, ++	{0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, ++	{0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, ++	{0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, ++	{0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, ++	{0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, ++	{0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, ++	{0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, ++	{0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, ++	{0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, ++	{0x0000a530, 0x34043643, 0x34043643, 0x2a000e20, 0x2a000e20}, ++	{0x0000a534, 0x38043a44, 0x38043a44, 0x2e000e22, 0x2e000e22}, ++	{0x0000a538, 0x3b043e45, 0x3b043e45, 0x31000e24, 0x31000e24}, ++	{0x0000a53c, 0x40063e46, 0x40063e46, 0x34001640, 0x34001640}, ++	{0x0000a540, 0x44083e46, 0x44083e46, 0x38001660, 0x38001660}, ++	{0x0000a544, 0x46083e66, 0x46083e66, 0x3b001861, 0x3b001861}, ++	{0x0000a548, 0x4b0a3e69, 0x4b0a3e69, 0x3e001a81, 0x3e001a81}, ++	{0x0000a54c, 0x4f0a5e66, 0x4f0a5e66, 0x42001a83, 0x42001a83}, ++	{0x0000a550, 0x540a7e66, 0x540a7e66, 0x44001c84, 0x44001c84}, ++	{0x0000a554, 0x570a7e89, 0x570a7e89, 0x48001ce3, 0x48001ce3}, ++	{0x0000a558, 0x5c0e7e8a, 0x5c0e7e8a, 0x4c001ce5, 0x4c001ce5}, ++	{0x0000a55c, 0x60127e8b, 0x60127e8b, 0x50001ce9, 0x50001ce9}, ++	{0x0000a560, 0x65127ecc, 0x65127ecc, 0x54001ceb, 0x54001ceb}, ++	{0x0000a564, 0x6b169ecd, 0x6b169ecd, 0x56001eec, 0x56001eec}, ++	{0x0000a568, 0x70169f0e, 0x70169f0e, 0x56001eec, 0x56001eec}, ++	{0x0000a56c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a570, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a574, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a578, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a57c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, + 	{0x0000a580, 0x00820220, 0x00820220, 0x00800000, 0x00800000}, + 	{0x0000a584, 0x06820223, 0x06820223, 0x04800002, 0x04800002}, +-	{0x0000a588, 0x0b822220, 0x0b822220, 0x08800004, 0x08800004}, +-	{0x0000a58c, 0x10822223, 0x10822223, 0x0b800200, 0x0b800200}, +-	{0x0000a590, 0x17822620, 0x17822620, 0x0f800202, 0x0f800202}, +-	{0x0000a594, 0x1b822622, 0x1b822622, 0x11800400, 0x11800400}, +-	{0x0000a598, 0x1f822822, 0x1f822822, 0x15800402, 0x15800402}, +-	{0x0000a59c, 0x24822842, 0x24822842, 0x19800404, 0x19800404}, +-	{0x0000a5a0, 0x28842840, 0x28842840, 0x1b800603, 0x1b800603}, +-	{0x0000a5a4, 0x2c842842, 0x2c842842, 0x1f800a02, 0x1f800a02}, +-	{0x0000a5a8, 0x30842844, 0x30842844, 0x23800a04, 0x23800a04}, +-	{0x0000a5ac, 0x34842846, 0x34842846, 0x26800a20, 0x26800a20}, +-	{0x0000a5b0, 0x39842869, 0x39842869, 0x2a800e20, 0x2a800e20}, +-	{0x0000a5b4, 0x3d862869, 0x3d862869, 0x2e800e22, 0x2e800e22}, +-	{0x0000a5b8, 0x44862c69, 0x44862c69, 0x31800e24, 0x31800e24}, +-	{0x0000a5bc, 0x48863069, 0x48863069, 0x34801640, 0x34801640}, +-	{0x0000a5c0, 0x4c8a3065, 0x4c8a3065, 0x38801660, 0x38801660}, +-	{0x0000a5c4, 0x508a3069, 0x508a3069, 0x3b801861, 0x3b801861}, +-	{0x0000a5c8, 0x538a3469, 0x538a3469, 0x3e801a81, 0x3e801a81}, +-	{0x0000a5cc, 0x598a7464, 0x598a7464, 0x42801a83, 0x42801a83}, +-	{0x0000a5d0, 0x5e8a7865, 0x5e8a7865, 0x44801c84, 0x44801c84}, +-	{0x0000a5d4, 0x638a7e66, 0x638a7e66, 0x48801ce3, 0x48801ce3}, +-	{0x0000a5d8, 0x688a7e89, 0x688a7e89, 0x4c801ce5, 0x4c801ce5}, +-	{0x0000a5dc, 0x6e8a7e8c, 0x6e8a7e8c, 0x50801ce9, 0x50801ce9}, +-	{0x0000a5e0, 0x738e7e8c, 0x738e7e8c, 0x54801ceb, 0x54801ceb}, +-	{0x0000a5e4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5e8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5ec, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5f0, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5f4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5f8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5fc, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, ++	{0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, ++	{0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, ++	{0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, ++	{0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, ++	{0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, ++	{0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, ++	{0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, ++	{0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, ++	{0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, ++	{0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, ++	{0x0000a5b0, 0x34843643, 0x34843643, 0x2a800e20, 0x2a800e20}, ++	{0x0000a5b4, 0x38843a44, 0x38843a44, 0x2e800e22, 0x2e800e22}, ++	{0x0000a5b8, 0x3b843e45, 0x3b843e45, 0x31800e24, 0x31800e24}, ++	{0x0000a5bc, 0x40863e46, 0x40863e46, 0x34801640, 0x34801640}, ++	{0x0000a5c0, 0x4c8a3065, 0x44883e46, 0x44883e46, 0x38801660}, ++	{0x0000a5c4, 0x46883e66, 0x46883e66, 0x3b801861, 0x3b801861}, ++	{0x0000a5c8, 0x4b8a3e69, 0x4b8a3e69, 0x3e801a81, 0x3e801a81}, ++	{0x0000a5cc, 0x4f8a5e66, 0x4f8a5e66, 0x42801a83, 0x42801a83}, ++	{0x0000a5d0, 0x548a7e66, 0x548a7e66, 0x44801c84, 0x44801c84}, ++	{0x0000a5d4, 0x578a7e89, 0x578a7e89, 0x48801ce3, 0x48801ce3}, ++	{0x0000a5d8, 0x5c8e7e8a, 0x5c8e7e8a, 0x4c801ce5, 0x4c801ce5}, ++	{0x0000a5dc, 0x60927e8b, 0x60927e8b, 0x50801ce9, 0x50801ce9}, ++	{0x0000a5e0, 0x65927ecc, 0x65927ecc, 0x54801ceb, 0x54801ceb}, ++	{0x0000a5e4, 0x6b969ecd, 0x6b969ecd, 0x56801eec, 0x56801eec}, ++	{0x0000a5e8, 0x70969f0e, 0x70969f0e, 0x56801eec, 0x56801eec}, ++	{0x0000a5ec, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5f0, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5f4, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5f8, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5fc, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, + 	{0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, + 	{0x00016048, 0xad241a61, 0xad241a61, 0xad241a61, 0xad241a61}, + 	{0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, +@@ -913,71 +913,71 @@ static const u32 ar9300Modes_high_power_ +  + static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p0[][5] = { + 	/* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ +-	{0x0000a410, 0x000050d9, 0x000050d9, 0x000050da, 0x000050da}, ++	{0x0000a410, 0x000050db, 0x000050db, 0x000050d9, 0x000050d9}, + 	{0x0000a500, 0x00020220, 0x00020220, 0x00000000, 0x00000000}, + 	{0x0000a504, 0x06020223, 0x06020223, 0x04000002, 0x04000002}, +-	{0x0000a508, 0x0b022220, 0x0b022220, 0x08000004, 0x08000004}, +-	{0x0000a50c, 0x10022223, 0x10022223, 0x0b000200, 0x0b000200}, +-	{0x0000a510, 0x17022620, 0x17022620, 0x0f000202, 0x0f000202}, +-	{0x0000a514, 0x1b022622, 0x1b022622, 0x11000400, 0x11000400}, +-	{0x0000a518, 0x1f022822, 0x1f022822, 0x15000402, 0x15000402}, +-	{0x0000a51c, 0x24022842, 0x24022842, 0x19000404, 0x19000404}, +-	{0x0000a520, 0x28042840, 0x28042840, 0x1b000603, 0x1b000603}, +-	{0x0000a524, 0x2c042842, 0x2c042842, 0x1f000a02, 0x1f000a02}, +-	{0x0000a528, 0x30042844, 0x30042844, 0x23000a04, 0x23000a04}, +-	{0x0000a52c, 0x34042846, 0x34042846, 0x26000a20, 0x26000a20}, +-	{0x0000a530, 0x39042869, 0x39042869, 0x2a000e20, 0x2a000e20}, +-	{0x0000a534, 0x3d062869, 0x3d062869, 0x2e000e22, 0x2e000e22}, +-	{0x0000a538, 0x44062c69, 0x44062c69, 0x31000e24, 0x31000e24}, +-	{0x0000a53c, 0x48063069, 0x48063069, 0x34001640, 0x34001640}, +-	{0x0000a540, 0x4c0a3065, 0x4c0a3065, 0x38001660, 0x38001660}, +-	{0x0000a544, 0x500a3069, 0x500a3069, 0x3b001861, 0x3b001861}, +-	{0x0000a548, 0x530a3469, 0x530a3469, 0x3e001a81, 0x3e001a81}, +-	{0x0000a54c, 0x590a7464, 0x590a7464, 0x42001a83, 0x42001a83}, +-	{0x0000a550, 0x5e0a7865, 0x5e0a7865, 0x44001c84, 0x44001c84}, +-	{0x0000a554, 0x630a7e66, 0x630a7e66, 0x48001ce3, 0x48001ce3}, +-	{0x0000a558, 0x680a7e89, 0x680a7e89, 0x4c001ce5, 0x4c001ce5}, +-	{0x0000a55c, 0x6e0a7e8c, 0x6e0a7e8c, 0x50001ce9, 0x50001ce9}, +-	{0x0000a560, 0x730e7e8c, 0x730e7e8c, 0x54001ceb, 0x54001ceb}, +-	{0x0000a564, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a568, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a56c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a570, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a574, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a578, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, +-	{0x0000a57c, 0x730e7e8c, 0x730e7e8c, 0x56001eec, 0x56001eec}, ++	{0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004}, ++	{0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200}, ++	{0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202}, ++	{0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400}, ++	{0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402}, ++	{0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404}, ++	{0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603}, ++	{0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02}, ++	{0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04}, ++	{0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20}, ++	{0x0000a530, 0x34043643, 0x34043643, 0x2a000e20, 0x2a000e20}, ++	{0x0000a534, 0x38043a44, 0x38043a44, 0x2e000e22, 0x2e000e22}, ++	{0x0000a538, 0x3b043e45, 0x3b043e45, 0x31000e24, 0x31000e24}, ++	{0x0000a53c, 0x40063e46, 0x40063e46, 0x34001640, 0x34001640}, ++	{0x0000a540, 0x44083e46, 0x44083e46, 0x38001660, 0x38001660}, ++	{0x0000a544, 0x46083e66, 0x46083e66, 0x3b001861, 0x3b001861}, ++	{0x0000a548, 0x4b0a3e69, 0x4b0a3e69, 0x3e001a81, 0x3e001a81}, ++	{0x0000a54c, 0x4f0a5e66, 0x4f0a5e66, 0x42001a83, 0x42001a83}, ++	{0x0000a550, 0x540a7e66, 0x540a7e66, 0x44001c84, 0x44001c84}, ++	{0x0000a554, 0x570a7e89, 0x570a7e89, 0x48001ce3, 0x48001ce3}, ++	{0x0000a558, 0x5c0e7e8a, 0x5c0e7e8a, 0x4c001ce5, 0x4c001ce5}, ++	{0x0000a55c, 0x60127e8b, 0x60127e8b, 0x50001ce9, 0x50001ce9}, ++	{0x0000a560, 0x65127ecc, 0x65127ecc, 0x54001ceb, 0x54001ceb}, ++	{0x0000a564, 0x6b169ecd, 0x6b169ecd, 0x56001eec, 0x56001eec}, ++	{0x0000a568, 0x70169f0e, 0x70169f0e, 0x56001eec, 0x56001eec}, ++	{0x0000a56c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a570, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a574, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a578, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, ++	{0x0000a57c, 0x75169f4f, 0x75169f4f, 0x56001eec, 0x56001eec}, + 	{0x0000a580, 0x00820220, 0x00820220, 0x00800000, 0x00800000}, + 	{0x0000a584, 0x06820223, 0x06820223, 0x04800002, 0x04800002}, +-	{0x0000a588, 0x0b822220, 0x0b822220, 0x08800004, 0x08800004}, +-	{0x0000a58c, 0x10822223, 0x10822223, 0x0b800200, 0x0b800200}, +-	{0x0000a590, 0x17822620, 0x17822620, 0x0f800202, 0x0f800202}, +-	{0x0000a594, 0x1b822622, 0x1b822622, 0x11800400, 0x11800400}, +-	{0x0000a598, 0x1f822822, 0x1f822822, 0x15800402, 0x15800402}, +-	{0x0000a59c, 0x24822842, 0x24822842, 0x19800404, 0x19800404}, +-	{0x0000a5a0, 0x28842840, 0x28842840, 0x1b800603, 0x1b800603}, +-	{0x0000a5a4, 0x2c842842, 0x2c842842, 0x1f800a02, 0x1f800a02}, +-	{0x0000a5a8, 0x30842844, 0x30842844, 0x23800a04, 0x23800a04}, +-	{0x0000a5ac, 0x34842846, 0x34842846, 0x26800a20, 0x26800a20}, +-	{0x0000a5b0, 0x39842869, 0x39842869, 0x2a800e20, 0x2a800e20}, +-	{0x0000a5b4, 0x3d862869, 0x3d862869, 0x2e800e22, 0x2e800e22}, +-	{0x0000a5b8, 0x44862c69, 0x44862c69, 0x31800e24, 0x31800e24}, +-	{0x0000a5bc, 0x48863069, 0x48863069, 0x34801640, 0x34801640}, +-	{0x0000a5c0, 0x4c8a3065, 0x4c8a3065, 0x38801660, 0x38801660}, +-	{0x0000a5c4, 0x508a3069, 0x508a3069, 0x3b801861, 0x3b801861}, +-	{0x0000a5c8, 0x538a3469, 0x538a3469, 0x3e801a81, 0x3e801a81}, +-	{0x0000a5cc, 0x598a7464, 0x598a7464, 0x42801a83, 0x42801a83}, +-	{0x0000a5d0, 0x5e8a7865, 0x5e8a7865, 0x44801c84, 0x44801c84}, +-	{0x0000a5d4, 0x638a7e66, 0x638a7e66, 0x48801ce3, 0x48801ce3}, +-	{0x0000a5d8, 0x688a7e89, 0x688a7e89, 0x4c801ce5, 0x4c801ce5}, +-	{0x0000a5dc, 0x6e8a7e8c, 0x6e8a7e8c, 0x50801ce9, 0x50801ce9}, +-	{0x0000a5e0, 0x738e7e8c, 0x738e7e8c, 0x54801ceb, 0x54801ceb}, +-	{0x0000a5e4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5e8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5ec, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5f0, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5f4, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5f8, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, +-	{0x0000a5fc, 0x738e7e8c, 0x738e7e8c, 0x56801eec, 0x56801eec}, ++	{0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004}, ++	{0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200}, ++	{0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202}, ++	{0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400}, ++	{0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402}, ++	{0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404}, ++	{0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603}, ++	{0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02}, ++	{0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04}, ++	{0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20}, ++	{0x0000a5b0, 0x34843643, 0x34843643, 0x2a800e20, 0x2a800e20}, ++	{0x0000a5b4, 0x38843a44, 0x38843a44, 0x2e800e22, 0x2e800e22}, ++	{0x0000a5b8, 0x3b843e45, 0x3b843e45, 0x31800e24, 0x31800e24}, ++	{0x0000a5bc, 0x40863e46, 0x40863e46, 0x34801640, 0x34801640}, ++	{0x0000a5c0, 0x44883e46, 0x44883e46, 0x38801660, 0x38801660}, ++	{0x0000a5c4, 0x46883e66, 0x46883e66, 0x3b801861, 0x3b801861}, ++	{0x0000a5c8, 0x4b8a3e69, 0x4b8a3e69, 0x3e801a81, 0x3e801a81}, ++	{0x0000a5cc, 0x4f8a5e66, 0x4f8a5e66, 0x42801a83, 0x42801a83}, ++	{0x0000a5d0, 0x548a7e66, 0x548a7e66, 0x44801c84, 0x44801c84}, ++	{0x0000a5d4, 0x578a7e89, 0x578a7e89, 0x48801ce3, 0x48801ce3}, ++	{0x0000a5d8, 0x5c8e7e8a, 0x5c8e7e8a, 0x4c801ce5, 0x4c801ce5}, ++	{0x0000a5dc, 0x60927e8b, 0x60927e8b, 0x50801ce9, 0x50801ce9}, ++	{0x0000a5e0, 0x65927ecc, 0x65927ecc, 0x54801ceb, 0x54801ceb}, ++	{0x0000a5e4, 0x6b969ecd, 0x6b969ecd, 0x56801eec, 0x56801eec}, ++	{0x0000a5e8, 0x70969f0e, 0x70969f0e, 0x56801eec, 0x56801eec}, ++	{0x0000a5ec, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5f0, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5f4, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5f8, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, ++	{0x0000a5fc, 0x75969f4f, 0x75969f4f, 0x56801eec, 0x56801eec}, + 	{0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4}, + 	{0x00016048, 0x8c001a61, 0x8c001a61, 0x8c001a61, 0x8c001a61}, + 	{0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, +@@ -1251,7 +1251,7 @@ static const u32 ar9300Common_rx_gain_ta +  + static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p0[][5] = { + 	/* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ +-	{0x0000a410, 0x000050da, 0x000050da, 0x000050da, 0x000050da}, ++	{0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, + 	{0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + 	{0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, + 	{0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004}, +@@ -1760,31 +1760,22 @@ static const u32 ar9300_2p0_soc_preamble + 	{0x00007038, 0x000004c2}, + }; +  +-/* +- * PCIE-PHY programming array, to be used prior to entering +- * full sleep (holding RTC in reset, PLL is ON in L1 mode) +- */ + static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p0[][2] = { ++	/* Addr      allmodes  */ + 	{0x00004040, 0x08212e5e}, + 	{0x00004040, 0x0008003b}, + 	{0x00004044, 0x00000000}, + }; +  +-/* +- * PCIE-PHY programming array, to be used when not in +- * full sleep (holding RTC in reset) +- */ + static const u32 ar9300PciePhy_clkreq_enable_L1_2p0[][2] = { ++	/* Addr      allmodes  */ + 	{0x00004040, 0x08253e5e}, + 	{0x00004040, 0x0008003b}, + 	{0x00004044, 0x00000000}, + }; +  +-/* +- * PCIE-PHY programming array, to be used prior to entering +- * full sleep (holding RTC in reset) +- */ + static const u32 ar9300PciePhy_clkreq_disable_L1_2p0[][2] = { ++	/* Addr      allmodes  */ + 	{0x00004040, 0x08213e5e}, + 	{0x00004040, 0x0008003b}, + 	{0x00004044, 0x00000000}, +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -375,16 +375,7 @@ static u32 ar9003_hw_compute_pll_control + 	else if (chan && IS_CHAN_QUARTER_RATE(chan)) + 		pll |= SM(0x2, AR_RTC_9300_PLL_CLKSEL); +  +-	if (chan && IS_CHAN_5GHZ(chan)) { +-		pll |= SM(0x28, AR_RTC_9300_PLL_DIV); +- +-		/* +-		 * When doing fast clock, set PLL to 0x142c +-		 */ +-		if (IS_CHAN_A_5MHZ_SPACED(chan)) +-			pll = 0x142c; +-	} else +-		pll |= SM(0x2c, AR_RTC_9300_PLL_DIV); ++	pll |= SM(0x2c, AR_RTC_9300_PLL_DIV); +  + 	return pll; + } +@@ -592,7 +583,7 @@ static int ar9003_hw_process_ini(struct  + 	 * For 5GHz channels requiring Fast Clock, apply + 	 * different modal values. + 	 */ +-	if (IS_CHAN_A_5MHZ_SPACED(chan)) ++	if (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK) + 		REG_WRITE_ARRAY(&ah->iniModesAdditional, + 				modesIndex, regWrites); +  +@@ -622,7 +613,7 @@ static void ar9003_hw_set_rfmode(struct  + 	rfMode |= (IS_CHAN_B(chan) || IS_CHAN_G(chan)) + 		? AR_PHY_MODE_DYNAMIC : AR_PHY_MODE_OFDM; +  +-	if (IS_CHAN_A_5MHZ_SPACED(chan)) ++	if (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK) + 		rfMode |= (AR_PHY_MODE_DYNAMIC | AR_PHY_MODE_DYN_CCK_DISABLE); +  + 	REG_WRITE(ah, AR_PHY_MODE, rfMode); +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -29,6 +29,7 @@ + #define ATH9K_CLOCK_RATE_CCK		22 + #define ATH9K_CLOCK_RATE_5GHZ_OFDM	40 + #define ATH9K_CLOCK_RATE_2GHZ_OFDM	44 ++#define ATH9K_CLOCK_FAST_RATE_5GHZ_OFDM 44 +  + static bool ath9k_hw_set_reset_reg(struct ath_hw *ah, u32 type); +  +@@ -94,7 +95,11 @@ static u32 ath9k_hw_mac_clks(struct ath_ + 		return usecs *ATH9K_CLOCK_RATE_CCK; + 	if (conf->channel->band == IEEE80211_BAND_2GHZ) + 		return usecs *ATH9K_CLOCK_RATE_2GHZ_OFDM; +-	return usecs *ATH9K_CLOCK_RATE_5GHZ_OFDM; ++ ++	if (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK) ++		return usecs * ATH9K_CLOCK_FAST_RATE_5GHZ_OFDM; ++	else ++		return usecs * ATH9K_CLOCK_RATE_5GHZ_OFDM; + } +  + static u32 ath9k_hw_mac_to_clks(struct ath_hw *ah, u32 usecs) +@@ -390,6 +395,12 @@ static void ath9k_hw_init_config(struct  + 	ah->config.rx_intr_mitigation = true; +  + 	/* ++	 * Tx IQ Calibration (ah->config.tx_iq_calibration) is only ++	 * used by AR9003 but it is busted right now, it will take a ++	 * while to fix so this is currently disabled. ++	 */ ++ ++	/* + 	 * We need this for PCI devices only (Cardbus, PCI, miniPCI) + 	 * _and_ if on non-uniprocessor systems (Multiprocessor/HT). + 	 * This means we use it for all AR5416 devices, and the few +@@ -2198,7 +2209,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw + 	} +  + 	if (AR_SREV_9300_20_OR_LATER(ah)) { +-		pCap->hw_caps |= ATH9K_HW_CAP_EDMA | ATH9K_HW_CAP_LDPC; ++		pCap->hw_caps |= ATH9K_HW_CAP_EDMA | ATH9K_HW_CAP_LDPC | ++				 ATH9K_HW_CAP_FASTCLOCK; + 		pCap->rx_hp_qdepth = ATH9K_HW_RX_HP_QDEPTH; + 		pCap->rx_lp_qdepth = ATH9K_HW_RX_LP_QDEPTH; + 		pCap->rx_status_len = sizeof(struct ar9003_rxs); +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -198,6 +198,7 @@ enum ath9k_hw_caps { + 	ATH9K_HW_CAP_EDMA			= BIT(17), + 	ATH9K_HW_CAP_RAC_SUPPORTED		= BIT(18), + 	ATH9K_HW_CAP_LDPC			= BIT(19), ++	ATH9K_HW_CAP_FASTCLOCK			= BIT(20), + }; +  + enum ath9k_capability_type { +@@ -261,6 +262,7 @@ struct ath9k_ops_config { + #define AR_BASE_FREQ_5GHZ   	4900 + #define AR_SPUR_FEEQ_BOUND_HT40 19 + #define AR_SPUR_FEEQ_BOUND_HT20 10 ++	bool tx_iq_calibration; /* Only available for >= AR9003 */ + 	int spurmode; + 	u16 spurchans[AR_EEPROM_MODAL_SPURS][2]; + 	u8 max_txtrig_level;  | 
