From cb85e21fd12e84ec2663bcd22bd38090f67f11cc Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 14 Jan 2016 02:17:49 +0000 Subject: [PATCH] ath9k: add support for a newer tx gain table used in some TP-Link devices Signed-off-by: Felix Fietkau SVN-Revision: 48233 --- ...d-low-power-tx-gain-table-for-AR953x.patch | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 package/kernel/mac80211/patches/305-ath9k_hw-add-low-power-tx-gain-table-for-AR953x.patch diff --git a/package/kernel/mac80211/patches/305-ath9k_hw-add-low-power-tx-gain-table-for-AR953x.patch b/package/kernel/mac80211/patches/305-ath9k_hw-add-low-power-tx-gain-table-for-AR953x.patch new file mode 100644 index 0000000000..22b987aa7a --- /dev/null +++ b/package/kernel/mac80211/patches/305-ath9k_hw-add-low-power-tx-gain-table-for-AR953x.patch @@ -0,0 +1,95 @@ +From: Felix Fietkau +Date: Thu, 14 Jan 2016 03:14:03 +0100 +Subject: [PATCH] ath9k_hw: add low power tx gain table for AR953x + +Used in some newer TP-Link AR9533 devices. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c +@@ -698,6 +698,9 @@ static void ar9003_tx_gain_table_mode2(s + else if (AR_SREV_9340(ah)) + INIT_INI_ARRAY(&ah->iniModesTxGain, + ar9340Modes_low_ob_db_tx_gain_table_1p0); ++ else if (AR_SREV_9531_11(ah)) ++ INIT_INI_ARRAY(&ah->iniModesTxGain, ++ qca953x_1p1_modes_no_xpa_low_power_tx_gain_table); + else if (AR_SREV_9485_11_OR_LATER(ah)) + INIT_INI_ARRAY(&ah->iniModesTxGain, + ar9485Modes_low_ob_db_tx_gain_1_1); +--- a/drivers/net/wireless/ath/ath9k/ar953x_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar953x_initvals.h +@@ -757,6 +757,71 @@ static const u32 qca953x_1p1_modes_xpa_t + {0x00016448, 0x6c927a70}, + }; + ++static const u32 qca953x_1p1_modes_no_xpa_low_power_tx_gain_table[][2] = { ++ /* Addr allmodes */ ++ {0x0000a2dc, 0xfff55592}, ++ {0x0000a2e0, 0xfff99924}, ++ {0x0000a2e4, 0xfffe1e00}, ++ {0x0000a2e8, 0xffffe000}, ++ {0x0000a410, 0x000050d6}, ++ {0x0000a500, 0x00000069}, ++ {0x0000a504, 0x0400006b}, ++ {0x0000a508, 0x0800006d}, ++ {0x0000a50c, 0x0c000269}, ++ {0x0000a510, 0x1000026b}, ++ {0x0000a514, 0x1400026d}, ++ {0x0000a518, 0x18000669}, ++ {0x0000a51c, 0x1c00066b}, ++ {0x0000a520, 0x1d000a68}, ++ {0x0000a524, 0x21000a6a}, ++ {0x0000a528, 0x25000a6c}, ++ {0x0000a52c, 0x29000a6e}, ++ {0x0000a530, 0x2d0012a9}, ++ {0x0000a534, 0x310012ab}, ++ {0x0000a538, 0x350012ad}, ++ {0x0000a53c, 0x39001b0a}, ++ {0x0000a540, 0x3d001b0c}, ++ {0x0000a544, 0x41001b0e}, ++ {0x0000a548, 0x43001bae}, ++ {0x0000a54c, 0x45001914}, ++ {0x0000a550, 0x47001916}, ++ {0x0000a554, 0x49001b96}, ++ {0x0000a558, 0x49001b96}, ++ {0x0000a55c, 0x49001b96}, ++ {0x0000a560, 0x49001b96}, ++ {0x0000a564, 0x49001b96}, ++ {0x0000a568, 0x49001b96}, ++ {0x0000a56c, 0x49001b96}, ++ {0x0000a570, 0x49001b96}, ++ {0x0000a574, 0x49001b96}, ++ {0x0000a578, 0x49001b96}, ++ {0x0000a57c, 0x49001b96}, ++ {0x0000a600, 0x00000000}, ++ {0x0000a604, 0x00000000}, ++ {0x0000a608, 0x00000000}, ++ {0x0000a60c, 0x00000000}, ++ {0x0000a610, 0x00000000}, ++ {0x0000a614, 0x00000000}, ++ {0x0000a618, 0x00804201}, ++ {0x0000a61c, 0x01408201}, ++ {0x0000a620, 0x01408502}, ++ {0x0000a624, 0x01408502}, ++ {0x0000a628, 0x01408502}, ++ {0x0000a62c, 0x01408502}, ++ {0x0000a630, 0x01408502}, ++ {0x0000a634, 0x01408502}, ++ {0x0000a638, 0x01408502}, ++ {0x0000a63c, 0x01408502}, ++ {0x0000b2dc, 0xfff55592}, ++ {0x0000b2e0, 0xfff99924}, ++ {0x0000b2e4, 0xfffe1e00}, ++ {0x0000b2e8, 0xffffe000}, ++ {0x00016044, 0x044922db}, ++ {0x00016048, 0x6c927a70}, ++ {0x00016444, 0x044922db}, ++ {0x00016448, 0x6c927a70}, ++}; ++ + static const u32 qca953x_2p0_baseband_core[][2] = { + /* Addr allmodes */ + {0x00009800, 0xafe68e30}, -- 2.30.2