Changeset 21097


Ignore:
Timestamp:
2010-04-22T20:33:55+02:00 (8 years ago)
Author:
nbd
Message:

ath9k: merge fixes for 5ghz fast clock handling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/patches/550-ath9k_pending_work.patch

    r21089 r21097  
    11--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c 
    22+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c 
    3 @@ -852,7 +852,8 @@ static int ar5008_hw_process_ini(struct  
     3@@ -852,7 +852,7 @@ static int ar5008_hw_process_ini(struct  
    44  
    55        REG_WRITE_ARRAY(&ah->iniBB_RfGain, freqIndex, regWrites); 
    66  
    77-       if (AR_SREV_9280_20(ah) && IS_CHAN_A_5MHZ_SPACED(chan)) { 
    8 +       if (AR_SREV_9280_20(ah) && 
    9 +           (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK)) { 
     8+       if (IS_CHAN_A_FAST_CLOCK(ah, chan)) { 
    109                REG_WRITE_ARRAY(&ah->iniModesAdditional, modesIndex, 
    1110                                regWrites); 
    1211        } 
    13 @@ -895,7 +896,7 @@ static void ar5008_hw_set_rfmode(struct  
     12@@ -894,8 +894,7 @@ static void ar5008_hw_set_rfmode(struct  
     13                rfMode |= (IS_CHAN_5GHZ(chan)) ? 
    1414                        AR_PHY_MODE_RF5GHZ : AR_PHY_MODE_RF2GHZ; 
    1515  
    16         if ((AR_SREV_9280_20(ah) || AR_SREV_9300_20_OR_LATER(ah)) 
     16-       if ((AR_SREV_9280_20(ah) || AR_SREV_9300_20_OR_LATER(ah)) 
    1717-           && IS_CHAN_A_5MHZ_SPACED(chan)) 
    18 +           && (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK)) 
     18+       if (IS_CHAN_A_FAST_CLOCK(ah, chan)) 
    1919                rfMode |= (AR_PHY_MODE_DYNAMIC | AR_PHY_MODE_DYN_CCK_DISABLE); 
    2020  
    2121        REG_WRITE(ah, AR_PHY_MODE, rfMode); 
     22--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c 
     23+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c 
     24@@ -455,16 +455,12 @@ static u32 ar9002_hw_compute_pll_control 
     25                pll |= SM(0x2, AR_RTC_9160_PLL_CLKSEL); 
     26  
     27        if (chan && IS_CHAN_5GHZ(chan)) { 
     28-               pll |= SM(0x28, AR_RTC_9160_PLL_DIV); 
     29- 
     30- 
     31-               if (AR_SREV_9280_20(ah)) { 
     32-                       if (((chan->channel % 20) == 0) 
     33-                           || ((chan->channel % 10) == 0)) 
     34-                               pll = 0x2850; 
     35-                       else 
     36-                               pll = 0x142c; 
     37-               } 
     38+               if (IS_CHAN_A_FAST_CLOCK(ah, chan)) 
     39+                       pll = 0x142c; 
     40+               else if (AR_SREV_9280_20(ah)) 
     41+                       pll = 0x2850; 
     42+               else 
     43+                       pll |= SM(0x28, AR_RTC_9160_PLL_DIV); 
     44        } else { 
     45                pll |= SM(0x2c, AR_RTC_9160_PLL_DIV); 
     46        } 
    2247--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
    2348+++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
     
    398423         */ 
    399424-       if (IS_CHAN_A_5MHZ_SPACED(chan)) 
    400 +       if (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK) 
     425+       if (IS_CHAN_A_FAST_CLOCK(ah, chan)) 
    401426                REG_WRITE_ARRAY(&ah->iniModesAdditional, 
    402427                                modesIndex, regWrites); 
     
    407432  
    408433-       if (IS_CHAN_A_5MHZ_SPACED(chan)) 
    409 +       if (ah->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK) 
     434+       if (IS_CHAN_A_FAST_CLOCK(ah, chan)) 
    410435                rfMode |= (AR_PHY_MODE_DYNAMIC | AR_PHY_MODE_DYN_CCK_DISABLE); 
    411436  
    412437        REG_WRITE(ah, AR_PHY_MODE, rfMode); 
     438--- a/drivers/net/wireless/ath/ath9k/eeprom.h 
     439+++ b/drivers/net/wireless/ath/ath9k/eeprom.h 
     440@@ -300,7 +300,8 @@ struct base_eep_header { 
     441        u32 binBuildNumber; 
     442        u8 deviceType; 
     443        u8 pwdclkind; 
     444-       u8 futureBase_1[2]; 
     445+       u8 fastClk5g; 
     446+       u8 divChain; 
     447        u8 rxGainType; 
     448        u8 dacHiPwrMode_5G; 
     449        u8 openLoopPwrCntl; 
     450--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c 
     451+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c 
     452@@ -274,6 +274,8 @@ static u32 ath9k_hw_def_get_eeprom(struc 
     453                return pBase->txMask; 
     454        case EEP_RX_MASK: 
     455                return pBase->rxMask; 
     456+       case EEP_FSTCLK_5G: 
     457+               return pBase->fastClk5g; 
     458        case EEP_RXGAIN_TYPE: 
     459                return pBase->rxGainType; 
     460        case EEP_TXGAIN_TYPE: 
    413461--- a/drivers/net/wireless/ath/ath9k/hw.c 
    414462+++ b/drivers/net/wireless/ath/ath9k/hw.c 
     
    447495         * _and_ if on non-uniprocessor systems (Multiprocessor/HT). 
    448496         * This means we use it for all AR5416 devices, and the few 
    449 @@ -2198,7 +2209,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw 
     497@@ -1233,8 +1244,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st 
     498            (chan->channel != ah->curchan->channel) && 
     499            ((chan->channelFlags & CHANNEL_ALL) == 
     500             (ah->curchan->channelFlags & CHANNEL_ALL)) && 
     501-            !(AR_SREV_9280(ah) || IS_CHAN_A_5MHZ_SPACED(chan) || 
     502-            IS_CHAN_A_5MHZ_SPACED(ah->curchan))) { 
     503+           !AR_SREV_9280(ah)) { 
     504  
     505                if (ath9k_hw_channel_change(ah, chan)) { 
     506                        ath9k_hw_loadnf(ah, ah->curchan); 
     507@@ -2198,7 +2208,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw 
    450508        } 
    451509  
     
    457515                pCap->rx_lp_qdepth = ATH9K_HW_RX_LP_QDEPTH; 
    458516                pCap->rx_status_len = sizeof(struct ar9003_rxs); 
     517@@ -2206,6 +2217,11 @@ int ath9k_hw_fill_cap_info(struct ath_hw 
     518                pCap->txs_len = sizeof(struct ar9003_txs); 
     519        } else { 
     520                pCap->tx_desc_len = sizeof(struct ath_desc); 
     521+               if (AR_SREV_9280_20(ah) && 
     522+                   ((ah->eep_ops->get_eeprom(ah, EEP_MINOR_REV) <= 
     523+                     AR5416_EEP_MINOR_VER_16) || 
     524+                    ah->eep_ops->get_eeprom(ah, EEP_FSTCLK_5G))) 
     525+                       pCap->hw_caps |= ATH9K_HW_CAP_FASTCLOCK; 
     526        } 
     527  
     528        if (AR_SREV_9300_20_OR_LATER(ah)) 
    459529--- a/drivers/net/wireless/ath/ath9k/hw.h 
    460530+++ b/drivers/net/wireless/ath/ath9k/hw.h 
     
    475545        u16 spurchans[AR_EEPROM_MODAL_SPURS][2]; 
    476546        u8 max_txtrig_level; 
     547@@ -367,10 +369,9 @@ struct ath9k_channel { 
     548 #define IS_CHAN_2GHZ(_c) (((_c)->channelFlags & CHANNEL_2GHZ) != 0) 
     549 #define IS_CHAN_HALF_RATE(_c) (((_c)->channelFlags & CHANNEL_HALF) != 0) 
     550 #define IS_CHAN_QUARTER_RATE(_c) (((_c)->channelFlags & CHANNEL_QUARTER) != 0) 
     551-#define IS_CHAN_A_5MHZ_SPACED(_c)                      \ 
     552+#define IS_CHAN_A_FAST_CLOCK(_ah, _c)                  \ 
     553        ((((_c)->channelFlags & CHANNEL_5GHZ) != 0) &&  \ 
     554-        (((_c)->channel % 20) != 0) &&                 \ 
     555-        (((_c)->channel % 10) != 0)) 
     556+        ((_ah)->caps.hw_caps & ATH9K_HW_CAP_FASTCLOCK)) 
     557  
     558 /* These macros check chanmode and not channelFlags */ 
     559 #define IS_CHAN_B(_c) ((_c)->chanmode == CHANNEL_B) 
Note: See TracChangeset for help on using the changeset viewer.