xref: /illumos-gate/usr/src/uts/common/io/rwd/rt2661_var.h (revision 10115c80)
1*10115c80Sfei feng - Sun Microsystems - Beijing China /*
2*10115c80Sfei feng - Sun Microsystems - Beijing China  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3*10115c80Sfei feng - Sun Microsystems - Beijing China  * Use is subject to license terms.
4*10115c80Sfei feng - Sun Microsystems - Beijing China  */
5*10115c80Sfei feng - Sun Microsystems - Beijing China 
6*10115c80Sfei feng - Sun Microsystems - Beijing China /*
7*10115c80Sfei feng - Sun Microsystems - Beijing China  * Copyright (c) 2006
8*10115c80Sfei feng - Sun Microsystems - Beijing China  *	Damien Bergamini <damien.bergamini@free.fr>
9*10115c80Sfei feng - Sun Microsystems - Beijing China  *
10*10115c80Sfei feng - Sun Microsystems - Beijing China  * Permission to use, copy, modify, and distribute this software for any
11*10115c80Sfei feng - Sun Microsystems - Beijing China  * purpose with or without fee is hereby granted, provided that the above
12*10115c80Sfei feng - Sun Microsystems - Beijing China  * copyright notice and this permission notice appear in all copies.
13*10115c80Sfei feng - Sun Microsystems - Beijing China  *
14*10115c80Sfei feng - Sun Microsystems - Beijing China  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
15*10115c80Sfei feng - Sun Microsystems - Beijing China  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
16*10115c80Sfei feng - Sun Microsystems - Beijing China  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
17*10115c80Sfei feng - Sun Microsystems - Beijing China  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18*10115c80Sfei feng - Sun Microsystems - Beijing China  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
19*10115c80Sfei feng - Sun Microsystems - Beijing China  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20*10115c80Sfei feng - Sun Microsystems - Beijing China  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21*10115c80Sfei feng - Sun Microsystems - Beijing China  */
22*10115c80Sfei feng - Sun Microsystems - Beijing China 
23*10115c80Sfei feng - Sun Microsystems - Beijing China #ifndef	_RT2661_VAR_H
24*10115c80Sfei feng - Sun Microsystems - Beijing China #define	_RT2661_VAR_H
25*10115c80Sfei feng - Sun Microsystems - Beijing China 
26*10115c80Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus
27*10115c80Sfei feng - Sun Microsystems - Beijing China extern "C" {
28*10115c80Sfei feng - Sun Microsystems - Beijing China #endif
29*10115c80Sfei feng - Sun Microsystems - Beijing China 
30*10115c80Sfei feng - Sun Microsystems - Beijing China struct dma_area {
31*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_acc_handle_t	acc_hdl;	/* handle for memory */
32*10115c80Sfei feng - Sun Microsystems - Beijing China 	caddr_t			mem_va;		/* CPU VA of memory */
33*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		nslots;		/* number of slots */
34*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		size;		/* size per slot */
35*10115c80Sfei feng - Sun Microsystems - Beijing China 	size_t			alength;	/* allocated size */
36*10115c80Sfei feng - Sun Microsystems - Beijing China 
37*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_dma_handle_t	dma_hdl;	/* DMA handle */
38*10115c80Sfei feng - Sun Microsystems - Beijing China 	offset_t		offset;		/* relative to handle */
39*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_dma_cookie_t	cookie;		/* associated cookie */
40*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		ncookies;	/* must be 1 */
41*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		token;		/* arbitrary identifier */
42*10115c80Sfei feng - Sun Microsystems - Beijing China };
43*10115c80Sfei feng - Sun Microsystems - Beijing China 
44*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_data {
45*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct dma_area		txdata_dma;
46*10115c80Sfei feng - Sun Microsystems - Beijing China 	caddr_t			buf;
47*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		paddr;
48*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct ieee80211_node	*ni;
49*10115c80Sfei feng - Sun Microsystems - Beijing China };
50*10115c80Sfei feng - Sun Microsystems - Beijing China 
51*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_ring {
52*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct dma_area		txdesc_dma;
53*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		paddr;
54*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_tx_desc	*desc;
55*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_tx_data	*data;
56*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			count;
57*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			queued;
58*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			cur;
59*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			next;
60*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			stat;
61*10115c80Sfei feng - Sun Microsystems - Beijing China };
62*10115c80Sfei feng - Sun Microsystems - Beijing China 
63*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_rx_data {
64*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct dma_area	rxdata_dma;
65*10115c80Sfei feng - Sun Microsystems - Beijing China 	caddr_t		buf;
66*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t	paddr;
67*10115c80Sfei feng - Sun Microsystems - Beijing China };
68*10115c80Sfei feng - Sun Microsystems - Beijing China 
69*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_rx_ring {
70*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct dma_area		rxdesc_dma;
71*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		paddr;
72*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_rx_desc	*desc;
73*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_rx_data	*data;
74*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			count;
75*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			cur;
76*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			next;
77*10115c80Sfei feng - Sun Microsystems - Beijing China };
78*10115c80Sfei feng - Sun Microsystems - Beijing China 
79*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_amrr {
80*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint_t	amrr_min_success_threshold;
81*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint_t	amrr_max_success_threshold;
82*10115c80Sfei feng - Sun Microsystems - Beijing China };
83*10115c80Sfei feng - Sun Microsystems - Beijing China 
84*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_amrr_node {
85*10115c80Sfei feng - Sun Microsystems - Beijing China 	int	amn_success;
86*10115c80Sfei feng - Sun Microsystems - Beijing China 	int	amn_recovery;
87*10115c80Sfei feng - Sun Microsystems - Beijing China 	int	amn_success_threshold;
88*10115c80Sfei feng - Sun Microsystems - Beijing China 	int	amn_txcnt;
89*10115c80Sfei feng - Sun Microsystems - Beijing China 	int	amn_retrycnt;
90*10115c80Sfei feng - Sun Microsystems - Beijing China };
91*10115c80Sfei feng - Sun Microsystems - Beijing China 
92*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_node {
93*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct ieee80211_node		ni;
94*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_amrr_node		amn;
95*10115c80Sfei feng - Sun Microsystems - Beijing China };
96*10115c80Sfei feng - Sun Microsystems - Beijing China 
97*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_softc {
98*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct ieee80211com	sc_ic;
99*10115c80Sfei feng - Sun Microsystems - Beijing China 	dev_info_t		*sc_dev;
100*10115c80Sfei feng - Sun Microsystems - Beijing China 
101*10115c80Sfei feng - Sun Microsystems - Beijing China 	/* ddi reg handler */
102*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_acc_handle_t	sc_cfg_handle;
103*10115c80Sfei feng - Sun Microsystems - Beijing China 	caddr_t			sc_cfg_base;
104*10115c80Sfei feng - Sun Microsystems - Beijing China 
105*10115c80Sfei feng - Sun Microsystems - Beijing China 	/* ddi i/o handler */
106*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_acc_handle_t	sc_io_handle;
107*10115c80Sfei feng - Sun Microsystems - Beijing China 	caddr_t			sc_io_base;
108*10115c80Sfei feng - Sun Microsystems - Beijing China 
109*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint16_t		sc_cachelsz;
110*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_dmabuf_size;
111*10115c80Sfei feng - Sun Microsystems - Beijing China 
112*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_amrr	amrr;
113*10115c80Sfei feng - Sun Microsystems - Beijing China 
114*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_tx_ring	txq[4];
115*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_tx_ring	mgtq;
116*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct rt2661_rx_ring	rxq;
117*10115c80Sfei feng - Sun Microsystems - Beijing China 
118*10115c80Sfei feng - Sun Microsystems - Beijing China 	/* interrupt */
119*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_iblock_cookie_t	sc_iblock;
120*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_softint_handle_t	sc_softintr_hdl;
121*10115c80Sfei feng - Sun Microsystems - Beijing China 	ddi_intr_handle_t	*sc_intr_htable;
122*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint_t			sc_intr_pri;
123*10115c80Sfei feng - Sun Microsystems - Beijing China 
124*10115c80Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_genlock;
125*10115c80Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_txlock;
126*10115c80Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_rxlock;
127*10115c80Sfei feng - Sun Microsystems - Beijing China 
128*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			sc_tx_timer;
129*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_rx_pend;
130*10115c80Sfei feng - Sun Microsystems - Beijing China 	timeout_id_t		sc_scan_id;
131*10115c80Sfei feng - Sun Microsystems - Beijing China 	timeout_id_t		sc_rssadapt_id;
132*10115c80Sfei feng - Sun Microsystems - Beijing China 	timeout_id_t		sc_stat_id;
133*10115c80Sfei feng - Sun Microsystems - Beijing China 	enum ieee80211_state	sc_ostate;
134*10115c80Sfei feng - Sun Microsystems - Beijing China 
135*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct ieee80211_channel *sc_curchan;
136*10115c80Sfei feng - Sun Microsystems - Beijing China 
137*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			rf_rev;
138*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			rfprog;
139*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			rffreq;
140*10115c80Sfei feng - Sun Microsystems - Beijing China 
141*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		rf_regs[4];
142*10115c80Sfei feng - Sun Microsystems - Beijing China 	int8_t			txpow[38];
143*10115c80Sfei feng - Sun Microsystems - Beijing China 
144*10115c80Sfei feng - Sun Microsystems - Beijing China 	struct {
145*10115c80Sfei feng - Sun Microsystems - Beijing China 		uint8_t	reg;
146*10115c80Sfei feng - Sun Microsystems - Beijing China 		uint8_t	val;
147*10115c80Sfei feng - Sun Microsystems - Beijing China 	}			bbp_prom[16];
148*10115c80Sfei feng - Sun Microsystems - Beijing China 
149*10115c80Sfei feng - Sun Microsystems - Beijing China 
150*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			hw_radio;
151*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			rx_ant;
152*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			tx_ant;
153*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			nb_ant;
154*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			ext_2ghz_lna;
155*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			ext_5ghz_lna;
156*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			rssi_2ghz_corr;
157*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			rssi_5ghz_corr;
158*10115c80Sfei feng - Sun Microsystems - Beijing China 
159*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			ncalls;
160*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			avg_rssi;
161*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			sifs;
162*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			bbp18;
163*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			bbp21;
164*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			bbp22;
165*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			bbp16;
166*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			bbp17;
167*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint8_t			bbp64;
168*10115c80Sfei feng - Sun Microsystems - Beijing China 
169*10115c80Sfei feng - Sun Microsystems - Beijing China 	/* kstats */
170*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_tx_nobuf;
171*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_rx_nobuf;
172*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_tx_err;
173*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_rx_err;
174*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_tx_retries;
175*10115c80Sfei feng - Sun Microsystems - Beijing China 
176*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_need_sched;
177*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_flags;
178*10115c80Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_rcr;
179*10115c80Sfei feng - Sun Microsystems - Beijing China 	int			(*sc_newstate)(struct ieee80211com *,
180*10115c80Sfei feng - Sun Microsystems - Beijing China 				    enum ieee80211_state, int);
181*10115c80Sfei feng - Sun Microsystems - Beijing China };
182*10115c80Sfei feng - Sun Microsystems - Beijing China 
183*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_GLOCK(_sc)		mutex_enter(&(_sc)->sc_genlock)
184*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_GUNLOCK(_sc)		mutex_exit(&(_sc)->sc_genlock)
185*10115c80Sfei feng - Sun Microsystems - Beijing China 
186*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_INPUT_RUNNING	(1 << 0)
187*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_F_RUNNING	(1 << 1)
188*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_F_SUSPEND	(1 << 2)
189*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_F_FWLOADED	(1 << 3)
190*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_F_QUIESCE	(1 << 4)
191*10115c80Sfei feng - Sun Microsystems - Beijing China 
192*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_RCR_PROMISC	(1 << 0)
193*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_RCR_MULTI	(1 << 1)
194*10115c80Sfei feng - Sun Microsystems - Beijing China 
195*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_IS_RUNNING(_sc)		(((_sc)->sc_flags & RT2661_F_RUNNING))
196*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_IS_SUSPEND(_sc)		(((_sc)->sc_flags & RT2661_F_SUSPEND))
197*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_IS_FWLOADED(_sc)		(((_sc)->sc_flags & RT2661_F_FWLOADED))
198*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_IS_FASTREBOOT(_sc)	(((_sc)->sc_flags & RT2661_F_QUIESCE))
199*10115c80Sfei feng - Sun Microsystems - Beijing China 
200*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_DMA_SYNC(area, flag) ((void) ddi_dma_sync((area).dma_hdl,\
201*10115c80Sfei feng - Sun Microsystems - Beijing China 	(area).offset, (area).alength, (flag)))
202*10115c80Sfei feng - Sun Microsystems - Beijing China 
203*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_SUCCESS		0
204*10115c80Sfei feng - Sun Microsystems - Beijing China #define	RT2661_FAILURE		-1
205*10115c80Sfei feng - Sun Microsystems - Beijing China 
206*10115c80Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus
207*10115c80Sfei feng - Sun Microsystems - Beijing China }
208*10115c80Sfei feng - Sun Microsystems - Beijing China #endif
209*10115c80Sfei feng - Sun Microsystems - Beijing China 
210*10115c80Sfei feng - Sun Microsystems - Beijing China #endif /* _RT2661_VAR_H */
211