ath9k: add more fixes for half/quarter rate support
[librecmc/librecmc.git] / package / mac80211 / patches / 546-ath9k_cleanup_ar9287_settings.patch
1 --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
2 +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
3 @@ -499,45 +499,6 @@ void ar9002_hw_enable_async_fifo(struct 
4         }
5  }
6  
7 -/*
8 - * If Async FIFO is enabled, the following counters change as MAC now runs
9 - * at 117 Mhz instead of 88/44MHz when async FIFO is disabled.
10 - *
11 - * The values below tested for ht40 2 chain.
12 - * Overwrite the delay/timeouts initialized in process ini.
13 - */
14 -void ar9002_hw_update_async_fifo(struct ath_hw *ah)
15 -{
16 -       if (AR_SREV_9287_13_OR_LATER(ah)) {
17 -               REG_WRITE(ah, AR_D_GBL_IFS_SIFS,
18 -                         AR_D_GBL_IFS_SIFS_ASYNC_FIFO_DUR);
19 -               REG_WRITE(ah, AR_D_GBL_IFS_SLOT,
20 -                         AR_D_GBL_IFS_SLOT_ASYNC_FIFO_DUR);
21 -               REG_WRITE(ah, AR_D_GBL_IFS_EIFS,
22 -                         AR_D_GBL_IFS_EIFS_ASYNC_FIFO_DUR);
23 -
24 -               REG_WRITE(ah, AR_TIME_OUT, AR_TIME_OUT_ACK_CTS_ASYNC_FIFO_DUR);
25 -               REG_WRITE(ah, AR_USEC, AR_USEC_ASYNC_FIFO_DUR);
26 -
27 -               REG_SET_BIT(ah, AR_MAC_PCU_LOGIC_ANALYZER,
28 -                           AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20768);
29 -               REG_RMW_FIELD(ah, AR_AHB_MODE, AR_AHB_CUSTOM_BURST_EN,
30 -                             AR_AHB_CUSTOM_BURST_ASYNC_FIFO_VAL);
31 -       }
32 -}
33 -
34 -/*
35 - * We don't enable WEP aggregation on mac80211 but we keep this
36 - * around for HAL unification purposes.
37 - */
38 -void ar9002_hw_enable_wep_aggregation(struct ath_hw *ah)
39 -{
40 -       if (AR_SREV_9287_13_OR_LATER(ah)) {
41 -               REG_SET_BIT(ah, AR_PCU_MISC_MODE2,
42 -                           AR_PCU_MISC_MODE2_ENABLE_AGGWEP);
43 -       }
44 -}
45 -
46  /* Sets up the AR5008/AR9001/AR9002 hardware familiy callbacks */
47  void ar9002_hw_attach_ops(struct ath_hw *ah)
48  {
49 --- a/drivers/net/wireless/ath/ath9k/hw.c
50 +++ b/drivers/net/wireless/ath/ath9k/hw.c
51 @@ -1633,9 +1633,13 @@ int ath9k_hw_reset(struct ath_hw *ah, st
52  
53         ath9k_hw_init_global_settings(ah);
54  
55 -       if (!AR_SREV_9300_20_OR_LATER(ah)) {
56 -               ar9002_hw_update_async_fifo(ah);
57 -               ar9002_hw_enable_wep_aggregation(ah);
58 +       if (AR_SREV_9287(ah) && AR_SREV_9287_13_OR_LATER(ah)) {
59 +               REG_SET_BIT(ah, AR_MAC_PCU_LOGIC_ANALYZER,
60 +                           AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20768);
61 +               REG_RMW_FIELD(ah, AR_AHB_MODE, AR_AHB_CUSTOM_BURST_EN,
62 +                             AR_AHB_CUSTOM_BURST_ASYNC_FIFO_VAL);
63 +               REG_SET_BIT(ah, AR_PCU_MISC_MODE2,
64 +                           AR_PCU_MISC_MODE2_ENABLE_AGGWEP);
65         }
66  
67         REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PRESERVE_SEQNUM);
68 --- a/drivers/net/wireless/ath/ath9k/hw.h
69 +++ b/drivers/net/wireless/ath/ath9k/hw.h
70 @@ -984,8 +984,6 @@ void ath9k_hw_get_delta_slope_vals(struc
71  void ar9002_hw_cck_chan14_spread(struct ath_hw *ah);
72  int ar9002_hw_rf_claim(struct ath_hw *ah);
73  void ar9002_hw_enable_async_fifo(struct ath_hw *ah);
74 -void ar9002_hw_update_async_fifo(struct ath_hw *ah);
75 -void ar9002_hw_enable_wep_aggregation(struct ath_hw *ah);
76  
77  /*
78   * Code specific to AR9003, we stuff these here to avoid callbacks