ath5k: eliminate CHANNEL_* macros, use AR5K_MODE_* in channel->hw_value
When checking for the band, use channel->band. Change ath5k_hw_nic_wakeup() and ath5k_channel_ok() to take ieee80211_channel. Change ath5k_hw_radio_revision() to take ieee80211_band. Signed-off-by: Pavel Roskin <proski@gnu.org> Tested-by: Sedat Dilek <sedat.dilek@gmail.com> Acked-by: Nick Kossifidis <mickflemm@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
8d44a823c8
commit
32c254645f
@@ -102,12 +102,18 @@ static void ath5k_hw_init_core_clock(struct ath5k_hw *ah)
|
||||
/*
|
||||
* Set core clock frequency
|
||||
*/
|
||||
if (channel->hw_value & CHANNEL_5GHZ)
|
||||
clock = 40; /* 802.11a */
|
||||
else if (channel->hw_value & CHANNEL_CCK)
|
||||
clock = 22; /* 802.11b */
|
||||
else
|
||||
clock = 44; /* 802.11g */
|
||||
switch (channel->hw_value) {
|
||||
case AR5K_MODE_11A:
|
||||
clock = 40;
|
||||
break;
|
||||
case AR5K_MODE_11B:
|
||||
clock = 22;
|
||||
break;
|
||||
case AR5K_MODE_11G:
|
||||
default:
|
||||
clock = 44;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Use clock multiplier for non-default
|
||||
* bwmode */
|
||||
@@ -581,8 +587,9 @@ int ath5k_hw_on_hold(struct ath5k_hw *ah)
|
||||
|
||||
/*
|
||||
* Bring up MAC + PHY Chips and program PLL
|
||||
* Channel is NULL for the initial wakeup.
|
||||
*/
|
||||
int ath5k_hw_nic_wakeup(struct ath5k_hw *ah, int flags, bool initial)
|
||||
int ath5k_hw_nic_wakeup(struct ath5k_hw *ah, struct ieee80211_channel *channel)
|
||||
{
|
||||
struct pci_dev *pdev = ah->pdev;
|
||||
u32 turbo, mode, clock, bus_flags;
|
||||
@@ -592,7 +599,7 @@ int ath5k_hw_nic_wakeup(struct ath5k_hw *ah, int flags, bool initial)
|
||||
mode = 0;
|
||||
clock = 0;
|
||||
|
||||
if ((ath5k_get_bus_type(ah) != ATH_AHB) || !initial) {
|
||||
if ((ath5k_get_bus_type(ah) != ATH_AHB) || channel) {
|
||||
/* Wakeup the device */
|
||||
ret = ath5k_hw_set_power(ah, AR5K_PM_AWAKE, true, 0);
|
||||
if (ret) {
|
||||
@@ -652,7 +659,7 @@ int ath5k_hw_nic_wakeup(struct ath5k_hw *ah, int flags, bool initial)
|
||||
|
||||
/* On initialization skip PLL programming since we don't have
|
||||
* a channel / mode set yet */
|
||||
if (initial)
|
||||
if (!channel)
|
||||
return 0;
|
||||
|
||||
if (ah->ah_version != AR5K_AR5210) {
|
||||
@@ -668,13 +675,13 @@ int ath5k_hw_nic_wakeup(struct ath5k_hw *ah, int flags, bool initial)
|
||||
clock = AR5K_PHY_PLL_RF5111; /*Zero*/
|
||||
}
|
||||
|
||||
if (flags & CHANNEL_2GHZ) {
|
||||
if (channel->band == IEEE80211_BAND_2GHZ) {
|
||||
mode |= AR5K_PHY_MODE_FREQ_2GHZ;
|
||||
clock |= AR5K_PHY_PLL_44MHZ;
|
||||
|
||||
if (flags & CHANNEL_CCK) {
|
||||
if (channel->hw_value == AR5K_MODE_11B) {
|
||||
mode |= AR5K_PHY_MODE_MOD_CCK;
|
||||
} else if (flags & CHANNEL_OFDM) {
|
||||
} else {
|
||||
/* XXX Dynamic OFDM/CCK is not supported by the
|
||||
* AR5211 so we set MOD_OFDM for plain g (no
|
||||
* CCK headers) operation. We need to test
|
||||
@@ -686,27 +693,16 @@ int ath5k_hw_nic_wakeup(struct ath5k_hw *ah, int flags, bool initial)
|
||||
mode |= AR5K_PHY_MODE_MOD_OFDM;
|
||||
else
|
||||
mode |= AR5K_PHY_MODE_MOD_DYN;
|
||||
} else {
|
||||
ATH5K_ERR(ah,
|
||||
"invalid radio modulation mode\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
} else if (flags & CHANNEL_5GHZ) {
|
||||
mode |= AR5K_PHY_MODE_FREQ_5GHZ;
|
||||
} else if (channel->band == IEEE80211_BAND_5GHZ) {
|
||||
mode |= (AR5K_PHY_MODE_FREQ_5GHZ |
|
||||
AR5K_PHY_MODE_MOD_OFDM);
|
||||
|
||||
/* Different PLL setting for 5413 */
|
||||
if (ah->ah_radio == AR5K_RF5413)
|
||||
clock = AR5K_PHY_PLL_40MHZ_5413;
|
||||
else
|
||||
clock |= AR5K_PHY_PLL_40MHZ;
|
||||
|
||||
if (flags & CHANNEL_OFDM)
|
||||
mode |= AR5K_PHY_MODE_MOD_OFDM;
|
||||
else {
|
||||
ATH5K_ERR(ah,
|
||||
"invalid radio modulation mode\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
} else {
|
||||
ATH5K_ERR(ah, "invalid radio frequency mode\n");
|
||||
return -EINVAL;
|
||||
@@ -822,7 +818,7 @@ static void ath5k_hw_tweak_initval_settings(struct ath5k_hw *ah,
|
||||
u32 data;
|
||||
ath5k_hw_reg_write(ah, AR5K_PHY_CCKTXCTL_WORLD,
|
||||
AR5K_PHY_CCKTXCTL);
|
||||
if (channel->hw_value & CHANNEL_5GHZ)
|
||||
if (channel->band == IEEE80211_BAND_5GHZ)
|
||||
data = 0xffb81020;
|
||||
else
|
||||
data = 0xffb80d20;
|
||||
@@ -905,7 +901,7 @@ static void ath5k_hw_commit_eeprom_settings(struct ath5k_hw *ah,
|
||||
/* Set CCK to OFDM power delta on tx power
|
||||
* adjustment register */
|
||||
if (ah->ah_phy_revision >= AR5K_SREV_PHY_5212A) {
|
||||
if (channel->hw_value == CHANNEL_G)
|
||||
if (channel->hw_value == AR5K_MODE_11G)
|
||||
ath5k_hw_reg_write(ah,
|
||||
AR5K_REG_SM((ee->ee_cck_ofdm_gain_delta * -1),
|
||||
AR5K_PHY_TX_PWR_ADJ_CCK_GAIN_DELTA) |
|
||||
@@ -1084,29 +1080,23 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
switch (channel->hw_value & CHANNEL_MODES) {
|
||||
case CHANNEL_A:
|
||||
mode = AR5K_MODE_11A;
|
||||
mode = channel->hw_value;
|
||||
switch (mode) {
|
||||
case AR5K_MODE_11A:
|
||||
break;
|
||||
case CHANNEL_G:
|
||||
|
||||
case AR5K_MODE_11G:
|
||||
if (ah->ah_version <= AR5K_AR5211) {
|
||||
ATH5K_ERR(ah,
|
||||
"G mode not available on 5210/5211");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mode = AR5K_MODE_11G;
|
||||
break;
|
||||
case CHANNEL_B:
|
||||
|
||||
case AR5K_MODE_11B:
|
||||
if (ah->ah_version < AR5K_AR5211) {
|
||||
ATH5K_ERR(ah,
|
||||
"B mode not available on 5210");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mode = AR5K_MODE_11B;
|
||||
break;
|
||||
default:
|
||||
ATH5K_ERR(ah,
|
||||
@@ -1192,7 +1182,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
|
||||
}
|
||||
|
||||
/* Wakeup the device */
|
||||
ret = ath5k_hw_nic_wakeup(ah, channel->hw_value, false);
|
||||
ret = ath5k_hw_nic_wakeup(ah, channel);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Reference in New Issue
Block a user