kernel - All lwkt thread now start out mpsafe part 1/2
[dragonfly.git] / sys / dev / netif / iwl / iwl2100reg.h
1 /*
2  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
3  * 
4  * This code is derived from software contributed to The DragonFly Project
5  * by Sepherosa Ziehau <sepherosa@gmail.com>
6  * 
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  * 3. Neither the name of The DragonFly Project nor the names of its
18  *    contributors may be used to endorse or promote products derived
19  *    from this software without specific, prior written permission.
20  * 
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
25  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
31  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  * 
34  * $DragonFly: src/sys/dev/netif/iwl/iwl2100reg.h,v 1.1 2008/03/05 14:10:39 sephe Exp $
35  */
36
37 #ifndef _IWL2100REG_H
38 #define _IWL2100REG_H
39
40 #include "if_iwlreg.h"
41
42 #define IWL2100_NOISE_FLOOR             -98
43
44 #define IWL2100_RTS_MAX                 2304
45
46 /*
47  * PCI configuration registers
48  */
49 #define IWL2100_PCIR_RETRY_TIMEOUT      0x41
50
51 /*
52  * EEPROM offsets
53  */
54 #define IWL2100_EEPROM_MAC              0x21
55 #define IWL2100_EEPROM_IBSS_CHANS       0x25
56 #define IWL2100_EEPROM_CHANS            0x37
57
58 /*
59  * Registers and values
60  */
61 #define IWL2100_INTR_STATUS             0x08
62 #define IWL2100_INTR_MASK               0x0c
63 #define IWL2100_INTR_TX                 0x00000001
64 #define IWL2100_INTR_RX                 0x00000002
65 #define IWL2100_INTR_STATE_CHG          0x00000010
66 #define IWL2100_INTR_CMD_DONE           0x00010000
67 #define IWL2100_INTR_FW_INITED          0x01000000
68 #define IWL2100_INTR_EFATAL             0x40000000
69 #define IWL2100_INTR_EPARITY            0x80000000
70 #define IWL2100_INTRS                   \
71         (IWL2100_INTR_TX |              \
72          IWL2100_INTR_RX |              \
73          IWL2100_INTR_STATE_CHG |       \
74          IWL2100_INTR_CMD_DONE |        \
75          IWL2100_INTR_FW_INITED |       \
76          IWL2100_INTR_EFATAL |          \
77          IWL2100_INTR_EPARITY)
78
79 #define IWL2100_IND_ADDR                IWL_IND_ADDR
80 #define IWL2100_IND_DATA                IWL_IND_DATA
81
82 #define IWL2100_AUTOINC_ADDR            0x18
83 #define IWL2100_AUTOINC_DATA            0x1c
84
85 #define IWL2100_RESET                   0x20
86 #define IWL2100_RESET_DONE              0x001
87 #define IWL2100_RESET_SW                0x080
88 #define IWL2100_RESET_MASTER_STOPPED    0x100
89 #define IWL2100_RESET_STOP_MASTER       0x200
90
91 #define IWL2100_CTRL                    0x24
92 #define IWL2100_CTRL_INITDONE           0x04
93 #define IWL2100_CTRL_STANDBY            0x02
94 #define IWL2100_CTRL_CLKREADY           0x01
95
96 #define IWL2100_GPIO                    0x30
97 #define IWL2100_GPIO_1_FWWR             0x00004
98 #define IWL2100_GPIO_1_EN               0x00008
99 #define IWL2100_GPIO_3_FWWR             0x00040
100 #define IWL2100_GPIO_3_EN               0x00080
101 #define IWL2100_GPIO_LEDOFF             0x02000
102 #define IWL2100_GPIO_RFKILLED           0x10000
103
104 #define IWL2100_TXQ_ADDR                0x200
105 #define IWL2100_TXQ_SIZE                0x204
106 #define IWL2100_TXQ_READ_IDX            0x280
107 #define IWL2100_TXQ_WRITE_IDX           0xf80
108
109 #define IWL2100_RXQ_ADDR                0x240
110 #define IWL2100_RX_STATUS_ADDR          0x244
111 #define IWL2100_RXQ_SIZE                0x248
112 #define IWL2100_RXQ_READ_IDX            0x2a0
113 #define IWL2100_RXQ_WRITE_IDX           0xfa0
114
115 #define IWL2100_ORD1_ADDR               0x380
116 #define IWL2100_ORD2_ADDR               0x384
117
118 /*
119  * Indirect registers and values
120  */
121 #define IWL2100_IND_CTRL                0x220000
122
123 #define IWL2100_IND_ERROR_INFO          0x2a7f0
124 #define IWL2100_IND_ERRORADDR_MASK      0x3ffff
125
126 #define IWL2100_IND_HALT                0x3000e0
127 #define IWL2100_IND_HALT_HOLD           0x80000000
128
129 /*
130  * Shared memory
131  */
132 #define IWL2100_SHMEM0                  0x2f200
133 #define IWL2100_SHMEM0_SIZE             0x310
134
135 #define IWL2100_SHMEM1                  0x2f610
136 #define IWL2100_SHMEM1_SIZE             0x20
137
138 #define IWL2100_SHMEM2                  0x2fa00
139 #define IWL2100_SHMEM2_SIZE             0x20
140
141 #define IWL2100_SHMEM3                  0x2fc00
142 #define IWL2100_SHMEM3_SIZE             0x10
143
144 #define IWL2100_SHMEM_INTR              0x2ff80
145 #define IWL2100_SHMEM_INTR_SIZE         0x80
146
147 /*
148  * Offsets within ORDINAL1
149  */
150 #define IWL2100_ORD1_FWLOCK             120
151 #define IWL2100_ORD1_CONF_START         157
152 #define IWL2100_ORD1_TXRATE             192
153 #define IWL2100_ORD1_DBADDR             204
154
155 /*
156  * Offsets within ORDINAL2
157  */
158 #define IWL2100_ORD2_BSSID              14
159
160 /*
161  * Firmware commands
162  */
163 #define IWL2100_CMD_CONF_DONE           2
164 #define IWL2100_CMD_SET_80211           6
165 #define  IWL2100_CFG_MONITOR            0x00004
166 #define  IWL2100_CFG_AUTO_PREAMBLE      0x00010
167 #define  IWL2100_CFG_IBSS_AUTO_START    0x00020
168 #define  IWL2100_CFG_ANS_BCAST_PROBE    0x00800
169 #define  IWL2100_CFG_8021X              0x04000
170 #define  IWL2100_CFG_STA                0x08000
171 #define  IWL2100_CFG_IBSS               0x10000
172 #define  IWL2100_CFG_CHANMASK           0x3fff
173 #define IWL2100_CMD_SET_ESSID           8
174 #define IWL2100_CMD_SET_BSSID           9
175 #define IWL2100_CMD_SET_ADDR            11
176 #define IWL2100_CMD_SET_OPMODE          12
177 #define  IWL2100_OPMODE_STA             1
178 #define  IWL2100_OPMODE_MONITOR         2
179 #define  IWL2100_OPMODE_IBSS            3
180 #define IWL2100_CMD_SET_CHAN            14
181 #define IWL2100_CMD_SET_RTSTHRESHOLD    15
182 #define IWL2100_CMD_SET_POWERSAVE       17
183 #define IWL2100_CMD_SET_TXRATES         18
184 #define IWL2100_CMD_SET_BASICRATES      19
185 #define IWL2100_CMD_SET_WEPKEY          20
186 #define IWL2100_CMD_SET_WEPTXKEY        25
187 #define IWL2100_CMD_SET_PRIVACY         26
188 #define  IWL2100_PRIVACY_ENABLE         0x8
189 #define IWL2100_CMD_SET_BINTVAL         29
190 #define IWL2100_CMD_TX_DATA             33
191 #define IWL2100_CMD_SET_TXPOWER         36
192 #define IWL2100_CMD_SCAN                43
193 #define IWL2100_CMD_CONF_START          44
194 #define IWL2100_CMD_SET_SCANOPT         46
195 #define  IWL2100_SCANOPT_NOASSOC        (1 << 0)
196 #define  IWL2100_SCANOPT_MIXED          (1 << 1)
197 #define  IWL2100_SCANOPT_PASSIVE        (1 << 3)
198 #define IWL2100_CMD_SET_MSDU_TXRATES    62
199 #define IWL2100_CMD_SET_SECURITY        67
200 #define IWL2100_CMD_SET_IE              69
201
202 #endif  /* !_IWL2100REG_H */