2009-08-11 21:03:15

by Gábor Stefanik

[permalink] [raw]
Subject: [RFC] b43: LP-PHY: Initialize SW TX power control

I'm not sure at all if writing to offset 0 in the TX gain table
is the right thing to do... please clarify.

Not-yet-signed-off-by: Gábor Stefanik <[email protected]>

---
If this is indeed the right thing to do, please inform me,
and I will resubmit this as a formal patch.

phy_lp.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
index 689c932..93451c9 100644
--- a/drivers/net/wireless/b43/phy_lp.c
+++ b/drivers/net/wireless/b43/phy_lp.c
@@ -847,15 +847,23 @@ static void lpphy_calibration(struct b43_wldev *dev)
/* Initialize TX power control */
static void lpphy_tx_pctl_init(struct b43_wldev *dev)
{
+ lpphy_tx_gain_table_entry txgain;
if (0/*FIXME HWPCTL capable */) {
//TODO
} else { /* This device is only software TX power control capable. */
+ txgain.bb_mult = 0x96;
if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
- //TODO
+ txgain.gm = 4;
+ txgain.pad = 12;
+ txgain.pga = 12;
+ txgain.dac = 0;
} else {
- //TODO
- }
- //TODO set BB multiplier to 0x0096
+ txgain.gm = 7;
+ txgain.pad = 15;
+ txgain.pga = 14;
+ txgain.dac = 0;
+ } // FIXME offset 0 is just a guess!
+ lpphy_write_gain_table(dev, 0, txgain);
}
}





2009-08-12 01:41:23

by Larry Finger

[permalink] [raw]
Subject: Re: [RFC] b43: LP-PHY: Initialize SW TX power control

Gábor Stefanik wrote:
> I'm not sure at all if writing to offset 0 in the TX gain table
> is the right thing to do... please clarify.
>
> Not-yet-signed-off-by: Gábor Stefanik <[email protected]>
>
> ---
> If this is indeed the right thing to do, please inform me,
> and I will resubmit this as a formal patch.
>
> phy_lp.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/phy_lp.c
> b/drivers/net/wireless/b43/phy_lp.c
> index 689c932..93451c9 100644
> --- a/drivers/net/wireless/b43/phy_lp.c
> +++ b/drivers/net/wireless/b43/phy_lp.c
> @@ -847,15 +847,23 @@ static void lpphy_calibration(struct b43_wldev *dev)
> /* Initialize TX power control */
> static void lpphy_tx_pctl_init(struct b43_wldev *dev)
> {
> + lpphy_tx_gain_table_entry txgain;
> if (0/*FIXME HWPCTL capable */) {
> //TODO
> } else { /* This device is only software TX power control capable. */
> + txgain.bb_mult = 0x96;
> if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
> - //TODO
> + txgain.gm = 4;
> + txgain.pad = 12;
> + txgain.pga = 12;
> + txgain.dac = 0;
> } else {
> - //TODO
> - }
> - //TODO set BB multiplier to 0x0096
> + txgain.gm = 7;
> + txgain.pad = 15;
> + txgain.pga = 14;

I found a typo in the specs today. The pad should be 14 and pga should
be 15.

> + txgain.dac = 0;
> + } // FIXME offset 0 is just a guess!
> + lpphy_write_gain_table(dev, 0, txgain);

The link was wrong in the page. The correct routine is
http://bcm-v4.sipsolutions.net/802.11/PHY/LP/SetTXGain. It has one
argument &txgain. I don't think this one has been written yet.

Larry