mac80211: refresh patches
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / ath / 351-ath9k_hw-issue-external-reset-for-QCA955x.patch
index 5eb69b898d8f5ae3f126d7a763bebf183580607c..d3248f958b5f6da922b9d3662dd715ca932e174d 100644 (file)
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/net/wireless/ath/ath9k/hw.c
 +++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1271,39 +1271,56 @@ void ath9k_hw_get_delta_slope_vals(struc
+@@ -1312,39 +1312,56 @@ void ath9k_hw_get_delta_slope_vals(struc
        *coef_exponent = coef_exp - 16;
  }
  
@@ -29,21 +29,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -              npend = ath9k_hw_numtxpending(ah, i);
 -              if (npend)
 -                      break;
--      }
--
--      if (ah->external_reset &&
--          (npend || type == ATH9K_RESET_COLD)) {
--              int reset_err = 0;
--
--              ath_dbg(ath9k_hw_common(ah), RESET,
--                      "reset MAC via external reset\n");
--
--              reset_err = ah->external_reset();
--              if (reset_err) {
--                      ath_err(ath9k_hw_common(ah),
--                              "External reset failed, err=%d\n",
--                              reset_err);
--                      return false;
 +      if (type == ATH9K_RESET_COLD)
 +              return true;
 +
@@ -59,42 +44,54 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +              for (i = 0; i < AR_NUM_QCU; i++) {
 +                      if (ath9k_hw_numtxpending(ah, i))
 +                              return true;
-               }
-+      }
-+
++              }
+       }
+-      if (ah->external_reset &&
+-          (npend || type == ATH9K_RESET_COLD)) {
+-              int reset_err = 0;
 +      return false;
 +}
-+
+-              ath_dbg(ath9k_hw_common(ah), RESET,
+-                      "reset MAC via external reset\n");
 +static bool ath9k_hw_external_reset(struct ath_hw *ah, int type)
 +{
 +      int err;
-+
+-              reset_err = ah->external_reset();
+-              if (reset_err) {
+-                      ath_err(ath9k_hw_common(ah),
+-                              "External reset failed, err=%d\n",
+-                              reset_err);
+-                      return false;
+-              }
 +      if (!ah->external_reset || !ath9k_hw_need_external_reset(ah, type))
 +              return true;
-+
-+      ath_dbg(ath9k_hw_common(ah), RESET,
-+              "reset MAC via external reset\n");
  
 -              REG_WRITE(ah, AR_RTC_RESET, 1);
++      ath_dbg(ath9k_hw_common(ah), RESET,
++              "reset MAC via external reset\n");
++
 +      err = ah->external_reset();
 +      if (err) {
 +              ath_err(ath9k_hw_common(ah),
 +                      "External reset failed, err=%d\n", err);
 +              return false;
-       }
++      }
++
 +      if (AR_SREV_9550(ah)) {
 +              REG_WRITE(ah, AR_RTC_RESET, 0);
 +              udelay(10);
-+      }
-+
+       }
 +      REG_WRITE(ah, AR_RTC_RESET, 1);
 +      udelay(10);
 +
        return true;
  }
  
-@@ -1356,24 +1373,24 @@ static bool ath9k_hw_set_reset(struct at
+@@ -1397,24 +1414,24 @@ static bool ath9k_hw_set_reset(struct at
                        rst_flags |= AR_RTC_RC_MAC_COLD;
        }