Subject: Re: Re: [GIT PULL] bcm43xx: Update B6PHY initialization

From: Michael Buesch <[email-masked]>
Date: Wed, 1 Feb 2006 14:55:34 +0100

On Wednesday 01 February 2006 10:51, Danny van Dyk wrote:
> John, please
> 
> git pull rsync://pitr.amd64.dev.gentoo.org/kugelfang/wireless-2.6.git
> 
> which will provide this changeset:
> 
> Danny van Dyk:
>       [bcm43xx] Sync bcm43xx_phy_initb6() with specs

Danny, _please_ make sure to apply patches to the softmac _and_ the dscape
branch. Otherwise patches will get lost.
It is very important to keep both branches in sync.

I know that this is annoying work, but we must stick with it, until
we have a usable 80211 stack in the kernel.
I also know that 99% of the people are not interrested in the dscape
branch, but it is important to keep it working. The only way to find
weaknesses in d80211 is to maintain drivers which use it.

Besides that, you can also request a pull from me. The git snapshots
are generated from my tree, so this is the fastest way to get your
changes into the snapshots. But that's entirely your decision.

> diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_phy.c 
> b/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
> index f5e7a6a..d90f207 100644
> --- a/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
> +++ b/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
> @@ -947,7 +947,7 @@ static void bcm43xx_phy_initb6(struct bc
>  	bcm43xx_radio_write16(bcm, 0x0050, 0x0020);
>  	if ((bcm->current_core->radio->manufact == 0x17F) &&
>  	    (bcm->current_core->radio->version == 0x2050) &&
> -	    (bcm->current_core->radio->revision == 2)) {
> +	    (bcm->current_core->radio->revision <= 2)) {
>  		bcm43xx_radio_write16(bcm, 0x0050, 0x0020);
>  		bcm43xx_radio_write16(bcm, 0x005A, 0x0070);
>  		bcm43xx_radio_write16(bcm, 0x005B, 0x007B);
> @@ -984,10 +984,15 @@ static void bcm43xx_phy_initb6(struct bc
>  		bcm43xx_write16(bcm, 0x03E4, 0x0009);
>  	if (phy->type == BCM43xx_PHYTYPE_B) {
>  		bcm43xx_write16(bcm, 0x03E6, 0x8140);
> -		bcm43xx_phy_write(bcm, 0x0016, 0x5410);
> -		bcm43xx_phy_write(bcm, 0x0017, 0xA820);
> -		bcm43xx_phy_write(bcm, 0x0007, 0x0062);
> -		TODO();//TODO: calibrate stuff.
> +		bcm43xx_phy_write(bcm, 0x0016, 0x0410);
> +		bcm43xx_phy_write(bcm, 0x0017, 0x0820);
> +		bcm43xx_phy_write(bcm, 0x0062, 0x0007);
> +		(void) bcm43xx_radio_calibrationvalue(bcm);
> +		bcm43xx_phy_lo_b_measure(bcm);
> +		if (bcm->sprom.boardflags & BCM43xx_BFL_RSSI) {
> +			bcm43xx_calc_nrssi_slope(bcm);
> +			bcm43xx_calc_nrssi_threshold(bcm);
> +		}
>  		bcm43xx_phy_init_pctl(bcm);
>  	} else
>  		bcm43xx_write16(bcm, 0x03E6, 0x0);
> diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_radio.c 
> b/drivers/net/wireless/bcm43xx/bcm43xx_radio.c
> index 5ce6ace..3901aa9 100644
> --- a/drivers/net/wireless/bcm43xx/bcm43xx_radio.c
> +++ b/drivers/net/wireless/bcm43xx/bcm43xx_radio.c
> @@ -1184,7 +1184,7 @@ int bcm43xx_radio_set_interference_mitig
>  	return 0;
>  }
>  
> -static u16 bcm43xx_radio_calibrationvalue(struct bcm43xx_private *bcm)
> +u16 bcm43xx_radio_calibrationvalue(struct bcm43xx_private *bcm)
>  {
>  	u16 reg, index, ret;
>  
> diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_radio.h 
> b/drivers/net/wireless/bcm43xx/bcm43xx_radio.h
> index 89fe292..a5d2e10 100644
> --- a/drivers/net/wireless/bcm43xx/bcm43xx_radio.h
> +++ b/drivers/net/wireless/bcm43xx/bcm43xx_radio.h
> @@ -89,5 +89,6 @@ void bcm43xx_nrssi_hw_update(struct bcm4
>  void bcm43xx_nrssi_mem_update(struct bcm43xx_private *bcm);
>  
>  void bcm43xx_radio_set_tx_iq(struct bcm43xx_private *bcm);
> +u16 bcm43xx_radio_calibrationvalue(struct bcm43xx_private *bcm);
>  
>  #endif /* BCM43xx_RADIO_H_ */
> -- 
> Danny van Dyk <[email-masked]>
> Gentoo/AMD64 Project, Gentoo Scientific Project
> 

-- 
Greetings Michael.