[BACK]Return to rtwvar.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/rtwvar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: rtwvar.h,v 1.23 2007/06/07 20:20:15 damien Exp $      */
        !             2: /*     $NetBSD: rtwvar.h,v 1.10 2004/12/26 22:37:57 mycroft Exp $      */
        !             3:
        !             4: /*-
        !             5:  * Copyright (c) 2004, 2005 David Young.  All rights reserved.
        !             6:  *
        !             7:  * Driver for the Realtek RTL8180 802.11 MAC/BBP by David Young.
        !             8:  *
        !             9:  * Redistribution and use in source and binary forms, with or without
        !            10:  * modification, are permitted provided that the following conditions
        !            11:  * are met:
        !            12:  * 1. Redistributions of source code must retain the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer.
        !            14:  * 2. Redistributions in binary form must reproduce the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer in the
        !            16:  *    documentation and/or other materials provided with the distribution.
        !            17:  * 3. The name of David Young may not be used to endorse or promote
        !            18:  *    products derived from this software without specific prior
        !            19:  *    written permission.
        !            20:  *
        !            21:  * THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY
        !            22:  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
        !            23:  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
        !            24:  * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL David
        !            25:  * Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
        !            26:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
        !            27:  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
        !            29:  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        !            30:  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            31:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
        !            32:  * OF SUCH DAMAGE.
        !            33:  */
        !            34:
        !            35: #ifndef _DEV_IC_RTWVAR_H_
        !            36: #define        _DEV_IC_RTWVAR_H_
        !            37:
        !            38: #include <sys/device.h>
        !            39: #include <sys/queue.h>
        !            40: #include <sys/timeout.h>
        !            41:
        !            42: #ifdef RTW_DEBUG
        !            43: #define        RTW_DEBUG_TUNE          0x0000001
        !            44: #define        RTW_DEBUG_PKTFILT       0x0000002
        !            45: #define        RTW_DEBUG_XMIT          0x0000004
        !            46: #define        RTW_DEBUG_XMIT_DESC     0x0000008
        !            47: #define        RTW_DEBUG_NODE          0x0000010
        !            48: #define        RTW_DEBUG_PWR           0x0000020
        !            49: #define        RTW_DEBUG_ATTACH        0x0000040
        !            50: #define        RTW_DEBUG_REGDUMP       0x0000080
        !            51: #define        RTW_DEBUG_ACCESS        0x0000100
        !            52: #define        RTW_DEBUG_RESET         0x0000200
        !            53: #define        RTW_DEBUG_INIT          0x0000400
        !            54: #define        RTW_DEBUG_IOSTATE       0x0000800
        !            55: #define        RTW_DEBUG_RECV          0x0001000
        !            56: #define        RTW_DEBUG_RECV_DESC     0x0002000
        !            57: #define        RTW_DEBUG_IO_KICK       0x0004000
        !            58: #define        RTW_DEBUG_INTR          0x0008000
        !            59: #define        RTW_DEBUG_PHY           0x0010000
        !            60: #define        RTW_DEBUG_PHYIO         0x0020000
        !            61: #define        RTW_DEBUG_PHYBITIO      0x0040000
        !            62: #define        RTW_DEBUG_TIMEOUT       0x0080000
        !            63: #define        RTW_DEBUG_BUGS          0x0100000
        !            64: #define        RTW_DEBUG_BEACON        0x0200000
        !            65: #define        RTW_DEBUG_LED           0x0400000
        !            66: #define        RTW_DEBUG_KEY           0x0800000
        !            67: #define        RTW_DEBUG_XMIT_RSRC     0x1000000
        !            68: #define        RTW_DEBUG_OACTIVE       0x2000000
        !            69: #define        RTW_DEBUG_MAX           0x3ffffff
        !            70:
        !            71: extern int rtw_debug;
        !            72: #define RTW_DPRINTF(__flags, __x)      \
        !            73:        if ((rtw_debug & (__flags)) != 0) printf __x
        !            74: #define        DPRINTF(__sc, __flags, __x)                             \
        !            75:        if (((__sc)->sc_ic.ic_if.if_flags & IFF_DEBUG) != 0)    \
        !            76:                RTW_DPRINTF(__flags, __x)
        !            77: #else /* RTW_DEBUG */
        !            78: #define RTW_DPRINTF(__flags, __x)
        !            79: #define        DPRINTF(__sc, __flags, __x)
        !            80: #endif /* RTW_DEBUG */
        !            81:
        !            82: #define        KASSERT2(__cond, __msg)         \
        !            83:        do {                            \
        !            84:                if (!(__cond))          \
        !            85:                        panic __msg ;   \
        !            86:        } while (0)
        !            87:
        !            88: enum rtw_locale {
        !            89:        RTW_LOCALE_USA = 0,
        !            90:        RTW_LOCALE_EUROPE,
        !            91:        RTW_LOCALE_JAPAN,
        !            92:        RTW_LOCALE_UNKNOWN
        !            93: };
        !            94:
        !            95: #define        RTW_RFCHIPID_RESERVED   0x00
        !            96: #define        RTW_RFCHIPID_INTERSIL   0x01
        !            97: #define        RTW_RFCHIPID_RFMD2948   0x02
        !            98: #define        RTW_RFCHIPID_PHILIPS    0x03
        !            99: #define        RTW_RFCHIPID_MAXIM2820  0x04
        !           100: #define        RTW_RFCHIPID_GCT        0x05
        !           101: #define        RTW_RFCHIPID_RFMD2958   0x06
        !           102: #define        RTW_RFCHIPID_MAXIM2822  0x07
        !           103: #define        RTW_RFCHIPID_MAXIM2825  0x08
        !           104: #define        RTW_RFCHIPID_RTL8225    0x09
        !           105: #define        RTW_RFCHIPID_RTL8255    0x0a
        !           106:
        !           107: /* sc_flags */
        !           108: #define RTW_F_ENABLED          0x00000001      /* chip is enabled */
        !           109: #define RTW_F_DIGPHY           0x00000002      /* digital PHY */
        !           110: #define RTW_F_DFLANTB          0x00000004      /* B antenna is default */
        !           111: #define RTW_F_RTL8185          0x00000008      /* RTL8185 or newer */
        !           112: #define RTW_F_ANTDIV           0x00000010      /* h/w antenna diversity */
        !           113: #define RTW_F_9356SROM         0x00000020      /* 93c56 SROM */
        !           114: #define RTW_F_SLEEP            0x00000040      /* chip is asleep */
        !           115: #define RTW_F_INVALID          0x00000080      /* chip is absent */
        !           116:        /* all PHY flags */
        !           117: #define RTW_F_ALLPHY           (RTW_F_DIGPHY|RTW_F_DFLANTB|RTW_F_ANTDIV)
        !           118:
        !           119: enum rtw_access {
        !           120:        RTW_ACCESS_NONE = 0,
        !           121:        RTW_ACCESS_CONFIG = 1,
        !           122:        RTW_ACCESS_ANAPARM = 2
        !           123: };
        !           124:
        !           125: struct rtw_regs {
        !           126:        bus_space_tag_t         r_bt;
        !           127:        bus_space_handle_t      r_bh;
        !           128:        enum rtw_access         r_access;
        !           129:        void                    *r_priv;
        !           130:
        !           131:        /* bus independent I/O callbacks */
        !           132:        u_int8_t        (*r_read8)(void *, u_int32_t);
        !           133:        u_int16_t       (*r_read16)(void *, u_int32_t);
        !           134:        u_int32_t       (*r_read32)(void *, u_int32_t);
        !           135:        void            (*r_write8)(void *, u_int32_t, u_int8_t);
        !           136:        void            (*r_write16)(void *, u_int32_t, u_int16_t);
        !           137:        void            (*r_write32)(void *, u_int32_t, u_int32_t);
        !           138:        void            (*r_barrier)(void *, u_int32_t, u_int32_t, int);
        !           139: };
        !           140:
        !           141: #define RTW_SR_GET(sr, ofs) \
        !           142:     (((sr)->sr_content[(ofs)/2] >> (((ofs) % 2 == 0) ? 0 : 8)) & 0xff)
        !           143:
        !           144: #define RTW_SR_GET16(sr, ofs) \
        !           145:     (RTW_SR_GET((sr), (ofs)) | (RTW_SR_GET((sr), (ofs) + 1) << 8))
        !           146:
        !           147: struct rtw_srom {
        !           148:        u_int16_t               *sr_content;
        !           149:        u_int16_t               sr_size;
        !           150: };
        !           151:
        !           152: struct rtw_rxsoft {
        !           153:        struct mbuf                     *rs_mbuf;
        !           154:        bus_dmamap_t                    rs_dmamap;
        !           155: };
        !           156:
        !           157: struct rtw_duration {
        !           158:        uint16_t        d_rts_dur;
        !           159:        uint16_t        d_data_dur;
        !           160:        uint16_t        d_plcp_len;
        !           161:        uint8_t         d_residue;      /* unused octets in time slot */
        !           162: };
        !           163:
        !           164: struct rtw_txsoft {
        !           165:        SIMPLEQ_ENTRY(rtw_txsoft)       ts_q;
        !           166:        struct mbuf                     *ts_mbuf;
        !           167:        bus_dmamap_t                    ts_dmamap;
        !           168:        struct ieee80211_node           *ts_ni; /* destination node */
        !           169:        u_int                           ts_first;       /* 1st hw descriptor */
        !           170:        u_int                           ts_last;        /* last hw descriptor */
        !           171:        struct rtw_duration             ts_d0;
        !           172:        struct rtw_duration             ts_dn;
        !           173: };
        !           174:
        !           175: #define RTW_NTXPRI     4       /* number of Tx priorities */
        !           176: #define RTW_TXPRILO    0
        !           177: #define RTW_TXPRIMD    1
        !           178: #define RTW_TXPRIHI    2
        !           179: #define RTW_TXPRIBCN   3       /* beacon priority */
        !           180:
        !           181: #define RTW_MAXPKTSEGS         64      /* max 64 segments per Tx packet */
        !           182:
        !           183: #define CASSERT(cond, complaint)                                       \
        !           184:        complaint[(cond) ? 0 : -1] = complaint[(cond) ? 0 : -1]
        !           185:
        !           186: /* Note well: the descriptor rings must begin on RTW_DESC_ALIGNMENT
        !           187:  * boundaries.  I allocate them consecutively from one buffer, so
        !           188:  * just round up.
        !           189:  */
        !           190: #define RTW_TXQLENLO   64      /* low-priority queue length */
        !           191: #define RTW_TXQLENMD   64      /* medium-priority */
        !           192: #define RTW_TXQLENHI   64      /* high-priority */
        !           193: #define RTW_TXQLENBCN  8       /* beacon */
        !           194:
        !           195: #define RTW_NTXDESCLO  RTW_TXQLENLO
        !           196: #define RTW_NTXDESCMD  RTW_TXQLENMD
        !           197: #define RTW_NTXDESCHI  RTW_TXQLENHI
        !           198: #define RTW_NTXDESCBCN RTW_TXQLENBCN
        !           199:
        !           200: #define RTW_NTXDESCTOTAL       (RTW_NTXDESCLO + RTW_NTXDESCMD + \
        !           201:                                 RTW_NTXDESCHI + RTW_NTXDESCBCN)
        !           202:
        !           203: #define RTW_RXQLEN     64
        !           204:
        !           205: struct rtw_rxdesc_blk {
        !           206:        struct rtw_rxdesc       *rdb_desc;
        !           207:        u_int                   rdb_next;
        !           208:        u_int                   rdb_ndesc;
        !           209:        bus_dma_tag_t           rdb_dmat;
        !           210:        bus_dmamap_t            rdb_dmamap;
        !           211: };
        !           212:
        !           213: struct rtw_txdesc_blk {
        !           214:        u_int                   tdb_ndesc;
        !           215:        u_int                   tdb_next;
        !           216:        u_int                   tdb_nfree;
        !           217:        bus_dma_tag_t           tdb_dmat;
        !           218:        bus_dmamap_t            tdb_dmamap;
        !           219:        bus_addr_t              tdb_physbase;
        !           220:        bus_addr_t              tdb_ofs;
        !           221:        bus_size_t              tdb_basereg;
        !           222:        uint32_t                tdb_base;
        !           223:
        !           224:        struct rtw_txdesc       *tdb_desc;
        !           225: };
        !           226:
        !           227: #define RTW_NEXT_IDX(__htc, __idx)     (((__idx) + 1) % (__htc)->tdb_ndesc)
        !           228:
        !           229: #define RTW_NEXT_DESC(__htc, __idx) \
        !           230:     ((__htc)->tdb_physbase + \
        !           231:      sizeof(struct rtw_txdesc) * RTW_NEXT_IDX((__htc), (__idx)))
        !           232:
        !           233: SIMPLEQ_HEAD(rtw_txq, rtw_txsoft);
        !           234:
        !           235: struct rtw_txsoft_blk {
        !           236:        /* dirty/free s/w descriptors */
        !           237:        struct rtw_txq          tsb_dirtyq;
        !           238:        struct rtw_txq          tsb_freeq;
        !           239:        u_int                   tsb_ndesc;
        !           240:        int                     tsb_tx_timer;
        !           241:        struct rtw_txsoft       *tsb_desc;
        !           242:        u_int8_t                        tsb_poll;
        !           243: };
        !           244:
        !           245: struct rtw_descs {
        !           246:        struct rtw_txdesc       hd_txlo[RTW_NTXDESCLO];
        !           247:        struct rtw_txdesc       hd_txmd[RTW_NTXDESCMD];
        !           248:        struct rtw_txdesc       hd_txhi[RTW_NTXDESCMD];
        !           249:        struct rtw_rxdesc       hd_rx[RTW_RXQLEN];
        !           250:        struct rtw_txdesc       hd_bcn[RTW_NTXDESCBCN];
        !           251: };
        !           252: #define RTW_DESC_OFFSET(ring, i)       offsetof(struct rtw_descs, ring[i])
        !           253: #define RTW_RING_OFFSET(ring)          RTW_DESC_OFFSET(ring, 0)
        !           254: #define RTW_RING_BASE(sc, ring)                ((sc)->sc_desc_physaddr + \
        !           255:                                         RTW_RING_OFFSET(ring))
        !           256:
        !           257: /* Radio capture format for RTL8180. */
        !           258:
        !           259: #define RTW_RX_RADIOTAP_PRESENT                                        \
        !           260:        ((1 << IEEE80211_RADIOTAP_TSFT)                 |       \
        !           261:         (1 << IEEE80211_RADIOTAP_FLAGS)                |       \
        !           262:         (1 << IEEE80211_RADIOTAP_RATE)                 |       \
        !           263:         (1 << IEEE80211_RADIOTAP_CHANNEL)              |       \
        !           264:         (1 << IEEE80211_RADIOTAP_LOCK_QUALITY)         |       \
        !           265:         (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL)         |       \
        !           266:         0)
        !           267:
        !           268: struct rtw_rx_radiotap_header {
        !           269:        struct ieee80211_radiotap_header        rr_ihdr;
        !           270:        u_int64_t                               rr_tsft;
        !           271:        u_int8_t                                rr_flags;
        !           272:        u_int8_t                                rr_rate;
        !           273:        u_int16_t                               rr_chan_freq;
        !           274:        u_int16_t                               rr_chan_flags;
        !           275:        u_int16_t                               rr_barker_lock;
        !           276:        u_int8_t                                rr_antsignal;
        !           277: } __packed;
        !           278:
        !           279: #define RTW_TX_RADIOTAP_PRESENT                                \
        !           280:        ((1 << IEEE80211_RADIOTAP_FLAGS)        |       \
        !           281:         (1 << IEEE80211_RADIOTAP_RATE)         |       \
        !           282:         (1 << IEEE80211_RADIOTAP_CHANNEL)      |       \
        !           283:         0)
        !           284:
        !           285: struct rtw_tx_radiotap_header {
        !           286:        struct ieee80211_radiotap_header        rt_ihdr;
        !           287:        u_int8_t                                rt_flags;
        !           288:        u_int8_t                                rt_rate;
        !           289:        u_int16_t                               rt_chan_freq;
        !           290:        u_int16_t                               rt_chan_flags;
        !           291: } __packed;
        !           292:
        !           293: struct rtw_hooks {
        !           294:        void                    *rh_shutdown;   /* shutdown hook */
        !           295:        void                    *rh_power;      /* power management hook */
        !           296: };
        !           297:
        !           298: struct rtw_mtbl {
        !           299:        int                     (*mt_newstate)(struct ieee80211com *,
        !           300:                                        enum ieee80211_state, int);
        !           301:        void                    (*mt_recv_mgmt)(struct ieee80211com *,
        !           302:                                    struct mbuf *, struct ieee80211_node *,
        !           303:                                    int, int, u_int32_t);
        !           304:        struct ieee80211_node   *(*mt_node_alloc)(struct ieee80211com *);
        !           305:        void                    (*mt_node_free)(struct ieee80211com *,
        !           306:                                        struct ieee80211_node *);
        !           307: };
        !           308:
        !           309: enum rtw_pwrstate { RTW_OFF = 0, RTW_SLEEP, RTW_ON };
        !           310:
        !           311: struct rtw_phy {
        !           312:        struct rtw_rf   *p_rf;
        !           313:        struct rtw_regs *p_regs;
        !           314: };
        !           315:
        !           316: struct rtw_bbpset {
        !           317:        u_int   bb_antatten;
        !           318:        u_int   bb_chestlim;
        !           319:        u_int   bb_chsqlim;
        !           320:        u_int   bb_ifagcdet;
        !           321:        u_int   bb_ifagcini;
        !           322:        u_int   bb_ifagclimit;
        !           323:        u_int   bb_lnadet;
        !           324:        u_int   bb_sys1;
        !           325:        u_int   bb_sys2;
        !           326:        u_int   bb_sys3;
        !           327:        u_int   bb_trl;
        !           328:        u_int   bb_txagc;
        !           329: };
        !           330:
        !           331: typedef int (*rtw_rf_write_t)(struct rtw_regs *, int, u_int,
        !           332:     u_int32_t);
        !           333:
        !           334: typedef void (*rtw_pwrstate_t)(struct rtw_regs *, enum rtw_pwrstate, int, int);
        !           335:
        !           336: union rtw_keys {
        !           337:        u_int8_t        rk_keys[4][16];
        !           338:        u_int32_t       rk_words[16];
        !           339: };
        !           340:
        !           341: #define        RTW_LED_SLOW_TICKS      MAX(1, hz/2)
        !           342: #define        RTW_LED_FAST_TICKS      MAX(1, hz/10)
        !           343:
        !           344: struct rtw_led_state {
        !           345: #define        RTW_LED0        0x1
        !           346: #define        RTW_LED1        0x2
        !           347:        u_int8_t        ls_slowblink:2;
        !           348:        u_int8_t        ls_actblink:2;
        !           349:        u_int8_t        ls_default:2;
        !           350:        u_int8_t        ls_state;
        !           351:        u_int8_t        ls_event;
        !           352: #define        RTW_LED_S_RX    0x1
        !           353: #define        RTW_LED_S_TX    0x2
        !           354: #define        RTW_LED_S_SLOW  0x4
        !           355:        struct timeout  ls_slow_ch;
        !           356:        struct timeout  ls_fast_ch;
        !           357: };
        !           358:
        !           359: struct rtw_softc {
        !           360:        struct device           sc_dev;
        !           361:        struct ieee80211com     sc_ic;
        !           362:        struct rtw_regs         sc_regs;
        !           363:        bus_dma_tag_t           sc_dmat;
        !           364:        u_int32_t               sc_flags;
        !           365:
        !           366:        int                     sc_rfchipid;
        !           367:        enum rtw_locale         sc_locale;
        !           368:        u_int8_t                sc_phydelay;
        !           369:        struct rtw_bbpset       sc_bbpset;
        !           370:
        !           371:        /* s/w Tx/Rx descriptors */
        !           372:        struct rtw_txsoft_blk   sc_txsoft_blk[RTW_NTXPRI];
        !           373:        struct rtw_txdesc_blk   sc_txdesc_blk[RTW_NTXPRI];
        !           374:
        !           375:        struct rtw_rxsoft       sc_rxsoft[RTW_RXQLEN];
        !           376:        struct rtw_rxdesc_blk   sc_rxdesc_blk;
        !           377:
        !           378:        struct rtw_descs        *sc_descs;
        !           379:
        !           380:        bus_dma_segment_t       sc_desc_segs;
        !           381:        int                     sc_desc_nsegs;
        !           382:        bus_dmamap_t            sc_desc_dmamap;
        !           383: #define        sc_desc_physaddr sc_desc_dmamap->dm_segs[0].ds_addr
        !           384:
        !           385:        struct rtw_srom         sc_srom;
        !           386:
        !           387:        enum rtw_pwrstate       sc_pwrstate;
        !           388:
        !           389:        rtw_pwrstate_t          sc_pwrstate_cb;
        !           390:
        !           391:        u_int16_t               sc_inten;
        !           392:        int                     (*sc_rf_init)(struct rtw_softc *, u_int,
        !           393:                                    u_int8_t, enum rtw_pwrstate);
        !           394:        int                     (*sc_rf_pwrstate)(struct rtw_softc *,
        !           395:                                    enum rtw_pwrstate);
        !           396:        int                     (*sc_rf_tune)(struct rtw_softc *, u_int);
        !           397:        int                     (*sc_rf_txpower)(struct rtw_softc *, u_int8_t);
        !           398:
        !           399:        /* interrupt acknowledge hook */
        !           400:        void                    (*sc_intr_ack)(struct rtw_regs *);
        !           401:
        !           402:        int                     (*sc_enable)(struct rtw_softc *);
        !           403:        void                    (*sc_disable)(struct rtw_softc *);
        !           404:        void                    (*sc_power)(struct rtw_softc *, int);
        !           405:        struct rtw_mtbl         sc_mtbl;
        !           406:        struct rtw_hooks        sc_hooks;
        !           407:
        !           408:        caddr_t                 sc_radiobpf;
        !           409:
        !           410:        struct timeval          sc_last_beacon;
        !           411:        struct timeout          sc_scan_to;
        !           412:        u_int                   sc_cur_chan;
        !           413:
        !           414:        u_int32_t               sc_tsfth;       /* most significant TSFT bits */
        !           415:        u_int32_t               sc_rcr;         /* RTW_RCR */
        !           416:        u_int8_t                sc_csthr;       /* carrier-sense threshold */
        !           417:
        !           418:        int                     sc_do_tick;     /* indicate 1s ticks */
        !           419:        struct timeval          sc_tick0;       /* first tick */
        !           420:
        !           421:        u_int8_t                sc_rev;         /* PCI/Cardbus revision */
        !           422:
        !           423:        u_int32_t               sc_anaparm[2];  /* RTW_ANAPARM_? registers */
        !           424:
        !           425:        union {
        !           426:                struct rtw_rx_radiotap_header   tap;
        !           427:                u_int8_t                        pad[64];
        !           428:        } sc_rxtapu;
        !           429:        union {
        !           430:                struct rtw_tx_radiotap_header   tap;
        !           431:                u_int8_t                        pad[64];
        !           432:        } sc_txtapu;
        !           433:        union rtw_keys          sc_keys;
        !           434:        int                     sc_txkey;
        !           435:        struct ifqueue          sc_beaconq;
        !           436:        struct rtw_led_state    sc_led_state;
        !           437:        u_int                   sc_hwverid;
        !           438: };
        !           439:
        !           440: #define        sc_if           sc_ic.ic_if
        !           441: #define sc_rxtap       sc_rxtapu.tap
        !           442: #define sc_txtap       sc_txtapu.tap
        !           443:
        !           444: extern int rtw_host_rfio;
        !           445:
        !           446: void rtw_txdac_enable(struct rtw_softc *, int);
        !           447: void rtw_anaparm_enable(struct rtw_regs *, int);
        !           448: void rtw_config0123_enable(struct rtw_regs *, int);
        !           449: void rtw_continuous_tx_enable(struct rtw_softc *, int);
        !           450: void rtw_set_access(struct rtw_regs *, enum rtw_access);
        !           451:
        !           452: void rtw_attach(struct rtw_softc *);
        !           453: int rtw_detach(struct rtw_softc *);
        !           454: int rtw_intr(void *);
        !           455:
        !           456: void rtw_disable(struct rtw_softc *);
        !           457: int rtw_enable(struct rtw_softc *);
        !           458:
        !           459: int rtw_activate(struct device *, enum devact);
        !           460: void rtw_power(int, void *);
        !           461: void rtw_shutdown(void *);
        !           462:
        !           463: const char *rtw_pwrstate_string(enum rtw_pwrstate);
        !           464:
        !           465: #endif /* _DEV_IC_RTWVAR_H_ */

CVSweb