This source file includes following definitions.
- sdparam
- fcparam
- ispsoftc_t
- ISPCTL_RESET_BUS
- ISPCTL_RESET_DEV
- ISPCTL_ABORT_CMD
- ISPCTL_UPDATE_PARAMS
- ISPCTL_FCLINK_TEST
- ISPCTL_SCAN_FABRIC
- ISPCTL_SCAN_LOOP
- ISPCTL_PDB_SYNC
- ISPCTL_SEND_LIP
- ISPCTL_GET_POSMAP
- ISPCTL_RUN_MBOXCMD
- ISPCTL_TOGGLE_TMODE
- ispctl_t
- ISPASYNC_NEW_TGT_PARAMS
- ISPASYNC_BUS_RESET
- ISPASYNC_LOOP_DOWN
- ISPASYNC_LOOP_UP
- ISPASYNC_LIP
- ISPASYNC_LOOP_RESET
- ISPASYNC_CHANGE_NOTIFY
- ISPASYNC_FABRIC_DEV
- ISPASYNC_PROMENADE
- ISPASYNC_TARGET_MESSAGE
- ISPASYNC_TARGET_EVENT
- ISPASYNC_TARGET_ACTION
- ISPASYNC_CONF_CHANGE
- ISPASYNC_UNHANDLED_RESPONSE
- ISPASYNC_FW_CRASH
- ISPASYNC_FW_DUMPED
- ISPASYNC_FW_RESTARTED
- ispasync_t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #ifndef _ISPVAR_H
32 #define _ISPVAR_H
33
34 #if defined(__NetBSD__) || defined(__OpenBSD__)
35 #include <dev/ic/ispmbox.h>
36 #ifdef ISP_TARGET_MODE
37 #include <dev/ic/isp_target.h>
38 #include <dev/ic/isp_tpublic.h>
39 #endif
40 #endif
41 #ifdef __FreeBSD__
42 #include <dev/isp/ispmbox.h>
43 #ifdef ISP_TARGET_MODE
44 #include <dev/isp/isp_target.h>
45 #include <dev/isp/isp_tpublic.h>
46 #endif
47 #endif
48 #ifdef __linux__
49 #include "ispmbox.h"
50 #ifdef ISP_TARGET_MODE
51 #include "isp_target.h"
52 #include "isp_tpublic.h"
53 #endif
54 #endif
55
56 #define ISP_CORE_VERSION_MAJOR 2
57 #define ISP_CORE_VERSION_MINOR 7
58
59
60
61
62 struct ispsoftc;
63 struct ispmdvec {
64 int (*dv_rd_isr)
65 (struct ispsoftc *, u_int16_t *, u_int16_t *, u_int16_t *);
66 u_int16_t (*dv_rd_reg) (struct ispsoftc *, int);
67 void (*dv_wr_reg) (struct ispsoftc *, int, u_int16_t);
68 int (*dv_mbxdma) (struct ispsoftc *);
69 int (*dv_dmaset) (struct ispsoftc *,
70 XS_T *, ispreq_t *, u_int16_t *, u_int16_t);
71 void (*dv_dmaclr)
72 (struct ispsoftc *, XS_T *, u_int16_t);
73 void (*dv_reset0) (struct ispsoftc *);
74 void (*dv_reset1) (struct ispsoftc *);
75 void (*dv_dregs) (struct ispsoftc *, const char *);
76 u_int16_t *dv_ispfw;
77 u_int16_t dv_conf1;
78 u_int16_t dv_clock;
79 };
80
81
82
83
84 #define MAX_TARGETS 16
85 #define MAX_FC_TARG 256
86 #define ISP_MAX_TARGETS(isp) (IS_FC(isp)? MAX_FC_TARG : MAX_TARGETS)
87 #define ISP_MAX_LUNS(isp) (isp)->isp_maxluns
88
89
90
91
92 #ifdef ISP_DAC_SUPPORTED
93 typedef u_int64_t isp_dma_addr_t;
94 #else
95 typedef u_int32_t isp_dma_addr_t;
96 #endif
97
98
99
100
101
102 #define ISP_READ_ISR(isp, isrp, semap, mbox0p) \
103 (*(isp)->isp_mdvec->dv_rd_isr)(isp, isrp, semap, mbox0p)
104
105 #define ISP_READ(isp, reg) \
106 (*(isp)->isp_mdvec->dv_rd_reg)((isp), (reg))
107
108 #define ISP_WRITE(isp, reg, val) \
109 (*(isp)->isp_mdvec->dv_wr_reg)((isp), (reg), (val))
110
111 #define ISP_MBOXDMASETUP(isp) \
112 (*(isp)->isp_mdvec->dv_mbxdma)((isp))
113
114 #define ISP_DMASETUP(isp, xs, req, iptrp, optr) \
115 (*(isp)->isp_mdvec->dv_dmaset)((isp), (xs), (req), (iptrp), (optr))
116
117 #define ISP_DMAFREE(isp, xs, hndl) \
118 if ((isp)->isp_mdvec->dv_dmaclr) \
119 (*(isp)->isp_mdvec->dv_dmaclr)((isp), (xs), (hndl))
120
121 #define ISP_RESET0(isp) \
122 if ((isp)->isp_mdvec->dv_reset0) (*(isp)->isp_mdvec->dv_reset0)((isp))
123 #define ISP_RESET1(isp) \
124 if ((isp)->isp_mdvec->dv_reset1) (*(isp)->isp_mdvec->dv_reset1)((isp))
125 #define ISP_DUMPREGS(isp, m) \
126 if ((isp)->isp_mdvec->dv_dregs) (*(isp)->isp_mdvec->dv_dregs)((isp),(m))
127
128 #define ISP_SETBITS(isp, reg, val) \
129 (*(isp)->isp_mdvec->dv_wr_reg)((isp), (reg), ISP_READ((isp), (reg)) | (val))
130
131 #define ISP_CLRBITS(isp, reg, val) \
132 (*(isp)->isp_mdvec->dv_wr_reg)((isp), (reg), ISP_READ((isp), (reg)) & ~(val))
133
134
135
136
137
138
139
140 #define SYNC_REQUEST 0
141 #define SYNC_RESULT 1
142 #define SYNC_SFORDEV 2
143 #define SYNC_SFORCPU 3
144 #define SYNC_REG 4
145
146
147
148
149
150
151 #define QENTRY_LEN 64
152
153 #define RQUEST_QUEUE_LEN(x) MAXISPREQUEST(x)
154 #ifdef ISP_TARGET_MODE
155 #define RESULT_QUEUE_LEN(x) MAXISPREQUEST(x)
156 #else
157 #define RESULT_QUEUE_LEN(x) \
158 (((MAXISPREQUEST(x) >> 2) < 64)? 64 : MAXISPREQUEST(x) >> 2)
159 #endif
160 #define ISP_QUEUE_ENTRY(q, idx) ((q) + ((idx) * QENTRY_LEN))
161 #define ISP_QUEUE_SIZE(n) ((n) * QENTRY_LEN)
162 #define ISP_NXT_QENTRY(idx, qlen) (((idx) + 1) & ((qlen)-1))
163 #define ISP_QFREE(in, out, qlen) \
164 ((in == out)? (qlen - 1) : ((in > out)? \
165 ((qlen - 1) - (in - out)) : (out - in - 1)))
166 #define ISP_QAVAIL(isp) \
167 ISP_QFREE(isp->isp_reqidx, isp->isp_reqodx, RQUEST_QUEUE_LEN(isp))
168
169 #define ISP_ADD_REQUEST(isp, nxti) \
170 MEMORYBARRIER(isp, SYNC_REQUEST, isp->isp_reqidx, QENTRY_LEN); \
171 WRITE_REQUEST_QUEUE_IN_POINTER(isp, nxti); \
172 isp->isp_reqidx = nxti
173
174
175
176
177
178 typedef struct {
179 u_int isp_gotdparms : 1,
180 isp_req_ack_active_neg : 1,
181 isp_data_line_active_neg: 1,
182 isp_cmd_dma_burst_enable: 1,
183 isp_data_dma_burst_enabl: 1,
184 isp_fifo_threshold : 3,
185 isp_ultramode : 1,
186 isp_diffmode : 1,
187 isp_lvdmode : 1,
188 isp_fast_mttr : 1,
189 isp_initiator_id : 4,
190 isp_async_data_setup : 4;
191 u_int16_t isp_selection_timeout;
192 u_int16_t isp_max_queue_depth;
193 u_int8_t isp_tag_aging;
194 u_int8_t isp_bus_reset_delay;
195 u_int8_t isp_retry_count;
196 u_int8_t isp_retry_delay;
197 struct {
198 u_int32_t
199 exc_throttle : 8,
200 : 1,
201 dev_enable : 1,
202 dev_update : 1,
203 dev_refresh : 1,
204 actv_offset : 4,
205 goal_offset : 4,
206 nvrm_offset : 4;
207 u_int8_t actv_period;
208 u_int8_t goal_period;
209 u_int8_t nvrm_period;
210 u_int16_t actv_flags;
211 u_int16_t goal_flags;
212 u_int16_t nvrm_flags;
213 } isp_devparam[MAX_TARGETS];
214 } sdparam;
215
216
217
218
219 #define DPARM_DISC 0x8000
220 #define DPARM_PARITY 0x4000
221 #define DPARM_WIDE 0x2000
222 #define DPARM_SYNC 0x1000
223 #define DPARM_TQING 0x0800
224 #define DPARM_ARQ 0x0400
225 #define DPARM_QFRZ 0x0200
226 #define DPARM_RENEG 0x0100
227 #define DPARM_NARROW 0x0080
228 #define DPARM_ASYNC 0x0040
229 #define DPARM_PPR 0x0020
230 #define DPARM_DEFAULT (0xFF00 & ~DPARM_QFRZ)
231 #define DPARM_SAFE_DFLT (DPARM_DEFAULT & ~(DPARM_WIDE|DPARM_SYNC|DPARM_TQING))
232
233
234
235 #define ISP_80M_SYNCPARMS 0x0c09
236 #define ISP_40M_SYNCPARMS 0x0c0a
237 #define ISP_20M_SYNCPARMS 0x0c0c
238 #define ISP_20M_SYNCPARMS_1040 0x080c
239 #define ISP_10M_SYNCPARMS 0x0c19
240 #define ISP_08M_SYNCPARMS 0x0c25
241 #define ISP_05M_SYNCPARMS 0x0c32
242 #define ISP_04M_SYNCPARMS 0x0c41
243
244
245
246
247 #define FL_PORT_ID 0x7e
248 #define FC_PORT_ID 0x7f
249 #define FC_SNS_ID 0x80
250
251
252 #ifndef GA_NXT_MAX
253 #define GA_NXT_MAX 256
254 #endif
255
256 typedef struct {
257 u_int32_t isp_fwoptions : 16,
258 isp_gbspeed : 2,
259 isp_iid_set : 1,
260 loop_seen_once : 1,
261 isp_loopstate : 4,
262 isp_fwstate : 3,
263 isp_gotdparms : 1,
264 isp_topo : 3,
265 isp_onfabric : 1;
266 u_int8_t isp_iid;
267 u_int8_t isp_loopid;
268 u_int8_t isp_alpa;
269 u_int32_t isp_portid;
270 volatile u_int16_t isp_lipseq;
271 u_int16_t isp_fwattr;
272 u_int8_t isp_execthrottle;
273 u_int8_t isp_retry_delay;
274 u_int8_t isp_retry_count;
275 u_int8_t isp_reserved;
276 u_int16_t isp_maxalloc;
277 u_int16_t isp_maxfrmlen;
278 u_int64_t isp_nodewwn;
279 u_int64_t isp_portwwn;
280
281
282
283
284
285
286
287
288
289 struct lportdb {
290 u_int32_t
291 port_type : 8,
292 loopid : 8,
293 fc4_type : 4,
294 last_fabric_dev : 1,
295 : 2,
296 relogin : 1,
297 force_logout : 1,
298 was_fabric_dev : 1,
299 fabric_dev : 1,
300 loggedin : 1,
301 roles : 2,
302 valid : 1;
303 u_int32_t portid;
304 u_int64_t node_wwn;
305 u_int64_t port_wwn;
306 } portdb[MAX_FC_TARG], tport[FC_PORT_ID];
307
308
309
310
311 caddr_t isp_scratch;
312 isp_dma_addr_t isp_scdma;
313 #ifdef ISP_FW_CRASH_DUMP
314 u_int16_t *isp_dump_data;
315 #endif
316 } fcparam;
317
318 #define FW_CONFIG_WAIT 0
319 #define FW_WAIT_AL_PA 1
320 #define FW_WAIT_LOGIN 2
321 #define FW_READY 3
322 #define FW_LOSS_OF_SYNC 4
323 #define FW_ERROR 5
324 #define FW_REINIT 6
325 #define FW_NON_PART 7
326
327 #define LOOP_NIL 0
328 #define LOOP_LIP_RCVD 1
329 #define LOOP_PDB_RCVD 2
330 #define LOOP_SCANNING_FABRIC 3
331 #define LOOP_FSCAN_DONE 4
332 #define LOOP_SCANNING_LOOP 5
333 #define LOOP_LSCAN_DONE 6
334 #define LOOP_SYNCING_PDB 7
335 #define LOOP_READY 8
336
337 #define TOPO_NL_PORT 0
338 #define TOPO_FL_PORT 1
339 #define TOPO_N_PORT 2
340 #define TOPO_F_PORT 3
341 #define TOPO_PTP_STUB 4
342
343
344
345
346 typedef struct ispsoftc {
347
348
349
350 struct isposinfo isp_osinfo;
351
352
353
354
355 struct ispmdvec * isp_mdvec;
356
357
358
359
360
361
362 void * isp_param;
363 u_int16_t isp_fwrev[3];
364 u_int16_t isp_romfw_rev[3];
365 u_int16_t isp_maxcmds;
366 u_int8_t isp_type;
367 u_int8_t isp_revision;
368 u_int32_t isp_maxluns;
369
370 u_int32_t isp_clock : 8,
371 : 4,
372 isp_port : 1,
373 isp_failed : 1,
374 isp_open : 1,
375 isp_touched : 1,
376 isp_bustype : 1,
377 isp_loaded_fw : 1,
378 isp_role : 2,
379 isp_dblev : 12;
380
381 u_int32_t isp_confopts;
382
383 u_int16_t isp_rqstinrp;
384 u_int16_t isp_rqstoutrp;
385 u_int16_t isp_respinrp;
386 u_int16_t isp_respoutrp;
387
388
389
390
391 u_int64_t isp_intcnt;
392 u_int64_t isp_intbogus;
393 u_int64_t isp_intmboxc;
394 u_int64_t isp_intoasync;
395 u_int64_t isp_rsltccmplt;
396 u_int64_t isp_fphccmplt;
397 u_int16_t isp_rscchiwater;
398 u_int16_t isp_fpcchiwater;
399
400
401
402
403
404 volatile u_int32_t
405 isp_obits : 8,
406 isp_mboxbsy : 1,
407 isp_state : 3,
408 isp_sendmarker : 2,
409 isp_update : 2,
410 isp_nactive : 16;
411 volatile u_int16_t isp_reqodx;
412 volatile u_int16_t isp_reqidx;
413 volatile u_int16_t isp_residx;
414 volatile u_int16_t isp_resodx;
415 volatile u_int16_t isp_rspbsy;
416 volatile u_int16_t isp_lasthdls;
417 volatile u_int16_t isp_mboxtmp[MAX_MAILBOX];
418 volatile u_int16_t isp_lastmbxcmd;
419 volatile u_int16_t isp_mbxwrk0;
420 volatile u_int16_t isp_mbxwrk1;
421 volatile u_int16_t isp_mbxwrk2;
422 void * isp_mbxworkp;
423
424
425
426
427 XS_T **isp_xflist;
428
429
430
431
432 caddr_t isp_rquest;
433 caddr_t isp_result;
434 isp_dma_addr_t isp_rquest_dma;
435 isp_dma_addr_t isp_result_dma;
436 } ispsoftc_t;
437
438 #define SDPARAM(isp) ((sdparam *) (isp)->isp_param)
439 #define FCPARAM(isp) ((fcparam *) (isp)->isp_param)
440
441
442
443
444 #define ISP_NILSTATE 0
445 #define ISP_RESETSTATE 1
446 #define ISP_INITSTATE 2
447 #define ISP_RUNSTATE 3
448
449
450
451
452 #define ISP_CFG_NORELOAD 0x80
453 #define ISP_CFG_NONVRAM 0x40
454 #define ISP_CFG_TWOGB 0x20
455 #define ISP_CFG_ONEGB 0x10
456 #define ISP_CFG_FULL_DUPLEX 0x01
457 #define ISP_CFG_PORT_PREF 0x0C
458 #define ISP_CFG_LPORT 0x00
459 #define ISP_CFG_NPORT 0x04
460 #define ISP_CFG_NPORT_ONLY 0x08
461 #define ISP_CFG_LPORT_ONLY 0x0C
462 #define ISP_CFG_OWNWWPN 0x100
463 #define ISP_CFG_OWNWWNN 0x200
464 #define ISP_CFG_OWNFSZ 0x400
465 #define ISP_CFG_OWNLOOPID 0x800
466 #define ISP_CFG_OWNEXCTHROTTLE 0x1000
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489 #define ISP_ROLE_NONE 0x0
490 #define ISP_ROLE_INITIATOR 0x1
491 #define ISP_ROLE_TARGET 0x2
492 #define ISP_ROLE_BOTH (ISP_ROLE_TARGET|ISP_ROLE_INITIATOR)
493 #define ISP_ROLE_EITHER ISP_ROLE_BOTH
494 #ifndef ISP_DEFAULT_ROLES
495 #define ISP_DEFAULT_ROLES ISP_ROLE_INITIATOR
496 #endif
497
498
499
500
501
502 #define ISP_CODE_ORG 0x1000
503 #define ISP_CODE_ORG_2300 0x0800
504 #define ISP_FW_REV(maj, min, mic) ((maj << 24) | (min << 16) | mic)
505 #define ISP_FW_MAJOR(code) ((code >> 24) & 0xff)
506 #define ISP_FW_MINOR(code) ((code >> 16) & 0xff)
507 #define ISP_FW_MICRO(code) ((code >> 8) & 0xff)
508 #define ISP_FW_REVX(xp) ((xp[0]<<24) | (xp[1] << 16) | xp[2])
509 #define ISP_FW_MAJORX(xp) (xp[0])
510 #define ISP_FW_MINORX(xp) (xp[1])
511 #define ISP_FW_MICROX(xp) (xp[2])
512 #define ISP_FW_NEWER_THAN(i, major, minor, micro) \
513 (ISP_FW_REVX((i)->isp_fwrev) > ISP_FW_REV(major, minor, micro))
514
515
516
517
518 #define ISP_BT_PCI 0
519 #define ISP_BT_SBUS 1
520
521
522
523
524
525 #ifndef ISP_SBUS_SUPPORTED
526 #define ISP_SBUS_SUPPORTED 1
527 #endif
528
529
530
531
532 #define ISP_HA_SCSI 0xf
533 #define ISP_HA_SCSI_UNKNOWN 0x1
534 #define ISP_HA_SCSI_1020 0x2
535 #define ISP_HA_SCSI_1020A 0x3
536 #define ISP_HA_SCSI_1040 0x4
537 #define ISP_HA_SCSI_1040A 0x5
538 #define ISP_HA_SCSI_1040B 0x6
539 #define ISP_HA_SCSI_1040C 0x7
540 #define ISP_HA_SCSI_1240 0x8
541 #define ISP_HA_SCSI_1080 0x9
542 #define ISP_HA_SCSI_1280 0xa
543 #define ISP_HA_SCSI_10160 0xb
544 #define ISP_HA_SCSI_12160 0xc
545 #define ISP_HA_FC 0xf0
546 #define ISP_HA_FC_2100 0x10
547 #define ISP_HA_FC_2200 0x20
548 #define ISP_HA_FC_2300 0x30
549 #define ISP_HA_FC_2312 0x40
550
551 #define IS_SCSI(isp) (isp->isp_type & ISP_HA_SCSI)
552 #define IS_1240(isp) (isp->isp_type == ISP_HA_SCSI_1240)
553 #define IS_1080(isp) (isp->isp_type == ISP_HA_SCSI_1080)
554 #define IS_1280(isp) (isp->isp_type == ISP_HA_SCSI_1280)
555 #define IS_10160(isp) (isp->isp_type == ISP_HA_SCSI_10160)
556 #define IS_12160(isp) (isp->isp_type == ISP_HA_SCSI_12160)
557
558 #define IS_12X0(isp) (IS_1240(isp) || IS_1280(isp))
559 #define IS_1X160(isp) (IS_10160(isp) || IS_12160(isp))
560 #define IS_DUALBUS(isp) (IS_12X0(isp) || IS_12160(isp))
561 #define IS_ULTRA2(isp) (IS_1080(isp) || IS_1280(isp) || IS_1X160(isp))
562 #define IS_ULTRA3(isp) (IS_1X160(isp))
563
564 #define IS_FC(isp) ((isp)->isp_type & ISP_HA_FC)
565 #define IS_2100(isp) ((isp)->isp_type == ISP_HA_FC_2100)
566 #define IS_2200(isp) ((isp)->isp_type == ISP_HA_FC_2200)
567 #define IS_23XX(isp) ((isp)->isp_type >= ISP_HA_FC_2300)
568 #define IS_2300(isp) ((isp)->isp_type == ISP_HA_FC_2300)
569 #define IS_2312(isp) ((isp)->isp_type == ISP_HA_FC_2312)
570
571
572
573
574 #ifdef ISP_DAC_SUPPORTRED
575 #define DMA_WD3(x) (((x) >> 48) & 0xffff)
576 #define DMA_WD2(x) (((x) >> 32) & 0xffff)
577 #else
578 #define DMA_WD3(x) 0
579 #define DMA_WD2(x) 0
580 #endif
581 #define DMA_WD1(x) (((x) >> 16) & 0xffff)
582 #define DMA_WD0(x) (((x) & 0xffff))
583
584
585
586
587
588
589
590
591
592 void isp_reset(struct ispsoftc *);
593
594
595
596
597 void isp_init(struct ispsoftc *);
598
599
600
601
602 void isp_reinit(struct ispsoftc *);
603
604 #ifdef ISP_FW_CRASH_DUMP
605
606
607
608 void isp_fw_dump(struct ispsoftc *isp);
609 #endif
610
611
612
613
614
615
616
617
618 void isp_intr(struct ispsoftc *, u_int16_t, u_int16_t, u_int16_t);
619
620
621
622
623
624 int isp_start(XS_T *);
625
626 #define CMD_COMPLETE 101
627 #define CMD_EAGAIN 102
628 #define CMD_QUEUED 103
629 #define CMD_RQLATER 104
630
631
632
633
634 void isp_done(XS_T *);
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670 typedef enum {
671 ISPCTL_RESET_BUS,
672 ISPCTL_RESET_DEV,
673 ISPCTL_ABORT_CMD,
674 ISPCTL_UPDATE_PARAMS,
675 ISPCTL_FCLINK_TEST,
676 ISPCTL_SCAN_FABRIC,
677 ISPCTL_SCAN_LOOP,
678 ISPCTL_PDB_SYNC,
679 ISPCTL_SEND_LIP,
680 ISPCTL_GET_POSMAP,
681 ISPCTL_RUN_MBOXCMD,
682 ISPCTL_TOGGLE_TMODE
683 } ispctl_t;
684 int isp_control(struct ispsoftc *, ispctl_t, void *);
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727 typedef enum {
728 ISPASYNC_NEW_TGT_PARAMS,
729 ISPASYNC_BUS_RESET,
730 ISPASYNC_LOOP_DOWN,
731 ISPASYNC_LOOP_UP,
732 ISPASYNC_LIP,
733 ISPASYNC_LOOP_RESET,
734 ISPASYNC_CHANGE_NOTIFY,
735 ISPASYNC_FABRIC_DEV,
736 ISPASYNC_PROMENADE,
737 ISPASYNC_TARGET_MESSAGE,
738 ISPASYNC_TARGET_EVENT,
739 ISPASYNC_TARGET_ACTION,
740 ISPASYNC_CONF_CHANGE,
741 ISPASYNC_UNHANDLED_RESPONSE,
742 ISPASYNC_FW_CRASH,
743 ISPASYNC_FW_DUMPED,
744 ISPASYNC_FW_RESTARTED
745 } ispasync_t;
746 int isp_async(struct ispsoftc *, ispasync_t, void *);
747
748 #define ISPASYNC_CHANGE_PDB ((void *) 0)
749 #define ISPASYNC_CHANGE_SNS ((void *) 1)
750 #define ISPASYNC_CHANGE_OTHER ((void *) 2)
751
752
753
754
755 #ifdef __GNUC__
756 void isp_prt(struct ispsoftc *, int level, const char *, ...)
757 __attribute__((__format__(__printf__,3,4)));
758 #else
759 void isp_prt(struct ispsoftc *, int level, const char *, ...);
760 #endif
761
762 #define ISP_LOGALL 0x0
763 #define ISP_LOGCONFIG 0x1
764 #define ISP_LOGINFO 0x2
765 #define ISP_LOGWARN 0x4
766 #define ISP_LOGERR 0x8
767 #define ISP_LOGDEBUG0 0x10
768 #define ISP_LOGDEBUG1 0x20
769 #define ISP_LOGDEBUG2 0x40
770 #define ISP_LOGDEBUG3 0x80
771 #define ISP_LOGDEBUG4 0x100
772 #define ISP_LOGTDEBUG0 0x200
773 #define ISP_LOGTDEBUG1 0x400
774 #define ISP_LOGTDEBUG2 0x800
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902 #endif