Fri Aug 7 00:10:53 2009 UTC ()
unifdef -U__FreeBSD__ -D__NetBSD__, et cetera.


(dyoung)
diff -r1.32 -r1.33 src/sys/dev/ieee1394/fw_port.h

cvs diff -r1.32 -r1.33 src/sys/dev/ieee1394/Attic/fw_port.h (switch to unified diff)

--- src/sys/dev/ieee1394/Attic/fw_port.h 2009/04/20 09:56:07 1.32
+++ src/sys/dev/ieee1394/Attic/fw_port.h 2009/08/07 00:10:53 1.33
@@ -1,1365 +1,809 @@ @@ -1,1365 +1,809 @@
1/* $NetBSD: fw_port.h,v 1.32 2009/04/20 09:56:07 mschuett Exp $ */ 1/* $NetBSD: fw_port.h,v 1.33 2009/08/07 00:10:53 dyoung Exp $ */
2/* 2/*
3 * Copyright (c) 2004 KIYOHARA Takashi 3 * Copyright (c) 2004 KIYOHARA Takashi
4 * All rights reserved. 4 * All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright 11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the 12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution. 13 * documentation and/or other materials provided with the distribution.
14 * 14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 18 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 23 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE. 25 * POSSIBILITY OF SUCH DAMAGE.
26 *  26 *
27 */ 27 */
28 28
29#ifndef _FW_PORT_H 29#ifndef _FW_PORT_H
30#define _FW_PORT_H 30#define _FW_PORT_H
31 31
32#ifdef _KERNEL 32#ifdef _KERNEL
33 33
34#if defined(__FreeBSD__) 
35#ifdef __DragonFly__ 
36#define OS_STR "DragonFly" 
37#define OS_VER __DragonFly_cc_version 
38#define OS_VER_STR "DragonFly-1" 
39#define PROJECT_STR "DragonFly Project" 
40#else 
41#define OS_STR "FreeBSD" 
42#define OS_VER __FreeBSD_version 
43#define OS_VER_STR "FreeBSD-5" 
44#define PROJECT_STR "FreeBSD Project" 
45#endif 
46 
47#if defined(__DragonFly__) || __FreeBSD_version < 500000 
48#define fw_dev_t dev_t 
49#else 
50#define fw_dev_t struct cdev * 
51#endif 
52 
53#if defined(__DragonFly__) || __FreeBSD_version < 500000 
54#define fw_dev2unit(x) ((minor(x) & 0xff) | (minor(x) >> 8)) 
55#define fw_unit2minor(x) (((x) & 0xff) | (((x) << 8) & ~0xffff)) 
56#else 
57#define fw_dev2unit(x) dev2unit(x) 
58#define fw_unit2minor(x) unit2minor(x) 
59#endif 
60 
61#define fw_timevalcmp(tv1, tv2, op) timevalcmp((tv1), (tv2), op) 
62#define fw_timevalsub(tv1, tv2) timevalsub((tv1), (tv2)) 
63 
64#define fw_get_nameunit(dev) device_get_nameunit((dev)) 
65#define fw_get_unit(dev) device_get_unit((dev)) 
66 
67#define fw_printf(dev, ...) device_printf((dev), __VA_ARGS__) 
68 
69/* atomic macros */ 
70#define fw_atomic_set_int(P, V) atomic_set_int((P), (V)) 
71#define fw_atomic_readandclear_int(p) atomic_readandclear_int((p)) 
72 
73/* mutex macros */ 
74#include <sys/mutex.h> 
75typedef struct mtx fw_mtx_t; 
76#define fw_mtx_init(mutex, name, type, opts) \ 
77 mtx_init(mutex, name, type, opts) 
78#define fw_mtx_lock(mutex) mtx_lock(mutex) 
79#define fw_mtx_unlock(mutex) mtx_unlock(mutex) 
80#define fw_mtx_destroy(mutex) mtx_destroy(mutex) 
81#define fw_mtx_assert(mutex, what) \ 
82 mtx_assert(mutex, what) 
83 
84#define fw_msleep(ident, mtx, priority, wmesg, timo) \ 
85 msleep(ident, mtx, priority, wmesg, timo); 
86 
87/* taskqueue macros */ 
88#include <sys/taskqueue.h> 
89typedef struct task fw_task_t; 
90#define FW_TASK_INIT(task, priority, func, context) \ 
91 TASK_INIT((task), (priority), (func), (context)) 
92#define fw_taskqueue_enqueue(queue, task) \ 
93 taskqueue_enqueue((queue), (task)) 
94#define fw_taskqueue_create_fast(name, mflags, enqueue, taskqueue) \ 
95 taskqueue_create_fast((name), (mflags), (enqueue), (taskqueue)) 
96#define fw_taskqueue_start_threads(taskqueue, n, x, fmt, ...) \ 
97 taskqueue_start_threads((taskqueue), (n), (x), (fmt), ...) 
98 
99/* kthread macros */ 
100#ifdef __DragonFly__ 
101typedef d_thread_t fw_thread_t; 
102typedef d_thread_t fw_proc_t; 
103#define fw_kthread_create(func, arg, newpp, fmt, ...) \ 
104 kthread_create(func, arg, newpp, fmt, __VA_ARGS__) 
105#define fw_kthread_exit(x) kthread_exit() 
106#elif __FreeBSD_version >= 500000 
107typedef struct thread fw_thread_t; 
108typedef struct thread fw_proc_t; 
109#define fw_kthread_create(func, arg, newpp, fmt, ...) \ 
110 kthread_create(func, arg, newpp, 0, 0, fmt, __VA_ARGS__) 
111#define fw_kthread_exit(ecode) kthread_exit((ecode)) 
112#else 
113typedef struct proc fw_thread_t; 
114typedef struct proc fw_proc_t; 
115#define fw_kthread_create(func, arg, newpp, fmt, ...) \ 
116 kproc_create(func, arg, newpp, fmt, __VA_ARGS__) 
117#define fw_kthread_exit(ecode) kproc_exit((ecode)) 
118#endif 
119 
120/* callout macros */ 
121#if defined(__DragonFly__) || __FreeBSD_version < 500000 
122#define fw_callout_init(c) callout_init((c), 0) 
123#else 
124#define fw_callout_init(c) callout_init(c, 1 /* mpsafe */) 
125#endif 
126#define fw_callout_reset(c, ticks, func, arg) \ 
127 callout_reset((c), (ticks), (func), (arg)) 
128#define fw_callout_stop(c) callout_stop((c)) 
129 
130/* bus_dma macros */ 
131typedef bus_dma_tag_t fw_bus_dma_tag_t; 
132#if defined(__FreeBSD__) && __FreeBSD_version >= 501102 
133#define fw_bus_dma_tag_create(t, \ 
134 a, b, laddr, haddr, ffunc, farg, s, ns, mxss, f, lfunc, larg, tp)\ 
135 bus_dma_tag_create((t), (a), (b), (laddr), (haddr), \ 
136 (ffunc), (farg), (s), (ns), (mxss), (f), (lfunc), (larg), (tp)) 
137#else 
138#define fw_bus_dma_tag_create(t, a, b, \ 
139 laddr, haddr, ffunc, farg, s, ns, mxss, f, lfunc, larg, tp) \ 
140 bus_dma_tag_create((t), (a), (b), (laddr), (haddr), \ 
141 (ffunc), (farg), (s), (ns), (mxss), (f), (tp)) 
142#endif 
143#define fw_bus_dma_tag_destroy(t) \ 
144 bus_dma_tag_destroy((t)) 
145#define fw_bus_dmamap_create(t, f, mp) \ 
146 bus_dmamap_create((t), 0, (mp)) 
147#define fw_bus_dmamap_destroy((t), (m)) \ 
148 bus_dmamap_destroy((t), (m)) 
149#define fw_bus_dmamap_load(t, m, b, l, func, a, f) \ 
150 bus_dmamap_load((t), (m), (b), (l), (func), (a), 0) 
151#define fw_bus_dmamap_load_mbuf(t, m, b, func, a, f) \ 
152 bus_dmamap_load((t), (m), (b), (func), (a), 0) 
153#define fw_bus_dmamap_unload(t, m) \ 
154 bus_dmamap_unload((t), (m)) 
155#if __FreeBSD_version < 500000 
156#define fw_bus_dmamap_sync(t, m, op) \ 
157 do { \ 
158 switch ((op)) { \ 
159 (BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE): \ 
160 bus_dmamap_sync((t), (m), BUS_DMASYNC_PREWRITE);\ 
161 bus_dmamap_sync((t), (m), BUS_DMASYNC_PREREAD); \ 
162 break; \ 
163 (BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE): \ 
164 /* BUS_DMASYNC_POSTWRITE is probably a no-op. */\ 
165 bus_dmamap_sync((t), (m), BUS_DMASYNC_POSTREAD);\ 
166 break; \ 
167 default: \ 
168 bus_dmamap_sync((t), (m), (op)); \ 
169 } \ 
170 } while (/*CONSTCOND*/0) 
171#else 
172#define fw_bus_dmamap_sync(t, m, op) \ 
173 bus_dmamap_sync((t), (m), (op)) 
174#endif 
175#define fw_bus_dmamem_alloc(t, vp, f, mp) \ 
176 bus_dmamem_alloc((t), (vp), (f), (mp)) 
177#define fw_bus_dmamem_free(t, v, m) \ 
178 bus_dmamem_free((t), (v), (m)) 
179 
180 
181#define fw_config_pending_incr() 
182#define fw_config_pending_decr() 
183 
184#define splfw() splimp() 
185#define splfwnet() splimp() 
186#define splfwsbp() splcam() 
187 
188#ifdef __DragonFly__ 
189#include <sys/select.h> 
190#elif __FreeBSD_version >= 500000 
191#include <sys/selinfo.h> 
192#else 
193#include <sys/select.h> 
194#endif 
195 
196#define FW_KASSERT(expression, str) \ 
197 KASSERT(expression, str) 
198 
199 
200#ifdef __DragonFly__ 
201#define M_DONTWAIT MB_DONTWAIT 
202#endif 
203 
204 
205/* 
206 * fw attach macro for FreeBSD 
207 */ 
208#define FW_ATTACH(dname) \ 
209 static int \ 
210 __CONCAT(dname,_attach)(device_t dev) 
211#define FW_ATTACH_START(dname, sc, fwa) \ 
212 struct __CONCAT(dname,_softc) *sc = \ 
213 ((struct __CONCAT(dname,_softc) *)device_get_softc(dev)); \ 
214 __unused struct fw_attach_args *fwa = \ 
215 device_get_ivars(dev) 
216#define FW_ATTACH_RETURN(r) return (r) 
217 
218/* 
219 * fw detach macro for FreeBSD 
220 */ 
221#define FW_DETACH(dname) \ 
222 static int \ 
223 __CONCAT(dname,_detach)(device_t dev) 
224#define FW_DETACH_START(dname, sc) \ 
225 struct __CONCAT(dname,_softc) *sc = \ 
226 ((struct __CONCAT(dname,_softc) *)device_get_softc(dev)) 
227 
228/* 
229 * fw open macro for FreeBSD 
230 */ 
231#define FW_OPEN(dname) \ 
232 int \ 
233 __CONCAT(dname,_open)(fw_dev_t dev, int flags, int fmt, fw_proc_t td) 
234#define FW_OPEN_START \ 
235 int unit = DEV2UNIT(dev); \ 
236 __unused struct firewire_softc *sc = \ 
237 devclass_get_softc(firewire_devclass, unit) 
238 
239/* 
240 * fw close macro for FreeBSD 
241 */ 
242#define FW_CLOSE(dname) \ 
243 int \ 
244 __CONCAT(dname,_close)(fw_dev_t dev, int flags, \ 
245 int fmt, fw_proc_t td) 
246#define FW_CLOSE_START 
247 
248/* 
249 * fw read macro for FreeBSD 
250 */ 
251#define FW_READ(dname) \ 
252 int \ 
253 __CONCAT(dname,_read)(fw_dev_t dev, struct uio *uio, int ioflag)  
254#define FW_READ_START 
255 
256/* 
257 * fw write macro for FreeBSD 
258 */ 
259#define FW_WRITE(dname) \ 
260 int \ 
261 __CONCAT(dname,_write)(fw_dev_t dev, struct uio *uio, int ioflag) 
262#define FW_WRITE_START 
263 
264/* 
265 * fw ioctl macro for FreeBSD 
266 */ 
267#define FW_IOCTL(dname) \ 
268 int \ 
269 __CONCAT(dname,_ioctl) \ 
270 (fw_dev_t dev, u_long cmd, void *data, int flag, fw_proc_t td) 
271#define FW_IOCTL_START \ 
272 int unit = DEV2UNIT(dev); \ 
273 __unused struct firewire_softc *sc = \ 
274 devclass_get_softc(firewire_devclass, unit) 
275 
276/* 
277 * fw poll macro for FreeBSD 
278 */ 
279#define FW_POLL(dname) \ 
280 int \ 
281 __CONCAT(dname,_poll)(fw_dev_t dev, int events, fw_proc_t td) 
282#define FW_POLL_START 
283 
284/* 
285 * fw mmap macro for FreeBSD 
286 */ 
287#if defined(__DragonFly__) || __FreeBSD_version < 500102 
288#define FW_MMAP(dname) \ 
289 int \ 
290 __CONCAT(dname,_mmap)(fw_dev_t dev, vm_offset_t offset, int nproto) 
291#else 
292#define FW_MMAP(dname) \ 
293 int \ 
294 __CONCAT(dname,_mmap) \ 
295 (fw_dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int nproto) 
296#endif 
297#define FW_MMAP_START 
298 
299/* 
300 * fw strategy macro for FreeBSD 
301 */ 
302#define FW_STRATEGY_START \ 
303 fw_dev_t dev = bp->bio_dev; \ 
304 int unit = DEV2UNIT(dev); \ 
305 __unused struct firewire_softc *sc = \ 
306 devclass_get_softc(firewire_devclass, unit) 
307 
308/* 
309 * if macro for FreeBSD 
310 */ 
311#define IF_DETACH_START(dname, sc) \ 
312 struct __CONCAT(dname,_softc) *sc = \ 
313 (struct __CONCAT(dname,_softc) *)device_get_softc(dev) 
314#define IF_IOCTL_START(dname, sc) \ 
315 struct __CONCAT(dname,_softc) *sc = \ 
316 ((struct fwip_eth_softc *)ifp->if_softc)->fwip 
317#define IF_INIT(dname) \ 
318 static void \ 
319 __CONCAT(dname,_init)(void *arg) 
320#define IF_INIT_START(dname, sc, ifp) \ 
321 struct __CONCAT(dname,_softc) *sc = \ 
322 ((struct fwip_eth_softc *)arg)->fwip; \ 
323 struct ifnet *ifp = (sc)->fw_softc.fwip_ifp 
324#define IF_INIT_RETURN(r) return 
325#define IF_STOP(dname) \ 
326 static void \ 
327 __CONCAT(dname,_stop)(struct __CONCAT(dname,_softc) *fwip) 
328#define IF_STOP_START(dname, ifp, sc) \ 
329 struct ifnet *ifp = (sc)->fw_softc.fwip_ifp; 
330 
331/* 
332 * fwohci macro for FreeBSD 
333 */ 
334#define FWOHCI_DETACH() \ 
335 int \ 
336 fwohci_detach(struct fwohci_softc *sc, device_t dev) 
337#define FWOHCI_DETACH_START 
338#define FWOHCI_DETACH_END 
339#define FWOHCI_INIT_END 
340 
341/* 
342 * firewire macro for FreeBSD 
343 */ 
344#define FIREWIRE_ATTACH_START \ 
345 device_t pa = device_get_parent(dev); \ 
346 struct firewire_comm *fc = (struct firewire_comm *)device_get_softc(pa) 
347#define FWDEV_DESTROYDEV(sc) \ 
348 do { \ 
349 int err; \ 
350 if ((err = fwdev_destroydev((sc))) != 0) \ 
351 return err; \ 
352 } while (/*CONSTCOND*/0) 
353#define FIREWIRE_GENERIC_ATTACH \ 
354 do { \ 
355 /* Locate our children */ \ 
356 bus_generic_probe(dev); \ 
357 \ 
358 /* launch attachement of the added children */ \ 
359 bus_generic_attach(dev); \ 
360 } while (/*CONSTCOND*/0) 
361#define FIREWIRE_GENERIC_DETACH \ 
362 do { \ 
363 int err; \ 
364 if ((err = bus_generic_detach(dev)) != 0) \ 
365 return err; \ 
366 } while (/*CONSTCOND*/0) 
367#define FIREWIRE_SBP_ATTACH \ 
368 do { \ 
369 fwa.fwdev = fwdev; \ 
370 fwdev->sbp = device_add_child(fc->bdev, fwa.name, -1); \ 
371 if (fwdev->sbp) { \ 
372 device_set_ivars(fwdev->sbp, &fwa); \ 
373 device_probe_and_attach(fwdev->sbp); \ 
374 } \ 
375 } while (/*CONSTCOND*/0) 
376#define FIREWIRE_SBP_DETACH \ 
377 do { \ 
378 if (device_detach(fwdev->sbp) != 0) \ 
379 return; \ 
380 } while (/*CONSTCOND*/0) 
381#define FIREWIRE_CHILDREN_FOREACH_FUNC(func, fdc) \ 
382 do { \ 
383 device_t *devlistp; \ 
384 int i, devcnt; \ 
385 \ 
386 if (device_get_children(fc->bdev, &devlistp, &devcnt) == 0) { \ 
387 for( i = 0 ; i < devcnt ; i++) \ 
388 if (device_get_state(devlistp[i]) >= \ 
389 DS_ATTACHED) { \ 
390 (fdc) = device_get_softc(devlistp[i]);\ 
391 if ((fdc)->func != NULL) \ 
392 (fdc)->func((fdc)); \ 
393 } \ 
394 free(devlistp, M_TEMP); \ 
395 } \ 
396 } while (/*CONSTCOND*/0) 
397 
398/* 
399 * sbp macro for FreeBSD 
400 */ 
401#define SBP_ATTACH_START \ 
402 struct cam_devq *devq; \ 
403 \ 
404 memset(sbp, 0, sizeof(struct sbp_softc)); \ 
405 sbp->fd.dev = dev 
406#define SBP_SCSIBUS_ATTACH \ 
407 do { \ 
408 sbp->sim = cam_sim_alloc(sbp_action, sbp_poll, "sbp", sbp, \ 
409 device_get_unit(dev), \ 
410 &sbp->mtx, \ 
411 /*untagged*/ 1, \ 
412 /*tagged*/ SBP_QUEUE_LEN - 1, \ 
413 devq); \ 
414 \ 
415 if (sbp->sim == NULL) { \ 
416 cam_simq_free(devq); \ 
417 return ENXIO; \ 
418 } \ 
419 \ 
420 SBP_LOCK(sbp); \ 
421 if (xpt_bus_register(sbp->sim, /*bus*/0) != CAM_SUCCESS) \ 
422 goto fail; \ 
423 \ 
424 if (xpt_create_path( \ 
425 &sbp->path, xpt_periph, cam_sim_path(sbp->sim), \ 
426 CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {\ 
427 xpt_bus_deregister(cam_sim_path(sbp->sim)); \ 
428 goto fail; \ 
429 } \ 
430 xpt_async(AC_BUS_RESET, sbp->path, /*arg*/ NULL); \ 
431 SBP_UNLOCK(sbp); \ 
432 } while (/*CONSTCOND*/0) 
433#define SBP_DEVICE(d) ((d)->path) 
434#define SBP_DEVICE_FREEZE(d, x) xpt_freeze_devq((d)->path, (x)) 
435#define SBP_DEVICE_THAW(d, x) xpt_release_devq((d)->path, (x), TRUE) 
436#define SBP_BUS_FREEZE(b) \ 
437 do { \ 
438 if (((b)->sim->flags & SIMQ_FREEZED) == 0) { \ 
439 xpt_freeze_simq((b)->sim, /*count*/1); \ 
440 (b)->sim->flags |= SIMQ_FREEZED; \ 
441 } \ 
442 } while (/*CONSTCOND*/0) 
443#define SBP_BUS_THAW(b) \ 
444 do { \ 
445 xpt_release_simq((b)->sim, /*run queue*/TRUE); \ 
446 (b)->sim->flags &= ~SIMQ_FREEZED; \ 
447 } while (/*CONSTCOND*/0) 
448#define SBP_DEVICE_PREATTACH() 
449 
450/* 
451 * fwip macro for FreeBSD 
452 */ 
453#define FWIP_ATTACH_START \ 
454 int unit = device_get_unit(dev);\ 
455 struct fw_hwaddr *hwaddr; 
456#define FWIP_ATTACH_SETUP \ 
457 do { \ 
458 fwip->fw_softc.fwip_ifp = if_alloc(IFT_IEEE1394); \ 
459 hwaddr = &IFP2FWC(fwip->fw_softc.fwip_ifp)->fc_hwaddr; \ 
460 } while (/*CONSTCOND*/0) 
461 
462#define FWDEV_MAKEDEV(sc) fwdev_makedev(sc) 
463 
464#define FIREWIRE_IFATTACH(ifp, ha) \ 
465 firewire_ifattach((ifp), (ha)) 
466#define FIREWIRE_IFDETACH(ifp) \ 
467 do { \ 
468 firewire_ifdetach(ifp); \ 
469 if_free(ifp); \ 
470 } while (/*CONSTCOND*/0) 
471#define FIREWIRE_BUSRESET(ifp) firewire_busreset((ifp)) 
472#define FIREWIRE_INPUT(ifp, m, src) \ 
473 firewire_input((ifp), (m), (src)) 
474#define FWIP_INIT(sc) fwip_init(&(sc)->fw_softc) 
475#define FWIP_STOP(sc) fwip_stop((sc)) 
476#define FIREWIRE_IOCTL(ifp, cmd, data) \ 
477 firewire_ioctl((ifp), (cmd), (data)) 
478#define IF_INITNAME(ifp, dev, unit) \ 
479 if_initname((ifp), device_get_name((dev)), (unit)); 
480#define SET_IFFUNC(ifp, start, ioctl, init, stop) \ 
481 do { \ 
482 (ifp)->if_start = (start); \ 
483 (ifp)->if_ioctl = (ioctl); \ 
484 (ifp)->if_init = (init); \ 
485 } while (/*CONSTCOND*/0) 
486 
487/* 
488 * fwdev macro for FreeBSD 
489 */ 
490#define FWDEV_OPEN_START \ 
491 if (DEV_FWMEM(dev)) \ 
492 return fwmem_open(dev, flags, fmt, td) 
493#define FWDEV_CLOSE_START \ 
494 if (DEV_FWMEM(dev)) \ 
495 return fwmem_close(dev, flags, fmt, td) 
496#define FWDEV_READ_START \ 
497 if (DEV_FWMEM(dev)) \ 
498 return (physio(dev, uio, ioflag)) 
499#define FWDEV_WRITE_START \ 
500 if (DEV_FWMEM(dev)) \ 
501 return (physio(dev, uio, ioflag)) 
502#define FWDEV_IOCTL_START \ 
503 if (DEV_FWMEM(dev)) \ 
504 return fwmem_ioctl(dev, cmd, data, flag, td) 
505#define FWDEV_IOCTL_REDIRECT fc->ioctl(dev, cmd, data, flag, td) 
506#define FWDEV_POLL_START \ 
507 if (DEV_FWMEM(dev)) \ 
508 return fwmem_poll(dev, events, td) 
509#if defined(__DragonFly__) || __FreeBSD_version < 500102 
510#define FWDEV_MMAP_START \ 
511 if (DEV_FWMEM(dev)) \ 
512 return fwmem_mmap(dev, offset, nproto) 
513#else 
514#define FWDEV_MMAP_START \ 
515 if (DEV_FWMEM(dev)) \ 
516 return fwmem_mmap(dev, offset, paddr, nproto) 
517#endif 
518#define FWDEV_STRATEGY_START \ 
519 if (DEV_FWMEM(dev)) { \ 
520 fwmem_strategy(bp); \ 
521 return; \ 
522 } 
523 
524#define XS_REQ_INVALID CAM_REQ_INVALID 
525#define XS_SCSI_BUS_RESET CAM_SCSI_BUS_RESET 
526#define XS_BDR_SENT CAM_BDR_SENT 
527#define XS_DEV_NOT_THERE CAM_DEV_NOT_THERE 
528#define XS_CMD_TIMEOUT CAM_CMD_TIMEOUT 
529#define XS_REQUEUE_REQ CAM_REQUEUE_REQ 
530#define XS_REQ_CMP CAM_REQ_CMP 
531#define XS_REQ_CMP_ERR CAM_REQ_CMP_ERR 
532#define XS_UA_ABORT CAM_UA_ABORT 
533#define XS_SENSE (CAM_SCSI_STATUS_ERROR | CAM_AUTOSNS_VALID) 
534 
535typedef union ccb sbp_scsi_xfer; 
536typedef struct scsi_inquiry_data sbp_scsi_inquiry_data; 
537 
538#define SCSI_XFER_TARGET(x) ((x)->ccb_h.target_id) 
539#define SCSI_XFER_LUN(x) ((x)->ccb_h.target_lun) 
540#define SCSI_XFER_ERROR(x) ((x)->ccb_h.status) 
541#define SCSI_XFER_DIR(x) ((x)->ccb_h.flags & CAM_DIR_MASK) 
542#define SCSI_XFER_DATA_IN CAM_DIR_IN 
543#define SCSI_XFER_CALLOUT(x) ((x)->ccb_h.timeout_ch) 
544#define SCSI_XFER_TIMEOUT(x) ((x)->ccb_h.timeout) 
545#define SCSI_XFER_OPECODE(x) ((x)->csio.cdb_io.cdb_bytes[0]) 
546#define SCSI_XFER_STATUS(x) ((x)->csio.scsi_status) 
547#define SCSI_XFER_EVPD(x) ((x)->csio.cdb_io.cdb_bytes[1] & SI_EVPD) 
548#define SCSI_XFER_CMDLEN(x) ((x)->csio.cdb_len) 
549#define SCSI_XFER_CMD(x) \ 
550 (((x)->csio.ccb_h.flags & CAM_CDB_POINTER) ?\ 
551 (void *)(x)->csio.cdb_io.cdb_ptr : \ 
552 (void *)&(x)->csio.cdb_io.cdb_bytes) 
553#define SCSI_XFER_DATALEN(x) ((x)->csio.dxfer_len) 
554#define SCSI_XFER_DATA(x) ((x)->csio.data_ptr) 
555#define SCSI_XFER_SENSELEN(x) ((x)->csio.sense_len) 
556#define SCSI_SENSE_DATA(x) (&(x)->csio.sense_data) 
557#define SCSI_INQUIRY_DATA(x) ((x)->csio.data_ptr) 
558#define SCSI_XFER_FUNCCODE(x) ((x)->ccb_h.func_code) 
559#define SCSI_XFER_10BCMD_DUMP(x) \ 
560 ((x)->csio.cdb_io.cdb_bytes[0]), \ 
561 ((x)->csio.cdb_io.cdb_bytes[1]), \ 
562 ((x)->csio.cdb_io.cdb_bytes[2]), \ 
563 ((x)->csio.cdb_io.cdb_bytes[3]), \ 
564 ((x)->csio.cdb_io.cdb_bytes[4]), \ 
565 ((x)->csio.cdb_io.cdb_bytes[5]), \ 
566 ((x)->csio.cdb_io.cdb_bytes[6]), \ 
567 ((x)->csio.cdb_io.cdb_bytes[7]), \ 
568 ((x)->csio.cdb_io.cdb_bytes[8]), \ 
569 ((x)->csio.cdb_io.cdb_bytes[9]) 
570#define SCSI_XFER_REQUEST_COMPLETE(x) 
571#define SCSI_TRANSFER_DONE(x) xpt_done((x)) 
572#ifdef SID_TYPE 
573#undef SID_TYPE 
574#define SID_TYPE 0x1f 
575#endif 
576 
577#define NOT_LUN_WILDCARD(l) ((l) != CAM_LUN_WILDCARD) 
578#define CAM_XFER_FLAGS(x) ((x)->csio.ccb_h.flags) 
579 
580#define mstohz(ms) \ 
581 (__predict_false((ms) >= 0x20000) ? \ 
582 (((ms) + 0u) / 1000u) * hz : \ 
583 (((ms) + 0u) * hz) / 1000u) 
584 
585 
586#elif defined(__NetBSD__) 
587#define OS_STR "NetBSD" 34#define OS_STR "NetBSD"
588#define OS_VER __NetBSD_Version__ 35#define OS_VER __NetBSD_Version__
589#define OS_VER_STR "NetBSD-2" 36#define OS_VER_STR "NetBSD-2"
590#define PROJECT_STR "NetBSD Project" 37#define PROJECT_STR "NetBSD Project"
591 38
592#define fw_dev_t dev_t 39#define fw_dev_t dev_t
593 40
594struct fwbus_attach_args { 41struct fwbus_attach_args {
595 const char *name; 42 const char *name;
596}; 43};
597 44
598struct fw_hwaddr { 45struct fw_hwaddr {
599 uint32_t sender_unique_ID_hi; 46 uint32_t sender_unique_ID_hi;
600 uint32_t sender_unique_ID_lo; 47 uint32_t sender_unique_ID_lo;
601 uint8_t sender_max_rec; 48 uint8_t sender_max_rec;
602 uint8_t sspd; 49 uint8_t sspd;
603 uint16_t sender_unicast_FIFO_hi; 50 uint16_t sender_unicast_FIFO_hi;
604 uint32_t sender_unicast_FIFO_lo; 51 uint32_t sender_unicast_FIFO_lo;
605}; 52};
606 53
607 54
608#define fw_dev2unit(x) minor(x) 55#define fw_dev2unit(x) minor(x)
609#define fw_unit2minor(x) (((x) & 0xff) | (((x) << 12) & ~0xfffff)) 56#define fw_unit2minor(x) (((x) & 0xff) | (((x) << 12) & ~0xfffff))
610 57
611#define fw_timevalcmp(tv1, tv2, op) timercmp((tv1), (tv2), op) 58#define fw_timevalcmp(tv1, tv2, op) timercmp((tv1), (tv2), op)
612#define fw_timevalsub(tv1, tv2) timersub((tv1), (tv2), (tv1)) 59#define fw_timevalsub(tv1, tv2) timersub((tv1), (tv2), (tv1))
613 60
614#define fw_get_nameunit(dev) device_xname(dev) 61#define fw_get_nameunit(dev) device_xname(dev)
615#define fw_get_unit(dev) device_unit((dev)) 62#define fw_get_unit(dev) device_unit((dev))
616 63
617#define fw_printf(dev, ...) aprint_normal_dev((dev), __VA_ARGS__) 64#define fw_printf(dev, ...) aprint_normal_dev((dev), __VA_ARGS__)
618 65
619/* atomic macros */ 66/* atomic macros */
620/* XXXX: unsafe... */ 67/* XXXX: unsafe... */
621#define fw_atomic_set_int(P, V) (*(u_int *)(P) |= (V)) 68#define fw_atomic_set_int(P, V) (*(u_int *)(P) |= (V))
622static __inline int 69static __inline int
623fw_atomic_readandclear_int(int *p) 70fw_atomic_readandclear_int(int *p)
624{ 71{
625 int _p = *p; 72 int _p = *p;
626 73
627 *p = 0; 74 *p = 0;
628 return _p; 75 return _p;
629} 76}
630 77
631/* mutex macros */ 78/* mutex macros */
632/* XXXX: unsafe... */ 79/* XXXX: unsafe... */
633typedef void *fw_mtx_t; 80typedef void *fw_mtx_t;
634#define fw_mtx_init(mutex, name, type, opts) 81#define fw_mtx_init(mutex, name, type, opts)
635#define fw_mtx_lock(mutex) (void)(mutex) /* XXXX */ 82#define fw_mtx_lock(mutex) (void)(mutex) /* XXXX */
636#define fw_mtx_unlock(mutex) (void)(mutex) /* XXXX */ 83#define fw_mtx_unlock(mutex) (void)(mutex) /* XXXX */
637#define fw_mtx_destroy(mutex) 84#define fw_mtx_destroy(mutex)
638#define fw_mtx_assert(mutex, what) 85#define fw_mtx_assert(mutex, what)
639 86
640#define fw_msleep(ident, mtx, priority, wmesg, timo) \ 87#define fw_msleep(ident, mtx, priority, wmesg, timo) \
641 tsleep((ident), (priority), (wmesg), (timo)) 88 tsleep((ident), (priority), (wmesg), (timo))
642 89
643/* taskqueue macros */ 90/* taskqueue macros */
644/* XXXX: unsafe... */ 91/* XXXX: unsafe... */
645typedef void (*task_fn_t)(void *context, int pending); 92typedef void (*task_fn_t)(void *context, int pending);
646typedef struct { 93typedef struct {
647 STAILQ_ENTRY(task) ta_link; /* link for queue */ 94 STAILQ_ENTRY(task) ta_link; /* link for queue */
648 u_short ta_pending; /* count times queued */ 95 u_short ta_pending; /* count times queued */
649 u_short ta_priority; /* priority of task in queue */ 96 u_short ta_priority; /* priority of task in queue */
650 task_fn_t ta_func; /* task handler */ 97 task_fn_t ta_func; /* task handler */
651 void *ta_context; /* argument for handler */ 98 void *ta_context; /* argument for handler */
652} fw_task_t; 99} fw_task_t;
653#define fw_taskqueue_enqueue(queue, task) \ 100#define fw_taskqueue_enqueue(queue, task) \
654 (task)->ta_func((task)->ta_context, 0) 101 (task)->ta_func((task)->ta_context, 0)
655#define FW_TASK_INIT(task, priority, func, context) \ 102#define FW_TASK_INIT(task, priority, func, context) \
656 do { \ 103 do { \
657 (task)->ta_priority = (priority); \ 104 (task)->ta_priority = (priority); \
658 (task)->ta_func = (func); \ 105 (task)->ta_func = (func); \
659 (task)->ta_context = (context); \ 106 (task)->ta_context = (context); \
660 } while (/*CONSTCOND*/0) 107 } while (/*CONSTCOND*/0)
661#define fw_taskqueue_create_fast(name, mflags, enqueue, taskqueue) \ 108#define fw_taskqueue_create_fast(name, mflags, enqueue, taskqueue) \
662 NULL 109 NULL
663#define fw_taskqueue_start_threads(taskqueue, n, x, fmt, ...) 110#define fw_taskqueue_start_threads(taskqueue, n, x, fmt, ...)
664 111
665/* kthread macros */ 112/* kthread macros */
666typedef struct proc fw_thread_t; 113typedef struct proc fw_thread_t;
667typedef struct lwp *fw_proc_t; 114typedef struct lwp *fw_proc_t;
668#define fw_kthread_create(func, arg, newpp, fmt, ...) \ 115#define fw_kthread_create(func, arg, newpp, fmt, ...) \
669 kthread_create(PRI_NONE, 0, NULL, \ 116 kthread_create(PRI_NONE, 0, NULL, \
670 (func), (arg), (newpp), (fmt), __VA_ARGS__) 117 (func), (arg), (newpp), (fmt), __VA_ARGS__)
671#define fw_kthread_exit(ecode) kthread_exit((ecode)) 118#define fw_kthread_exit(ecode) kthread_exit((ecode))
672 119
673/* callout macros */ 120/* callout macros */
674#define fw_callout_init(c) callout_init((c), 0) 121#define fw_callout_init(c) callout_init((c), 0)
675#define fw_callout_reset(c, ticks, func, arg) \ 122#define fw_callout_reset(c, ticks, func, arg) \
676 callout_reset((c), (ticks), (func), (arg)) 123 callout_reset((c), (ticks), (func), (arg))
677#define fw_callout_stop(c) callout_stop((c)) 124#define fw_callout_stop(c) callout_stop((c))
678 125
679/* bus_dma macros */ 126/* bus_dma macros */
680#include <sys/malloc.h> 127#include <sys/malloc.h>
681#include <sys/bus.h> 128#include <sys/bus.h>
682struct fw_bus_dma_tag { 129struct fw_bus_dma_tag {
683 bus_dma_tag_t tag; 130 bus_dma_tag_t tag;
684 bus_size_t alignment; 131 bus_size_t alignment;
685 bus_size_t boundary; 132 bus_size_t boundary;
686 bus_size_t size; 133 bus_size_t size;
687 int nsegments; 134 int nsegments;
688 bus_size_t maxsegsz; 135 bus_size_t maxsegsz;
689 int flags; 136 int flags;
690}; 137};
691typedef struct fw_bus_dma_tag *fw_bus_dma_tag_t; 138typedef struct fw_bus_dma_tag *fw_bus_dma_tag_t;
692typedef int bus_dmasync_op_t; 139typedef int bus_dmasync_op_t;
693typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int); 140typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int);
694typedef void 141typedef void
695 bus_dmamap_callback2_t(void *, bus_dma_segment_t *, int, bus_size_t, int); 142 bus_dmamap_callback2_t(void *, bus_dma_segment_t *, int, bus_size_t, int);
696 143
697#define fw_bus_dma_tag_create( \ 144#define fw_bus_dma_tag_create( \
698 p, a, b, la, ha, ffunc, farg, maxsz, \ 145 p, a, b, la, ha, ffunc, farg, maxsz, \
699 nseg, maxsegsz, f, lfunc, larg, dmat) \ 146 nseg, maxsegsz, f, lfunc, larg, dmat) \
700 \ 147 \
701 _fw_bus_dma_tag_create((p), (a), (b), (la), (ha), \ 148 _fw_bus_dma_tag_create((p), (a), (b), (la), (ha), \
702 (ffunc), (farg), (maxsz), (nseg), (maxsegsz), (f), (dmat)) 149 (ffunc), (farg), (maxsz), (nseg), (maxsegsz), (f), (dmat))
703 150
704static __inline int 151static __inline int
705_fw_bus_dma_tag_create(bus_dma_tag_t parent, 152_fw_bus_dma_tag_create(bus_dma_tag_t parent,
706 bus_size_t alignment, bus_size_t boundary, 153 bus_size_t alignment, bus_size_t boundary,
707 bus_addr_t lowaddr, bus_addr_t highaddr, 154 bus_addr_t lowaddr, bus_addr_t highaddr,
708 void *filtfunc, void *filtfuncarg, 155 void *filtfunc, void *filtfuncarg,
709 bus_size_t maxsize, int nsegments, bus_size_t maxsegsz, 156 bus_size_t maxsize, int nsegments, bus_size_t maxsegsz,
710 int flags, fw_bus_dma_tag_t *fwdmat) 157 int flags, fw_bus_dma_tag_t *fwdmat)
711{ 158{
712 fw_bus_dma_tag_t tag; 159 fw_bus_dma_tag_t tag;
713 160
714 tag = malloc(sizeof(struct fw_bus_dma_tag), M_DEVBUF, M_NOWAIT); 161 tag = malloc(sizeof(struct fw_bus_dma_tag), M_DEVBUF, M_NOWAIT);
715 if (tag == NULL) 162 if (tag == NULL)
716 return ENOMEM; 163 return ENOMEM;
717 164
718/* XXXX */ 165/* XXXX */
719#define BUS_SPACE_MAXADDR_32BIT 0 166#define BUS_SPACE_MAXADDR_32BIT 0
720#define BUS_SPACE_MAXADDR 0 167#define BUS_SPACE_MAXADDR 0
721 168
722 tag->tag = parent; 169 tag->tag = parent;
723 tag->alignment = alignment; 170 tag->alignment = alignment;
724 tag->boundary = boundary; 171 tag->boundary = boundary;
725 tag->size = maxsize; 172 tag->size = maxsize;
726 tag->nsegments = nsegments; 173 tag->nsegments = nsegments;
727 tag->maxsegsz = maxsegsz; 174 tag->maxsegsz = maxsegsz;
728 tag->flags = flags; 175 tag->flags = flags;
729 176
730 *fwdmat = tag; 177 *fwdmat = tag;
731 178
732 return 0; 179 return 0;
733} 180}
734#define fw_bus_dma_tag_destroy(ft) \ 181#define fw_bus_dma_tag_destroy(ft) \
735 free(ft, M_DEVBUF) 182 free(ft, M_DEVBUF)
736#define fw_bus_dmamap_create(ft, f, mp) \ 183#define fw_bus_dmamap_create(ft, f, mp) \
737 bus_dmamap_create((ft)->tag, (ft)->size,\ 184 bus_dmamap_create((ft)->tag, (ft)->size,\
738 (ft)->nsegments, (ft)->maxsegsz, (ft)->boundary, (f), (mp)) 185 (ft)->nsegments, (ft)->maxsegsz, (ft)->boundary, (f), (mp))
739#define fw_bus_dmamap_destroy(ft, m) \ 186#define fw_bus_dmamap_destroy(ft, m) \
740 bus_dmamap_destroy((ft)->tag, (m)) 187 bus_dmamap_destroy((ft)->tag, (m))
741static __inline int 188static __inline int
742fw_bus_dmamap_load(fw_bus_dma_tag_t ft, bus_dmamap_t m, 189fw_bus_dmamap_load(fw_bus_dma_tag_t ft, bus_dmamap_t m,
743 void *b, bus_size_t l, bus_dmamap_callback_t *func, void *a, int f)  190 void *b, bus_size_t l, bus_dmamap_callback_t *func, void *a, int f)
744{ 191{
745 int lf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_STREAMING | 192 int lf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_STREAMING |
746 BUS_DMA_READ | BUS_DMA_WRITE | 193 BUS_DMA_READ | BUS_DMA_WRITE |
747 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4); 194 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4);
748 int err = bus_dmamap_load(ft->tag, m, b, l, NULL, lf); 195 int err = bus_dmamap_load(ft->tag, m, b, l, NULL, lf);
749 (func)(a, m->dm_segs, m->dm_nsegs, err); 196 (func)(a, m->dm_segs, m->dm_nsegs, err);
750 return err; 197 return err;
751} 198}
752static __inline int 199static __inline int
753fw_bus_dmamap_load_mbuf(fw_bus_dma_tag_t ft, bus_dmamap_t m, 200fw_bus_dmamap_load_mbuf(fw_bus_dma_tag_t ft, bus_dmamap_t m,
754 struct mbuf *b, bus_dmamap_callback2_t *func, void *a, int f)  201 struct mbuf *b, bus_dmamap_callback2_t *func, void *a, int f)
755{ 202{
756 int lf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_STREAMING | 203 int lf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_STREAMING |
757 BUS_DMA_READ | BUS_DMA_WRITE | 204 BUS_DMA_READ | BUS_DMA_WRITE |
758 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4); 205 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4);
759 int err = bus_dmamap_load_mbuf(ft->tag, m, b, lf); 206 int err = bus_dmamap_load_mbuf(ft->tag, m, b, lf);
760 (func)(a, m->dm_segs, m->dm_nsegs, m->dm_mapsize, err); 207 (func)(a, m->dm_segs, m->dm_nsegs, m->dm_mapsize, err);
761 return err; 208 return err;
762} 209}
763#define fw_bus_dmamap_unload(ft, m) \ 210#define fw_bus_dmamap_unload(ft, m) \
764 bus_dmamap_unload((ft)->tag, (m)) 211 bus_dmamap_unload((ft)->tag, (m))
765#define fw_bus_dmamap_sync(ft, m, op) \ 212#define fw_bus_dmamap_sync(ft, m, op) \
766 bus_dmamap_sync((ft)->tag, (m), 0, (m)->dm_mapsize, (op)) 213 bus_dmamap_sync((ft)->tag, (m), 0, (m)->dm_mapsize, (op))
767static __inline int 214static __inline int
768fw_bus_dmamem_alloc(fw_bus_dma_tag_t ft, void **vp, int f, bus_dmamap_t *mp) 215fw_bus_dmamem_alloc(fw_bus_dma_tag_t ft, void **vp, int f, bus_dmamap_t *mp)
769{ 216{
770 bus_dma_segment_t segs; 217 bus_dma_segment_t segs;
771 int nsegs, err; 218 int nsegs, err;
772 int af, mf, cf; 219 int af, mf, cf;
773 220
774 af = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_STREAMING | 221 af = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_STREAMING |
775 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4); 222 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4);
776 err = bus_dmamem_alloc(ft->tag, ft->size, 223 err = bus_dmamem_alloc(ft->tag, ft->size,
777 ft->alignment, ft->boundary, &segs, ft->nsegments, &nsegs, af); 224 ft->alignment, ft->boundary, &segs, ft->nsegments, &nsegs, af);
778 if (err) { 225 if (err) {
779 printf("fw_bus_dmamem_alloc: failed(1)\n"); 226 printf("fw_bus_dmamem_alloc: failed(1)\n");
780 return err; 227 return err;
781 } 228 }
782 229
783 mf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | 230 mf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT |
784 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4 | 231 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4 |
785 BUS_DMA_COHERENT | BUS_DMA_NOCACHE); 232 BUS_DMA_COHERENT | BUS_DMA_NOCACHE);
786 err = bus_dmamem_map(ft->tag, 233 err = bus_dmamem_map(ft->tag,
787 &segs, nsegs, ft->size, (void **)vp, mf); 234 &segs, nsegs, ft->size, (void **)vp, mf);
788 if (err) { 235 if (err) {
789 printf("fw_bus_dmamem_alloc: failed(2)\n"); 236 printf("fw_bus_dmamem_alloc: failed(2)\n");
790 bus_dmamem_free(ft->tag, &segs, nsegs); 237 bus_dmamem_free(ft->tag, &segs, nsegs);
791 return err; 238 return err;
792 } 239 }
793 240
794 if (*mp != NULL) 241 if (*mp != NULL)
795 return err; 242 return err;
796 243
797 cf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW | 244 cf = f & (BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW |
798 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4); 245 BUS_DMA_BUS1 | BUS_DMA_BUS2 | BUS_DMA_BUS3 | BUS_DMA_BUS4);
799 err = bus_dmamap_create(ft->tag, 246 err = bus_dmamap_create(ft->tag,
800 ft->size, nsegs, ft->maxsegsz, ft->boundary, cf, mp); 247 ft->size, nsegs, ft->maxsegsz, ft->boundary, cf, mp);
801 if (err) { 248 if (err) {
802 printf("fw_bus_dmamem_alloc: failed(3)\n"); 249 printf("fw_bus_dmamem_alloc: failed(3)\n");
803 bus_dmamem_unmap(ft->tag, (void *)*vp, ft->size); 250 bus_dmamem_unmap(ft->tag, (void *)*vp, ft->size);
804 bus_dmamem_free(ft->tag, &segs, nsegs);\ 251 bus_dmamem_free(ft->tag, &segs, nsegs);\
805 } 252 }
806 253
807 return err; 254 return err;
808} 255}
809#define fw_bus_dmamem_free(ft, v, m) \ 256#define fw_bus_dmamem_free(ft, v, m) \
810 do { \ 257 do { \
811 bus_dmamem_unmap((ft)->tag, (v), (ft)->size); \ 258 bus_dmamem_unmap((ft)->tag, (v), (ft)->size); \
812 bus_dmamem_free((ft)->tag, (m)->dm_segs, (m)->dm_nsegs);\ 259 bus_dmamem_free((ft)->tag, (m)->dm_segs, (m)->dm_nsegs);\
813 bus_dmamap_destroy((ft)->tag, (m)); \ 260 bus_dmamap_destroy((ft)->tag, (m)); \
814 } while (/*CONSTCOND*/0) 261 } while (/*CONSTCOND*/0)
815 262
816#define fw_config_pending_incr() config_pending_incr() 263#define fw_config_pending_incr() config_pending_incr()
817#define fw_config_pending_decr() config_pending_decr() 264#define fw_config_pending_decr() config_pending_decr()
818 265
819#define splfw() splvm() 266#define splfw() splvm()
820#define splfwnet() splnet() 267#define splfwnet() splnet()
821#define splfwsbp() splbio() 268#define splfwsbp() splbio()
822#define splsoftvm() splbio() 269#define splsoftvm() splbio()
823 270
824#include <sys/select.h> 271#include <sys/select.h>
825 272
826#define FW_KASSERT(expression, str) \ 273#define FW_KASSERT(expression, str) \
827 KASSERT(expression) 274 KASSERT(expression)
828 275
829/* 276/*
830 * fw attach macro for NetBSD 277 * fw attach macro for NetBSD
831 */ 278 */
832#define FW_ATTACH(dname) \ 279#define FW_ATTACH(dname) \
833 void \ 280 void \
834 __CONCAT(dname,attach) \ 281 __CONCAT(dname,attach) \
835 (device_t parent, device_t self, void *aux) 282 (device_t parent, device_t self, void *aux)
836#define FW_ATTACH_START(dname, sc, fwa) \ 283#define FW_ATTACH_START(dname, sc, fwa) \
837 struct __CONCAT(dname,_softc) *sc = device_private(self); \ 284 struct __CONCAT(dname,_softc) *sc = device_private(self); \
838 __unused struct fw_attach_args *fwa = (struct fw_attach_args *)aux 285 __unused struct fw_attach_args *fwa = (struct fw_attach_args *)aux
839#define FW_ATTACH_RETURN(r) return 286#define FW_ATTACH_RETURN(r) return
840 287
841/* 288/*
842 * fw detach macro for NetBSD 289 * fw detach macro for NetBSD
843 */ 290 */
844#define FW_DETACH(dname) \ 291#define FW_DETACH(dname) \
845 int \ 292 int \
846 __CONCAT(dname,detach)(device_t self, int flags) 293 __CONCAT(dname,detach)(device_t self, int flags)
847#define FW_DETACH_START(dname, sc) \ 294#define FW_DETACH_START(dname, sc) \
848 struct __CONCAT(dname,_softc) *sc = device_private(self) 295 struct __CONCAT(dname,_softc) *sc = device_private(self)
849 296
850/* 297/*
851 * fw open macro for NetBSD 298 * fw open macro for NetBSD
852 */ 299 */
853#define FW_OPEN(dname) \ 300#define FW_OPEN(dname) \
854 int \ 301 int \
855 __CONCAT(dname,_open)(dev_t _dev, int flags, int fmt, fw_proc_t td) 302 __CONCAT(dname,_open)(dev_t _dev, int flags, int fmt, fw_proc_t td)
856#define FW_OPEN_START \ 303#define FW_OPEN_START \
857 struct firewire_softc *sc, *dev; \ 304 struct firewire_softc *sc, *dev; \
858 \ 305 \
859 sc = dev = device_lookup_private(&ieee1394if_cd, DEV2UNIT(_dev));\ 306 sc = dev = device_lookup_private(&ieee1394if_cd, DEV2UNIT(_dev));\
860 if (dev == NULL) \ 307 if (dev == NULL) \
861 return ENXIO 308 return ENXIO
862 309
863/* 310/*
864 * fw close macro for NetBSD 311 * fw close macro for NetBSD
865 */ 312 */
866#define FW_CLOSE(dname) \ 313#define FW_CLOSE(dname) \
867 int \ 314 int \
868 __CONCAT(dname,_close)(dev_t _dev, int flags, int fmt, fw_proc_t td) 315 __CONCAT(dname,_close)(dev_t _dev, int flags, int fmt, fw_proc_t td)
869#define FW_CLOSE_START \ 316#define FW_CLOSE_START \
870 int unit = DEV2UNIT(_dev); \ 317 int unit = DEV2UNIT(_dev); \
871 struct firewire_softc *dev; \ 318 struct firewire_softc *dev; \
872 \ 319 \
873 dev = device_lookup_private(&ieee1394if_cd, unit); \ 320 dev = device_lookup_private(&ieee1394if_cd, unit); \
874 if (dev == NULL) \ 321 if (dev == NULL) \
875 return ENXIO 322 return ENXIO
876 323
877/* 324/*
878 * fw read macro for NetBSD 325 * fw read macro for NetBSD
879 */ 326 */
880#define FW_READ(dname) \ 327#define FW_READ(dname) \
881 int \ 328 int \
882 __CONCAT(dname,_read)(dev_t _dev, struct uio *uio, int ioflag)  329 __CONCAT(dname,_read)(dev_t _dev, struct uio *uio, int ioflag)
883#define FW_READ_START \ 330#define FW_READ_START \
884 int unit = DEV2UNIT(_dev); \ 331 int unit = DEV2UNIT(_dev); \
885 struct firewire_softc *dev; \ 332 struct firewire_softc *dev; \
886 \ 333 \
887 dev = device_lookup_private(&ieee1394if_cd, unit); \ 334 dev = device_lookup_private(&ieee1394if_cd, unit); \
888 if (dev == NULL) \ 335 if (dev == NULL) \
889 return ENXIO 336 return ENXIO
890 337
891/* 338/*
892 * fw write macro for NetBSD 339 * fw write macro for NetBSD
893 */ 340 */
894#define FW_WRITE(dname) \ 341#define FW_WRITE(dname) \
895 int \ 342 int \
896 __CONCAT(dname,_write)(dev_t _dev, struct uio *uio, int ioflag) 343 __CONCAT(dname,_write)(dev_t _dev, struct uio *uio, int ioflag)
897#define FW_WRITE_START \ 344#define FW_WRITE_START \
898 int unit = DEV2UNIT(_dev); \ 345 int unit = DEV2UNIT(_dev); \
899 struct firewire_softc *dev; \ 346 struct firewire_softc *dev; \
900 \ 347 \
901 dev = device_lookup_private(&ieee1394if_cd, unit); \ 348 dev = device_lookup_private(&ieee1394if_cd, unit); \
902 if (dev == NULL) \ 349 if (dev == NULL) \
903 return ENXIO 350 return ENXIO
904 351
905/* 352/*
906 * fw ioctl macro for NetBSD 353 * fw ioctl macro for NetBSD
907 */ 354 */
908#define FW_IOCTL(dname) \ 355#define FW_IOCTL(dname) \
909 int \ 356 int \
910 __CONCAT(dname,_ioctl) \ 357 __CONCAT(dname,_ioctl) \
911 (dev_t _dev, u_long cmd, void *data, int flag, fw_proc_t td) 358 (dev_t _dev, u_long cmd, void *data, int flag, fw_proc_t td)
912#define FW_IOCTL_START \ 359#define FW_IOCTL_START \
913 int unit = DEV2UNIT(_dev); \ 360 int unit = DEV2UNIT(_dev); \
914 struct firewire_softc *sc, *dev; \ 361 struct firewire_softc *sc, *dev; \
915 \ 362 \
916 sc = dev = device_lookup_private(&ieee1394if_cd, unit); \ 363 sc = dev = device_lookup_private(&ieee1394if_cd, unit); \
917 if (dev == NULL) \ 364 if (dev == NULL) \
918 return ENXIO 365 return ENXIO
919 366
920/* 367/*
921 * fw poll macro for NetBSD 368 * fw poll macro for NetBSD
922 */ 369 */
923#define FW_POLL(dname) \ 370#define FW_POLL(dname) \
924 int \ 371 int \
925 __CONCAT(dname,_poll)(dev_t _dev, int events, fw_proc_t td) 372 __CONCAT(dname,_poll)(dev_t _dev, int events, fw_proc_t td)
926#define FW_POLL_START \ 373#define FW_POLL_START \
927 int unit = DEV2UNIT(_dev); \ 374 int unit = DEV2UNIT(_dev); \
928 struct firewire_softc *dev; \ 375 struct firewire_softc *dev; \
929 \ 376 \
930 dev = device_lookup_private(&ieee1394if_cd, unit); \ 377 dev = device_lookup_private(&ieee1394if_cd, unit); \
931 if (dev == NULL) \ 378 if (dev == NULL) \
932 return ENXIO 379 return ENXIO
933 380
934/* 381/*
935 * fw mmap macro for NetBSD 382 * fw mmap macro for NetBSD
936 */ 383 */
937#define FW_MMAP(dname) \ 384#define FW_MMAP(dname) \
938 paddr_t \ 385 paddr_t \
939 __CONCAT(dname,_mmap)(dev_t _dev, off_t offset, int nproto) 386 __CONCAT(dname,_mmap)(dev_t _dev, off_t offset, int nproto)
940#define FW_MMAP_START \ 387#define FW_MMAP_START \
941 int unit = DEV2UNIT(_dev); \ 388 int unit = DEV2UNIT(_dev); \
942 struct firewire_softc *dev; \ 389 struct firewire_softc *dev; \
943 \ 390 \
944 dev = device_lookup_private(&ieee1394if_cd, unit); \ 391 dev = device_lookup_private(&ieee1394if_cd, unit); \
945 if (dev == NULL) \ 392 if (dev == NULL) \
946 return ENXIO 393 return ENXIO
947 394
948/* 395/*
949 * fw strategy macro for NetBSD 396 * fw strategy macro for NetBSD
950 */ 397 */
951#define FW_STRATEGY_START \ 398#define FW_STRATEGY_START \
952 dev_t _dev = bp->bio_dev; \ 399 dev_t _dev = bp->bio_dev; \
953 int unit = DEV2UNIT(_dev); \ 400 int unit = DEV2UNIT(_dev); \
954 struct firewire_softc *sc, *dev; \ 401 struct firewire_softc *sc, *dev; \
955 \ 402 \
956 sc = dev = device_lookup_private(&ieee1394if_cd, unit); \ 403 sc = dev = device_lookup_private(&ieee1394if_cd, unit); \
957 if (dev == NULL) \ 404 if (dev == NULL) \
958 return 405 return
959 406
960/* 407/*
961 * if macro for NetBSD 408 * if macro for NetBSD
962 */ 409 */
963#define IF_DETACH_START(dname, sc) \ 410#define IF_DETACH_START(dname, sc) \
964 struct __CONCAT(dname,_softc) *sc = device_private(self) 411 struct __CONCAT(dname,_softc) *sc = device_private(self)
965#define IF_IOCTL_START(dname, sc) \ 412#define IF_IOCTL_START(dname, sc) \
966 struct __CONCAT(dname,_softc) *sc = \ 413 struct __CONCAT(dname,_softc) *sc = \
967 ((struct fwip_eth_softc *)ifp->if_softc)->fwip 414 ((struct fwip_eth_softc *)ifp->if_softc)->fwip
968#define IF_INIT(dname) \ 415#define IF_INIT(dname) \
969 int \ 416 int \
970 __CONCAT(dname,_init)(struct ifnet *ifp) 417 __CONCAT(dname,_init)(struct ifnet *ifp)
971#define IF_INIT_START(dname, sc, ifp) \ 418#define IF_INIT_START(dname, sc, ifp) \
972 struct __CONCAT(dname,_softc) *sc = \ 419 struct __CONCAT(dname,_softc) *sc = \
973 ((struct fwip_eth_softc *)(ifp)->if_softc)->fwip 420 ((struct fwip_eth_softc *)(ifp)->if_softc)->fwip
974#define IF_INIT_RETURN(r) return (r) 421#define IF_INIT_RETURN(r) return (r)
975#define IF_STOP(dname) \ 422#define IF_STOP(dname) \
976 void \ 423 void \
977 __CONCAT(dname,_stop)(struct ifnet *ifp, int disable) 424 __CONCAT(dname,_stop)(struct ifnet *ifp, int disable)
978#define IF_STOP_START(dname, ifp, sc) \ 425#define IF_STOP_START(dname, ifp, sc) \
979 struct __CONCAT(dname,_softc) *sc = \ 426 struct __CONCAT(dname,_softc) *sc = \
980 ((struct fwip_eth_softc *)(ifp)->if_softc)->fwip 427 ((struct fwip_eth_softc *)(ifp)->if_softc)->fwip
981 428
982/* 429/*
983 * fwohci macro for NetBSD 430 * fwohci macro for NetBSD
984 */ 431 */
985#define FWOHCI_DETACH() \ 432#define FWOHCI_DETACH() \
986 int \ 433 int \
987 fwohci_detach(struct fwohci_softc *sc, int flags) 434 fwohci_detach(struct fwohci_softc *sc, int flags)
988#define FWOHCI_DETACH_START \ 435#define FWOHCI_DETACH_START \
989 if (sc->fc.bdev != NULL) \ 436 if (sc->fc.bdev != NULL) \
990 config_detach(sc->fc.bdev, flags)  437 config_detach(sc->fc.bdev, flags)
991#define FWOHCI_DETACH_END 438#define FWOHCI_DETACH_END
992#define FWOHCI_INIT_END \ 439#define FWOHCI_INIT_END \
993 do { \ 440 do { \
994 struct fwbus_attach_args faa; \ 441 struct fwbus_attach_args faa; \
995 faa.name = "ieee1394if"; \ 442 faa.name = "ieee1394if"; \
996 sc->fc.bdev = config_found(sc->fc.dev, &faa, fwohci_print); \ 443 sc->fc.bdev = config_found(sc->fc.dev, &faa, fwohci_print); \
997 } while (/*CONSTCOND*/0) 444 } while (/*CONSTCOND*/0)
998 445
999/* 446/*
1000 * firewire macro for NetBSD 447 * firewire macro for NetBSD
1001 */ 448 */
1002#define FIREWIRE_ATTACH_START \ 449#define FIREWIRE_ATTACH_START \
1003 struct firewire_comm *fc = device_private(parent); \ 450 struct firewire_comm *fc = device_private(parent); \
1004 \ 451 \
1005 aprint_normal(": IEEE1394 bus\n"); \ 452 aprint_normal(": IEEE1394 bus\n"); \
1006 \ 453 \
1007 fc->bdev = sc->dev = self; \ 454 fc->bdev = sc->dev = self; \
1008 SLIST_INIT(&sc->devlist) 455 SLIST_INIT(&sc->devlist)
1009#define FWDEV_DESTROYDEV(sc) 456#define FWDEV_DESTROYDEV(sc)
1010#define FIREWIRE_GENERIC_ATTACH \ 457#define FIREWIRE_GENERIC_ATTACH \
1011 do { \ 458 do { \
1012 struct fw_attach_args faa; \ 459 struct fw_attach_args faa; \
1013 struct firewire_dev_list *devlist, *elm; \ 460 struct firewire_dev_list *devlist, *elm; \
1014 \ 461 \
1015 devlist = malloc( \ 462 devlist = malloc( \
1016 sizeof(struct firewire_dev_list), M_DEVBUF, M_NOWAIT); \ 463 sizeof(struct firewire_dev_list), M_DEVBUF, M_NOWAIT); \
1017 if (devlist == NULL) \ 464 if (devlist == NULL) \
1018 break; \ 465 break; \
1019 \ 466 \
1020 faa.name = "fwip"; \ 467 faa.name = "fwip"; \
1021 faa.fc = fc; \ 468 faa.fc = fc; \
1022 faa.fwdev = NULL; \ 469 faa.fwdev = NULL; \
1023 devlist->dev = config_found(sc->dev, &faa, firewire_print); \ 470 devlist->dev = config_found(sc->dev, &faa, firewire_print); \
1024 if (devlist->dev == NULL) { \ 471 if (devlist->dev == NULL) { \
1025 free(devlist, M_DEVBUF); \ 472 free(devlist, M_DEVBUF); \
1026 break; \ 473 break; \
1027 } \ 474 } \
1028 \ 475 \
1029 if (SLIST_EMPTY(&sc->devlist)) \ 476 if (SLIST_EMPTY(&sc->devlist)) \
1030 SLIST_INSERT_HEAD(&sc->devlist, devlist, link); \ 477 SLIST_INSERT_HEAD(&sc->devlist, devlist, link); \
1031 else { \ 478 else { \
1032 for (elm = SLIST_FIRST(&sc->devlist); \ 479 for (elm = SLIST_FIRST(&sc->devlist); \
1033 SLIST_NEXT(elm, link) != NULL; \ 480 SLIST_NEXT(elm, link) != NULL; \
1034 elm = SLIST_NEXT(elm, link)); \ 481 elm = SLIST_NEXT(elm, link)); \
1035 SLIST_INSERT_AFTER(elm, devlist, link); \ 482 SLIST_INSERT_AFTER(elm, devlist, link); \
1036 } \ 483 } \
1037 } while (/*CONSTCOND*/0) 484 } while (/*CONSTCOND*/0)
1038#define FIREWIRE_GENERIC_DETACH \ 485#define FIREWIRE_GENERIC_DETACH \
1039 do { \ 486 do { \
1040 struct firewire_dev_list *devlist; \ 487 struct firewire_dev_list *devlist; \
1041 int err; \ 488 int err; \
1042 \ 489 \
1043 while ((devlist = SLIST_FIRST(&sc->devlist)) != NULL) { \ 490 while ((devlist = SLIST_FIRST(&sc->devlist)) != NULL) { \
1044 if ((err = config_detach(devlist->dev, flags)) != 0) \ 491 if ((err = config_detach(devlist->dev, flags)) != 0) \
1045 return err; \ 492 return err; \
1046 SLIST_REMOVE( \ 493 SLIST_REMOVE( \
1047 &sc->devlist, devlist, firewire_dev_list, link); \ 494 &sc->devlist, devlist, firewire_dev_list, link); \
1048 free(devlist, M_DEVBUF); \ 495 free(devlist, M_DEVBUF); \
1049 } \ 496 } \
1050 } while (/*CONSTCOND*/0) 497 } while (/*CONSTCOND*/0)
1051#define FIREWIRE_SBP_ATTACH \ 498#define FIREWIRE_SBP_ATTACH \
1052 do { \ 499 do { \
1053 struct firewire_softc *sc = device_private(fc->bdev); \ 500 struct firewire_softc *sc = device_private(fc->bdev); \
1054 struct firewire_dev_list *devlist, *elm; \ 501 struct firewire_dev_list *devlist, *elm; \
1055 int locs[IEEE1394IFCF_NLOCS]; \ 502 int locs[IEEE1394IFCF_NLOCS]; \
1056 \ 503 \
1057 devlist = malloc( \ 504 devlist = malloc( \
1058 sizeof(struct firewire_dev_list), M_DEVBUF, M_NOWAIT); \ 505 sizeof(struct firewire_dev_list), M_DEVBUF, M_NOWAIT); \
1059 if (devlist == NULL) { \ 506 if (devlist == NULL) { \
1060 printf("memory allocation failed\n"); \ 507 printf("memory allocation failed\n"); \
1061 break; \ 508 break; \
1062 } \ 509 } \
1063 \ 510 \
1064 locs[IEEE1394IFCF_EUIHI] = fwdev->eui.hi; \ 511 locs[IEEE1394IFCF_EUIHI] = fwdev->eui.hi; \
1065 locs[IEEE1394IFCF_EUILO] = fwdev->eui.lo; \ 512 locs[IEEE1394IFCF_EUILO] = fwdev->eui.lo; \
1066 \ 513 \
1067 fwa.fwdev = fwdev; \ 514 fwa.fwdev = fwdev; \
1068 fwdev->sbp = config_found_sm_loc(sc->dev, "ieee1394if", \ 515 fwdev->sbp = config_found_sm_loc(sc->dev, "ieee1394if", \
1069 locs, &fwa, firewire_print, config_stdsubmatch); \ 516 locs, &fwa, firewire_print, config_stdsubmatch); \
1070 if (fwdev->sbp == NULL) { \ 517 if (fwdev->sbp == NULL) { \
1071 free(devlist, M_DEVBUF); \ 518 free(devlist, M_DEVBUF); \
1072 break; \ 519 break; \
1073 } \ 520 } \
1074 \ 521 \
1075 devlist->fwdev = fwdev; \ 522 devlist->fwdev = fwdev; \
1076 devlist->dev = fwdev->sbp; \ 523 devlist->dev = fwdev->sbp; \
1077 \ 524 \
1078 if (SLIST_EMPTY(&sc->devlist)) \ 525 if (SLIST_EMPTY(&sc->devlist)) \
1079 SLIST_INSERT_HEAD(&sc->devlist, devlist, link); \ 526 SLIST_INSERT_HEAD(&sc->devlist, devlist, link); \
1080 else { \ 527 else { \
1081 for (elm = SLIST_FIRST(&sc->devlist); \ 528 for (elm = SLIST_FIRST(&sc->devlist); \
1082 SLIST_NEXT(elm, link) != NULL; \ 529 SLIST_NEXT(elm, link) != NULL; \
1083 elm = SLIST_NEXT(elm, link)); \ 530 elm = SLIST_NEXT(elm, link)); \
1084 SLIST_INSERT_AFTER(elm, devlist, link); \ 531 SLIST_INSERT_AFTER(elm, devlist, link); \
1085 } \ 532 } \
1086 } while (/*CONSTCOND*/0) 533 } while (/*CONSTCOND*/0)
1087#define FIREWIRE_SBP_DETACH \ 534#define FIREWIRE_SBP_DETACH \
1088 do { \ 535 do { \
1089 struct firewire_softc *sc = device_private(fc->bdev); \ 536 struct firewire_softc *sc = device_private(fc->bdev); \
1090 struct firewire_dev_list *devlist; \ 537 struct firewire_dev_list *devlist; \
1091 \ 538 \
1092 SLIST_FOREACH(devlist, &sc->devlist, link) { \ 539 SLIST_FOREACH(devlist, &sc->devlist, link) { \
1093 if (devlist->fwdev != fwdev) \ 540 if (devlist->fwdev != fwdev) \
1094 continue; \ 541 continue; \
1095 SLIST_REMOVE( \ 542 SLIST_REMOVE( \
1096 &sc->devlist, devlist, firewire_dev_list, link); \ 543 &sc->devlist, devlist, firewire_dev_list, link); \
1097 free(devlist, M_DEVBUF); \ 544 free(devlist, M_DEVBUF); \
1098 \ 545 \
1099 if (config_detach(fwdev->sbp, DETACH_FORCE) != 0) \ 546 if (config_detach(fwdev->sbp, DETACH_FORCE) != 0) \
1100 return; \ 547 return; \
1101 } \ 548 } \
1102 } while (/*CONSTCOND*/0) 549 } while (/*CONSTCOND*/0)
1103#define FIREWIRE_CHILDREN_FOREACH_FUNC(func, fdc) \ 550#define FIREWIRE_CHILDREN_FOREACH_FUNC(func, fdc) \
1104 do { \ 551 do { \
1105 struct firewire_dev_list *devlist; \ 552 struct firewire_dev_list *devlist; \
1106 struct firewire_softc *sc = device_private(fc->bdev); \ 553 struct firewire_softc *sc = device_private(fc->bdev); \
1107 \ 554 \
1108 if (!SLIST_EMPTY(&sc->devlist)) { \ 555 if (!SLIST_EMPTY(&sc->devlist)) { \
1109 SLIST_FOREACH(devlist, &sc->devlist, link) { \ 556 SLIST_FOREACH(devlist, &sc->devlist, link) { \
1110 (fdc) = device_private(devlist->dev); \ 557 (fdc) = device_private(devlist->dev); \
1111 if ((fdc)->func != NULL) \ 558 if ((fdc)->func != NULL) \
1112 (fdc)->func((fdc)); \ 559 (fdc)->func((fdc)); \
1113 } \ 560 } \
1114 } \ 561 } \
1115 } while (/*CONSTCOND*/0) 562 } while (/*CONSTCOND*/0)
1116 563
1117/* 564/*
1118 * sbp macro for NetBSD 565 * sbp macro for NetBSD
1119 */ 566 */
1120#define SBP_ATTACH_START \ 567#define SBP_ATTACH_START \
1121 do { \ 568 do { \
1122 aprint_normal(": SBP-2/SCSI over IEEE1394\n"); \ 569 aprint_normal(": SBP-2/SCSI over IEEE1394\n"); \
1123 \ 570 \
1124 sbp->fd.dev = self; \ 571 sbp->fd.dev = self; \
1125 } while (/*CONSTCOND*/0) 572 } while (/*CONSTCOND*/0)
1126#define SBP_SCSIBUS_ATTACH \ 573#define SBP_SCSIBUS_ATTACH \
1127 do { \ 574 do { \
1128 struct scsipi_adapter *sc_adapter = &sbp->sc_adapter; \ 575 struct scsipi_adapter *sc_adapter = &sbp->sc_adapter; \
1129 struct scsipi_channel *sc_channel = &sbp->sc_channel; \ 576 struct scsipi_channel *sc_channel = &sbp->sc_channel; \
1130 struct sbp_target *target = &sbp->target; \ 577 struct sbp_target *target = &sbp->target; \
1131 \ 578 \
1132 sc_adapter->adapt_dev = sbp->fd.dev; \ 579 sc_adapter->adapt_dev = sbp->fd.dev; \
1133 sc_adapter->adapt_nchannels = 1; \ 580 sc_adapter->adapt_nchannels = 1; \
1134 sc_adapter->adapt_max_periph = 1; \ 581 sc_adapter->adapt_max_periph = 1; \
1135 sc_adapter->adapt_request = sbp_scsipi_request; \ 582 sc_adapter->adapt_request = sbp_scsipi_request; \
1136 sc_adapter->adapt_minphys = sbp_minphys; \ 583 sc_adapter->adapt_minphys = sbp_minphys; \
1137 sc_adapter->adapt_openings = 8; \ 584 sc_adapter->adapt_openings = 8; \
1138 /*Start with some. Grow as needed.*/\ 585 /*Start with some. Grow as needed.*/\
1139 \ 586 \
1140 sc_channel->chan_adapter = sc_adapter; \ 587 sc_channel->chan_adapter = sc_adapter; \
1141 sc_channel->chan_bustype = &scsi_bustype; \ 588 sc_channel->chan_bustype = &scsi_bustype; \
1142 sc_channel->chan_defquirks = PQUIRK_ONLYBIG; \ 589 sc_channel->chan_defquirks = PQUIRK_ONLYBIG; \
1143 sc_channel->chan_channel = 0; \ 590 sc_channel->chan_channel = 0; \
1144 sc_channel->chan_flags = \ 591 sc_channel->chan_flags = \
1145 SCSIPI_CHAN_CANGROW | SCSIPI_CHAN_NOSETTLE; \ 592 SCSIPI_CHAN_CANGROW | SCSIPI_CHAN_NOSETTLE; \
1146 \ 593 \
1147 /* We set nluns 0 now */ \ 594 /* We set nluns 0 now */ \
1148 sc_channel->chan_ntargets = 1; \ 595 sc_channel->chan_ntargets = 1; \
1149 sc_channel->chan_nluns = target->num_lun; \ 596 sc_channel->chan_nluns = target->num_lun; \
1150 sc_channel->chan_id = 1; \ 597 sc_channel->chan_id = 1; \
1151 \ 598 \
1152 if ((sbp->sc_bus = \ 599 if ((sbp->sc_bus = \
1153 config_found(sbp->fd.dev, sc_channel, scsiprint)) == \ 600 config_found(sbp->fd.dev, sc_channel, scsiprint)) == \
1154 NULL) { \ 601 NULL) { \
1155 fw_printf(sbp->fd.dev, "attach failed\n"); \ 602 fw_printf(sbp->fd.dev, "attach failed\n"); \
1156 return; \ 603 return; \
1157 } \ 604 } \
1158 } while (/*CONSTCOND*/0) 605 } while (/*CONSTCOND*/0)
1159#define SBP_DEVICE(d) ((d)->periph) 606#define SBP_DEVICE(d) ((d)->periph)
1160#define SBP_DEVICE_FREEZE(d, x) scsipi_periph_freeze((d)->periph, (x)); 607#define SBP_DEVICE_FREEZE(d, x) scsipi_periph_freeze((d)->periph, (x));
1161#define SBP_DEVICE_THAW(d, x) \ 608#define SBP_DEVICE_THAW(d, x) \
1162 do { \ 609 do { \
1163 if ((d)->periph) \ 610 if ((d)->periph) \
1164 scsipi_periph_thaw((d)->periph, (x)); \ 611 scsipi_periph_thaw((d)->periph, (x)); \
1165 /* XXXX */ \ 612 /* XXXX */ \
1166 scsipi_channel_thaw(&(d)->target->sbp->sc_channel, 0); \ 613 scsipi_channel_thaw(&(d)->target->sbp->sc_channel, 0); \
1167 } while (/*CONSTCOND*/0) 614 } while (/*CONSTCOND*/0)
1168#define SBP_BUS_FREEZE(b) scsipi_channel_freeze(&(b)->sc_channel, 1) 615#define SBP_BUS_FREEZE(b) scsipi_channel_freeze(&(b)->sc_channel, 1)
1169#define SBP_BUS_THAW(b) scsipi_channel_thaw(&(b)->sc_channel, 1) 616#define SBP_BUS_THAW(b) scsipi_channel_thaw(&(b)->sc_channel, 1)
1170#define SBP_DEVICE_PREATTACH() \ 617#define SBP_DEVICE_PREATTACH() \
1171 do { \ 618 do { \
1172 if (!sbp->lwp) { \ 619 if (!sbp->lwp) { \
1173 /* create thread */ \ 620 /* create thread */ \
1174 if (kthread_create(PRI_NONE, 0, NULL, \ 621 if (kthread_create(PRI_NONE, 0, NULL, \
1175 sbp_scsipi_scan_target, &sbp->target, \ 622 sbp_scsipi_scan_target, &sbp->target, \
1176 &sbp->lwp, "sbp%d_attach", \ 623 &sbp->lwp, "sbp%d_attach", \
1177 device_unit(sbp->fd.dev))) { \ 624 device_unit(sbp->fd.dev))) { \
1178 fw_printf(sbp->fd.dev, \ 625 fw_printf(sbp->fd.dev, \
1179 "unable to create thread"); \ 626 "unable to create thread"); \
1180 panic("fw_kthread_create"); \ 627 panic("fw_kthread_create"); \
1181 } \ 628 } \
1182 } \ 629 } \
1183 } while (/*CONSTCOND*/0) 630 } while (/*CONSTCOND*/0)
1184 631
1185/* 632/*
1186 * fwip macro for NetBSD 633 * fwip macro for NetBSD
1187 */ 634 */
1188#define FWIP_ATTACH_START \ 635#define FWIP_ATTACH_START \
1189 device_t dev = self; \ 636 device_t dev = self; \
1190 struct fw_hwaddr *hwaddr; 637 struct fw_hwaddr *hwaddr;
1191#define FWIP_ATTACH_SETUP \ 638#define FWIP_ATTACH_SETUP \
1192 do { \ 639 do { \
1193 aprint_normal(": IP over IEEE1394\n"); \ 640 aprint_normal(": IP over IEEE1394\n"); \
1194 fwip->fd.dev = self; \ 641 fwip->fd.dev = self; \
1195 fwip->fw_softc.fwip_ifp = &fwip->fw_softc.fwcom.fc_if; \ 642 fwip->fw_softc.fwip_ifp = &fwip->fw_softc.fwcom.fc_if; \
1196 hwaddr = (struct fw_hwaddr *)&fwip->fw_softc.fwcom.ic_hwaddr; \ 643 hwaddr = (struct fw_hwaddr *)&fwip->fw_softc.fwcom.ic_hwaddr; \
1197 } while (/*CONSTCOND*/0) 644 } while (/*CONSTCOND*/0)
1198 645
1199#define FWDEV_MAKEDEV(sc) 646#define FWDEV_MAKEDEV(sc)
1200#define FIREWIRE_IFATTACH(ifp, ha) \ 647#define FIREWIRE_IFATTACH(ifp, ha) \
1201 do { \ 648 do { \
1202 if_attach((ifp)); \ 649 if_attach((ifp)); \
1203 ieee1394_ifattach((ifp), (const struct ieee1394_hwaddr *)(ha));\ 650 ieee1394_ifattach((ifp), (const struct ieee1394_hwaddr *)(ha));\
1204 } while (/*CONSTCOND*/0) 651 } while (/*CONSTCOND*/0)
1205#define FIREWIRE_IFDETACH(ifp) \ 652#define FIREWIRE_IFDETACH(ifp) \
1206 do { \ 653 do { \
1207 ieee1394_ifdetach(ifp); \ 654 ieee1394_ifdetach(ifp); \
1208 if_detach(ifp); \ 655 if_detach(ifp); \
1209 } while (/*CONSTCOND*/0) 656 } while (/*CONSTCOND*/0)
1210#define FIREWIRE_BUSRESET(ifp) ieee1394_drain((ifp)) 657#define FIREWIRE_BUSRESET(ifp) ieee1394_drain((ifp))
1211#define FIREWIRE_INPUT(ifp, m, src) \ 658#define FIREWIRE_INPUT(ifp, m, src) \
1212 ieee1394_input((ifp), (m), (src)) 659 ieee1394_input((ifp), (m), (src))
1213#define FWIP_INIT(sc) fwip_init((sc)->fw_softc.fwip_ifp) 660#define FWIP_INIT(sc) fwip_init((sc)->fw_softc.fwip_ifp)
1214#define FWIP_STOP(sc) fwip_stop((sc)->fw_softc.fwip_ifp, 1) 661#define FWIP_STOP(sc) fwip_stop((sc)->fw_softc.fwip_ifp, 1)
1215#define FIREWIRE_IOCTL(ifp, cmd, data) \ 662#define FIREWIRE_IOCTL(ifp, cmd, data) \
1216 ieee1394_ioctl((ifp), (cmd), (data)) 663 ieee1394_ioctl((ifp), (cmd), (data))
1217#define IF_INITNAME(ifp, dev, unit) \ 664#define IF_INITNAME(ifp, dev, unit) \
1218 strlcpy((ifp)->if_xname, device_xname(dev), IFNAMSIZ); 665 strlcpy((ifp)->if_xname, device_xname(dev), IFNAMSIZ);
1219#define SET_IFFUNC(ifp, start, ioctl, init, stop) \ 666#define SET_IFFUNC(ifp, start, ioctl, init, stop) \
1220 do { \ 667 do { \
1221 (ifp)->if_start = (start); \ 668 (ifp)->if_start = (start); \
1222 (ifp)->if_ioctl = (ioctl); \ 669 (ifp)->if_ioctl = (ioctl); \
1223 (ifp)->if_init = (init); \ 670 (ifp)->if_init = (init); \
1224 (ifp)->if_stop = (stop); \ 671 (ifp)->if_stop = (stop); \
1225 } while (/*CONSTCOND*/0) 672 } while (/*CONSTCOND*/0)
1226 673
1227/* 674/*
1228 * fwdev macro for NetBSD 675 * fwdev macro for NetBSD
1229 */ 676 */
1230#define FWDEV_OPEN_START \ 677#define FWDEV_OPEN_START \
1231 if (DEV_FWMEM(_dev)) \ 678 if (DEV_FWMEM(_dev)) \
1232 return fwmem_open(_dev, flags, fmt, td) 679 return fwmem_open(_dev, flags, fmt, td)
1233#define FWDEV_CLOSE_START \ 680#define FWDEV_CLOSE_START \
1234 if (DEV_FWMEM(_dev)) \ 681 if (DEV_FWMEM(_dev)) \
1235 return fwmem_close(_dev, flags, fmt, td) 682 return fwmem_close(_dev, flags, fmt, td)
1236#define FWDEV_READ_START \ 683#define FWDEV_READ_START \
1237 if (DEV_FWMEM(_dev)) \ 684 if (DEV_FWMEM(_dev)) \
1238 return physio(fw_strategy, NULL, _dev, ioflag, minphys, uio) 685 return physio(fw_strategy, NULL, _dev, ioflag, minphys, uio)
1239#define FWDEV_WRITE_START \ 686#define FWDEV_WRITE_START \
1240 if (DEV_FWMEM(_dev)) \ 687 if (DEV_FWMEM(_dev)) \
1241 return physio(fw_strategy, NULL, _dev, ioflag, minphys, uio) 688 return physio(fw_strategy, NULL, _dev, ioflag, minphys, uio)
1242#define FWDEV_IOCTL_START \ 689#define FWDEV_IOCTL_START \
1243 if (DEV_FWMEM(_dev)) \ 690 if (DEV_FWMEM(_dev)) \
1244 return fwmem_ioctl(_dev, cmd, data, flag, td) 691 return fwmem_ioctl(_dev, cmd, data, flag, td)
1245#define FWDEV_IOCTL_REDIRECT fc->ioctl(_dev, cmd, data, flag, td) 692#define FWDEV_IOCTL_REDIRECT fc->ioctl(_dev, cmd, data, flag, td)
1246#define FWDEV_POLL_START \ 693#define FWDEV_POLL_START \
1247 if (DEV_FWMEM(_dev)) \ 694 if (DEV_FWMEM(_dev)) \
1248 return fwmem_poll(_dev, events, td) 695 return fwmem_poll(_dev, events, td)
1249#define FWDEV_MMAP_START \ 696#define FWDEV_MMAP_START \
1250 if (DEV_FWMEM(_dev)) \ 697 if (DEV_FWMEM(_dev)) \
1251 return fwmem_mmap(_dev, offset, nproto) 698 return fwmem_mmap(_dev, offset, nproto)
1252#define FWDEV_STRATEGY_START \ 699#define FWDEV_STRATEGY_START \
1253 if (DEV_FWMEM(_dev)) { \ 700 if (DEV_FWMEM(_dev)) { \
1254 fwmem_strategy(bp); \ 701 fwmem_strategy(bp); \
1255 return; \ 702 return; \
1256 } 703 }
1257 704
1258#define XS_REQ_INVALID XS_DRIVER_STUFFUP 705#define XS_REQ_INVALID XS_DRIVER_STUFFUP
1259#define XS_SCSI_BUS_RESET XS_RESET 706#define XS_SCSI_BUS_RESET XS_RESET
1260#define XS_BDR_SENT XS_RESET 707#define XS_BDR_SENT XS_RESET
1261#define XS_DEV_NOT_THERE XS_DRIVER_STUFFUP 708#define XS_DEV_NOT_THERE XS_DRIVER_STUFFUP
1262#define XS_CMD_TIMEOUT XS_TIMEOUT 709#define XS_CMD_TIMEOUT XS_TIMEOUT
1263#define XS_REQUEUE_REQ XS_REQUEUE 710#define XS_REQUEUE_REQ XS_REQUEUE
1264#define XS_REQ_CMP XS_NOERROR 711#define XS_REQ_CMP XS_NOERROR
1265#define XS_REQ_CMP_ERR XS_DRIVER_STUFFUP 712#define XS_REQ_CMP_ERR XS_DRIVER_STUFFUP
1266#define XS_UA_ABORT XS_DRIVER_STUFFUP 713#define XS_UA_ABORT XS_DRIVER_STUFFUP
1267 714
1268typedef struct scsipi_xfer sbp_scsi_xfer; 715typedef struct scsipi_xfer sbp_scsi_xfer;
1269typedef struct scsipi_inquiry_data sbp_scsi_inquiry_data; 716typedef struct scsipi_inquiry_data sbp_scsi_inquiry_data;
1270 717
1271#define SCSI_XFER_TARGET(x) ((x)->xs_periph->periph_target) 718#define SCSI_XFER_TARGET(x) ((x)->xs_periph->periph_target)
1272#define SCSI_XFER_LUN(x) ((x)->xs_periph->periph_lun) 719#define SCSI_XFER_LUN(x) ((x)->xs_periph->periph_lun)
1273#define SCSI_XFER_ERROR(x) ((x)->error) 720#define SCSI_XFER_ERROR(x) ((x)->error)
1274#define SCSI_XFER_DIR(x) \ 721#define SCSI_XFER_DIR(x) \
1275 ((x)->xs_control & (XS_CTL_DATA_IN | XS_CTL_DATA_OUT)) 722 ((x)->xs_control & (XS_CTL_DATA_IN | XS_CTL_DATA_OUT))
1276#define SCSI_XFER_DATA_IN XS_CTL_DATA_IN 723#define SCSI_XFER_DATA_IN XS_CTL_DATA_IN
1277#define SCSI_XFER_CALLOUT(x) ((x)->xs_callout) 724#define SCSI_XFER_CALLOUT(x) ((x)->xs_callout)
1278#define SCSI_XFER_TIMEOUT(x) ((x)->timeout) 725#define SCSI_XFER_TIMEOUT(x) ((x)->timeout)
1279#define SCSI_XFER_OPECODE(x) ((x)->cmd->opcode) 726#define SCSI_XFER_OPECODE(x) ((x)->cmd->opcode)
1280#define SCSI_XFER_STATUS(x) ((x)->xs_status) 727#define SCSI_XFER_STATUS(x) ((x)->xs_status)
1281#define SCSI_XFER_EVPD(x) ((x)->cmd->bytes[0] & SI_EVPD) 728#define SCSI_XFER_EVPD(x) ((x)->cmd->bytes[0] & SI_EVPD)
1282#define SI_EVPD 0x01 729#define SI_EVPD 0x01
1283#define SCSI_XFER_CMDLEN(x) ((x)->cmdlen) 730#define SCSI_XFER_CMDLEN(x) ((x)->cmdlen)
1284#define SCSI_XFER_CMD(x) ((x)->cmd) 731#define SCSI_XFER_CMD(x) ((x)->cmd)
1285#define SCSI_XFER_DATALEN(x) ((x)->datalen) 732#define SCSI_XFER_DATALEN(x) ((x)->datalen)
1286#define SCSI_XFER_DATA(x) ((x)->data) 733#define SCSI_XFER_DATA(x) ((x)->data)
1287#define SCSI_XFER_SENSELEN(x) (0 /* XXXXX */) 734#define SCSI_XFER_SENSELEN(x) (0 /* XXXXX */)
1288#define SCSI_SENSE_DATA(x) (&(x)->sense.scsi_sense) 735#define SCSI_SENSE_DATA(x) (&(x)->sense.scsi_sense)
1289#define SCSI_INQUIRY_DATA(x) ((x)->data) 736#define SCSI_INQUIRY_DATA(x) ((x)->data)
1290#define SCSI_XFER_FUNCCODE(x) XPT_SCSI_IO 737#define SCSI_XFER_FUNCCODE(x) XPT_SCSI_IO
1291#define SCSI_XFER_10BCMD_DUMP(x)\ 738#define SCSI_XFER_10BCMD_DUMP(x)\
1292 ((x)->cmd->opcode), \ 739 ((x)->cmd->opcode), \
1293 ((x)->cmd->bytes[0]), \ 740 ((x)->cmd->bytes[0]), \
1294 ((x)->cmd->bytes[1]), \ 741 ((x)->cmd->bytes[1]), \
1295 ((x)->cmd->bytes[2]), \ 742 ((x)->cmd->bytes[2]), \
1296 ((x)->cmd->bytes[3]), \ 743 ((x)->cmd->bytes[3]), \
1297 ((x)->cmd->bytes[4]), \ 744 ((x)->cmd->bytes[4]), \
1298 ((x)->cmd->bytes[5]), \ 745 ((x)->cmd->bytes[5]), \
1299 ((x)->cmd->bytes[6]), \ 746 ((x)->cmd->bytes[6]), \
1300 ((x)->cmd->bytes[7]), \ 747 ((x)->cmd->bytes[7]), \
1301 ((x)->cmd->bytes[8]) 748 ((x)->cmd->bytes[8])
1302#define SCSI_XFER_REQUEST_COMPLETE(x) \ 749#define SCSI_XFER_REQUEST_COMPLETE(x) \
1303 ((x)->resid = 0) 750 ((x)->resid = 0)
1304#define SCSI_TRANSFER_DONE(x) scsipi_done((x)) 751#define SCSI_TRANSFER_DONE(x) scsipi_done((x))
1305 752
1306#define NOT_LUN_WILDCARD(l) (1) 753#define NOT_LUN_WILDCARD(l) (1)
1307#define CAM_XFER_FLAGS(x) (0) /* XXX */ 754#define CAM_XFER_FLAGS(x) (0) /* XXX */
1308#define CAM_SCATTER_VALID (0) /* XXX */ 755#define CAM_SCATTER_VALID (0) /* XXX */
1309#define CAM_DATA_PHYS (0) /* XXX */ 756#define CAM_DATA_PHYS (0) /* XXX */
1310#define XPT_SCSI_IO (1) /* XXX */ 757#define XPT_SCSI_IO (1) /* XXX */
1311 758
1312#ifndef rounddown 759#ifndef rounddown
1313#define rounddown(x, y) ((x) / (y) * (y)) 760#define rounddown(x, y) ((x) / (y) * (y))
1314#endif 761#endif
1315 762
1316/* 763/*
1317 * additional mbuf macros for NetBSD 764 * additional mbuf macros for NetBSD
1318 */ 765 */
1319#include <sys/mbuf.h> 766#include <sys/mbuf.h>
1320#define M_TRYWAIT M_WAITOK 767#define M_TRYWAIT M_WAITOK
1321 768
1322#define MTAG_FIREWIRE 1394 769#define MTAG_FIREWIRE 1394
1323#define MTAG_FIREWIRE_HWADDR 0 770#define MTAG_FIREWIRE_HWADDR 0
1324#define MTAG_FIREWIRE_SENDER_EUID 1 771#define MTAG_FIREWIRE_SENDER_EUID 1
1325 772
1326#define m_tag_alloc(cookie, type, len, wait) \ 773#define m_tag_alloc(cookie, type, len, wait) \
1327 m_tag_get((type), (len), (wait)) 774 m_tag_get((type), (len), (wait))
1328#define m_tag_locate(m, cookie, type, t) \ 775#define m_tag_locate(m, cookie, type, t) \
1329 m_tag_find((m), (type), (t)) 776 m_tag_find((m), (type), (t))
1330 777
1331/* additional bpf macros */ 778/* additional bpf macros */
1332#define bpf_peers_present(if_bpf) (if_bpf) 779#define bpf_peers_present(if_bpf) (if_bpf)
1333 780
1334 781
1335#define CTR0(m, format) 782#define CTR0(m, format)
1336#define CTR1(m, format, p1) 783#define CTR1(m, format, p1)
1337 784
1338#define OHCI_CSR_WRITE(sc, reg, val) \ 785#define OHCI_CSR_WRITE(sc, reg, val) \
1339 bus_space_write_4((sc)->bst, (sc)->bsh, reg, val) 786 bus_space_write_4((sc)->bst, (sc)->bsh, reg, val)
1340 787
1341#define FILTER_STRAY 0 788#define FILTER_STRAY 0
1342#define FILTER_HANDLED 1 789#define FILTER_HANDLED 1
1343 790
1344#define SSD_CURRENT_ERROR 0x70 791#define SSD_CURRENT_ERROR 0x70
1345#define SSD_DEFERRED_ERROR 0x71 792#define SSD_DEFERRED_ERROR 0x71
1346 793
1347#define T_RBC T_SIMPLE_DIRECT 794#define T_RBC T_SIMPLE_DIRECT
1348 795
1349#define SCSI_STATUS_CHECK_COND SCSI_CHECK 796#define SCSI_STATUS_CHECK_COND SCSI_CHECK
1350#define SCSI_STATUS_BUSY SCSI_BUSY 797#define SCSI_STATUS_BUSY SCSI_BUSY
1351#define SCSI_STATUS_CMD_TERMINATED SCSI_TERMINATED 798#define SCSI_STATUS_CMD_TERMINATED SCSI_TERMINATED
1352 799
1353#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF 800#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF
1354 801
1355#define DFLTPHYS (64 * 1024) /* fake */ 802#define DFLTPHYS (64 * 1024) /* fake */
1356 803
1357#define kdb_backtrace() 804#define kdb_backtrace()
1358#define kdb_active 0 805#define kdb_active 0
1359 806
1360#endif 807#endif
1361#endif 
1362#if defined(__NetBSD__) 
1363#define vm_offset_t void * 808#define vm_offset_t void *
1364#endif 809#endif
1365#endif