rtwvar.h revision a72f7ea693101cc48bafbb4db6bb437d828011c4
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Use is subject to license terms.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Copyright (c) 2004, 2005 David Young. All rights reserved.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Driver for the Realtek RTL8180 802.11 MAC/BBP by David Young.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Redistribution and use in source and binary forms, with or without
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * modification, are permitted provided that the following conditions
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * are met:
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * 1. Redistributions of source code must retain the above copyright
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * notice, this list of conditions and the following disclaimer.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * 2. Redistributions in binary form must reproduce the above copyright
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * notice, this list of conditions and the following disclaimer in the
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * documentation and/or other materials provided with the distribution.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * 3. The name of David Young may not be used to endorse or promote
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * products derived from this software without specific prior
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * written permission.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL David
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * OF SUCH DAMAGE.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#pragma ident "%Z%%M% %I% %E% SMI"
a72f7ea693101cc48bafbb4db6bb437d828011c4qlextern void rtw_dbg(uint32_t dbg_flags, const int8_t *fmt, ...);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#else /* DEBUG */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#endif /* DEBUG */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * sc_flags
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_F_DFLANTB 0x00000004 /* B antenna is default */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_F_ANTDIV 0x00000010 /* h/w antenna diversity */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_F_ATTACHED 0x01000000 /* driver is attached */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * all PHY flags
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_F_ALLPHY (RTW_F_DIGPHY|RTW_F_DFLANTB|RTW_F_ANTDIV)
a72f7ea693101cc48bafbb4db6bb437d828011c4ql (((sr)->sr_content[(ofs)/2] >> (((ofs) % 2 == 0) ? 0 : 8)) & 0xff)
a72f7ea693101cc48bafbb4db6bb437d828011c4ql (RTW_SR_GET((sr), (ofs)) | (RTW_SR_GET((sr), (ofs) + 1) << 8))
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_MAXPKTSEGS 64 /* Max 64 segments per Tx packet */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Note well: the descriptor rings must begin on RTW_DESC_ALIGNMENT
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * boundaries. I allocate them consecutively from one buffer, so
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * just round up.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_NTXDESCTOTAL (RTW_NTXDESCLO + RTW_NTXDESCMD + \
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_DMA_SYNC(area, flag) ((void) ddi_dma_sync((area).dma_hdl,\
a72f7ea693101cc48bafbb4db6bb437d828011c4ql ((void) ddi_dma_sync((area).dma_hdl, offset, len, (flag)))
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define list_empty(a) ((a)->list_head.list_next == &(a)->list_head)
a72f7ea693101cc48bafbb4db6bb437d828011c4qltypedef struct dma_area {
a72f7ea693101cc48bafbb4db6bb437d828011c4ql /* >= product of above */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define RTW_DESC_OFFSET(ring, i) offsetof(struct rtw_descs, ring[i])
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * One Time Unit (TU) is 1Kus = 1024 microseconds.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * IEEE 802.11b durations for DSSS PHY in microseconds
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#define IEEE80211_DUR_DS_PIFS (IEEE80211_DUR_DS_SIFS + IEEE80211_DUR_DS_SLOT)
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * 802.11 frame duration definitions.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Radio capture format for RTL8180.
a72f7ea693101cc48bafbb4db6bb437d828011c4qlenum rtw_attach_state {FINISHED, FINISH_DESCMAP_LOAD, FINISH_DESCMAP_CREATE,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql FINISH_DESC_MAP, FINISH_DESC_ALLOC, FINISH_RXMAPS_CREATE,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql FINISH_TXMAPS_CREATE, FINISH_RESET, FINISH_READ_SROM, FINISH_PARSE_SROM,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * args: frequency, txpower, power state
a72f7ea693101cc48bafbb4db6bb437d828011c4ql int (*rf_init)(struct rtw_rf *, uint_t, uint8_t, enum rtw_pwrstate);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * arg: power state
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * arg: frequency
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * arg: txpower
a72f7ea693101cc48bafbb4db6bb437d828011c4qltypedef int (*rtw_rf_write_t)(struct rtw_regs *, enum rtw_rfchipid, uint_t,
a72f7ea693101cc48bafbb4db6bb437d828011c4qltypedef void (*rtw_pwrstate_t)(struct rtw_regs *, enum rtw_pwrstate, int, int);
a72f7ea693101cc48bafbb4db6bb437d828011c4qltypedef struct rtw_softc {
a72f7ea693101cc48bafbb4db6bb437d828011c4ql#endif /* _RTWVAR_H_ */