mac80211: refresh patches
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / ath / 351-ath9k_hw-issue-external-reset-for-QCA955x.patch
index 5f265b84c26e0c3aaa83a7387b763211e47a838f..d3248f958b5f6da922b9d3662dd715ca932e174d 100644 (file)
@@ -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,35 +44,47 @@ 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);
 +