aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHelmut Schaa <helmut.schaa@googlemail.com>2016-04-28 10:45:04 -0400
committerKalle Valo <kvalo@qca.qualcomm.com>2016-05-09 13:46:31 -0400
commit8569f5915456f462c8a88b751fa6c14596bfa3fe (patch)
tree5f55760a79cc061c25dd093e9d392291ca3442d0
parent9a5f91a1d63f3e1fbd2148ffdce5b9ba98cbd88c (diff)
ath9k: reuse ar9003_hw_tx_power_regwrite for tx99 setup
The same functionality as ar9003_hw_tx_power_regwrite is hardcoded in ar9003_hw_tx99_set_txpower. Just reuse the existing ar9003_hw_tx_power_regwrite for TX99 setup too. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_eeprom.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_eeprom.h1
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_phy.c60
3 files changed, 5 insertions, 58 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index f68098284c43..dec1a317a070 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -4402,7 +4402,7 @@ static void ar9003_hw_selfgen_tpc_txpower(struct ath_hw *ah,
4402} 4402}
4403 4403
4404/* Set tx power registers to array of values passed in */ 4404/* Set tx power registers to array of values passed in */
4405static int ar9003_hw_tx_power_regwrite(struct ath_hw *ah, u8 * pPwrArray) 4405int ar9003_hw_tx_power_regwrite(struct ath_hw *ah, u8 * pPwrArray)
4406{ 4406{
4407#define POW_SM(_r, _s) (((_r) & 0x3f) << (_s)) 4407#define POW_SM(_r, _s) (((_r) & 0x3f) << (_s))
4408 /* make sure forced gain is not set */ 4408 /* make sure forced gain is not set */
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
index 694ca2e680e5..107bcfbbe0fb 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
@@ -355,5 +355,6 @@ unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
355 struct ath9k_channel *chan); 355 struct ath9k_channel *chan);
356 356
357void ar9003_hw_internal_regulator_apply(struct ath_hw *ah); 357void ar9003_hw_internal_regulator_apply(struct ath_hw *ah);
358int ar9003_hw_tx_power_regwrite(struct ath_hw *ah, u8 * pPwrArray);
358 359
359#endif 360#endif
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
index be14a8e01916..2f15cbcbc736 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
@@ -17,6 +17,7 @@
17#include <linux/export.h> 17#include <linux/export.h>
18#include "hw.h" 18#include "hw.h"
19#include "ar9003_phy.h" 19#include "ar9003_phy.h"
20#include "ar9003_eeprom.h"
20 21
21#define AR9300_OFDM_RATES 8 22#define AR9300_OFDM_RATES 8
22#define AR9300_HT_SS_RATES 8 23#define AR9300_HT_SS_RATES 8
@@ -1840,7 +1841,7 @@ static void ar9003_hw_tx99_stop(struct ath_hw *ah)
1840 1841
1841static void ar9003_hw_tx99_set_txpower(struct ath_hw *ah, u8 txpower) 1842static void ar9003_hw_tx99_set_txpower(struct ath_hw *ah, u8 txpower)
1842{ 1843{
1843 static s16 p_pwr_array[ar9300RateSize] = { 0 }; 1844 static u8 p_pwr_array[ar9300RateSize] = { 0 };
1844 unsigned int i; 1845 unsigned int i;
1845 1846
1846 if (txpower <= MAX_RATE_POWER) { 1847 if (txpower <= MAX_RATE_POWER) {
@@ -1851,62 +1852,7 @@ static void ar9003_hw_tx99_set_txpower(struct ath_hw *ah, u8 txpower)
1851 p_pwr_array[i] = MAX_RATE_POWER; 1852 p_pwr_array[i] = MAX_RATE_POWER;
1852 } 1853 }
1853 1854
1854 REG_WRITE(ah, 0xa458, 0); 1855 ar9003_hw_tx_power_regwrite(ah, p_pwr_array);
1855
1856 REG_WRITE(ah, 0xa3c0,
1857 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_6_24], 24) |
1858 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_6_24], 16) |
1859 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_6_24], 8) |
1860 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_6_24], 0));
1861 REG_WRITE(ah, 0xa3c4,
1862 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_54], 24) |
1863 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_48], 16) |
1864 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_36], 8) |
1865 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_6_24], 0));
1866 REG_WRITE(ah, 0xa3c8,
1867 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_1L_5L], 24) |
1868 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_1L_5L], 16) |
1869 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_1L_5L], 0));
1870 REG_WRITE(ah, 0xa3cc,
1871 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_11S], 24) |
1872 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_11L], 16) |
1873 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_5S], 8) |
1874 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_LEGACY_1L_5L], 0));
1875 REG_WRITE(ah, 0xa3d0,
1876 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_5], 24) |
1877 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_4], 16) |
1878 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_1_3_9_11_17_19], 8)|
1879 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_0_8_16], 0));
1880 REG_WRITE(ah, 0xa3d4,
1881 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_13], 24) |
1882 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_12], 16) |
1883 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_7], 8) |
1884 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_6], 0));
1885 REG_WRITE(ah, 0xa3e4,
1886 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_21], 24) |
1887 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_20], 16) |
1888 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_15], 8) |
1889 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_14], 0));
1890 REG_WRITE(ah, 0xa3e8,
1891 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_23], 24) |
1892 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_22], 16) |
1893 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_23], 8) |
1894 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT20_22], 0));
1895 REG_WRITE(ah, 0xa3d8,
1896 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_5], 24) |
1897 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_4], 16) |
1898 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_1_3_9_11_17_19], 8) |
1899 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_0_8_16], 0));
1900 REG_WRITE(ah, 0xa3dc,
1901 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_13], 24) |
1902 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_12], 16) |
1903 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_7], 8) |
1904 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_6], 0));
1905 REG_WRITE(ah, 0xa3ec,
1906 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_21], 24) |
1907 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_20], 16) |
1908 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_15], 8) |
1909 ATH9K_POW_SM(p_pwr_array[ALL_TARGET_HT40_14], 0));
1910} 1856}
1911 1857
1912static void ar9003_hw_init_txpower_cck(struct ath_hw *ah, u8 *rate_array) 1858static void ar9003_hw_init_txpower_cck(struct ath_hw *ah, u8 *rate_array)