Search Linux Wireless

Re: [PATCH] ath5k: Fix reset sequence for AR5212 in general and RF5111 in particular

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Well, I already merged v3...what is new here?

On Thu, Oct 30, 2008 at 12:25:08AM +0100, Elias Oltmanns wrote:
> "Nick Kossifidis" <mickflemm@xxxxxxxxx> wrote:
> > 2008/10/29 Bob Copeland <me@xxxxxxxxxxxxxxx>:
> >> On Wed, Oct 29, 2008 at 11:07 AM, Elias Oltmanns <eo@xxxxxxxxxxxxxx> wrote:
> >
> >>>>
> >>>> Patch looks OK, thanks a lot ;-)
> >>>>
> >>>> John can we get this get in stable until i update reset.c on wireless-testing ?
> >>>> Would it be possible later to update mainline from wireless-testing ?
> >>>
> >>> Reading Documentation/stable_kernel_rules.txt, I very much doubt that
> >>> this patch will go in unless we can at least point out something
> >>> equivalent in mainline. So, we'll have to wait until your changes to
> >>> reset.c have reached mainline, I'm afraid.
> >>
> >> Or, we could just send your patch to both stable and for 2.6.28.  Then Nick
> >> can fix up the difference or revert it in his rework.  The rework is 2.6.29
> >> material, right?
> >>
> >
> > ACK
> 
> In that case, I'd suggest the following patch for 2.6.28-rc2. Once it
> has been merged, I'll send the previous one off to the stable team.
> 
> Regards,
> 
> Elias
> --------
> From: Elias Oltmanns <eo@xxxxxxxxxxxxxx>
> Subject: ath5k: Fix reset sequence for AR5212 in general and RF5111 in particular
> 
> Take care to handle register 0xa228 exactly as in the HAL released by
> Atheros. This change is required to make ath5k work again on my system
> since commit 2203d6be (ath5k: Misc hw_reset updates), thus fixing a
> regression in 2.6.27 and therefore hopefully eligible for inclusion into
> a stable release.
> 
> v2: Only overwrite initial register values on later revisions of AR5212
>     chips.
> v3: Use standard macros to manipulate the register.
> v4: Use appropriate constants (new to 2.6.28) for register access.
> 
> Signed-off-by: Elias Oltmanns <eo@xxxxxxxxxxxxxx>
> ---
> 
>  drivers/net/wireless/ath5k/initvals.c |    2 ++
>  drivers/net/wireless/ath5k/reset.c    |   25 ++++++++++---------------
>  2 files changed, 12 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath5k/initvals.c b/drivers/net/wireless/ath5k/initvals.c
> index ea2e1a2..ceaa6c4 100644
> --- a/drivers/net/wireless/ath5k/initvals.c
> +++ b/drivers/net/wireless/ath5k/initvals.c
> @@ -806,6 +806,8 @@ static const struct ath5k_ini_mode ar5212_rf5111_ini_mode_end[] = {
>  		{ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
>  	{ AR5K_PHY(642),
>  		{ 0xd03e6788, 0xd03e6788, 0xd03e6788, 0xd03e6788, 0xd03e6788 } },
> +	{ 0xa228,
> +		{ 0x000001b5, 0x000001b5, 0x000001b5, 0x000001b5, 0x000001b5 } },
>  	{ 0xa23c,
>  		{ 0x13c889af, 0x13c889af, 0x13c889af, 0x13c889af, 0x13c889af } },
>  };
> diff --git a/drivers/net/wireless/ath5k/reset.c b/drivers/net/wireless/ath5k/reset.c
> index 8f18868..8fdb092 100644
> --- a/drivers/net/wireless/ath5k/reset.c
> +++ b/drivers/net/wireless/ath5k/reset.c
> @@ -537,9 +537,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
>  		mdelay(1);
>  
>  		/*
> -		 * Write some more initial register settings
> +		 * Write some more initial register settings for revised chips
>  		 */
> -		if (ah->ah_version == AR5K_AR5212) {
> +		if (ah->ah_version == AR5K_AR5212 &&
> +		    ah->ah_phy_revision > AR5K_SREV_PHY_5212) {
>  			ath5k_hw_reg_write(ah, 0x0002a002, 0x982c);
>  
>  			if (channel->hw_value == CHANNEL_G)
> @@ -558,19 +559,13 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
>  			else
>  				ath5k_hw_reg_write(ah, 0x00000000, 0x994c);
>  
> -			/* Some bits are disabled here, we know nothing about
> -			 * register 0xa228 yet, most of the times this ends up
> -			 * with a value 0x9b5 -haven't seen any dump with
> -			 * a different value- */
> -			/* Got this from decompiling binary HAL */
> -			data = ath5k_hw_reg_read(ah, 0xa228);
> -			data &= 0xfffffdff;
> -			ath5k_hw_reg_write(ah, data, 0xa228);
> -
> -			data = ath5k_hw_reg_read(ah, 0xa228);
> -			data &= 0xfffe03ff;
> -			ath5k_hw_reg_write(ah, data, 0xa228);
> -			data = 0;
> +			/* Got this from legacy-hal */
> +			AR5K_REG_DISABLE_BITS(ah, AR5K_PHY_DAG_CCK_CTL,
> +					      AR5K_PHY_DAG_CCK_CTL_EN_RSSI_THR);
> +
> +			AR5K_REG_MASKED_BITS(ah, AR5K_PHY_DAG_CCK_CTL,
> +					     2 << AR5K_PHY_DAG_CCK_CTL_RSSI_THR_S,
> +					     ~AR5K_PHY_DAG_CCK_CTL_RSSI_THR);
>  
>  			/* Just write 0x9b5 ? */
>  			/* ath5k_hw_reg_write(ah, 0x000009b5, 0xa228); */
> 

-- 
John W. Linville		Linux should be at the core
linville@xxxxxxxxxxxxx			of your literate lifestyle.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux