diff options
author | Helmut Schaa <helmut.schaa@googlemail.com> | 2016-04-28 10:45:04 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2016-05-09 13:46:31 -0400 |
commit | 8569f5915456f462c8a88b751fa6c14596bfa3fe (patch) | |
tree | 5f55760a79cc061c25dd093e9d392291ca3442d0 | |
parent | 9a5f91a1d63f3e1fbd2148ffdce5b9ba98cbd88c (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.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_eeprom.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_phy.c | 60 |
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 */ |
4405 | static int ar9003_hw_tx_power_regwrite(struct ath_hw *ah, u8 * pPwrArray) | 4405 | int 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 | ||
357 | void ar9003_hw_internal_regulator_apply(struct ath_hw *ah); | 357 | void ar9003_hw_internal_regulator_apply(struct ath_hw *ah); |
358 | int 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 | ||
1841 | static void ar9003_hw_tx99_set_txpower(struct ath_hw *ah, u8 txpower) | 1842 | static 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 | ||
1912 | static void ar9003_hw_init_txpower_cck(struct ath_hw *ah, u8 *rate_array) | 1858 | static void ar9003_hw_init_txpower_cck(struct ath_hw *ah, u8 *rate_array) |