Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 159648
b: refs/heads/master
c: 4758315
h: refs/heads/master
v: v3
  • Loading branch information
Gábor Stefanik authored and John W. Linville committed Aug 14, 2009
1 parent c4a3ddd commit 95a39e8
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 40 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7834ddbcc7a097443761b0722e8c9fb8511b95b1
refs/heads/master: 47583154767886a97a82452c8aca63bf0336337a
85 changes: 46 additions & 39 deletions trunk/drivers/net/wireless/b43/tables_lpphy.c
Original file line number Diff line number Diff line change
Expand Up @@ -1058,10 +1058,6 @@ static const u32 lpphy_papd_mult_table[] = {
0x00036963, 0x000339f2, 0x00030a89, 0x0002db28,
};

struct lpphy_tx_gain_table_entry {
u8 gm, pga, pad, dac, bb_mult;
};

static struct lpphy_tx_gain_table_entry lpphy_rev0_nopa_tx_gain_table[] = {
{ .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
{ .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
Expand Down Expand Up @@ -2345,44 +2341,55 @@ void lpphy_rev2plus_table_init(struct b43_wldev *dev)
}
}


static void lpphy_rev0_1_write_gain_table(struct b43_wldev *dev,
struct lpphy_tx_gain_table_entry *table)
static void lpphy_rev0_1_write_gain_table(struct b43_wldev *dev, int offset,
struct lpphy_tx_gain_table_entry data)
{
int i;
u32 tmp;

B43_WARN_ON(dev->phy.rev >= 2);

for (i = 0; i < 128; i++) {
tmp = table[i].pad << 11;
tmp |= table[i].pga << 7;
tmp |= table[i].gm << 4;
tmp |= table[i].dac;
b43_lptab_write(dev, B43_LPTAB32(10, 0xC0 + i), tmp);
tmp = table[i].bb_mult << 20;
b43_lptab_write(dev, B43_LPTAB32(10, 0x140 + i), tmp);
}
tmp = data.pad << 11;
tmp |= data.pga << 7;
tmp |= data.gm << 4;
tmp |= data.dac;
b43_lptab_write(dev, B43_LPTAB32(10, 0xC0 + offset), tmp);
tmp = data.bb_mult << 20;
b43_lptab_write(dev, B43_LPTAB32(10, 0x140 + offset), tmp);
}

static void lpphy_rev2plus_write_gain_table(struct b43_wldev *dev,
struct lpphy_tx_gain_table_entry *table)
static void lpphy_rev2plus_write_gain_table(struct b43_wldev *dev, int offset,
struct lpphy_tx_gain_table_entry data)
{
int i;
u32 tmp;

B43_WARN_ON(dev->phy.rev < 2);

for (i = 0; i < 128; i++) {
tmp = table[i].pad << 16;
tmp |= table[i].pga << 8;
tmp |= table[i].gm;
tmp |= 0x7f000000;
b43_lptab_write(dev, B43_LPTAB32(7, 0xC0 + i), tmp);
tmp = table[i].bb_mult << 20;
tmp |= table[i].dac << 28;
b43_lptab_write(dev, B43_LPTAB32(7, 0x140 + i), tmp);
}
tmp = data.pad << 16;
tmp |= data.pga << 8;
tmp |= data.gm;
tmp |= 0x7f000000;
b43_lptab_write(dev, B43_LPTAB32(7, 0xC0 + offset), tmp);
tmp = data.bb_mult << 20;
tmp |= data.dac << 28;
b43_lptab_write(dev, B43_LPTAB32(7, 0x140 + offset), tmp);
}

void lpphy_write_gain_table(struct b43_wldev *dev, int offset,
struct lpphy_tx_gain_table_entry data)
{
if (dev->phy.rev >= 2)
lpphy_rev2plus_write_gain_table(dev, offset, data);
else
lpphy_rev0_1_write_gain_table(dev, offset, data);
}

void lpphy_write_gain_table_bulk(struct b43_wldev *dev, int offset, int count,
struct lpphy_tx_gain_table_entry *table)
{
int i;

for (i = offset; i < count; i++)
lpphy_write_gain_table(dev, i, table[i]);
}

void lpphy_init_tx_gain_table(struct b43_wldev *dev)
Expand All @@ -2393,36 +2400,36 @@ void lpphy_init_tx_gain_table(struct b43_wldev *dev)
case 0:
if ((bus->sprom.boardflags_hi & B43_BFH_NOPA) ||
(bus->sprom.boardflags_lo & B43_BFL_HGPA))
lpphy_rev0_1_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev0_nopa_tx_gain_table);
else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
lpphy_rev0_1_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev0_2ghz_tx_gain_table);
else
lpphy_rev0_1_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev0_5ghz_tx_gain_table);
break;
case 1:
if ((bus->sprom.boardflags_hi & B43_BFH_NOPA) ||
(bus->sprom.boardflags_lo & B43_BFL_HGPA))
lpphy_rev0_1_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev1_nopa_tx_gain_table);
else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
lpphy_rev0_1_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev1_2ghz_tx_gain_table);
else
lpphy_rev0_1_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev1_5ghz_tx_gain_table);
break;
default:
if (bus->sprom.boardflags_hi & B43_BFH_NOPA)
lpphy_rev2plus_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev2_nopa_tx_gain_table);
else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
lpphy_rev2plus_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev2_2ghz_tx_gain_table);
else
lpphy_rev2plus_write_gain_table(dev,
lpphy_write_gain_table_bulk(dev, 0, 128,
lpphy_rev2_5ghz_tx_gain_table);
}
}
9 changes: 9 additions & 0 deletions trunk/drivers/net/wireless/b43/tables_lpphy.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ void b43_lptab_write_bulk(struct b43_wldev *dev, u32 offset,
void b2062_upload_init_table(struct b43_wldev *dev);
void b2063_upload_init_table(struct b43_wldev *dev);

struct lpphy_tx_gain_table_entry {
u8 gm, pga, pad, dac, bb_mult;
};

void lpphy_write_gain_table(struct b43_wldev *dev, int offset,
struct lpphy_tx_gain_table_entry data);
void lpphy_write_gain_table_bulk(struct b43_wldev *dev, int offset, int count,
struct lpphy_tx_gain_table_entry *table);

void lpphy_rev0_1_table_init(struct b43_wldev *dev);
void lpphy_rev2plus_table_init(struct b43_wldev *dev);
void lpphy_init_tx_gain_table(struct b43_wldev *dev);
Expand Down

0 comments on commit 95a39e8

Please sign in to comment.