summaryrefslogtreecommitdiff
path: root/sys/dev/ic/bcwvar.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ic/bcwvar.h')
-rw-r--r--sys/dev/ic/bcwvar.h397
1 files changed, 0 insertions, 397 deletions
diff --git a/sys/dev/ic/bcwvar.h b/sys/dev/ic/bcwvar.h
deleted file mode 100644
index 2f6ce9bca53..00000000000
--- a/sys/dev/ic/bcwvar.h
+++ /dev/null
@@ -1,397 +0,0 @@
-/* $OpenBSD: bcwvar.h,v 1.37 2007/04/04 19:36:42 mglocker Exp $ */
-
-/*
- * Copyright (c) 2007 Marcus Glocker <mglocker@openbsd.org>
- * Copyright (c) 2006 Jon Simola <jsimola@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * Broadcom BCM43xx Wireless network chipsets (broadcom.com)
- * SiliconBackplane is technology from Sonics, Inc. (sonicsinc.com)
- */
-
-#define BCW_ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
-
-#define BCW_FLAGS_INITIALIZED 0x00000001
-
-#define BCW_DEFAULT_SHORT_RETRY_LIMIT 7
-#define BCW_DEFAULT_LONG_RETRY_LIMIT 4
-
-struct fwheader {
- char filename[64];
- int filesize;
- int fileoffset;
-};
-
-struct bcw_initval {
- uint16_t offset;
- uint16_t size;
- uint32_t value;
-} __packed;
-
-#define BCW_NR_LEDS 4
-struct bcw_led {
- uint8_t behaviour:7;
- uint8_t activelow:1;
- unsigned long blink_interval;
-};
-enum {
- BCW_LED_OFF,
- BCW_LED_ON,
- BCW_LED_ACTIVITY,
- BCW_LED_RADIO_ALL,
- BCW_LED_RADIO_A,
- BCW_LED_RADIO_B,
- BCW_LED_MODE_BG,
- BCW_LED_TRANSFER,
- BCW_LED_APTRANSFER,
- BCW_LED_WEIRD, /* XXX */
- BCW_LED_ASSOC,
- BCW_LED_INACTIVE,
-
- /*
- * Behaviour values for testing.
- * With these values it is easier to figure out
- * the real behaviour of leds, in case the SPROM
- * is missing information.
- */
- BCW_LED_TEST_BLINKSLOW,
- BCW_LED_TEST_BLINKMEDIUM,
- BCW_LED_TEST_BLINKFAST,
-
- /* misc values for BCM4303 */
- BCW_LED_BCM4303_0 = 0x2B,
- BCW_LED_BCM4303_1 = 0x78,
- BCW_LED_BCM4303_2 = 0x2E,
- BCW_LED_BCM4303_3 = 0x19,
-};
-
-#define BCW_RADIO_TXANTENNA_LASTPLCP 3
-#define BCW_RADIO_TXANTENNA_DEFAULT BCW_RADIO_TXANTENNA_LASTPLCP
-#define BCW_RADIO_INTERFMODE_NONE 0
-#define BCW_RADIO_INTERFMODE_NONWLAN 1
-#define BCW_RADIO_INTERFMODE_MANUALWLAN 2
-#define BCW_RADIO_INTERFMODE_AUTOWLAN 3
-#define BCW_RADIO_DEFAULT_CHANNEL_A 36
-#define BCW_RADIO_DEFAULT_CHANNEL_BG 6
-#define BCW_RADIO_MAX 2
-struct bcw_radio {
- uint16_t id;
- uint16_t info;
- u_char enabled;
-};
-
-#define BCW_MAX_CORES 10
-struct bcw_core {
- uint16_t id;
- uint8_t index;
- uint8_t rev;
- uint8_t backplane_flag;
-};
-
-/* number of descriptors used in a ring */
-#define BCW_RX_RING_COUNT 128
-#define BCW_TX_RING_COUNT 128
-#define BCW_MAX_SCATTER 8 /* XXX unknown, wild guess */
-
-struct bcw_rx_data {
- bus_dmamap_t map;
- struct mbuf *m;
-};
-
-struct bcw_tx_data {
- bus_dmamap_t map;
- struct mbuf *m;
- uint32_t softstat;
- struct ieee80211_node *ni;
-};
-
-struct bcw_rx_ring {
- bus_dmamap_t map;
- bus_dma_segment_t seg;
- bus_addr_t physaddr;
- struct bcw_desc *desc;
- struct bcw_rx_data *data;
- int count;
- int cur;
- int next;
-};
-
-struct bcw_tx_ring {
- bus_dmamap_t map;
- bus_dma_segment_t seg;
- bus_addr_t physaddr;
- struct bcw_desc *desc;
- struct bcw_tx_data *data;
- int count;
- int queued;
- int cur;
- int next;
- int stat;
-};
-
-struct bcw_desc {
- uint32_t ctrl;
- uint32_t addr;
-};
-
-/* ring descriptor */
-struct bcw_dma_slot {
- uint32_t ctrl;
- uint32_t addr;
-};
-
-struct bcw_lopair {
- int8_t low;
- int8_t high;
- uint8_t used:1;
-};
-#define BCW_LO_COUNT (14 * 4)
-
-#define CTRL_BC_MASK 0x1fff /* buffer byte count */
-#define CTRL_EOT 0x10000000 /* end of descriptor table */
-#define CTRL_IOC 0x20000000 /* interrupt on completion */
-#define CTRL_EOF 0x40000000 /* end of frame */
-#define CTRL_SOF 0x80000000 /* start of frame */
-
-/* radio */
-#define BCW_INTERFSTACK_SIZE 26
-
-/* ilt */
-#define BCW_ILT_FINEFREQA_SIZE 256
-#define BCW_ILT_FINEFREQG_SIZE 256
-#define BCW_ILT_NOISEA2_SIZE 8
-#define BCW_ILT_NOISEA3_SIZE 8
-#define BCW_ILT_NOISEG1_SIZE 8
-#define BCW_ILT_NOISEG2_SIZE 8
-#define BCW_ILT_ROTOR_SIZE 53
-#define BCW_ILT_RETARD_SIZE 53
-#define BCW_ILT_SIGMASQR_SIZE 53
-#define BCW_ILT_NOISESCALEG_SIZE 27
-
-#if 0
-/*
- * Mbuf pointers. We need these to keep track of the virtual addresses
- * of our mbuf chains since we can only convert from physical to virtual,
- * not the other way around.
- *
- * The chip has 6 DMA engines, looks like we only need to use one each
- * for TX and RX, the others stay disabled.
- */
-struct bcw_chain_data {
- struct mbuf *bcw_tx_chain[BCW_NTXDESC];
- struct mbuf *bcw_rx_chain[BCW_NRXDESC];
- bus_dmamap_t bcw_tx_map[BCW_NTXDESC];
- bus_dmamap_t bcw_rx_map[BCW_NRXDESC];
-};
-#endif
-
-struct bcw_rx_ring;
-struct bcw_tx_ring;
-
-#define BCW_SPROM_SIZE 64 /* in 16-bit words */
-struct bcw_sprom {
- uint16_t boardflags2;
- uint8_t il0macaddr[6];
- uint8_t et0macaddr[6];
- uint8_t et1macaddr[6];
- uint8_t et1phyaddr:5;
- uint8_t et0phyaddr:5;
- uint8_t et0mdcport:1;
- uint8_t et1mdcport:1;
- uint8_t boardrev;
- uint8_t locale:4;
- uint8_t antennas_aphy:2;
- uint8_t antennas_bgphy:2;
- uint16_t pa0b0;
- uint16_t pa0b1;
- uint16_t pa0b2;
- uint8_t wl0gpio0;
- uint8_t wl0gpio1;
- uint8_t wl0gpio2;
- uint8_t wl0gpio3;
- uint8_t maxpower_aphy;
- uint8_t maxpower_bgphy;
- uint16_t pa1b0;
- uint16_t pa1b1;
- uint16_t pa1b2;
- uint8_t idle_tssi_tgt_aphy;
- uint8_t idle_tssi_tgt_bgphy;
- uint16_t boardflags;
- uint16_t antennagain_aphy;
- uint16_t antennagain_bgphy;
-};
-
-struct bcw_softc {
- struct device sc_dev;
- struct ieee80211com sc_ic;
- struct bcw_rx_ring sc_rxring;
- struct bcw_tx_ring sc_txring;
- /* function pointers */
- int (*sc_newstate)(struct ieee80211com *,
- enum ieee80211_state, int);
- int (*sc_enable)(struct bcw_softc *);
- void (*sc_disable)(struct bcw_softc *);
- void (*sc_power)(struct bcw_softc *, int);
- void (*sc_conf_write)(void *, uint32_t, uint32_t);
- uint32_t (*sc_conf_read)(void *, uint32_t);
-
- bus_dma_tag_t sc_dmat;
- bus_space_tag_t sc_iot;
- bus_space_handle_t sc_ioh;
-
- void *sc_dev_softc;
- uint32_t sc_flags;
- uint32_t sc_intmask; /* current intr mask */
- uint32_t sc_rxin; /* last rx desc seen */
- uint32_t sc_txin; /* last tx desc seen */
- int sc_txsfree; /* no. tx slots avail */
- int sc_txsnext; /* next avail tx slot */
- bus_dmamap_t sc_ring_map;
- struct bcw_dma_slot *bcw_rx_ring; /* receive ring */
- struct bcw_dma_slot *bcw_tx_ring; /* transmit ring */
- struct timeout sc_timeout;
- struct timeout sc_scan_to;
- //struct bcw_chain_data sc_cdata; /* mbufs */
-
- uint16_t sc_board_vendor; /* Board vendor */
- uint16_t sc_board_type; /* Board type */
- uint16_t sc_board_rev; /* Board revision */
- uint16_t sc_chip_id; /* Chip ID */
- uint16_t sc_chip_rev; /* Chip revision */
- uint16_t sc_chip_pkg; /* Chip package */
- uint16_t sc_prodid; /* Product ID */
- uint8_t sc_idletssi;
- uint16_t sc_boardflags;
- uint16_t sc_using_pio:1;
- struct bcw_sprom sc_sprom;
- struct bcw_led leds[BCW_NR_LEDS];
- /* cores */
- uint16_t sc_numcores;
- uint16_t sc_havecommon;
- int sc_currentcore;
- int sc_lastcore;
- uint32_t sc_chip_common_capa;
- struct bcw_core sc_core[BCW_MAX_CORES];
- struct bcw_core *sc_core_common;
- struct bcw_core *sc_core_80211;
- struct bcw_core *sc_core_bus; /* PCI or cardbus */
- /* PHY */
- uint16_t sc_phy_ver;
- uint16_t sc_phy_rev;
- uint16_t sc_phy_type;
- uint8_t sc_phy_connected:1, /* XXX */
- sc_phy_calibrated:1,
- sc_phy_is_locked:1,
- sc_phy_dyn_tssi_tbl:1;
- uint16_t sc_phy_loopback_gain[2];
- uint16_t sc_phy_savedpctlreg;
- uint16_t sc_phy_minlowsig[2];
- uint16_t sc_phy_minlowsigpos[2];
- int8_t sc_phy_idle_tssi;
- const int8_t sc_phy_tssi2dbm;
- uint16_t sc_phy_antenna_diversity;
- struct bcw_lopair *sc_phy_lopairs;
- /* radio */
- uint16_t sc_radio_ver;
- uint16_t sc_radio_rev;
- uint32_t sc_radio_mnf;
- uint16_t sc_radio_initval;
- int16_t sc_radio_nrssi[2];
- int sc_radio_interfmode;
- uint8_t sc_radio_aci_enable:1,
- sc_radio_aci_wlan_automatic:1,
- sc_radio_aci_hw_rssi;
- int32_t sc_radio_nrssislope;
- uint16_t sc_radio_txpwr_offset;
- uint16_t sc_radio_lofcal;
- uint16_t sc_radio_txpower_desired;
- uint16_t sc_radio_pa0b0;
- uint16_t sc_radio_pa0b1;
- uint16_t sc_radio_pa0b2;
- uint16_t sc_radio_pa1b0;
- uint16_t sc_radio_pa1b1;
- uint16_t sc_radio_pa1b2;
- uint16_t sc_radio_baseband_atten;
- uint16_t sc_radio_radio_atten;
- uint16_t sc_radio_txctl1;
- uint16_t sc_radio_txctl2;
- uint8_t sc_radio_channel;
- int8_t sc_radio_nrssi_lt[64];
- uint32_t sc_radio_interfstack[BCW_INTERFSTACK_SIZE];
- //struct bcw_radio radio[BCW_RADIO_MAX];
-};
-
-void bcw_attach(struct bcw_softc *);
-int bcw_detach(void *);
-int bcw_intr(void *);
-void bcw_powercontrol_crystal_on(struct bcw_softc *);
-
-#define BCW_DEBUG
-#ifdef BCW_DEBUG
-//#define DPRINTF(x) do { if (bcw_debug) printf x; } while (0)
-//#define DPRINTFN(n,x) do { if (bcwdebug >= (n)) printf x; } while (0)
-#define DPRINTF(x) do { if (1) printf x; } while (0)
-#define DPRINTFN(n,x) do { if (1 >= (n)) printf x; } while (0)
-//int bcw_debug = 99;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-/*
- * Some legacy stuff from bce and iwi to make this compile
- */
-/* transmit buffer max frags allowed */
-#define BCW_NTXFRAGS 16
-
-/* Packet status is returned in a pre-packet header */
-struct rx_pph {
- uint16_t len;
- uint16_t flags;
- uint16_t pad[12];
-};
-
-#define BCW_PREPKT_HEADER_SIZE 30
-
-/* packet status flags bits */
-#define RXF_NO 0x8 /* odd number of nibbles */
-#define RXF_RXER 0x4 /* receive symbol error */
-#define RXF_CRC 0x2 /* crc error */
-#define RXF_OV 0x1 /* fifo overflow */
-
-#define BCW_TIMEOUT 100 /* # 10us for mii read/write */
-
-/* for ring descriptors */
-#define BCW_RXBUF_LEN (MCLBYTES - 4)
-#define BCW_INIT_RXDESC(sc, x) \
-do { \
- struct bcw_dma_slot *__bcwd = &sc->bcw_rx_ring[x]; \
- \
- *mtod(sc->bcw_cdata.bcw_rx_chain[x], uint32_t *) = 0; \
- __bcwd->addr = \
- htole32(sc->bcw_cdata.bcw_rx_map[x]->dm_segs[0].ds_addr \
- + 0x40000000); \
- if (x != (BCW_NRXDESC - 1)) \
- __bcwd->ctrl = htole32(BCW_RXBUF_LEN); \
- else \
- __bcwd->ctrl = htole32(BCW_RXBUF_LEN | CTRL_EOT); \
- bus_dmamap_sync(sc->bcw_dmatag, sc->bcw_ring_map, \
- sizeof(struct bcw_dma_slot) * x, \
- sizeof(struct bcw_dma_slot), \
- BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); \
-} while (/* CONSTCOND */ 0)
-
-#define BCW_NTXFRAGS 16