From 207338c78edbd4d52767f1b20b9a95bdb32c29dd Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Mon, 11 Jul 2016 11:38:15 +0200
Subject: ath9k: implement temperature compensation support for AR93xx and
 newer

Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 ...t-rid-of-some-duplicate-code-in-calibrati.patch | 94 ++++++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 package/kernel/mac80211/patches/327-ath9k_hw-get-rid-of-some-duplicate-code-in-calibrati.patch

(limited to 'package/kernel/mac80211/patches/327-ath9k_hw-get-rid-of-some-duplicate-code-in-calibrati.patch')

diff --git a/package/kernel/mac80211/patches/327-ath9k_hw-get-rid-of-some-duplicate-code-in-calibrati.patch b/package/kernel/mac80211/patches/327-ath9k_hw-get-rid-of-some-duplicate-code-in-calibrati.patch
new file mode 100644
index 0000000..b7f3823
--- /dev/null
+++ b/package/kernel/mac80211/patches/327-ath9k_hw-get-rid-of-some-duplicate-code-in-calibrati.patch
@@ -0,0 +1,94 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Mon, 11 Jul 2016 11:35:20 +0200
+Subject: [PATCH] ath9k_hw: get rid of some duplicate code in calibration
+ init
+
+Remove a misleading debug message as well
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
+@@ -1373,6 +1373,26 @@ static void ar9003_hw_cl_cal_post_proc(s
+ 	}
+ }
+ 
++static void ar9003_hw_init_cal_common(struct ath_hw *ah)
++{
++	struct ath9k_hw_cal_data *caldata = ah->caldata;
++
++	/* Initialize list pointers */
++	ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL;
++
++	INIT_CAL(&ah->iq_caldata);
++	INSERT_CAL(ah, &ah->iq_caldata);
++
++	/* Initialize current pointer to first element in list */
++	ah->cal_list_curr = ah->cal_list;
++
++	if (ah->cal_list_curr)
++		ath9k_hw_reset_calibration(ah, ah->cal_list_curr);
++
++	if (caldata)
++		caldata->CalValid = 0;
++}
++
+ static bool ar9003_hw_init_cal_pcoem(struct ath_hw *ah,
+ 				     struct ath9k_channel *chan)
+ {
+@@ -1532,21 +1552,7 @@ skip_tx_iqcal:
+ 	/* Revert chainmask to runtime parameters */
+ 	ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask);
+ 
+-	/* Initialize list pointers */
+-	ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL;
+-
+-	INIT_CAL(&ah->iq_caldata);
+-	INSERT_CAL(ah, &ah->iq_caldata);
+-	ath_dbg(common, CALIBRATE, "enabling IQ Calibration\n");
+-
+-	/* Initialize current pointer to first element in list */
+-	ah->cal_list_curr = ah->cal_list;
+-
+-	if (ah->cal_list_curr)
+-		ath9k_hw_reset_calibration(ah, ah->cal_list_curr);
+-
+-	if (caldata)
+-		caldata->CalValid = 0;
++	ar9003_hw_init_cal_common(ah);
+ 
+ 	return true;
+ }
+@@ -1577,8 +1583,6 @@ static bool do_ar9003_agc_cal(struct ath
+ static bool ar9003_hw_init_cal_soc(struct ath_hw *ah,
+ 				   struct ath9k_channel *chan)
+ {
+-	struct ath_common *common = ath9k_hw_common(ah);
+-	struct ath9k_hw_cal_data *caldata = ah->caldata;
+ 	bool txiqcal_done = false;
+ 	bool status = true;
+ 	bool run_agc_cal = false, sep_iq_cal = false;
+@@ -1676,21 +1680,7 @@ skip_tx_iqcal:
+ 	/* Revert chainmask to runtime parameters */
+ 	ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask);
+ 
+-	/* Initialize list pointers */
+-	ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL;
+-
+-	INIT_CAL(&ah->iq_caldata);
+-	INSERT_CAL(ah, &ah->iq_caldata);
+-	ath_dbg(common, CALIBRATE, "enabling IQ Calibration\n");
+-
+-	/* Initialize current pointer to first element in list */
+-	ah->cal_list_curr = ah->cal_list;
+-
+-	if (ah->cal_list_curr)
+-		ath9k_hw_reset_calibration(ah, ah->cal_list_curr);
+-
+-	if (caldata)
+-		caldata->CalValid = 0;
++	ar9003_hw_init_cal_common(ah);
+ 
+ 	return true;
+ }
-- 
cgit v1.1