1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef __MAC_H__
19#define __MAC_H__
20
21#include <linux/bits.h>
22#include "device.h"
23
24#define REV_ID_VT3253_A0 0x00
25#define REV_ID_VT3253_A1 0x01
26#define REV_ID_VT3253_B0 0x08
27#define REV_ID_VT3253_B1 0x09
28
29
30#define MAC_REG_BISTCMD 0x04
31#define MAC_REG_BISTSR0 0x05
32#define MAC_REG_BISTSR1 0x06
33#define MAC_REG_BISTSR2 0x07
34#define MAC_REG_I2MCSR 0x08
35#define MAC_REG_I2MTGID 0x09
36#define MAC_REG_I2MTGAD 0x0a
37#define MAC_REG_I2MCFG 0x0b
38#define MAC_REG_I2MDIPT 0x0c
39#define MAC_REG_I2MDOPT 0x0e
40#define MAC_REG_USBSUS 0x0f
41
42#define MAC_REG_LOCALID 0x14
43#define MAC_REG_TESTCFG 0x15
44#define MAC_REG_JUMPER0 0x16
45#define MAC_REG_JUMPER1 0x17
46#define MAC_REG_TMCTL 0x18
47#define MAC_REG_TMDATA0 0x1c
48#define MAC_REG_TMDATA1 0x1d
49#define MAC_REG_TMDATA2 0x1e
50#define MAC_REG_TMDATA3 0x1f
51
52
53#define MAC_REG_LRT 0x20
54#define MAC_REG_SRT 0x21
55#define MAC_REG_SIFS 0x22
56#define MAC_REG_DIFS 0x23
57#define MAC_REG_EIFS 0x24
58#define MAC_REG_SLOT 0x25
59#define MAC_REG_BI 0x26
60#define MAC_REG_CWMAXMIN0 0x28
61#define MAC_REG_LINKOFFTOTM 0x2a
62#define MAC_REG_SWTMOT 0x2b
63#define MAC_REG_RTSOKCNT 0x2c
64#define MAC_REG_RTSFAILCNT 0x2d
65#define MAC_REG_ACKFAILCNT 0x2e
66#define MAC_REG_FCSERRCNT 0x2f
67
68
69#define MAC_REG_TSFCNTR 0x30
70#define MAC_REG_NEXTTBTT 0x38
71#define MAC_REG_TSFOFST 0x40
72#define MAC_REG_TFTCTL 0x48
73
74
75#define MAC_REG_ENCFG0 0x4c
76#define MAC_REG_ENCFG1 0x4d
77#define MAC_REG_ENCFG2 0x4e
78
79#define MAC_REG_CFG 0x50
80#define MAC_REG_TEST 0x52
81#define MAC_REG_HOSTCR 0x54
82#define MAC_REG_MACCR 0x55
83#define MAC_REG_RCR 0x56
84#define MAC_REG_TCR 0x57
85#define MAC_REG_IMR 0x58
86#define MAC_REG_ISR 0x5c
87#define MAC_REG_ISR1 0x5d
88
89
90#define MAC_REG_PSCFG 0x60
91#define MAC_REG_PSCTL 0x61
92#define MAC_REG_PSPWRSIG 0x62
93#define MAC_REG_BBCR13 0x63
94#define MAC_REG_AIDATIM 0x64
95#define MAC_REG_PWBT 0x66
96#define MAC_REG_WAKEOKTMR 0x68
97#define MAC_REG_CALTMR 0x69
98#define MAC_REG_SYNSPACCNT 0x6a
99#define MAC_REG_WAKSYNOPT 0x6b
100
101
102#define MAC_REG_BBREGCTL 0x6c
103#define MAC_REG_CHANNEL 0x6d
104#define MAC_REG_BBREGADR 0x6e
105#define MAC_REG_BBREGDATA 0x6f
106#define MAC_REG_IFREGCTL 0x70
107#define MAC_REG_IFDATA 0x71
108#define MAC_REG_ITRTMSET 0x74
109#define MAC_REG_PAPEDELAY 0x77
110#define MAC_REG_SOFTPWRCTL 0x78
111#define MAC_REG_SOFTPWRCTL2 0x79
112#define MAC_REG_GPIOCTL0 0x7a
113#define MAC_REG_GPIOCTL1 0x7b
114
115
116#define MAC_REG_MISCFFNDEX 0xbc
117#define MAC_REG_MISCFFCTL 0xbe
118#define MAC_REG_MISCFFDATA 0xc0
119
120
121#define MAC_REG_PAR0 0xc4
122#define MAC_REG_PAR4 0xc8
123#define MAC_REG_BSSID0 0xcc
124#define MAC_REG_BSSID4 0xd0
125#define MAC_REG_MAR0 0xd4
126#define MAC_REG_MAR4 0xd8
127
128
129#define MAC_REG_RSPINF_B_1 0xdC
130#define MAC_REG_RSPINF_B_2 0xe0
131#define MAC_REG_RSPINF_B_5 0xe4
132#define MAC_REG_RSPINF_B_11 0xe8
133#define MAC_REG_RSPINF_A_6 0xec
134#define MAC_REG_RSPINF_A_9 0xee
135#define MAC_REG_RSPINF_A_12 0xf0
136#define MAC_REG_RSPINF_A_18 0xf2
137#define MAC_REG_RSPINF_A_24 0xf4
138#define MAC_REG_RSPINF_A_36 0xf6
139#define MAC_REG_RSPINF_A_48 0xf8
140#define MAC_REG_RSPINF_A_54 0xfa
141#define MAC_REG_RSPINF_A_72 0xfc
142
143
144#define I2MCFG_BOUNDCTL BIT(7)
145#define I2MCFG_WAITCTL BIT(5)
146#define I2MCFG_SCLOECTL BIT(4)
147#define I2MCFG_WBUSYCTL BIT(3)
148#define I2MCFG_NORETRY BIT(2)
149#define I2MCFG_I2MLDSEQ BIT(1)
150#define I2MCFG_I2CMFAST BIT(0)
151
152
153#define I2MCSR_EEMW BIT(7)
154#define I2MCSR_EEMR BIT(6)
155#define I2MCSR_AUTOLD BIT(3)
156#define I2MCSR_NACK BIT(1)
157#define I2MCSR_DONE BIT(0)
158
159
160#define TMCTL_TSUSP BIT(2)
161#define TMCTL_TMD BIT(1)
162#define TMCTL_TE BIT(0)
163
164
165#define TFTCTL_HWUTSF BIT(7)
166#define TFTCTL_TBTTSYNC BIT(6)
167#define TFTCTL_HWUTSFEN BIT(5)
168#define TFTCTL_TSFCNTRRD BIT(4)
169#define TFTCTL_TBTTSYNCEN BIT(3)
170#define TFTCTL_TSFSYNCEN BIT(2)
171#define TFTCTL_TSFCNTRST BIT(1)
172#define TFTCTL_TSFCNTREN BIT(0)
173
174
175#define EN_CFG_BB_TYPE_A 0x00
176#define EN_CFG_BB_TYPE_B BIT(0)
177#define EN_CFG_BB_TYPE_G BIT(1)
178#define EN_CFG_BB_TYPE_MASK (EN_CFG_BB_TYPE_B | EN_CFG_BB_TYPE_G)
179#define EN_CFG_PROTECT_MD BIT(5)
180
181
182#define EN_CFG_BCN_SUS_IND BIT(0)
183#define EN_CFG_BCN_SUS_CLR BIT(1)
184
185
186#define EN_CFG_NXTBTTCFPSTR BIT(0)
187#define EN_CFG_BARKER_PREAM BIT(1)
188#define EN_CFG_PKT_BURST_MD BIT(2)
189
190
191#define CFG_TKIPOPT BIT(7)
192#define CFG_RXDMAOPT BIT(6)
193#define CFG_TMOT_SW BIT(5)
194#define CFG_TMOT_HWLONG BIT(4)
195#define CFG_TMOT_HW 0x00
196#define CFG_CFPENDOPT BIT(3)
197#define CFG_BCNSUSEN BIT(2)
198#define CFG_NOTXTIMEOUT BIT(1)
199#define CFG_NOBUFOPT BIT(0)
200
201
202#define TEST_LBEXT BIT(7)
203#define TEST_LBINT BIT(6)
204#define TEST_LBNONE 0x00
205#define TEST_SOFTINT BIT(5)
206#define TEST_CONTTX BIT(4)
207#define TEST_TXPE BIT(3)
208#define TEST_NAVDIS BIT(2)
209#define TEST_NOCTS BIT(1)
210#define TEST_NOACK BIT(0)
211
212
213#define HOSTCR_TXONST BIT(7)
214#define HOSTCR_RXONST BIT(6)
215#define HOSTCR_ADHOC BIT(5)
216#define HOSTCR_AP BIT(4)
217#define HOSTCR_TXON BIT(3)
218#define HOSTCR_RXON BIT(2)
219#define HOSTCR_MACEN BIT(1)
220#define HOSTCR_SOFTRST BIT(0)
221
222
223#define MACCR_SYNCFLUSHOK BIT(2)
224#define MACCR_SYNCFLUSH BIT(1)
225#define MACCR_CLRNAV BIT(0)
226
227
228#define RCR_SSID BIT(7)
229#define RCR_RXALLTYPE BIT(6)
230#define RCR_UNICAST BIT(5)
231#define RCR_BROADCAST BIT(4)
232#define RCR_MULTICAST BIT(3)
233#define RCR_WPAERR BIT(2)
234#define RCR_ERRCRC BIT(1)
235#define RCR_BSSID BIT(0)
236
237
238#define TCR_SYNCDCFOPT BIT(1)
239#define TCR_AUTOBCNTX BIT(0)
240
241
242#define ISR_GPIO3 BIT(6)
243#define ISR_RXNOBUF BIT(3)
244#define ISR_MIBNEARFULL BIT(2)
245#define ISR_SOFTINT BIT(1)
246#define ISR_FETALERR BIT(0)
247
248#define LEDSTS_STS 0x06
249#define LEDSTS_TMLEN 0x78
250#define LEDSTS_OFF 0x00
251#define LEDSTS_ON 0x02
252#define LEDSTS_SLOW 0x04
253#define LEDSTS_INTER 0x06
254
255
256#define ISR_WATCHDOG BIT(7)
257#define ISR_SOFTTIMER BIT(6)
258#define ISR_GPIO0 BIT(5)
259#define ISR_TBTT BIT(4)
260#define ISR_RXDMA0 BIT(3)
261#define ISR_BNTX BIT(2)
262#define ISR_ACTX BIT(0)
263
264
265#define PSCFG_PHILIPMD BIT(6)
266#define PSCFG_WAKECALEN BIT(5)
267#define PSCFG_WAKETMREN BIT(4)
268#define PSCFG_BBPSPROG BIT(3)
269#define PSCFG_WAKESYN BIT(2)
270#define PSCFG_SLEEPSYN BIT(1)
271#define PSCFG_AUTOSLEEP BIT(0)
272
273
274#define PSCTL_WAKEDONE BIT(5)
275#define PSCTL_PS BIT(4)
276#define PSCTL_GO2DOZE BIT(3)
277#define PSCTL_LNBCN BIT(2)
278#define PSCTL_ALBCN BIT(1)
279#define PSCTL_PSEN BIT(0)
280
281
282#define PSSIG_WPE3 BIT(7)
283#define PSSIG_WPE2 BIT(6)
284#define PSSIG_WPE1 BIT(5)
285#define PSSIG_WRADIOPE BIT(4)
286#define PSSIG_SPE3 BIT(3)
287#define PSSIG_SPE2 BIT(2)
288#define PSSIG_SPE1 BIT(1)
289#define PSSIG_SRADIOPE BIT(0)
290
291
292#define BBREGCTL_DONE BIT(2)
293#define BBREGCTL_REGR BIT(1)
294#define BBREGCTL_REGW BIT(0)
295
296
297#define IFREGCTL_DONE BIT(2)
298#define IFREGCTL_IFRF BIT(1)
299#define IFREGCTL_REGW BIT(0)
300
301
302#define SOFTPWRCTL_RFLEOPT BIT(3)
303#define SOFTPWRCTL_TXPEINV BIT(1)
304#define SOFTPWRCTL_SWPECTI BIT(0)
305#define SOFTPWRCTL_SWPAPE BIT(5)
306#define SOFTPWRCTL_SWCALEN BIT(4)
307#define SOFTPWRCTL_SWRADIO_PE BIT(3)
308#define SOFTPWRCTL_SWPE2 BIT(2)
309#define SOFTPWRCTL_SWPE1 BIT(1)
310#define SOFTPWRCTL_SWPE3 BIT(0)
311
312
313#define GPIO3_MD BIT(5)
314#define GPIO3_DATA BIT(6)
315#define GPIO3_INTMD BIT(7)
316
317
318#define MISCFFCTL_WRITE BIT(0)
319
320
321#define MAC_LB_EXT BIT(1)
322#define MAC_LB_INTERNAL BIT(0)
323#define MAC_LB_NONE 0x00
324
325
326#define PKT_TYPE_NONE 0x00
327#define PKT_TYPE_ALL_MULTICAST BIT(7)
328#define PKT_TYPE_PROMISCUOUS BIT(6)
329#define PKT_TYPE_DIRECTED BIT(5)
330#define PKT_TYPE_BROADCAST BIT(4)
331#define PKT_TYPE_MULTICAST BIT(3)
332#define PKT_TYPE_ERROR_WPA BIT(2)
333#define PKT_TYPE_ERROR_CRC BIT(1)
334#define PKT_TYPE_BSSID BIT(0)
335
336#define DEFAULT_BI 0x200
337
338
339#define MISCFIFO_KEYETRY0 32
340#define MISCFIFO_KEYENTRYSIZE 22
341
342#define MAC_REVISION_A0 0x00
343#define MAC_REVISION_A1 0x01
344
345struct vnt_mac_set_key {
346 union {
347 struct {
348 u8 addr[ETH_ALEN];
349 __le16 key_ctl;
350 } write __packed;
351 u32 swap[2];
352 } u;
353 u8 key[WLAN_KEY_LEN_CCMP];
354} __packed;
355
356int vnt_mac_set_filter(struct vnt_private *priv, u64 mc_filter);
357int vnt_mac_shutdown(struct vnt_private *priv);
358int vnt_mac_set_bb_type(struct vnt_private *priv, u8 type);
359int vnt_mac_disable_keyentry(struct vnt_private *priv, u8 entry_idx);
360int vnt_mac_set_keyentry(struct vnt_private *priv, u16 key_ctl, u32 entry_idx,
361 u32 key_idx, u8 *addr, u8 *key);
362int vnt_mac_reg_bits_off(struct vnt_private *priv, u8 reg_ofs, u8 bits);
363int vnt_mac_reg_bits_on(struct vnt_private *priv, u8 reg_ofs, u8 bits);
364int vnt_mac_write_word(struct vnt_private *priv, u8 reg_ofs, u16 word);
365int vnt_mac_set_bssid_addr(struct vnt_private *priv, u8 *addr);
366int vnt_mac_enable_protect_mode(struct vnt_private *priv);
367int vnt_mac_disable_protect_mode(struct vnt_private *priv);
368int vnt_mac_enable_barker_preamble_mode(struct vnt_private *priv);
369int vnt_mac_disable_barker_preamble_mode(struct vnt_private *priv);
370int vnt_mac_set_beacon_interval(struct vnt_private *priv, u16 interval);
371int vnt_mac_set_led(struct vnt_private *privpriv, u8 state, u8 led);
372
373#endif
374