[bwn] migrate bwn_dummy_transmission() back to main, as it'll be used by other PHYs.
The Linux b43 driver uses this in other PHYs besides the g PHY.
This commit is contained in:
parent
c71e075efb
commit
570f34f14b
@ -3513,6 +3513,72 @@ bwn_dma_ring_addr(void *arg, bus_dma_segment_t *seg, int nseg, int error)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
bwn_dummy_transmission(struct bwn_mac *mac, int ofdm, int paon)
|
||||
{
|
||||
struct bwn_phy *phy = &mac->mac_phy;
|
||||
struct bwn_softc *sc = mac->mac_sc;
|
||||
unsigned int i, max_loop;
|
||||
uint16_t value;
|
||||
uint32_t buffer[5] = {
|
||||
0x00000000, 0x00d40000, 0x00000000, 0x01000000, 0x00000000
|
||||
};
|
||||
|
||||
if (ofdm) {
|
||||
max_loop = 0x1e;
|
||||
buffer[0] = 0x000201cc;
|
||||
} else {
|
||||
max_loop = 0xfa;
|
||||
buffer[0] = 0x000b846e;
|
||||
}
|
||||
|
||||
BWN_ASSERT_LOCKED(mac->mac_sc);
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
bwn_ram_write(mac, i * 4, buffer[i]);
|
||||
|
||||
BWN_WRITE_2(mac, 0x0568, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x07c0,
|
||||
(siba_get_revid(sc->sc_dev) < 11) ? 0x0000 : 0x0100);
|
||||
value = ((phy->type == BWN_PHYTYPE_A) ? 0x41 : 0x40);
|
||||
BWN_WRITE_2(mac, 0x050c, value);
|
||||
if (phy->type == BWN_PHYTYPE_LP)
|
||||
BWN_WRITE_2(mac, 0x0514, 0x1a02);
|
||||
BWN_WRITE_2(mac, 0x0508, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x050a, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x054c, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x056a, 0x0014);
|
||||
BWN_WRITE_2(mac, 0x0568, 0x0826);
|
||||
BWN_WRITE_2(mac, 0x0500, 0x0000);
|
||||
if (phy->type == BWN_PHYTYPE_LP)
|
||||
BWN_WRITE_2(mac, 0x0502, 0x0050);
|
||||
else
|
||||
BWN_WRITE_2(mac, 0x0502, 0x0030);
|
||||
|
||||
if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
|
||||
BWN_RF_WRITE(mac, 0x0051, 0x0017);
|
||||
for (i = 0x00; i < max_loop; i++) {
|
||||
value = BWN_READ_2(mac, 0x050e);
|
||||
if (value & 0x0080)
|
||||
break;
|
||||
DELAY(10);
|
||||
}
|
||||
for (i = 0x00; i < 0x0a; i++) {
|
||||
value = BWN_READ_2(mac, 0x050e);
|
||||
if (value & 0x0400)
|
||||
break;
|
||||
DELAY(10);
|
||||
}
|
||||
for (i = 0x00; i < 0x19; i++) {
|
||||
value = BWN_READ_2(mac, 0x0690);
|
||||
if (!(value & 0x0100))
|
||||
break;
|
||||
DELAY(10);
|
||||
}
|
||||
if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
|
||||
BWN_RF_WRITE(mac, 0x0051, 0x0037);
|
||||
}
|
||||
|
||||
void
|
||||
bwn_ram_write(struct bwn_mac *mac, uint16_t offset, uint32_t val)
|
||||
{
|
||||
|
@ -43,6 +43,8 @@ struct bwn_mac;
|
||||
extern uint64_t bwn_hf_read(struct bwn_mac *);
|
||||
extern void bwn_hf_write(struct bwn_mac *, uint64_t);
|
||||
|
||||
extern void bwn_dummy_transmission(struct bwn_mac *mac, int ofdm, int paon);
|
||||
|
||||
extern void bwn_ram_write(struct bwn_mac *, uint16_t, uint32_t);
|
||||
|
||||
extern void bwn_mac_suspend(struct bwn_mac *);
|
||||
|
@ -103,7 +103,6 @@ static void bwn_spu_workaround(struct bwn_mac *, uint8_t);
|
||||
static void bwn_wa_init(struct bwn_mac *);
|
||||
static void bwn_ofdmtab_write_2(struct bwn_mac *, uint16_t, uint16_t,
|
||||
uint16_t);
|
||||
static void bwn_dummy_transmission(struct bwn_mac *, int, int);
|
||||
static void bwn_ofdmtab_write_4(struct bwn_mac *, uint16_t, uint16_t,
|
||||
uint32_t);
|
||||
static void bwn_gtab_write(struct bwn_mac *, uint16_t, uint16_t,
|
||||
@ -1892,72 +1891,6 @@ bwn_gtab_write(struct bwn_mac *mac, uint16_t table, uint16_t offset,
|
||||
BWN_PHY_WRITE(mac, BWN_PHY_GTABDATA, value);
|
||||
}
|
||||
|
||||
static void
|
||||
bwn_dummy_transmission(struct bwn_mac *mac, int ofdm, int paon)
|
||||
{
|
||||
struct bwn_phy *phy = &mac->mac_phy;
|
||||
struct bwn_softc *sc = mac->mac_sc;
|
||||
unsigned int i, max_loop;
|
||||
uint16_t value;
|
||||
uint32_t buffer[5] = {
|
||||
0x00000000, 0x00d40000, 0x00000000, 0x01000000, 0x00000000
|
||||
};
|
||||
|
||||
if (ofdm) {
|
||||
max_loop = 0x1e;
|
||||
buffer[0] = 0x000201cc;
|
||||
} else {
|
||||
max_loop = 0xfa;
|
||||
buffer[0] = 0x000b846e;
|
||||
}
|
||||
|
||||
BWN_ASSERT_LOCKED(mac->mac_sc);
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
bwn_ram_write(mac, i * 4, buffer[i]);
|
||||
|
||||
BWN_WRITE_2(mac, 0x0568, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x07c0,
|
||||
(siba_get_revid(sc->sc_dev) < 11) ? 0x0000 : 0x0100);
|
||||
value = ((phy->type == BWN_PHYTYPE_A) ? 0x41 : 0x40);
|
||||
BWN_WRITE_2(mac, 0x050c, value);
|
||||
if (phy->type == BWN_PHYTYPE_LP)
|
||||
BWN_WRITE_2(mac, 0x0514, 0x1a02);
|
||||
BWN_WRITE_2(mac, 0x0508, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x050a, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x054c, 0x0000);
|
||||
BWN_WRITE_2(mac, 0x056a, 0x0014);
|
||||
BWN_WRITE_2(mac, 0x0568, 0x0826);
|
||||
BWN_WRITE_2(mac, 0x0500, 0x0000);
|
||||
if (phy->type == BWN_PHYTYPE_LP)
|
||||
BWN_WRITE_2(mac, 0x0502, 0x0050);
|
||||
else
|
||||
BWN_WRITE_2(mac, 0x0502, 0x0030);
|
||||
|
||||
if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
|
||||
BWN_RF_WRITE(mac, 0x0051, 0x0017);
|
||||
for (i = 0x00; i < max_loop; i++) {
|
||||
value = BWN_READ_2(mac, 0x050e);
|
||||
if (value & 0x0080)
|
||||
break;
|
||||
DELAY(10);
|
||||
}
|
||||
for (i = 0x00; i < 0x0a; i++) {
|
||||
value = BWN_READ_2(mac, 0x050e);
|
||||
if (value & 0x0400)
|
||||
break;
|
||||
DELAY(10);
|
||||
}
|
||||
for (i = 0x00; i < 0x19; i++) {
|
||||
value = BWN_READ_2(mac, 0x0690);
|
||||
if (!(value & 0x0100))
|
||||
break;
|
||||
DELAY(10);
|
||||
}
|
||||
if (phy->rf_ver == 0x2050 && phy->rf_rev <= 0x5)
|
||||
BWN_RF_WRITE(mac, 0x0051, 0x0037);
|
||||
}
|
||||
|
||||
static void
|
||||
bwn_lo_write(struct bwn_mac *mac, struct bwn_loctl *ctl)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user