xref: /openbmc/linux/include/pcmcia/device_id.h (revision b627b4ed)
1 /*
2  * device_id.h -- PCMCIA driver matching helpers
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * (C) 2003 - 2004	David Woodhouse
9  * (C) 2003 - 2004	Dominik Brodowski
10  */
11 
12 #ifndef _LINUX_PCMCIA_DEVICE_ID_H
13 #define _LINUX_PCMCIA_DEVICE_ID_H
14 
15 #ifdef __KERNEL__
16 
17 #define PCMCIA_DEVICE_MANF_CARD(manf, card) { \
18 	.match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
19 			PCMCIA_DEV_ID_MATCH_CARD_ID, \
20 	.manf_id = (manf), \
21 	.card_id = (card), }
22 
23 #define PCMCIA_DEVICE_FUNC_ID(func) { \
24 	.match_flags = PCMCIA_DEV_ID_MATCH_FUNC_ID, \
25 	.func_id = (func), }
26 
27 #define PCMCIA_DEVICE_PROD_ID1(v1, vh1) { \
28 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1, \
29 	.prod_id = { (v1), NULL, NULL, NULL }, \
30 	.prod_id_hash = { (vh1), 0, 0, 0 }, }
31 
32 #define PCMCIA_DEVICE_PROD_ID2(v2, vh2) { \
33 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2, \
34 	.prod_id = { NULL, (v2), NULL, NULL },  \
35 	.prod_id_hash = { 0, (vh2), 0, 0 }, }
36 
37 #define PCMCIA_DEVICE_PROD_ID12(v1, v2, vh1, vh2) { \
38 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
39 			PCMCIA_DEV_ID_MATCH_PROD_ID2, \
40 	.prod_id = { (v1), (v2), NULL, NULL }, \
41 	.prod_id_hash = { (vh1), (vh2), 0, 0 }, }
42 
43 #define PCMCIA_DEVICE_PROD_ID13(v1, v3, vh1, vh3) { \
44 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
45 			PCMCIA_DEV_ID_MATCH_PROD_ID3, \
46 	.prod_id = { (v1), NULL, (v3), NULL }, \
47 	.prod_id_hash = { (vh1), 0, (vh3), 0 }, }
48 
49 #define PCMCIA_DEVICE_PROD_ID14(v1, v4, vh1, vh4) { \
50 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
51 			PCMCIA_DEV_ID_MATCH_PROD_ID4, \
52 	.prod_id = { (v1), NULL, NULL, (v4) }, \
53 	.prod_id_hash = { (vh1), 0, 0, (vh4) }, }
54 
55 #define PCMCIA_DEVICE_PROD_ID123(v1, v2, v3, vh1, vh2, vh3) { \
56 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
57 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
58 			PCMCIA_DEV_ID_MATCH_PROD_ID3, \
59 	.prod_id = { (v1), (v2), (v3), NULL },\
60 	.prod_id_hash = { (vh1), (vh2), (vh3), 0 }, }
61 
62 #define PCMCIA_DEVICE_PROD_ID124(v1, v2, v4, vh1, vh2, vh4) { \
63 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
64 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
65 			PCMCIA_DEV_ID_MATCH_PROD_ID4, \
66 	.prod_id = { (v1), (v2), NULL, (v4) }, \
67 	.prod_id_hash = { (vh1), (vh2), 0, (vh4) }, }
68 
69 #define PCMCIA_DEVICE_PROD_ID134(v1, v3, v4, vh1, vh3, vh4) { \
70 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
71 			PCMCIA_DEV_ID_MATCH_PROD_ID3| \
72 			PCMCIA_DEV_ID_MATCH_PROD_ID4, \
73 	.prod_id = { (v1), NULL, (v3), (v4) }, \
74 	.prod_id_hash = { (vh1), 0, (vh3), (vh4) }, }
75 
76 #define PCMCIA_DEVICE_PROD_ID1234(v1, v2, v3, v4, vh1, vh2, vh3, vh4) { \
77 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
78 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
79 			PCMCIA_DEV_ID_MATCH_PROD_ID3| \
80 			PCMCIA_DEV_ID_MATCH_PROD_ID4, \
81 	.prod_id = { (v1), (v2), (v3), (v4) }, \
82 	.prod_id_hash = { (vh1), (vh2), (vh3), (vh4) }, }
83 
84 #define PCMCIA_DEVICE_MANF_CARD_PROD_ID1(manf, card, v1, vh1) { \
85 	.match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
86 			PCMCIA_DEV_ID_MATCH_CARD_ID| \
87 			PCMCIA_DEV_ID_MATCH_PROD_ID1, \
88 	.manf_id = (manf), \
89 	.card_id = (card), \
90 	.prod_id = { (v1), NULL, NULL, NULL }, \
91 	.prod_id_hash = { (vh1), 0, 0, 0 }, }
92 
93 
94 /* multi-function devices */
95 
96 #define PCMCIA_MFC_DEVICE_MANF_CARD(mfc, manf, card) { \
97 	.match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
98 			PCMCIA_DEV_ID_MATCH_CARD_ID| \
99 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
100 	.manf_id = (manf), \
101 	.card_id = (card), \
102 	.function = (mfc), }
103 
104 #define PCMCIA_MFC_DEVICE_PROD_ID1(mfc, v1, vh1) { \
105 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
106 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
107 	.prod_id = { (v1), NULL, NULL, NULL }, \
108 	.prod_id_hash = { (vh1), 0, 0, 0 }, \
109 	.function = (mfc), }
110 
111 #define PCMCIA_MFC_DEVICE_PROD_ID2(mfc, v2, vh2) { \
112 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2| \
113 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
114 	.prod_id = { NULL, (v2), NULL, NULL },  \
115 	.prod_id_hash = { 0, (vh2), 0, 0 }, \
116 	.function = (mfc), }
117 
118 #define PCMCIA_MFC_DEVICE_PROD_ID12(mfc, v1, v2, vh1, vh2) { \
119 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
120 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
121 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
122 	.prod_id = { (v1), (v2), NULL, NULL }, \
123 	.prod_id_hash = { (vh1), (vh2), 0, 0 }, \
124 	.function = (mfc), }
125 
126 #define PCMCIA_MFC_DEVICE_PROD_ID13(mfc, v1, v3, vh1, vh3) { \
127 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
128 			PCMCIA_DEV_ID_MATCH_PROD_ID3| \
129 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
130 	.prod_id = { (v1), NULL, (v3), NULL }, \
131 	.prod_id_hash = { (vh1), 0, (vh3), 0 }, \
132 	.function = (mfc), }
133 
134 #define PCMCIA_MFC_DEVICE_PROD_ID123(mfc, v1, v2, v3, vh1, vh2, vh3) { \
135 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
136 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
137 			PCMCIA_DEV_ID_MATCH_PROD_ID3| \
138 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
139 	.prod_id = { (v1), (v2), (v3), NULL },\
140 	.prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
141 	.function = (mfc), }
142 
143 /* pseudo multi-function devices */
144 
145 #define PCMCIA_PFC_DEVICE_MANF_CARD(mfc, manf, card) { \
146 	.match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
147 			PCMCIA_DEV_ID_MATCH_CARD_ID| \
148 			PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
149 	.manf_id = (manf), \
150 	.card_id = (card), \
151 	.device_no = (mfc), }
152 
153 #define PCMCIA_PFC_DEVICE_PROD_ID1(mfc, v1, vh1) { \
154 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
155 			PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
156 	.prod_id = { (v1), NULL, NULL, NULL }, \
157 	.prod_id_hash = { (vh1), 0, 0, 0 }, \
158 	.device_no = (mfc), }
159 
160 #define PCMCIA_PFC_DEVICE_PROD_ID2(mfc, v2, vh2) { \
161 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2| \
162 			PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
163 	.prod_id = { NULL, (v2), NULL, NULL },  \
164 	.prod_id_hash = { 0, (vh2), 0, 0 }, \
165 	.device_no = (mfc), }
166 
167 #define PCMCIA_PFC_DEVICE_PROD_ID12(mfc, v1, v2, vh1, vh2) { \
168 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
169 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
170 			PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
171 	.prod_id = { (v1), (v2), NULL, NULL }, \
172 	.prod_id_hash = { (vh1), (vh2), 0, 0 }, \
173 	.device_no = (mfc), }
174 
175 #define PCMCIA_PFC_DEVICE_PROD_ID13(mfc, v1, v3, vh1, vh3) { \
176 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
177 			PCMCIA_DEV_ID_MATCH_PROD_ID3| \
178 			PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
179 	.prod_id = { (v1), NULL, (v3), NULL }, \
180 	.prod_id_hash = { (vh1), 0, (vh3), 0 }, \
181 	.device_no = (mfc), }
182 
183 #define PCMCIA_PFC_DEVICE_PROD_ID123(mfc, v1, v2, v3, vh1, vh2, vh3) { \
184 	.match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
185 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
186 			PCMCIA_DEV_ID_MATCH_PROD_ID3| \
187 			PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
188 	.prod_id = { (v1), (v2), (v3), NULL },\
189 	.prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
190 	.device_no = (mfc), }
191 
192 /* cards needing a CIS override */
193 
194 #define PCMCIA_DEVICE_CIS_MANF_CARD(manf, card, _cisfile) { \
195 	.match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
196 			PCMCIA_DEV_ID_MATCH_MANF_ID| \
197 			PCMCIA_DEV_ID_MATCH_CARD_ID, \
198 	.manf_id = (manf), \
199 	.card_id = (card), \
200 	.cisfile = (_cisfile)}
201 
202 #define PCMCIA_DEVICE_CIS_PROD_ID12(v1, v2, vh1, vh2, _cisfile) { \
203 	.match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
204 			PCMCIA_DEV_ID_MATCH_PROD_ID1| \
205 			PCMCIA_DEV_ID_MATCH_PROD_ID2, \
206 	.prod_id = { (v1), (v2), NULL, NULL }, \
207 	.prod_id_hash = { (vh1), (vh2), 0, 0 }, \
208 	.cisfile = (_cisfile)}
209 
210 #define PCMCIA_DEVICE_CIS_PROD_ID123(v1, v2, v3, vh1, vh2, vh3, _cisfile) { \
211 	.match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
212 			PCMCIA_DEV_ID_MATCH_PROD_ID1| \
213 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
214 			PCMCIA_DEV_ID_MATCH_PROD_ID3, \
215 	.prod_id = { (v1), (v2), (v3), NULL },\
216 	.prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
217 	.cisfile = (_cisfile)}
218 
219 
220 #define PCMCIA_DEVICE_CIS_PROD_ID2(v2, vh2, _cisfile) { \
221 	.match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
222 			PCMCIA_DEV_ID_MATCH_PROD_ID2, \
223 	.prod_id = { NULL, (v2), NULL, NULL },  \
224 	.prod_id_hash = { 0, (vh2), 0, 0 }, \
225 	.cisfile = (_cisfile)}
226 
227 #define PCMCIA_PFC_DEVICE_CIS_PROD_ID12(mfc, v1, v2, vh1, vh2, _cisfile) { \
228 	.match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
229 			PCMCIA_DEV_ID_MATCH_PROD_ID1| \
230 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
231 			PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
232 	.prod_id = { (v1), (v2), NULL, NULL }, \
233 	.prod_id_hash = { (vh1), (vh2), 0, 0 },\
234 	.device_no = (mfc), \
235 	.cisfile = (_cisfile)}
236 
237 #define PCMCIA_MFC_DEVICE_CIS_MANF_CARD(mfc, manf, card, _cisfile) { \
238 	.match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
239 			PCMCIA_DEV_ID_MATCH_MANF_ID| \
240 			PCMCIA_DEV_ID_MATCH_CARD_ID| \
241 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
242 	.manf_id = (manf), \
243 	.card_id = (card), \
244 	.function = (mfc), \
245 	.cisfile = (_cisfile)}
246 
247 #define PCMCIA_MFC_DEVICE_CIS_PROD_ID12(mfc, v1, v2, vh1, vh2, _cisfile) { \
248 	.match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
249 			PCMCIA_DEV_ID_MATCH_PROD_ID1| \
250 			PCMCIA_DEV_ID_MATCH_PROD_ID2| \
251 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
252 	.prod_id = { (v1), (v2), NULL, NULL }, \
253 	.prod_id_hash = { (vh1), (vh2), 0, 0 }, \
254 	.function = (mfc), \
255 	.cisfile = (_cisfile)}
256 
257 #define PCMCIA_MFC_DEVICE_CIS_PROD_ID4(mfc, v4, vh4, _cisfile) { \
258 	.match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
259 			PCMCIA_DEV_ID_MATCH_PROD_ID4| \
260 			PCMCIA_DEV_ID_MATCH_FUNCTION, \
261 	.prod_id = { NULL, NULL, NULL, (v4) }, \
262 	.prod_id_hash = { 0, 0, 0, (vh4) }, \
263 	.function = (mfc), \
264 	.cisfile = (_cisfile)}
265 
266 
267 #define PCMCIA_DEVICE_NULL { .match_flags = 0, }
268 
269 #endif /* __KERNEL__ */
270 #endif /* _LINUX_PCMCIA_DEVICE_ID_H */
271