svn commit: r206969 - in stable/8/sys/dev: bwn siba
Weongyo Jeong
weongyo at FreeBSD.org
Wed Apr 21 00:22:17 UTC 2010
Author: weongyo
Date: Wed Apr 21 00:22:16 2010
New Revision: 206969
URL: http://svn.freebsd.org/changeset/base/206969
Log:
MFC r205003:
Revert r204992 and just wrap it all in ifdef INVARIANTS to fix the debug
and non-debug cases
MFC r204992:
fixes a compile error if INVARIANTS is disabled.
Pointy hat to: me
Submitted by: Michael Butler <imb at protected-networks dot net>
MFC r204983:
Fix build breakage introduced in r204922.
MFC r204923:
uses KOBJMETHOD_END macro to indicate the end of method table.
Submitted by: yongari
MFC r204922:
o uses bus accessor macros to read values from ivar so no more values
are referenced directly from ivar pointer. It's to do like what other
buses do. [1]
o changes exported prototypes. It doesn't use struct siba_* structures
anymore that instead of it it uses only device_t.
o removes duplicate code and debug messages.
o style(9)
Pointed out by: imp [1]
Modified:
stable/8/sys/dev/bwn/if_bwn.c
stable/8/sys/dev/bwn/if_bwnvar.h
stable/8/sys/dev/siba/siba.c
stable/8/sys/dev/siba/siba_bwn.c
stable/8/sys/dev/siba/siba_cc.c (contents, props changed)
stable/8/sys/dev/siba/siba_core.c
stable/8/sys/dev/siba/siba_pcib.c
stable/8/sys/dev/siba/sibavar.h
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/dev/uath/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
stable/8/sys/geom/sched/ (props changed)
Modified: stable/8/sys/dev/bwn/if_bwn.c
==============================================================================
--- stable/8/sys/dev/bwn/if_bwn.c Wed Apr 21 00:15:58 2010 (r206968)
+++ stable/8/sys/dev/bwn/if_bwn.c Wed Apr 21 00:22:16 2010 (r206969)
@@ -134,7 +134,7 @@ SYSCTL_INT(_hw_bwn, OID_AUTO, wme, CTLFL
static int bwn_attach_pre(struct bwn_softc *);
static int bwn_attach_post(struct bwn_softc *);
-static void bwn_sprom_bugfixes(struct siba_softc *);
+static void bwn_sprom_bugfixes(device_t);
static void bwn_init(void *);
static int bwn_init_locked(struct bwn_softc *);
static int bwn_ioctl(struct ifnet *, u_long, caddr_t);
@@ -205,7 +205,6 @@ static void bwn_stop_locked(struct bwn_s
static int bwn_core_init(struct bwn_mac *);
static void bwn_core_start(struct bwn_mac *);
static void bwn_core_exit(struct bwn_mac *);
-static void bwn_fix_imcfglobug(struct bwn_mac *);
static void bwn_bt_disable(struct bwn_mac *);
static int bwn_chip_init(struct bwn_mac *);
static uint64_t bwn_hf_read(struct bwn_mac *);
@@ -225,7 +224,6 @@ static int bwn_fw_loadinitvals(struct bw
static int bwn_phy_init(struct bwn_mac *);
static void bwn_set_txantenna(struct bwn_mac *, int);
static void bwn_set_opmode(struct bwn_mac *);
-static void bwn_gpio_cleanup(struct bwn_mac *);
static void bwn_rate_write(struct bwn_mac *, uint16_t, int);
static uint8_t bwn_plcp_getcck(const uint8_t);
static uint8_t bwn_plcp_getofdm(const uint8_t);
@@ -910,13 +908,12 @@ static const struct siba_devid bwn_devs[
static int
bwn_probe(device_t dev)
{
- struct siba_dev_softc *sd = device_get_ivars(dev);
int i;
for (i = 0; i < sizeof(bwn_devs) / sizeof(bwn_devs[0]); i++) {
- if (sd->sd_id.sd_vendor == bwn_devs[i].sd_vendor &&
- sd->sd_id.sd_device == bwn_devs[i].sd_device &&
- sd->sd_id.sd_rev == bwn_devs[i].sd_rev)
+ if (siba_get_vendor(dev) == bwn_devs[i].sd_vendor &&
+ siba_get_device(dev) == bwn_devs[i].sd_device &&
+ siba_get_revid(dev) == bwn_devs[i].sd_rev)
return (BUS_PROBE_DEFAULT);
}
@@ -928,12 +925,9 @@ bwn_attach(device_t dev)
{
struct bwn_mac *mac;
struct bwn_softc *sc = device_get_softc(dev);
- struct siba_dev_softc *sd = device_get_ivars(dev);
- struct siba_softc *siba = sd->sd_bus;
int error, i, msic, reg;
sc->sc_dev = dev;
- sc->sc_sd = sd;
#ifdef BWN_DEBUG
sc->sc_debug = bwn_debug;
#endif
@@ -942,14 +936,14 @@ bwn_attach(device_t dev)
error = bwn_attach_pre(sc);
if (error != 0)
return (error);
- bwn_sprom_bugfixes(sd->sd_bus);
+ bwn_sprom_bugfixes(dev);
sc->sc_flags |= BWN_FLAG_ATTACHED;
}
if (!TAILQ_EMPTY(&sc->sc_maclist)) {
- if (siba->siba_pci_did != 0x4313 &&
- siba->siba_pci_did != 0x431a &&
- siba->siba_pci_did != 0x4321) {
+ if (siba_get_pci_device(dev) != 0x4313 &&
+ siba_get_pci_device(dev) != 0x431a &&
+ siba_get_pci_device(dev) != 0x4321) {
device_printf(sc->sc_dev,
"skip 802.11 cores\n");
return (ENODEV);
@@ -961,7 +955,6 @@ bwn_attach(device_t dev)
if (mac == NULL)
return (ENOMEM);
mac->mac_sc = sc;
- mac->mac_sd = sd;
mac->mac_status = BWN_MAC_STATUS_UNINIT;
if (bwn_bfp != 0)
mac->mac_flags |= BWN_MAC_FLAG_BADFRAME_PREEMP;
@@ -977,7 +970,7 @@ bwn_attach(device_t dev)
device_printf(sc->sc_dev, "WLAN (chipid %#x rev %u) "
"PHY (analog %d type %d rev %d) RADIO (manuf %#x ver %#x rev %d)\n",
- sd->sd_bus->siba_chipid, sd->sd_id.sd_rev,
+ siba_get_chipid(sc->sc_dev), siba_get_revid(sc->sc_dev),
mac->mac_phy.analog, mac->mac_phy.type, mac->mac_phy.rev,
mac->mac_phy.rf_manuf, mac->mac_phy.rf_ver,
mac->mac_phy.rf_rev);
@@ -1065,8 +1058,6 @@ bwn_attach_post(struct bwn_softc *sc)
{
struct ieee80211com *ic;
struct ifnet *ifp = sc->sc_ifp;
- struct siba_dev_softc *sd = sc->sc_sd;
- struct siba_sprom *sprom = &sd->sd_bus->siba_sprom;
ic = ifp->if_l2com;
ic->ic_ifp = ifp;
@@ -1087,8 +1078,9 @@ bwn_attach_post(struct bwn_softc *sc)
/* call MI attach routine. */
ieee80211_ifattach(ic,
- bwn_is_valid_ether_addr(sprom->mac_80211a) ? sprom->mac_80211a :
- sprom->mac_80211bg);
+ bwn_is_valid_ether_addr(siba_sprom_get_mac_80211a(sc->sc_dev)) ?
+ siba_sprom_get_mac_80211a(sc->sc_dev) :
+ siba_sprom_get_mac_80211bg(sc->sc_dev));
ic->ic_headroom = sizeof(struct bwn_txhdr);
@@ -1219,21 +1211,24 @@ fail: BWN_LOCK_DESTROY(sc);
}
static void
-bwn_sprom_bugfixes(struct siba_softc *siba)
+bwn_sprom_bugfixes(device_t dev)
{
#define BWN_ISDEV(_vendor, _device, _subvendor, _subdevice) \
- ((siba->siba_pci_vid == PCI_VENDOR_##_vendor) && \
- (siba->siba_pci_did == _device) && \
- (siba->siba_pci_subvid == PCI_VENDOR_##_subvendor) && \
- (siba->siba_pci_subdid == _subdevice))
-
- if (siba->siba_board_vendor == PCI_VENDOR_APPLE &&
- siba->siba_board_type == 0x4e && siba->siba_board_rev > 0x40)
- siba->siba_sprom.bf_lo |= BWN_BFL_PACTRL;
- if (siba->siba_board_vendor == SIBA_BOARDVENDOR_DELL &&
- siba->siba_chipid == 0x4301 && siba->siba_board_rev == 0x74)
- siba->siba_sprom.bf_lo |= BWN_BFL_BTCOEXIST;
- if (siba->siba_type == SIBA_TYPE_PCI) {
+ ((siba_get_pci_vendor(dev) == PCI_VENDOR_##_vendor) && \
+ (siba_get_pci_device(dev) == _device) && \
+ (siba_get_pci_subvendor(dev) == PCI_VENDOR_##_subvendor) && \
+ (siba_get_pci_subdevice(dev) == _subdevice))
+
+ if (siba_get_pci_subvendor(dev) == PCI_VENDOR_APPLE &&
+ siba_get_pci_subdevice(dev) == 0x4e &&
+ siba_get_pci_revid(dev) > 0x40)
+ siba_sprom_set_bf_lo(dev,
+ siba_sprom_get_bf_lo(dev) | BWN_BFL_PACTRL);
+ if (siba_get_pci_subvendor(dev) == SIBA_BOARDVENDOR_DELL &&
+ siba_get_chipid(dev) == 0x4301 && siba_get_pci_revid(dev) == 0x74)
+ siba_sprom_set_bf_lo(dev,
+ siba_sprom_get_bf_lo(dev) | BWN_BFL_BTCOEXIST);
+ if (siba_get_type(dev) == SIBA_TYPE_PCI) {
if (BWN_ISDEV(BROADCOM, 0x4318, ASUSTEK, 0x100f) ||
BWN_ISDEV(BROADCOM, 0x4320, DELL, 0x0003) ||
BWN_ISDEV(BROADCOM, 0x4320, HP, 0x12f8) ||
@@ -1241,7 +1236,8 @@ bwn_sprom_bugfixes(struct siba_softc *si
BWN_ISDEV(BROADCOM, 0x4320, LINKSYS, 0x0014) ||
BWN_ISDEV(BROADCOM, 0x4320, LINKSYS, 0x0015) ||
BWN_ISDEV(BROADCOM, 0x4320, MOTOROLA, 0x7010))
- siba->siba_sprom.bf_lo &= ~BWN_BFL_BTCOEXIST;
+ siba_sprom_set_bf_lo(dev,
+ siba_sprom_get_bf_lo(dev) & ~BWN_BFL_BTCOEXIST);
}
#undef BWN_ISDEV
}
@@ -1434,7 +1430,7 @@ bwn_pio_tx_start(struct bwn_mac *mac, st
tq->tq_used += roundup(m->m_pkthdr.len + BWN_HDRSIZE(mac), 4);
tq->tq_free--;
- if (mac->mac_sd->sd_id.sd_rev >= 8) {
+ if (siba_get_revid(sc->sc_dev) >= 8) {
/*
* XXX please removes m_defrag(9)
*/
@@ -1606,17 +1602,15 @@ static int
bwn_attach_core(struct bwn_mac *mac)
{
struct bwn_softc *sc = mac->mac_sc;
- struct siba_dev_softc *sd = mac->mac_sd;
- struct siba_softc *siba = sd->sd_bus;
int error, have_bg = 0, have_a = 0;
uint32_t high;
- KASSERT(sd->sd_id.sd_rev >= 5,
- ("unsupported revision %d", sd->sd_id.sd_rev));
+ KASSERT(siba_get_revid(sc->sc_dev) >= 5,
+ ("unsupported revision %d", siba_get_revid(sc->sc_dev)));
- siba_powerup(siba, 0);
+ siba_powerup(sc->sc_dev, 0);
- high = siba_read_4(sd, SIBA_TGSHIGH);
+ high = siba_read_4(sc->sc_dev, SIBA_TGSHIGH);
bwn_reset_core(mac,
(high & BWN_TGSHIGH_HAVE_2GHZ) ? BWN_TGSLOW_SUPPORT_G : 0);
error = bwn_phy_getinfo(mac, high);
@@ -1625,8 +1619,9 @@ bwn_attach_core(struct bwn_mac *mac)
have_a = (high & BWN_TGSHIGH_HAVE_5GHZ) ? 1 : 0;
have_bg = (high & BWN_TGSHIGH_HAVE_2GHZ) ? 1 : 0;
- if (siba->siba_pci_did != 0x4312 && siba->siba_pci_did != 0x4319 &&
- siba->siba_pci_did != 0x4324) {
+ if (siba_get_pci_device(sc->sc_dev) != 0x4312 &&
+ siba_get_pci_device(sc->sc_dev) != 0x4319 &&
+ siba_get_pci_device(sc->sc_dev) != 0x4324) {
have_a = have_bg = 0;
if (mac->mac_phy.type == BWN_PHYTYPE_A)
have_a = 1;
@@ -1719,30 +1714,30 @@ bwn_attach_core(struct bwn_mac *mac)
mac->mac_phy.switch_analog(mac, 0);
- siba_dev_down(sd, 0);
+ siba_dev_down(sc->sc_dev, 0);
fail:
- siba_powerdown(siba);
+ siba_powerdown(sc->sc_dev);
return (error);
}
static void
bwn_reset_core(struct bwn_mac *mac, uint32_t flags)
{
- struct siba_dev_softc *sd = mac->mac_sd;
+ struct bwn_softc *sc = mac->mac_sc;
uint32_t low, ctl;
flags |= (BWN_TGSLOW_PHYCLOCK_ENABLE | BWN_TGSLOW_PHYRESET);
- siba_dev_up(sd, flags);
+ siba_dev_up(sc->sc_dev, flags);
DELAY(2000);
- low = (siba_read_4(sd, SIBA_TGSLOW) | SIBA_TGSLOW_FGC) &
+ low = (siba_read_4(sc->sc_dev, SIBA_TGSLOW) | SIBA_TGSLOW_FGC) &
~BWN_TGSLOW_PHYRESET;
- siba_write_4(sd, SIBA_TGSLOW, low);
- siba_read_4(sd, SIBA_TGSLOW);
+ siba_write_4(sc->sc_dev, SIBA_TGSLOW, low);
+ siba_read_4(sc->sc_dev, SIBA_TGSLOW);
DELAY(1000);
- siba_write_4(sd, SIBA_TGSLOW, low & ~SIBA_TGSLOW_FGC);
- siba_read_4(sd, SIBA_TGSLOW);
+ siba_write_4(sc->sc_dev, SIBA_TGSLOW, low & ~SIBA_TGSLOW_FGC);
+ siba_read_4(sc->sc_dev, SIBA_TGSLOW);
DELAY(1000);
if (mac->mac_phy.switch_analog != NULL)
@@ -1759,8 +1754,6 @@ bwn_phy_getinfo(struct bwn_mac *mac, int
{
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_softc *sc = mac->mac_sc;
- struct siba_dev_softc *sd = mac->mac_sd;
- struct siba_softc *siba = sd->sd_bus;
uint32_t tmp;
/* PHY */
@@ -1779,10 +1772,10 @@ bwn_phy_getinfo(struct bwn_mac *mac, int
goto unsupphy;
/* RADIO */
- if (siba->siba_chipid == 0x4317) {
- if (siba->siba_chiprev == 0)
+ if (siba_get_chipid(sc->sc_dev) == 0x4317) {
+ if (siba_get_chiprev(sc->sc_dev) == 0)
tmp = 0x3205017f;
- else if (siba->siba_chiprev == 1)
+ else if (siba_get_chiprev(sc->sc_dev) == 1)
tmp = 0x4205017f;
else
tmp = 0x5205017f;
@@ -1826,7 +1819,6 @@ bwn_chiptest(struct bwn_mac *mac)
#define TESTVAL0 0x55aaaa55
#define TESTVAL1 0xaa5555aa
struct bwn_softc *sc = mac->mac_sc;
- struct siba_dev_softc *sd = mac->mac_sd;
uint32_t v, backup;
BWN_LOCK(sc);
@@ -1842,7 +1834,8 @@ bwn_chiptest(struct bwn_mac *mac)
bwn_shm_write_4(mac, BWN_SHARED, 0, backup);
- if ((sd->sd_id.sd_rev >= 3) && (sd->sd_id.sd_rev <= 10)) {
+ if ((siba_get_revid(sc->sc_dev) >= 3) &&
+ (siba_get_revid(sc->sc_dev) <= 10)) {
BWN_WRITE_2(mac, BWN_TSF_CFP_START, 0xaaaa);
BWN_WRITE_4(mac, BWN_TSF_CFP_START, 0xccccbbbb);
if (BWN_READ_2(mac, BWN_TSF_CFP_START_LOW) != 0xbbbb)
@@ -2070,15 +2063,17 @@ bwn_phy_g_attach(struct bwn_mac *mac)
struct bwn_softc *sc = mac->mac_sc;
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_phy_g *pg = &phy->phy_g;
- struct siba_dev_softc *sd = mac->mac_sd;
- struct siba_sprom *sprom = &sd->sd_bus->siba_sprom;
unsigned int i;
- int16_t pab0 = (int16_t)(sprom->pa0b0), pab1 = (int16_t)(sprom->pa0b1),
- pab2 = (int16_t)(sprom->pa0b2);
+ int16_t pab0, pab1, pab2;
static int8_t bwn_phy_g_tssi2dbm_table[] = BWN_PHY_G_TSSI2DBM_TABLE;
- int8_t bg = (int8_t)sprom->tssi_bg;
+ int8_t bg;
+
+ bg = (int8_t)siba_sprom_get_tssi_bg(sc->sc_dev);
+ pab0 = (int16_t)siba_sprom_get_pa0b0(sc->sc_dev);
+ pab1 = (int16_t)siba_sprom_get_pa0b1(sc->sc_dev);
+ pab2 = (int16_t)siba_sprom_get_pa0b2(sc->sc_dev);
- if ((sd->sd_bus->siba_chipid == 0x4301) && (phy->rf_ver != 0x2050))
+ if ((siba_get_chipid(sc->sc_dev) == 0x4301) && (phy->rf_ver != 0x2050))
device_printf(sc->sc_dev, "not supported anymore\n");
pg->pg_flags = 0;
@@ -2175,8 +2170,8 @@ bwn_phy_g_prepare_hw(struct bwn_mac *mac
{
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_phy_g *pg = &phy->phy_g;
+ struct bwn_softc *sc = mac->mac_sc;
struct bwn_txpwr_loctl *lo = &pg->pg_loctl;
- struct siba_softc *bus = mac->mac_sd->sd_bus;
static const struct bwn_rfatt rfatt0[] = {
{ 3, 0 }, { 1, 0 }, { 5, 0 }, { 7, 0 }, { 9, 0 }, { 2, 0 },
{ 0, 0 }, { 4, 0 }, { 6, 0 }, { 8, 0 }, { 1, 1 }, { 2, 1 },
@@ -2204,12 +2199,12 @@ bwn_phy_g_prepare_hw(struct bwn_mac *mac
/* prepare Radio Attenuation */
pg->pg_rfatt.padmix = 0;
- if (bus->siba_board_vendor == SIBA_BOARDVENDOR_BCM &&
- bus->siba_board_type == SIBA_BOARD_BCM4309G) {
- if (bus->siba_board_rev < 0x43) {
+ if (siba_get_pci_subvendor(sc->sc_dev) == SIBA_BOARDVENDOR_BCM &&
+ siba_get_pci_subdevice(sc->sc_dev) == SIBA_BOARD_BCM4309G) {
+ if (siba_get_pci_revid(sc->sc_dev) < 0x43) {
pg->pg_rfatt.att = 2;
goto done;
- } else if (bus->siba_board_rev < 0x51) {
+ } else if (siba_get_pci_revid(sc->sc_dev) < 0x51) {
pg->pg_rfatt.att = 3;
goto done;
}
@@ -2228,24 +2223,25 @@ bwn_phy_g_prepare_hw(struct bwn_mac *mac
goto done;
case 1:
if (phy->type == BWN_PHYTYPE_G) {
- if (bus->siba_board_vendor ==
+ if (siba_get_pci_subvendor(sc->sc_dev) ==
SIBA_BOARDVENDOR_BCM &&
- bus->siba_board_type ==
+ siba_get_pci_subdevice(sc->sc_dev) ==
SIBA_BOARD_BCM4309G &&
- bus->siba_board_rev >= 30)
+ siba_get_pci_revid(sc->sc_dev) >= 30)
pg->pg_rfatt.att = 3;
- else if (bus->siba_board_vendor ==
+ else if (siba_get_pci_subvendor(sc->sc_dev) ==
SIBA_BOARDVENDOR_BCM &&
- bus->siba_board_type == SIBA_BOARD_BU4306)
+ siba_get_pci_subdevice(sc->sc_dev) ==
+ SIBA_BOARD_BU4306)
pg->pg_rfatt.att = 3;
else
pg->pg_rfatt.att = 1;
} else {
- if (bus->siba_board_vendor ==
+ if (siba_get_pci_subvendor(sc->sc_dev) ==
SIBA_BOARDVENDOR_BCM &&
- bus->siba_board_type ==
+ siba_get_pci_subdevice(sc->sc_dev) ==
SIBA_BOARD_BCM4309G &&
- bus->siba_board_rev >= 30)
+ siba_get_pci_revid(sc->sc_dev) >= 30)
pg->pg_rfatt.att = 7;
else
pg->pg_rfatt.att = 6;
@@ -2253,17 +2249,18 @@ bwn_phy_g_prepare_hw(struct bwn_mac *mac
goto done;
case 2:
if (phy->type == BWN_PHYTYPE_G) {
- if (bus->siba_board_vendor ==
+ if (siba_get_pci_subvendor(sc->sc_dev) ==
SIBA_BOARDVENDOR_BCM &&
- bus->siba_board_type ==
+ siba_get_pci_subdevice(sc->sc_dev) ==
SIBA_BOARD_BCM4309G &&
- bus->siba_board_rev >= 30)
+ siba_get_pci_revid(sc->sc_dev) >= 30)
pg->pg_rfatt.att = 3;
- else if (bus->siba_board_vendor ==
+ else if (siba_get_pci_subvendor(sc->sc_dev) ==
SIBA_BOARDVENDOR_BCM &&
- bus->siba_board_type == SIBA_BOARD_BU4306)
+ siba_get_pci_subdevice(sc->sc_dev) ==
+ SIBA_BOARD_BU4306)
pg->pg_rfatt.att = 5;
- else if (bus->siba_chipid == 0x4320)
+ else if (siba_get_chipid(sc->sc_dev) == 0x4320)
pg->pg_rfatt.att = 4;
else
pg->pg_rfatt.att = 3;
@@ -2547,7 +2544,6 @@ bwn_phy_g_recalc_txpwr(struct bwn_mac *m
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_phy_g *pg = &phy->phy_g;
struct bwn_softc *sc = mac->mac_sc;
- struct siba_softc *siba = mac->mac_sd->sd_bus;
unsigned int tssi;
int cck, ofdm;
int power;
@@ -2570,12 +2566,13 @@ bwn_phy_g_recalc_txpwr(struct bwn_mac *m
pg->pg_avgtssi = tssi;
KASSERT(tssi < BWN_TSSI_MAX, ("%s:%d: fail", __func__, __LINE__));
- max = siba->siba_sprom.maxpwr_bg;
- if (siba->siba_sprom.bf_lo & BWN_BFL_PACTRL)
+ max = siba_sprom_get_maxpwr_bg(sc->sc_dev);
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_PACTRL)
max -= 3;
if (max >= 120) {
device_printf(sc->sc_dev, "invalid max TX-power value\n");
- siba->siba_sprom.maxpwr_bg = max = 80;
+ max = 80;
+ siba_sprom_set_maxpwr_bg(sc->sc_dev, max);
}
power = MIN(MAX((phy->txpower < 0) ? 0 : (phy->txpower << 2), 0), max) -
@@ -2619,9 +2616,8 @@ bwn_phy_g_set_txpwr(struct bwn_mac *mac)
txctl = BWN_TXCTL_PA2DB | BWN_TXCTL_TXMIX;
rfatt += 2;
bbatt += 2;
- } else if (mac->mac_sd->sd_bus->siba_sprom.
- bf_lo &
- BWN_BFL_PACTRL) {
+ } else if (siba_sprom_get_bf_lo(sc->sc_dev) &
+ BWN_BFL_PACTRL) {
bbatt += 4 * (rfatt - 2);
rfatt = 2;
}
@@ -2716,9 +2712,10 @@ static void
bwn_phy_g_task_60s(struct bwn_mac *mac)
{
struct bwn_phy *phy = &mac->mac_phy;
+ struct bwn_softc *sc = mac->mac_sc;
uint8_t old = phy->chan;
- if (!(mac->mac_sd->sd_bus->siba_sprom.bf_lo & BWN_BFL_RSSI))
+ if (!(siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_RSSI))
return;
bwn_mac_suspend(mac);
@@ -3182,20 +3179,15 @@ bwn_wme_clear(struct bwn_softc *sc)
static int
bwn_core_init(struct bwn_mac *mac)
{
-#ifdef BWN_DEBUG
struct bwn_softc *sc = mac->mac_sc;
-#endif
- struct siba_dev_softc *sd = mac->mac_sd;
- struct siba_softc *siba = sd->sd_bus;
- struct siba_sprom *sprom = &siba->siba_sprom;
uint64_t hf;
int error;
KASSERT(mac->mac_status == BWN_MAC_STATUS_UNINIT,
("%s:%d: fail", __func__, __LINE__));
- siba_powerup(siba, 0);
- if (!siba_dev_isup(sd))
+ siba_powerup(sc->sc_dev, 0);
+ if (!siba_dev_isup(sc->sc_dev))
bwn_reset_core(mac,
mac->mac_phy.gmode ? BWN_TGSLOW_SUPPORT_G : 0);
@@ -3219,9 +3211,9 @@ bwn_core_init(struct bwn_mac *mac)
mac->mac_phy.init_pre(mac);
- siba_pcicore_intr(&siba->siba_pci, sd);
+ siba_pcicore_intr(sc->sc_dev);
- bwn_fix_imcfglobug(mac);
+ siba_fix_imcfglobug(sc->sc_dev);
bwn_bt_disable(mac);
if (mac->mac_phy.prepare_hw) {
error = mac->mac_phy.prepare_hw(mac);
@@ -3232,11 +3224,11 @@ bwn_core_init(struct bwn_mac *mac)
if (error)
goto fail0;
bwn_shm_write_2(mac, BWN_SHARED, BWN_SHARED_COREREV,
- mac->mac_sd->sd_id.sd_rev);
+ siba_get_revid(sc->sc_dev));
hf = bwn_hf_read(mac);
if (mac->mac_phy.type == BWN_PHYTYPE_G) {
hf |= BWN_HF_GPHY_SYM_WORKAROUND;
- if (sprom->bf_lo & BWN_BFL_PACTRL)
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_PACTRL)
hf |= BWN_HF_PAGAINBOOST_OFDM_ON;
if (mac->mac_phy.rev == 1)
hf |= BWN_HF_GPHY_DC_CANCELFILTER;
@@ -3247,10 +3239,10 @@ bwn_core_init(struct bwn_mac *mac)
if (mac->mac_phy.rf_rev == 6)
hf |= BWN_HF_4318_TSSI;
}
- if (sprom->bf_lo & BWN_BFL_CRYSTAL_NOSLOW)
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_CRYSTAL_NOSLOW)
hf |= BWN_HF_SLOWCLOCK_REQ_OFF;
- if ((siba->siba_type == SIBA_TYPE_PCI) &&
- (siba->siba_pci.spc_dev->sd_id.sd_rev <= 10))
+ if ((siba_get_type(sc->sc_dev) == SIBA_TYPE_PCI) &&
+ (siba_get_pcicore_revid(sc->sc_dev) <= 10))
hf |= BWN_HF_PCI_SLOWCLOCK_WORKAROUND;
hf &= ~BWN_HF_SKIP_CFP_UPDATE;
bwn_hf_write(mac, hf);
@@ -3267,7 +3259,7 @@ bwn_core_init(struct bwn_mac *mac)
(mac->mac_phy.type == BWN_PHYTYPE_B) ? 0x1f : 0xf);
bwn_shm_write_2(mac, BWN_SCRATCH, BWN_SCRATCH_CONT_MAX, 0x3ff);
- if (siba->siba_type == SIBA_TYPE_PCMCIA || bwn_usedma == 0)
+ if (siba_get_type(sc->sc_dev) == SIBA_TYPE_PCMCIA || bwn_usedma == 0)
bwn_pio_init(mac);
else
bwn_dma_init(mac);
@@ -3277,7 +3269,8 @@ bwn_core_init(struct bwn_mac *mac)
bwn_spu_setdelay(mac, 1);
bwn_bt_enable(mac);
- siba_powerup(siba, !(sprom->bf_lo & BWN_BFL_CRYSTAL_NOSLOW));
+ siba_powerup(sc->sc_dev,
+ !(siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_CRYSTAL_NOSLOW));
bwn_set_macaddr(mac);
bwn_crypt_init(mac);
@@ -3290,7 +3283,7 @@ bwn_core_init(struct bwn_mac *mac)
fail1:
bwn_chip_exit(mac);
fail0:
- siba_powerdown(siba);
+ siba_powerdown(sc->sc_dev);
KASSERT(mac->mac_status == BWN_MAC_STATUS_UNINIT,
("%s:%d: fail", __func__, __LINE__));
return (error);
@@ -3305,7 +3298,7 @@ bwn_core_start(struct bwn_mac *mac)
KASSERT(mac->mac_status == BWN_MAC_STATUS_INITED,
("%s:%d: fail", __func__, __LINE__));
- if (mac->mac_sd->sd_id.sd_rev < 5)
+ if (siba_get_revid(sc->sc_dev) < 5)
return;
while (1) {
@@ -3325,6 +3318,7 @@ bwn_core_start(struct bwn_mac *mac)
static void
bwn_core_exit(struct bwn_mac *mac)
{
+ struct bwn_softc *sc = mac->mac_sc;
uint32_t macctl;
BWN_ASSERT_LOCKED(mac->mac_sc);
@@ -3345,35 +3339,8 @@ bwn_core_exit(struct bwn_mac *mac)
bwn_pio_stop(mac);
bwn_chip_exit(mac);
mac->mac_phy.switch_analog(mac, 0);
- siba_dev_down(mac->mac_sd, 0);
- siba_powerdown(mac->mac_sd->sd_bus);
-}
-
-static void
-bwn_fix_imcfglobug(struct bwn_mac *mac)
-{
- struct siba_dev_softc *sd = mac->mac_sd;
- struct siba_softc *siba = sd->sd_bus;
- uint32_t tmp;
-
- if (siba->siba_pci.spc_dev == NULL)
- return;
- if (siba->siba_pci.spc_dev->sd_id.sd_device != SIBA_DEVID_PCI ||
- siba->siba_pci.spc_dev->sd_id.sd_rev > 5)
- return;
-
- tmp = siba_read_4(sd, SIBA_IMCFGLO) &
- ~(SIBA_IMCFGLO_REQTO | SIBA_IMCFGLO_SERTO);
- switch (siba->siba_type) {
- case SIBA_TYPE_PCI:
- case SIBA_TYPE_PCMCIA:
- tmp |= 0x32;
- break;
- case SIBA_TYPE_SSB:
- tmp |= 0x53;
- break;
- }
- siba_write_4(sd, SIBA_IMCFGLO, tmp);
+ siba_dev_down(sc->sc_dev, 0);
+ siba_powerdown(sc->sc_dev);
}
static void
@@ -3388,6 +3355,7 @@ bwn_bt_disable(struct bwn_mac *mac)
static int
bwn_chip_init(struct bwn_mac *mac)
{
+ struct bwn_softc *sc = mac->mac_sc;
struct bwn_phy *phy = &mac->mac_phy;
uint32_t macctl;
int error;
@@ -3410,13 +3378,13 @@ bwn_chip_init(struct bwn_mac *mac)
error = bwn_fw_loadinitvals(mac);
if (error) {
- bwn_gpio_cleanup(mac);
+ siba_gpio_set(sc->sc_dev, 0);
return (error);
}
phy->switch_analog(mac, 1);
error = bwn_phy_init(mac);
if (error) {
- bwn_gpio_cleanup(mac);
+ siba_gpio_set(sc->sc_dev, 0);
return (error);
}
if (phy->set_im)
@@ -3428,7 +3396,7 @@ bwn_chip_init(struct bwn_mac *mac)
if (phy->type == BWN_PHYTYPE_B)
BWN_WRITE_2(mac, 0x005e, BWN_READ_2(mac, 0x005e) | 0x0004);
BWN_WRITE_4(mac, 0x0100, 0x01000000);
- if (mac->mac_sd->sd_id.sd_rev < 5)
+ if (siba_get_revid(sc->sc_dev) < 5)
BWN_WRITE_4(mac, 0x010c, 0x01000000);
BWN_WRITE_4(mac, BWN_MACCTL,
@@ -3438,7 +3406,7 @@ bwn_chip_init(struct bwn_mac *mac)
bwn_shm_write_2(mac, BWN_SHARED, 0x0074, 0x0000);
bwn_set_opmode(mac);
- if (mac->mac_sd->sd_id.sd_rev < 3) {
+ if (siba_get_revid(sc->sc_dev) < 3) {
BWN_WRITE_2(mac, 0x060e, 0x0000);
BWN_WRITE_2(mac, 0x0610, 0x8000);
BWN_WRITE_2(mac, 0x0604, 0x0000);
@@ -3454,10 +3422,9 @@ bwn_chip_init(struct bwn_mac *mac)
BWN_WRITE_4(mac, BWN_DMA3_INTR_MASK, 0x0001dc00);
BWN_WRITE_4(mac, BWN_DMA4_INTR_MASK, 0x0000dc00);
BWN_WRITE_4(mac, BWN_DMA5_INTR_MASK, 0x0000dc00);
- siba_write_4(mac->mac_sd, SIBA_TGSLOW,
- siba_read_4(mac->mac_sd, SIBA_TGSLOW) | 0x00100000);
- BWN_WRITE_2(mac, BWN_POWERUP_DELAY,
- mac->mac_sd->sd_bus->siba_cc.scc_powerup_delay);
+ siba_write_4(sc->sc_dev, SIBA_TGSLOW,
+ siba_read_4(sc->sc_dev, SIBA_TGSLOW) | 0x00100000);
+ BWN_WRITE_2(mac, BWN_POWERUP_DELAY, siba_get_cc_powerdelay(sc->sc_dev));
return (error);
}
@@ -3619,13 +3586,14 @@ bwn_pio_set_txqueue(struct bwn_mac *mac,
int index)
{
struct bwn_pio_txpkt *tp;
+ struct bwn_softc *sc = mac->mac_sc;
unsigned int i;
tq->tq_base = bwn_pio_idx2base(mac, index) + BWN_PIO_TXQOFFSET(mac);
tq->tq_index = index;
tq->tq_free = BWN_PIO_MAX_TXPACKETS;
- if (mac->mac_sd->sd_id.sd_rev >= 8)
+ if (siba_get_revid(sc->sc_dev) >= 8)
tq->tq_size = 1920;
else {
tq->tq_size = bwn_pio_read_2(mac, tq, BWN_PIO_TXQBUFSIZE);
@@ -3664,7 +3632,7 @@ bwn_pio_idx2base(struct bwn_mac *mac, in
BWN_PIO11_BASE5,
};
- if (mac->mac_sd->sd_id.sd_rev >= 11) {
+ if (siba_get_revid(sc->sc_dev) >= 11) {
if (index >= N(bases_rev11))
device_printf(sc->sc_dev, "%s: warning\n", __func__);
return (bases_rev11[index]);
@@ -3678,9 +3646,10 @@ static void
bwn_pio_setupqueue_rx(struct bwn_mac *mac, struct bwn_pio_rxqueue *prq,
int index)
{
+ struct bwn_softc *sc = mac->mac_sc;
prq->prq_mac = mac;
- prq->prq_rev = mac->mac_sd->sd_id.sd_rev;
+ prq->prq_rev = siba_get_revid(sc->sc_dev);
prq->prq_base = bwn_pio_idx2base(mac, index) + BWN_PIO_RXQOFFSET(mac);
bwn_dma_rxdirectfifo(mac, index, 1);
}
@@ -4027,6 +3996,7 @@ bwn_dma_32_setdesc(struct bwn_dma_ring *
int start, int end, int irq)
{
struct bwn_dmadesc32 *descbase = dr->dr_ring_descbase;
+ struct bwn_softc *sc = dr->dr_mac->mac_sc;
uint32_t addr, addrext, ctl;
int slot;
@@ -4036,7 +4006,7 @@ bwn_dma_32_setdesc(struct bwn_dma_ring *
addr = (uint32_t) (dmaaddr & ~SIBA_DMA_TRANSLATION_MASK);
addrext = (uint32_t) (dmaaddr & SIBA_DMA_TRANSLATION_MASK) >> 30;
- addr |= siba_dma_translation(dr->dr_mac->mac_sd);
+ addr |= siba_dma_translation(sc->sc_dev);
ctl = bufsize & BWN_DMA32_DCTL_BYTECNT;
if (slot == dr->dr_numslots - 1)
ctl |= BWN_DMA32_DCTL_DTABLEEND;
@@ -4115,6 +4085,7 @@ bwn_dma_64_setdesc(struct bwn_dma_ring *
int start, int end, int irq)
{
struct bwn_dmadesc64 *descbase = dr->dr_ring_descbase;
+ struct bwn_softc *sc = dr->dr_mac->mac_sc;
int slot;
uint32_t ctl0 = 0, ctl1 = 0;
uint32_t addrlo, addrhi;
@@ -4128,7 +4099,7 @@ bwn_dma_64_setdesc(struct bwn_dma_ring *
addrhi = (((uint64_t) dmaaddr >> 32) & ~SIBA_DMA_TRANSLATION_MASK);
addrext = (((uint64_t) dmaaddr >> 32) & SIBA_DMA_TRANSLATION_MASK) >>
30;
- addrhi |= (siba_dma_translation(dr->dr_mac->mac_sd) << 1);
+ addrhi |= (siba_dma_translation(sc->sc_dev) << 1);
if (slot == dr->dr_numslots - 1)
ctl0 |= BWN_DMA64_DCTL0_DTABLEEND;
if (start)
@@ -4238,9 +4209,10 @@ bwn_dma_allocringmemory(struct bwn_dma_r
static void
bwn_dma_setup(struct bwn_dma_ring *dr)
{
+ struct bwn_softc *sc = dr->dr_mac->mac_sc;
uint64_t ring64;
uint32_t addrext, ring32, value;
- uint32_t trans = siba_dma_translation(dr->dr_mac->mac_sd);
+ uint32_t trans = siba_dma_translation(sc->sc_dev);
if (dr->dr_tx) {
dr->dr_curslot = -1;
@@ -4536,18 +4508,18 @@ bwn_spu_setdelay(struct bwn_mac *mac, in
static void
bwn_bt_enable(struct bwn_mac *mac)
{
- struct siba_sprom *sprom = &mac->mac_sd->sd_bus->siba_sprom;
+ struct bwn_softc *sc = mac->mac_sc;
uint64_t hf;
if (bwn_bluetooth == 0)
return;
- if ((sprom->bf_lo & BWN_BFL_BTCOEXIST) == 0)
+ if ((siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_BTCOEXIST) == 0)
return;
if (mac->mac_phy.type != BWN_PHYTYPE_B && !mac->mac_phy.gmode)
return;
hf = bwn_hf_read(mac);
- if (sprom->bf_lo & BWN_BFL_BTCMOD)
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_BTCMOD)
hf |= BWN_HF_BT_COEXISTALT;
else
hf |= BWN_HF_BT_COEXIST;
@@ -4584,25 +4556,25 @@ bwn_clear_keys(struct bwn_mac *mac)
static void
bwn_crypt_init(struct bwn_mac *mac)
{
+ struct bwn_softc *sc = mac->mac_sc;
- mac->mac_max_nr_keys = (mac->mac_sd->sd_id.sd_rev >= 5) ? 58 : 20;
+ mac->mac_max_nr_keys = (siba_get_revid(sc->sc_dev) >= 5) ? 58 : 20;
KASSERT(mac->mac_max_nr_keys <= N(mac->mac_key),
("%s:%d: fail", __func__, __LINE__));
mac->mac_ktp = bwn_shm_read_2(mac, BWN_SHARED, BWN_SHARED_KEY_TABLEP);
mac->mac_ktp *= 2;
- if (mac->mac_sd->sd_id.sd_rev >= 5) {
- BWN_WRITE_2(mac, BWN_RCMTA_COUNT,
- mac->mac_max_nr_keys - 8);
- }
+ if (siba_get_revid(sc->sc_dev) >= 5)
+ BWN_WRITE_2(mac, BWN_RCMTA_COUNT, mac->mac_max_nr_keys - 8);
bwn_clear_keys(mac);
}
static void
bwn_chip_exit(struct bwn_mac *mac)
{
+ struct bwn_softc *sc = mac->mac_sc;
bwn_phy_exit(mac);
- bwn_gpio_cleanup(mac);
+ siba_gpio_set(sc->sc_dev, 0);
}
static int
@@ -4622,33 +4594,31 @@ bwn_fw_fillinfo(struct bwn_mac *mac)
static int
bwn_gpio_init(struct bwn_mac *mac)
{
- struct siba_softc *bus = mac->mac_sd->sd_bus;
- struct siba_dev_softc *sd;
- uint32_t mask = 0x0000001f, set = 0x0000000f;
+ struct bwn_softc *sc = mac->mac_sc;
+ uint32_t mask = 0x1f, set = 0xf, value;
BWN_WRITE_4(mac, BWN_MACCTL,
BWN_READ_4(mac, BWN_MACCTL) & ~BWN_MACCTL_GPOUT_MASK);
BWN_WRITE_2(mac, BWN_GPIO_MASK,
BWN_READ_2(mac, BWN_GPIO_MASK) | 0x000f);
- if (bus->siba_chipid == 0x4301) {
+ if (siba_get_chipid(sc->sc_dev) == 0x4301) {
mask |= 0x0060;
set |= 0x0060;
}
- if (bus->siba_sprom.bf_lo & BWN_BFL_PACTRL) {
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_PACTRL) {
BWN_WRITE_2(mac, BWN_GPIO_MASK,
BWN_READ_2(mac, BWN_GPIO_MASK) | 0x0200);
mask |= 0x0200;
set |= 0x0200;
}
- if (mac->mac_sd->sd_id.sd_rev >= 2)
+ if (siba_get_revid(sc->sc_dev) >= 2)
mask |= 0x0010;
- sd = (bus->siba_cc.scc_dev != NULL) ? bus->siba_cc.scc_dev :
- bus->siba_pci.spc_dev;
- if (sd == NULL)
+
+ value = siba_gpio_get(sc->sc_dev);
+ if (value == -1)
return (0);
- siba_write_4(sd, BWN_GPIOCTL,
- (siba_read_4(sd, BWN_GPIOCTL) & mask) | set);
+ siba_gpio_set(sc->sc_dev, (value & mask) | set);
return (0);
}
@@ -4749,15 +4719,15 @@ bwn_set_opmode(struct bwn_mac *mac)
ctl &= ~BWN_MACCTL_STA;
ctl |= sc->sc_filters;
- if (mac->mac_sd->sd_id.sd_rev <= 4)
+ if (siba_get_revid(sc->sc_dev) <= 4)
ctl |= BWN_MACCTL_PROMISC;
BWN_WRITE_4(mac, BWN_MACCTL, ctl);
cfp_pretbtt = 2;
if ((ctl & BWN_MACCTL_STA) && !(ctl & BWN_MACCTL_HOSTAP)) {
- if (mac->mac_sd->sd_bus->siba_chipid == 0x4306 &&
- mac->mac_sd->sd_bus->siba_chiprev == 3)
+ if (siba_get_chipid(sc->sc_dev) == 0x4306 &&
+ siba_get_chiprev(sc->sc_dev) == 3)
cfp_pretbtt = 100;
else
cfp_pretbtt = 50;
@@ -4765,19 +4735,6 @@ bwn_set_opmode(struct bwn_mac *mac)
BWN_WRITE_2(mac, 0x612, cfp_pretbtt);
}
-static void
-bwn_gpio_cleanup(struct bwn_mac *mac)
-{
- struct siba_softc *bus = mac->mac_sd->sd_bus;
- struct siba_dev_softc *gpiodev, *pcidev = NULL;
-
- pcidev = bus->siba_pci.spc_dev;
- gpiodev = bus->siba_cc.scc_dev ? bus->siba_cc.scc_dev : pcidev;
- if (!gpiodev)
- return;
- siba_write_4(gpiodev, BWN_GPIOCTL, 0);
-}
-
static int
bwn_dma_gettype(struct bwn_mac *mac)
{
@@ -4810,6 +4767,7 @@ bwn_phy_g_init_sub(struct bwn_mac *mac)
{
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_phy_g *pg = &phy->phy_g;
+ struct bwn_softc *sc = mac->mac_sc;
uint16_t i, tmp;
if (phy->rev == 1)
@@ -4872,7 +4830,7 @@ bwn_phy_g_init_sub(struct bwn_mac *mac)
BWN_PHY_SETMASK(mac, BWN_PHY_CCK(0x36), 0x0fff,
(pg->pg_loctl.tx_bias << 12));
}
- if (mac->mac_sd->sd_bus->siba_sprom.bf_lo & BWN_BFL_PACTRL)
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_PACTRL)
BWN_PHY_WRITE(mac, BWN_PHY_CCK(0x2e), 0x8075);
else
BWN_PHY_WRITE(mac, BWN_PHY_CCK(0x2e), 0x807f);
@@ -4885,7 +4843,7 @@ bwn_phy_g_init_sub(struct bwn_mac *mac)
BWN_PHY_WRITE(mac, BWN_PHY_LO_MASK, 0x8078);
}
- if (!(mac->mac_sd->sd_bus->siba_sprom.bf_lo & BWN_BFL_RSSI)) {
+ if (!(siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_RSSI)) {
for (i = 0; i < 64; i++) {
BWN_PHY_WRITE(mac, BWN_PHY_NRSSI_CTRL, i);
BWN_PHY_WRITE(mac, BWN_PHY_NRSSI_DATA,
@@ -4904,8 +4862,8 @@ bwn_phy_g_init_sub(struct bwn_mac *mac)
if (phy->rf_rev == 8)
BWN_PHY_WRITE(mac, BWN_PHY_EXTG(0x05), 0x3230);
bwn_phy_hwpctl_init(mac);
- if ((mac->mac_sd->sd_bus->siba_chipid == 0x4306
- && mac->mac_sd->sd_bus->siba_chippkg == 2) || 0) {
+ if ((siba_get_chipid(sc->sc_dev) == 0x4306
+ && siba_get_chippkg(sc->sc_dev) == 2) || 0) {
BWN_PHY_MASK(mac, BWN_PHY_CRS0, 0xbfff);
BWN_PHY_MASK(mac, BWN_PHY_OFDM(0xc3), 0x7fff);
}
@@ -4923,16 +4881,16 @@ bwn_has_hwpctl(struct bwn_mac *mac)
static void
bwn_phy_init_b5(struct bwn_mac *mac)
{
- struct siba_softc *bus = mac->mac_sd->sd_bus;
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_phy_g *pg = &phy->phy_g;
+ struct bwn_softc *sc = mac->mac_sc;
uint16_t offset, value;
uint8_t old_channel;
if (phy->analog == 1)
BWN_RF_SET(mac, 0x007a, 0x0050);
- if ((bus->siba_board_vendor != SIBA_BOARDVENDOR_BCM) &&
- (bus->siba_board_type != SIBA_BOARD_BU4306)) {
+ if ((siba_get_pci_subvendor(sc->sc_dev) != SIBA_BOARDVENDOR_BCM) &&
+ (siba_get_pci_subdevice(sc->sc_dev) != SIBA_BOARD_BU4306)) {
value = 0x2120;
for (offset = 0x00a8; offset < 0x00c7; offset++) {
BWN_PHY_WRITE(mac, offset, value);
@@ -5021,6 +4979,7 @@ bwn_loopback_calcgain(struct bwn_mac *ma
{
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_phy_g *pg = &phy->phy_g;
+ struct bwn_softc *sc = mac->mac_sc;
uint16_t backup_phy[16] = { 0 };
uint16_t backup_radio[3];
uint16_t backup_bband;
@@ -5099,7 +5058,7 @@ bwn_loopback_calcgain(struct bwn_mac *ma
BWN_PHY_SET(mac, BWN_PHY_RFOVER, 0x0100);
BWN_PHY_MASK(mac, BWN_PHY_RFOVERVAL, 0xcfff);
- if (mac->mac_sd->sd_bus->siba_sprom.bf_lo & BWN_BFL_EXTLNA) {
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_EXTLNA) {
if (phy->rev >= 7) {
BWN_PHY_SET(mac, BWN_PHY_RFOVER, 0x0800);
BWN_PHY_SET(mac, BWN_PHY_RFOVERVAL, 0x8000);
@@ -5399,6 +5358,7 @@ bwn_phy_init_b6(struct bwn_mac *mac)
{
struct bwn_phy *phy = &mac->mac_phy;
struct bwn_phy_g *pg = &phy->phy_g;
+ struct bwn_softc *sc = mac->mac_sc;
uint16_t offset, val;
uint8_t old_channel;
@@ -5428,7 +5388,7 @@ bwn_phy_init_b6(struct bwn_mac *mac)
BWN_RF_WRITE(mac, 0x5a, 0x88);
BWN_RF_WRITE(mac, 0x5b, 0x6b);
BWN_RF_WRITE(mac, 0x5c, 0x0f);
- if (mac->mac_sd->sd_bus->siba_sprom.bf_lo & BWN_BFL_ALTIQ) {
+ if (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_ALTIQ) {
BWN_RF_WRITE(mac, 0x5d, 0xfa);
BWN_RF_WRITE(mac, 0x5e, 0xd8);
} else {
@@ -5509,6 +5469,7 @@ static void
bwn_phy_init_a(struct bwn_mac *mac)
{
struct bwn_phy *phy = &mac->mac_phy;
+ struct bwn_softc *sc = mac->mac_sc;
KASSERT(phy->type == BWN_PHYTYPE_A || phy->type == BWN_PHYTYPE_G,
("%s:%d: fail", __func__, __LINE__));
@@ -5525,7 +5486,7 @@ bwn_phy_init_a(struct bwn_mac *mac)
bwn_wa_init(mac);
if (phy->type == BWN_PHYTYPE_G &&
- (mac->mac_sd->sd_bus->siba_sprom.bf_lo & BWN_BFL_PACTRL))
+ (siba_sprom_get_bf_lo(sc->sc_dev) & BWN_BFL_PACTRL))
BWN_PHY_SETMASK(mac, BWN_PHY_OFDM(0x6e), 0xe000, 0x3cf);
}
@@ -5776,7 +5737,7 @@ static void
bwn_wa_init(struct bwn_mac *mac)
{
struct bwn_phy *phy = &mac->mac_phy;
- struct siba_softc *bus = mac->mac_sd->sd_bus;
+ struct bwn_softc *sc = mac->mac_sc;
KASSERT(phy->type == BWN_PHYTYPE_G, ("%s fail", __func__));
@@ -5795,9 +5756,9 @@ bwn_wa_init(struct bwn_mac *mac)
KASSERT(0 == 1, ("%s:%d: fail", __func__, __LINE__));
}
- if (bus->siba_board_vendor != SIBA_BOARDVENDOR_BCM ||
- bus->siba_board_type != SIBA_BOARD_BU4306 ||
- bus->siba_board_rev != 0x17) {
+ if (siba_get_pci_subvendor(sc->sc_dev) != SIBA_BOARDVENDOR_BCM ||
+ siba_get_pci_subdevice(sc->sc_dev) != SIBA_BOARD_BU4306 ||
+ siba_get_pci_revid(sc->sc_dev) != 0x17) {
if (phy->rev < 2) {
bwn_ofdmtab_write_2(mac, BWN_OFDMTAB_GAINX_R1, 1,
0x0002);
@@ -5806,7 +5767,8 @@ bwn_wa_init(struct bwn_mac *mac)
} else {
bwn_ofdmtab_write_2(mac, BWN_OFDMTAB_GAINX, 1, 0x0002);
bwn_ofdmtab_write_2(mac, BWN_OFDMTAB_GAINX, 2, 0x0001);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-stable
mailing list