| @@ -1,419 +1,37 @@ | | | @@ -1,419 +1,37 @@ |
1 | /* $NetBSD: ulpt_at_usb.c,v 1.2 2010/03/01 13:12:20 pooka Exp $ */ | | 1 | /* $NetBSD: ulpt_at_usb.c,v 1.3 2010/03/08 10:30:17 pooka Exp $ */ |
2 | | | | |
3 | /* | | | |
4 | * MACHINE GENERATED: DO NOT EDIT | | | |
5 | * | | | |
6 | * ioconf.c, from "TESTI_ulpt" | | | |
7 | */ | | | |
8 | | | 2 | |
9 | #include <sys/param.h> | | 3 | #include <sys/param.h> |
10 | #include <sys/conf.h> | | 4 | #include <sys/conf.h> |
11 | #include <sys/device.h> | | 5 | #include <sys/device.h> |
12 | #include <sys/mount.h> | | 6 | #include <sys/mount.h> |
13 | #include <sys/stat.h> | | 7 | #include <sys/stat.h> |
14 | | | 8 | |
15 | static const struct cfiattrdata gpibdevcf_iattrdata = { | | 9 | #include "ioconf.c" |
16 | "gpibdev", 1, | | | |
17 | { | | | |
18 | { "address", "-1", -1 }, | | | |
19 | } | | | |
20 | }; | | | |
21 | static const struct cfiattrdata acpibuscf_iattrdata = { | | | |
22 | "acpibus", 0, { | | | |
23 | { NULL, NULL, 0 }, | | | |
24 | } | | | |
25 | }; | | | |
26 | static const struct cfiattrdata caccf_iattrdata = { | | | |
27 | "cac", 1, | | | |
28 | { | | | |
29 | { "unit", "-1", -1 }, | | | |
30 | } | | | |
31 | }; | | | |
32 | static const struct cfiattrdata spicf_iattrdata = { | | | |
33 | "spi", 1, | | | |
34 | { | | | |
35 | { "slave", "NULL", 0 }, | | | |
36 | } | | | |
37 | }; | | | |
38 | static const struct cfiattrdata radiodevcf_iattrdata = { | | | |
39 | "radiodev", 0, { | | | |
40 | { NULL, NULL, 0 }, | | | |
41 | } | | | |
42 | }; | | | |
43 | static const struct cfiattrdata mlxcf_iattrdata = { | | | |
44 | "mlx", 1, | | | |
45 | { | | | |
46 | { "unit", "-1", -1 }, | | | |
47 | } | | | |
48 | }; | | | |
49 | static const struct cfiattrdata ucombuscf_iattrdata = { | | | |
50 | "ucombus", 1, | | | |
51 | { | | | |
52 | { "portno", "-1", -1 }, | | | |
53 | } | | | |
54 | }; | | | |
55 | static const struct cfiattrdata videobuscf_iattrdata = { | | | |
56 | "videobus", 0, { | | | |
57 | { NULL, NULL, 0 }, | | | |
58 | } | | | |
59 | }; | | | |
60 | static const struct cfiattrdata isabuscf_iattrdata = { | | | |
61 | "isabus", 0, { | | | |
62 | { NULL, NULL, 0 }, | | | |
63 | } | | | |
64 | }; | | | |
65 | static const struct cfiattrdata i2cbuscf_iattrdata = { | | | |
66 | "i2cbus", 0, { | | | |
67 | { NULL, NULL, 0 }, | | | |
68 | } | | | |
69 | }; | | | |
70 | static const struct cfiattrdata ata_hlcf_iattrdata = { | | | |
71 | "ata_hl", 1, | | | |
72 | { | | | |
73 | { "drive", "-1", -1 }, | | | |
74 | } | | | |
75 | }; | | | |
76 | static const struct cfiattrdata depcacf_iattrdata = { | | | |
77 | "depca", 0, { | | | |
78 | { NULL, NULL, 0 }, | | | |
79 | } | | | |
80 | }; | | | |
81 | static const struct cfiattrdata ppbuscf_iattrdata = { | | | |
82 | "ppbus", 0, { | | | |
83 | { NULL, NULL, 0 }, | | | |
84 | } | | | |
85 | }; | | | |
86 | static const struct cfiattrdata eisabuscf_iattrdata = { | | | |
87 | "eisabus", 0, { | | | |
88 | { NULL, NULL, 0 }, | | | |
89 | } | | | |
90 | }; | | | |
91 | static const struct cfiattrdata atapicf_iattrdata = { | | | |
92 | "atapi", 0, { | | | |
93 | { NULL, NULL, 0 }, | | | |
94 | } | | | |
95 | }; | | | |
96 | static const struct cfiattrdata usbroothubifcf_iattrdata = { | | | |
97 | "usbroothubif", 0, { | | | |
98 | { NULL, NULL, 0 }, | | | |
99 | } | | | |
100 | }; | | | |
101 | static const struct cfiattrdata altmemdevcf_iattrdata = { | | | |
102 | "altmemdev", 0, { | | | |
103 | { NULL, NULL, 0 }, | | | |
104 | } | | | |
105 | }; | | | |
106 | static const struct cfiattrdata tcbuscf_iattrdata = { | | | |
107 | "tcbus", 0, { | | | |
108 | { NULL, NULL, 0 }, | | | |
109 | } | | | |
110 | }; | | | |
111 | static const struct cfiattrdata onewirebuscf_iattrdata = { | | | |
112 | "onewirebus", 0, { | | | |
113 | { NULL, NULL, 0 }, | | | |
114 | } | | | |
115 | }; | | | |
116 | static const struct cfiattrdata gpiocf_iattrdata = { | | | |
117 | "gpio", 2, | | | |
118 | { | | | |
119 | { "offset", "-1", -1 }, | | | |
120 | { "mask", "0", 0 }, | | | |
121 | } | | | |
122 | }; | | | |
123 | static const struct cfiattrdata cbbuscf_iattrdata = { | | | |
124 | "cbbus", 0, { | | | |
125 | { NULL, NULL, 0 }, | | | |
126 | } | | | |
127 | }; | | | |
128 | static const struct cfiattrdata gpiobuscf_iattrdata = { | | | |
129 | "gpiobus", 0, { | | | |
130 | { NULL, NULL, 0 }, | | | |
131 | } | | | |
132 | }; | | | |
133 | static const struct cfiattrdata drmcf_iattrdata = { | | | |
134 | "drm", 0, { | | | |
135 | { NULL, NULL, 0 }, | | | |
136 | } | | | |
137 | }; | | | |
138 | static const struct cfiattrdata pckbportcf_iattrdata = { | | | |
139 | "pckbport", 1, | | | |
140 | { | | | |
141 | { "slot", "-1", -1 }, | | | |
142 | } | | | |
143 | }; | | | |
144 | static const struct cfiattrdata irbuscf_iattrdata = { | | | |
145 | "irbus", 0, { | | | |
146 | { NULL, NULL, 0 }, | | | |
147 | } | | | |
148 | }; | | | |
149 | static const struct cfiattrdata aaccf_iattrdata = { | | | |
150 | "aac", 1, | | | |
151 | { | | | |
152 | { "unit", "-1", -1 }, | | | |
153 | } | | | |
154 | }; | | | |
155 | static const struct cfiattrdata pcibuscf_iattrdata = { | | | |
156 | "pcibus", 1, | | | |
157 | { | | | |
158 | { "bus", "-1", -1 }, | | | |
159 | } | | | |
160 | }; | | | |
161 | static const struct cfiattrdata usbififcf_iattrdata = { | | | |
162 | "usbifif", 6, | | | |
163 | { | | | |
164 | { "port", "-1", -1 }, | | | |
165 | { "configuration", "-1", -1 }, | | | |
166 | { "interface", "-1", -1 }, | | | |
167 | { "vendor", "-1", -1 }, | | | |
168 | { "product", "-1", -1 }, | | | |
169 | { "release", "-1", -1 }, | | | |
170 | } | | | |
171 | }; | | | |
172 | static const struct cfiattrdata upccf_iattrdata = { | | | |
173 | "upc", 1, | | | |
174 | { | | | |
175 | { "offset", "-1", -1 }, | | | |
176 | } | | | |
177 | }; | | | |
178 | static const struct cfiattrdata iiccf_iattrdata = { | | | |
179 | "iic", 2, | | | |
180 | { | | | |
181 | { "addr", "-1", -1 }, | | | |
182 | { "size", "-1", -1 }, | | | |
183 | } | | | |
184 | }; | | | |
185 | static const struct cfiattrdata onewirecf_iattrdata = { | | | |
186 | "onewire", 0, { | | | |
187 | { NULL, NULL, 0 }, | | | |
188 | } | | | |
189 | }; | | | |
190 | static const struct cfiattrdata mcabuscf_iattrdata = { | | | |
191 | "mcabus", 0, { | | | |
192 | { NULL, NULL, 0 }, | | | |
193 | } | | | |
194 | }; | | | |
195 | static const struct cfiattrdata wsdisplaydevcf_iattrdata = { | | | |
196 | "wsdisplaydev", 1, | | | |
197 | { | | | |
198 | { "kbdmux", "1", 1 }, | | | |
199 | } | | | |
200 | }; | | | |
201 | static const struct cfiattrdata miicf_iattrdata = { | | | |
202 | "mii", 1, | | | |
203 | { | | | |
204 | { "phy", "-1", -1 }, | | | |
205 | } | | | |
206 | }; | | | |
207 | static const struct cfiattrdata cpcbuscf_iattrdata = { | | | |
208 | "cpcbus", 2, | | | |
209 | { | | | |
210 | { "addr", "NULL", 0 }, | | | |
211 | { "irq", "-1", -1 }, | | | |
212 | } | | | |
213 | }; | | | |
214 | static const struct cfiattrdata parportcf_iattrdata = { | | | |
215 | "parport", 0, { | | | |
216 | { NULL, NULL, 0 }, | | | |
217 | } | | | |
218 | }; | | | |
219 | static const struct cfiattrdata dbcoolcf_iattrdata = { | | | |
220 | "dbcool", 0, { | | | |
221 | { NULL, NULL, 0 }, | | | |
222 | } | | | |
223 | }; | | | |
224 | static const struct cfiattrdata usbdevifcf_iattrdata = { | | | |
225 | "usbdevif", 6, | | | |
226 | { | | | |
227 | { "port", "-1", -1 }, | | | |
228 | { "configuration", "-1", -1 }, | | | |
229 | { "interface", "-1", -1 }, | | | |
230 | { "vendor", "-1", -1 }, | | | |
231 | { "product", "-1", -1 }, | | | |
232 | { "release", "-1", -1 }, | | | |
233 | } | | | |
234 | }; | | | |
235 | static const struct cfiattrdata wskbddevcf_iattrdata = { | | | |
236 | "wskbddev", 2, | | | |
237 | { | | | |
238 | { "console", "-1", -1 }, | | | |
239 | { "mux", "1", 1 }, | | | |
240 | } | | | |
241 | }; | | | |
242 | static const struct cfiattrdata audiobuscf_iattrdata = { | | | |
243 | "audiobus", 0, { | | | |
244 | { NULL, NULL, 0 }, | | | |
245 | } | | | |
246 | }; | | | |
247 | static const struct cfiattrdata btbuscf_iattrdata = { | | | |
248 | "btbus", 0, { | | | |
249 | { NULL, NULL, 0 }, | | | |
250 | } | | | |
251 | }; | | | |
252 | static const struct cfiattrdata midibuscf_iattrdata = { | | | |
253 | "midibus", 0, { | | | |
254 | { NULL, NULL, 0 }, | | | |
255 | } | | | |
256 | }; | | | |
257 | static const struct cfiattrdata vmebuscf_iattrdata = { | | | |
258 | "vmebus", 0, { | | | |
259 | { NULL, NULL, 0 }, | | | |
260 | } | | | |
261 | }; | | | |
262 | static const struct cfiattrdata wsemuldisplaydevcf_iattrdata = { | | | |
263 | "wsemuldisplaydev", 2, | | | |
264 | { | | | |
265 | { "console", "-1", -1 }, | | | |
266 | { "kbdmux", "1", 1 }, | | | |
267 | } | | | |
268 | }; | | | |
269 | static const struct cfiattrdata uhidbuscf_iattrdata = { | | | |
270 | "uhidbus", 1, | | | |
271 | { | | | |
272 | { "reportid", "-1", -1 }, | | | |
273 | } | | | |
274 | }; | | | |
275 | static const struct cfiattrdata icpcf_iattrdata = { | | | |
276 | "icp", 1, | | | |
277 | { | | | |
278 | { "unit", "-1", -1 }, | | | |
279 | } | | | |
280 | }; | | | |
281 | static const struct cfiattrdata sdmmcbuscf_iattrdata = { | | | |
282 | "sdmmcbus", 0, { | | | |
283 | { NULL, NULL, 0 }, | | | |
284 | } | | | |
285 | }; | | | |
286 | static const struct cfiattrdata comcf_iattrdata = { | | | |
287 | "com", 0, { | | | |
288 | { NULL, NULL, 0 }, | | | |
289 | } | | | |
290 | }; | | | |
291 | static const struct cfiattrdata spiflashbuscf_iattrdata = { | | | |
292 | "spiflashbus", 0, { | | | |
293 | { NULL, NULL, 0 }, | | | |
294 | } | | | |
295 | }; | | | |
296 | static const struct cfiattrdata fwbuscf_iattrdata = { | | | |
297 | "fwbus", 0, { | | | |
298 | { NULL, NULL, 0 }, | | | |
299 | } | | | |
300 | }; | | | |
301 | static const struct cfiattrdata pcmciaslotcf_iattrdata = { | | | |
302 | "pcmciaslot", 0, { | | | |
303 | { NULL, NULL, 0 }, | | | |
304 | } | | | |
305 | }; | | | |
306 | static const struct cfiattrdata usbuscf_iattrdata = { | | | |
307 | "usbus", 0, { | | | |
308 | { NULL, NULL, 0 }, | | | |
309 | } | | | |
310 | }; | | | |
311 | static const struct cfiattrdata wsmousedevcf_iattrdata = { | | | |
312 | "wsmousedev", 1, | | | |
313 | { | | | |
314 | { "mux", "0", 0 }, | | | |
315 | } | | | |
316 | }; | | | |
317 | static const struct cfiattrdata scsicf_iattrdata = { | | | |
318 | "scsi", 1, | | | |
319 | { | | | |
320 | { "channel", "-1", -1 }, | | | |
321 | } | | | |
322 | }; | | | |
323 | static const struct cfiattrdata atacf_iattrdata = { | | | |
324 | "ata", 1, | | | |
325 | { | | | |
326 | { "channel", "-1", -1 }, | | | |
327 | } | | | |
328 | }; | | | |
329 | static const struct cfiattrdata spibuscf_iattrdata = { | | | |
330 | "spibus", 0, { | | | |
331 | { NULL, NULL, 0 }, | | | |
332 | } | | | |
333 | }; | | | |
334 | static const struct cfiattrdata pcmciabuscf_iattrdata = { | | | |
335 | "pcmciabus", 2, | | | |
336 | { | | | |
337 | { "controller", "-1", -1 }, | | | |
338 | { "socket", "-1", -1 }, | | | |
339 | } | | | |
340 | }; | | | |
341 | | | | |
342 | static const struct cfiattrdata * const usb_attrs[] = { &usbroothubifcf_iattrdata, NULL }; | | | |
343 | CFDRIVER_DECL(usb, DV_DULL, usb_attrs); | | | |
344 | | | | |
345 | static const struct cfiattrdata * const uhub_attrs[] = { &usbififcf_iattrdata, &usbdevifcf_iattrdata, NULL }; | | | |
346 | CFDRIVER_DECL(uhub, DV_DULL, uhub_attrs); | | | |
347 | | | | |
348 | CFDRIVER_DECL(ulpt, DV_DULL, NULL); | | | |
349 | | | | |
350 | | | | |
351 | extern struct cfattach usb_ca; | | | |
352 | extern struct cfattach uroothub_ca; | | | |
353 | extern struct cfattach ulpt_ca; | | | |
354 | | | | |
355 | /* locators */ | | | |
356 | static int loc[6] = { | | | |
357 | -1, -1, -1, -1, -1, -1, | | | |
358 | }; | | | |
359 | | | | |
360 | static const struct cfparent pspec1 = { | | | |
361 | "usbus", "rumpusbhc", DVUNIT_ANY | | | |
362 | }; | | | |
363 | static const struct cfparent pspec2 = { | | | |
364 | "usbroothubif", "usb", DVUNIT_ANY | | | |
365 | }; | | | |
366 | static const struct cfparent pspec3 = { | | | |
367 | "usbifif", "uhub", DVUNIT_ANY | | | |
368 | }; | | | |
369 | | | | |
370 | #define NORM FSTATE_NOTFOUND | | | |
371 | #define STAR FSTATE_STAR | | | |
372 | | | | |
373 | struct cfdata cfdata_ulpt[] = { | | | |
374 | /* driver attachment unit state loc flags pspec */ | | | |
375 | /* 0: usb* at rumpusbhc? */ | | | |
376 | { "usb", "usb", 0, STAR, loc, 0, &pspec1 }, | | | |
377 | /* 1: uhub* at usb? */ | | | |
378 | { "uhub", "uroothub", 0, STAR, loc, 0, &pspec2 }, | | | |
379 | /* 2: ulpt* at uhub? port -1 configuration -1 interface -1 vendor -1 product -1 release -1 */ | | | |
380 | { "ulpt", "ulpt", 0, STAR, loc+ 0, 0, &pspec3 }, | | | |
381 | { NULL, NULL, 0, 0, NULL, 0, NULL } | | | |
382 | }; | | | |
383 | | | 10 | |
384 | #include "rump_private.h" | | 11 | #include "rump_private.h" |
385 | #include "rump_dev_private.h" | | 12 | #include "rump_dev_private.h" |
386 | #include "rump_vfs_private.h" | | 13 | #include "rump_vfs_private.h" |
387 | | | 14 | |
388 | #define FLAWLESSCALL(call) \ | | 15 | #define FLAWLESSCALL(call) \ |
389 | do { \ | | 16 | do { \ |
390 | int att_error; \ | | 17 | int att_error; \ |
391 | if ((att_error = call) != 0) \ | | 18 | if ((att_error = call) != 0) \ |
392 | panic("\"%s\" failed", #call); \ | | 19 | panic("\"%s\" failed", #call); \ |
393 | } while (/*CONSTCOND*/0) | | 20 | } while (/*CONSTCOND*/0) |
394 | | | 21 | |
395 | RUMP_COMPONENT(RUMP_COMPONENT_DEV) | | 22 | RUMP_COMPONENT(RUMP_COMPONENT_DEV) |
396 | { | | 23 | { |
397 | extern struct cfattach usb_ca, uhub_ca, uroothub_ca, ulpt_ca; | | | |
398 | extern struct cdevsw ulpt_cdevsw; | | 24 | extern struct cdevsw ulpt_cdevsw; |
399 | devmajor_t bmaj, cmaj; | | 25 | devmajor_t bmaj, cmaj; |
400 | | | 26 | |
401 | FLAWLESSCALL(config_cfdata_attach(cfdata_ulpt, 0)); | | 27 | FLAWLESSCALL(config_cfdata_attach(cfdata_ulpt, 0)); |
402 | | | 28 | |
403 | FLAWLESSCALL(config_cfdriver_attach(&usb_cd)); | | | |
404 | FLAWLESSCALL(config_cfattach_attach("usb", &usb_ca)); | | | |
405 | | | | |
406 | FLAWLESSCALL(config_cfdriver_attach(&uhub_cd)); | | | |
407 | FLAWLESSCALL(config_cfattach_attach("uhub", &uhub_ca)); | | | |
408 | | | | |
409 | FLAWLESSCALL(config_cfdriver_attach(&ulpt_cd)); | | 29 | FLAWLESSCALL(config_cfdriver_attach(&ulpt_cd)); |
410 | FLAWLESSCALL(config_cfattach_attach("ulpt", &ulpt_ca)); | | 30 | FLAWLESSCALL(config_cfattach_attach("ulpt", &ulpt_ca)); |
411 | | | 31 | |
412 | FLAWLESSCALL(config_cfattach_attach("uhub", &uroothub_ca)); | | | |
413 | | | | |
414 | bmaj = cmaj = -1; | | 32 | bmaj = cmaj = -1; |
415 | FLAWLESSCALL(devsw_attach("ulpt", NULL, &bmaj, &ulpt_cdevsw, &cmaj)); | | 33 | FLAWLESSCALL(devsw_attach("ulpt", NULL, &bmaj, &ulpt_cdevsw, &cmaj)); |
416 | | | 34 | |
417 | FLAWLESSCALL(rump_vfs_makedevnodes(S_IFCHR, "/dev/ulpt", '0', | | 35 | FLAWLESSCALL(rump_vfs_makedevnodes(S_IFCHR, "/dev/ulpt", '0', |
418 | cmaj, 0, 1)); | | 36 | cmaj, 0, 1)); |
419 | } | | 37 | } |