All of lore.kernel.org
 help / color / mirror / Atom feed
From: "John W. Linville" <linville@tuxdriver.com>
To: Felix Fietkau <nbd@openwrt.org>
Cc: linux-wireless@vger.kernel.org, mcgrof@qca.qualcomm.com
Subject: Re: [PATCH 5/8] ath9k_hw: make various ar5416/ar91xx rf banks const
Date: Tue, 22 Jan 2013 16:05:18 -0500	[thread overview]
Message-ID: <20130122210518.GE13719@tuxdriver.com> (raw)
In-Reply-To: <1358704319-81749-5-git-send-email-nbd@openwrt.org>

This fails to apply against wireless-next...

On Sun, Jan 20, 2013 at 06:51:56PM +0100, Felix Fietkau wrote:
> Banks 0-3,7 are neither modified at run time, nor SREV dependent.
> 
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>
> ---
>  drivers/net/wireless/ath/ath9k/ar5008_phy.c | 75 ++++++++---------------------
>  drivers/net/wireless/ath/ath9k/ar9002_hw.c  |  6 ---
>  drivers/net/wireless/ath/ath9k/calib.h      |  6 +++
>  drivers/net/wireless/ath/ath9k/hw.h         | 10 ----
>  4 files changed, 26 insertions(+), 71 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
> index 93f8f96..391da5a 100644
> --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
> +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
> @@ -18,6 +18,7 @@
>  #include "hw-ops.h"
>  #include "../regd.h"
>  #include "ar9002_phy.h"
> +#include "ar5008_initvals.h"
>  
>  /* All code below is for AR5008, AR9001, AR9002 */
>  
> @@ -43,23 +44,16 @@ static const int m2ThreshLowExt_off = 127;
>  static const int m1ThreshExt_off = 127;
>  static const int m2ThreshExt_off = 127;
>  
> +static const struct ar5416IniArray bank0 = STATIC_INI_ARRAY(ar5416Bank0);
> +static const struct ar5416IniArray bank1 = STATIC_INI_ARRAY(ar5416Bank1);
> +static const struct ar5416IniArray bank2 = STATIC_INI_ARRAY(ar5416Bank2);
> +static const struct ar5416IniArray bank3 = STATIC_INI_ARRAY(ar5416Bank3);
> +static const struct ar5416IniArray bank7 = STATIC_INI_ARRAY(ar5416Bank7);
>  
> -static void ar5008_rf_bank_setup(u32 *bank, struct ar5416IniArray *array,
> -				 int col)
> -{
> -	int i;
> -
> -	for (i = 0; i < array->ia_rows; i++)
> -		bank[i] = INI_RA(array, i, col);
> -}
> -
> -
> -#define REG_WRITE_RF_ARRAY(iniarray, regData, regWr) \
> -	ar5008_write_rf_array(ah, iniarray, regData, &(regWr))
> -
> -static void ar5008_write_rf_array(struct ath_hw *ah, struct ar5416IniArray *array,
> -				  u32 *data, unsigned int *writecnt)
> +static void ar5008_write_bank6(struct ath_hw *ah, unsigned int *writecnt)
>  {
> +	struct ar5416IniArray *array = &ah->iniBank6;
> +	u32 *data = ah->analogBank6Data;
>  	int r;
>  
>  	ENABLE_REGWRITE_BUFFER(ah);
> @@ -165,7 +159,7 @@ static void ar5008_hw_force_bias(struct ath_hw *ah, u16 synth_freq)
>  	ar5008_hw_phy_modify_rx_buffer(ah->analogBank6Data, tmp_reg, 3, 181, 3);
>  
>  	/* write Bank 6 with new params */
> -	REG_WRITE_RF_ARRAY(&ah->iniBank6, ah->analogBank6Data, reg_writes);
> +	ar5008_write_bank6(ah, &reg_writes);
>  }
>  
>  /**
> @@ -469,29 +463,16 @@ static void ar5008_hw_spur_mitigate(struct ath_hw *ah,
>   */
>  static int ar5008_hw_rf_alloc_ext_banks(struct ath_hw *ah)
>  {
> -#define ATH_ALLOC_BANK(bank, size) do { \
> -		bank = devm_kzalloc(ah->dev, sizeof(u32) * size, GFP_KERNEL); \
> -		if (!bank) \
> -			goto error; \
> -	} while (0);
> -
> -	struct ath_common *common = ath9k_hw_common(ah);
> +	int size = ah->iniBank6.ia_rows * sizeof(u32);
>  
>  	if (AR_SREV_9280_20_OR_LATER(ah))
>  	    return 0;
>  
> -	ATH_ALLOC_BANK(ah->analogBank0Data, ah->iniBank0.ia_rows);
> -	ATH_ALLOC_BANK(ah->analogBank1Data, ah->iniBank1.ia_rows);
> -	ATH_ALLOC_BANK(ah->analogBank2Data, ah->iniBank2.ia_rows);
> -	ATH_ALLOC_BANK(ah->analogBank3Data, ah->iniBank3.ia_rows);
> -	ATH_ALLOC_BANK(ah->analogBank6Data, ah->iniBank6.ia_rows);
> -	ATH_ALLOC_BANK(ah->analogBank7Data, ah->iniBank7.ia_rows);
> +	ah->analogBank6Data = devm_kzalloc(ah->dev, size, GFP_KERNEL);
> +	if (!ah->analogBank6Data)
> +		return -ENOMEM;
>  
>  	return 0;
> -#undef ATH_ALLOC_BANK
> -error:
> -	ath_err(common, "Cannot allocate RF banks\n");
> -	return -ENOMEM;
>  }
>  
>  
> @@ -528,19 +509,6 @@ static bool ar5008_hw_set_rf_regs(struct ath_hw *ah,
>  	/* Setup rf parameters */
>  	eepMinorRev = ah->eep_ops->get_eeprom(ah, EEP_MINOR_REV);
>  
> -	/* Setup Bank 0 Write */
> -	ar5008_rf_bank_setup(ah->analogBank0Data, &ah->iniBank0, 1);
> -
> -	/* Setup Bank 1 Write */
> -	ar5008_rf_bank_setup(ah->analogBank1Data, &ah->iniBank1, 1);
> -
> -	/* Setup Bank 2 Write */
> -	ar5008_rf_bank_setup(ah->analogBank2Data, &ah->iniBank2, 1);
> -
> -	/* Setup Bank 6 Write */
> -	ar5008_rf_bank_setup(ah->analogBank3Data, &ah->iniBank3,
> -		      modesIndex);
> -
>  	for (i = 0; i < ah->iniBank6.ia_rows; i++)
>  		ah->analogBank6Data[i] = INI_RA(&ah->iniBank6, i, modesIndex);
>  
> @@ -563,16 +531,13 @@ static bool ar5008_hw_set_rf_regs(struct ath_hw *ah,
>  		}
>  	}
>  
> -	/* Setup Bank 7 Setup */
> -	ar5008_rf_bank_setup(ah->analogBank7Data, &ah->iniBank7, 1);
> -
>  	/* Write Analog registers */
> -	REG_WRITE_RF_ARRAY(&ah->iniBank0, ah->analogBank0Data, regWrites);
> -	REG_WRITE_RF_ARRAY(&ah->iniBank1, ah->analogBank1Data, regWrites);
> -	REG_WRITE_RF_ARRAY(&ah->iniBank2, ah->analogBank2Data, regWrites);
> -	REG_WRITE_RF_ARRAY(&ah->iniBank3, ah->analogBank3Data, regWrites);
> -	REG_WRITE_RF_ARRAY(&ah->iniBank6, ah->analogBank6Data, regWrites);
> -	REG_WRITE_RF_ARRAY(&ah->iniBank7, ah->analogBank7Data, regWrites);
> +	REG_WRITE_ARRAY(&bank0, 1, regWrites);
> +	REG_WRITE_ARRAY(&bank1, 1, regWrites);
> +	REG_WRITE_ARRAY(&bank2, 1, regWrites);
> +	REG_WRITE_ARRAY(&bank3, modesIndex, regWrites);
> +	ar5008_write_bank6(ah, &regWrites);
> +	REG_WRITE_ARRAY(&bank7, 1, regWrites);
>  
>  	return true;
>  }
> diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> index a4654d3..830daa1 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> @@ -78,12 +78,6 @@ static int ar9002_hw_init_mode_regs(struct ath_hw *ah)
>  		/* Common for AR5416, AR913x, AR9160 */
>  		INIT_INI_ARRAY(&ah->iniBB_RfGain, ar5416BB_RfGain);
>  
> -		INIT_INI_ARRAY(&ah->iniBank0, ar5416Bank0);
> -		INIT_INI_ARRAY(&ah->iniBank1, ar5416Bank1);
> -		INIT_INI_ARRAY(&ah->iniBank2, ar5416Bank2);
> -		INIT_INI_ARRAY(&ah->iniBank3, ar5416Bank3);
> -		INIT_INI_ARRAY(&ah->iniBank7, ar5416Bank7);
> -
>  		/* Common for AR913x, AR9160 */
>  		if (!AR_SREV_5416(ah))
>  			INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6TPC_9100);
> diff --git a/drivers/net/wireless/ath/ath9k/calib.h b/drivers/net/wireless/ath/ath9k/calib.h
> index 60dcb6c..3d70b8c 100644
> --- a/drivers/net/wireless/ath/ath9k/calib.h
> +++ b/drivers/net/wireless/ath/ath9k/calib.h
> @@ -33,6 +33,12 @@ struct ar5416IniArray {
>  	u32 ia_columns;
>  };
>  
> +#define STATIC_INI_ARRAY(array) {			\
> +		.ia_array = (u32 *)(array),		\
> +		.ia_rows = ARRAY_SIZE(array),		\
> +		.ia_columns = ARRAY_SIZE(array[0]),	\
> +	}
> +
>  #define INIT_INI_ARRAY(iniarray, array) do {	\
>  		(iniarray)->ia_array = (u32 *)(array);		\
>  		(iniarray)->ia_rows = ARRAY_SIZE(array);	\
> diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
> index 5c89aed..639d60d 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.h
> +++ b/drivers/net/wireless/ath/ath9k/hw.h
> @@ -848,12 +848,7 @@ struct ath_hw {
>  	struct ath_hw_ops ops;
>  
>  	/* Used to program the radio on non single-chip devices */
> -	u32 *analogBank0Data;
> -	u32 *analogBank1Data;
> -	u32 *analogBank2Data;
> -	u32 *analogBank3Data;
>  	u32 *analogBank6Data;
> -	u32 *analogBank7Data;
>  
>  	int coverage_class;
>  	u32 slottime;
> @@ -888,13 +883,8 @@ struct ath_hw {
>  
>  	struct ar5416IniArray iniModes;
>  	struct ar5416IniArray iniCommon;
> -	struct ar5416IniArray iniBank0;
>  	struct ar5416IniArray iniBB_RfGain;
> -	struct ar5416IniArray iniBank1;
> -	struct ar5416IniArray iniBank2;
> -	struct ar5416IniArray iniBank3;
>  	struct ar5416IniArray iniBank6;
> -	struct ar5416IniArray iniBank7;
>  	struct ar5416IniArray iniAddac;
>  	struct ar5416IniArray iniPcieSerdes;
>  #ifdef CONFIG_PM_SLEEP
> -- 
> 1.8.0.2
> 
> 

-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

  parent reply	other threads:[~2013-01-22 21:15 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-20 17:51 [PATCH 1/8] ath9k: stop rx after tx Felix Fietkau
2013-01-20 17:51 ` [PATCH 2/8] ath9k: clean up processing of pending tx frames on reset Felix Fietkau
2013-01-20 17:51   ` [PATCH 3/8] ath9k: use ath_tx_process_buffer instead of open-coding similar code Felix Fietkau
2013-01-20 17:51     ` [PATCH 4/8] ath9k_hw: make the initval parameter to ath9k_hw_write_array const Felix Fietkau
2013-01-20 17:51       ` [PATCH 5/8] ath9k_hw: make various ar5416/ar91xx rf banks const Felix Fietkau
2013-01-20 17:51         ` [PATCH 6/8] ath9k_hw: remove ath9k_hw_ani_setup and its variables Felix Fietkau
2013-01-20 17:51           ` [PATCH 7/8] ath9k_hw: reduce struct ar5416AniState size Felix Fietkau
2013-01-20 17:51             ` [PATCH 8/8] ath9k_hw: remove a useless WARN_ON Felix Fietkau
2013-01-22 21:05         ` John W. Linville [this message]
2013-01-22 21:31           ` [PATCH 5/8] ath9k_hw: make various ar5416/ar91xx rf banks const Felix Fietkau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130122210518.GE13719@tuxdriver.com \
    --to=linville@tuxdriver.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=mcgrof@qca.qualcomm.com \
    --cc=nbd@openwrt.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.