Home | History | Annotate | Line # | Download | only in ic
isp_library.h revision 1.1.2.2
      1 /* $NetBSD: isp_library.h,v 1.1.2.2 2007/06/09 21:37:15 ad Exp $ */
      2 /*
      3  * Copyright (c) 2006-2007 by Matthew Jacob
      4  * All rights reserved.
      5  *
      6  * Redistribution and use in source and binary forms, with or without
      7  * modification, are permitted provided that the following conditions
      8  * are met:
      9  *
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     19  * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
     20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     26  * SUCH DAMAGE.
     27  *
     28  */
     29 #ifndef	_ISP_LIBRARY_H
     30 #define	_ISP_LIBRARY_H
     31 
     32 extern int isp_save_xs(ispsoftc_t *, XS_T *, uint32_t *);
     33 extern XS_T *isp_find_xs(ispsoftc_t *, uint32_t);
     34 extern uint32_t isp_find_handle(ispsoftc_t *, XS_T *);
     35 extern uint32_t isp_handle_index(uint32_t);
     36 extern void isp_destroy_handle(ispsoftc_t *, uint32_t);
     37 extern int isp_getrqentry(ispsoftc_t *, uint32_t *, uint32_t *, void **);
     38 extern void isp_print_qentry (ispsoftc_t *, char *, int, void *);
     39 extern void isp_print_bytes(ispsoftc_t *, const char *, int, void *);
     40 extern int isp_fc_runstate(ispsoftc_t *, int);
     41 extern void isp_dump_portdb(ispsoftc_t *);
     42 extern void isp_shutdown(ispsoftc_t *);
     43 extern void isp_put_hdr(ispsoftc_t *, isphdr_t *, isphdr_t *);
     44 extern void isp_get_hdr(ispsoftc_t *, isphdr_t *, isphdr_t *);
     45 extern int isp_get_response_type(ispsoftc_t *, isphdr_t *);
     46 extern void
     47 isp_put_request(ispsoftc_t *, ispreq_t *, ispreq_t *);
     48 extern void
     49 isp_put_marker(ispsoftc_t *, isp_marker_t *, isp_marker_t *);
     50 extern void
     51 isp_put_marker_24xx(ispsoftc_t *, isp_marker_24xx_t *, isp_marker_24xx_t *);
     52 extern void
     53 isp_put_request_t2(ispsoftc_t *, ispreqt2_t *, ispreqt2_t *);
     54 extern void
     55 isp_put_request_t2e(ispsoftc_t *, ispreqt2e_t *, ispreqt2e_t *);
     56 extern void
     57 isp_put_request_t3(ispsoftc_t *, ispreqt3_t *, ispreqt3_t *);
     58 extern void
     59 isp_put_request_t3e(ispsoftc_t *, ispreqt3e_t *, ispreqt3e_t *);
     60 extern void
     61 isp_put_extended_request(ispsoftc_t *, ispextreq_t *, ispextreq_t *);
     62 extern void
     63 isp_put_request_t7(ispsoftc_t *, ispreqt7_t *, ispreqt7_t *);
     64 extern void
     65 isp_put_24xx_abrt(ispsoftc_t *, isp24xx_abrt_t *, isp24xx_abrt_t *);
     66 extern void
     67 isp_put_cont_req(ispsoftc_t *, ispcontreq_t *, ispcontreq_t *);
     68 extern void
     69 isp_put_cont64_req(ispsoftc_t *, ispcontreq64_t *, ispcontreq64_t *);
     70 extern void
     71 isp_get_response(ispsoftc_t *, ispstatusreq_t *, ispstatusreq_t *);
     72 extern void isp_get_24xx_response(ispsoftc_t *, isp24xx_statusreq_t *,
     73     isp24xx_statusreq_t *);
     74 void
     75 isp_get_24xx_abrt(ispsoftc_t *, isp24xx_abrt_t *, isp24xx_abrt_t *);
     76 extern void
     77 isp_get_rio2(ispsoftc_t *, isp_rio2_t *, isp_rio2_t *);
     78 extern void
     79 isp_put_icb(ispsoftc_t *, isp_icb_t *, isp_icb_t *);
     80 extern void
     81 isp_put_icb_2400(ispsoftc_t *, isp_icb_2400_t *, isp_icb_2400_t *);
     82 extern void
     83 isp_get_pdb_21xx(ispsoftc_t *, isp_pdb_21xx_t *, isp_pdb_21xx_t *);
     84 extern void
     85 isp_get_pdb_24xx(ispsoftc_t *, isp_pdb_24xx_t *, isp_pdb_24xx_t *);
     86 extern void
     87 isp_get_plogx(ispsoftc_t *, isp_plogx_t *, isp_plogx_t *);
     88 extern void
     89 isp_put_plogx(ispsoftc_t *, isp_plogx_t *, isp_plogx_t *);
     90 extern void
     91 isp_get_ct_pt(ispsoftc_t *isp, isp_ct_pt_t *, isp_ct_pt_t *);
     92 extern void
     93 isp_get_ms(ispsoftc_t *isp, isp_ms_t *, isp_ms_t *);
     94 extern void
     95 isp_put_ct_pt(ispsoftc_t *isp, isp_ct_pt_t *, isp_ct_pt_t *);
     96 extern void
     97 isp_put_ms(ispsoftc_t *isp, isp_ms_t *, isp_ms_t *);
     98 extern void
     99 isp_put_sns_request(ispsoftc_t *, sns_screq_t *, sns_screq_t *);
    100 extern void
    101 isp_put_gid_ft_request(ispsoftc_t *, sns_gid_ft_req_t *,
    102     sns_gid_ft_req_t *);
    103 extern void
    104 isp_put_gxn_id_request(ispsoftc_t *, sns_gxn_id_req_t *,
    105     sns_gxn_id_req_t *);
    106 extern void
    107 isp_get_sns_response(ispsoftc_t *, sns_scrsp_t *, sns_scrsp_t *, int);
    108 extern void
    109 isp_get_gid_ft_response(ispsoftc_t *, sns_gid_ft_rsp_t *,
    110     sns_gid_ft_rsp_t *, int);
    111 extern void
    112 isp_get_gxn_id_response(ispsoftc_t *, sns_gxn_id_rsp_t *,
    113     sns_gxn_id_rsp_t *);
    114 extern void
    115 isp_get_gff_id_response(ispsoftc_t *, sns_gff_id_rsp_t *,
    116     sns_gff_id_rsp_t *);
    117 extern void
    118 isp_get_ga_nxt_response(ispsoftc_t *, sns_ga_nxt_rsp_t *,
    119     sns_ga_nxt_rsp_t *);
    120 extern void
    121 isp_get_els(ispsoftc_t *, els_t *, els_t *);
    122 extern void
    123 isp_put_els(ispsoftc_t *, els_t *, els_t *);
    124 extern void
    125 isp_get_fc_hdr(ispsoftc_t *, fc_hdr_t *, fc_hdr_t *);
    126 extern void
    127 isp_get_fcp_cmnd_iu(ispsoftc_t *, fcp_cmnd_iu_t *, fcp_cmnd_iu_t *);
    128 extern void isp_put_rft_id(ispsoftc_t *, rft_id_t *, rft_id_t *);
    129 extern void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *);
    130 extern void isp_put_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *);
    131 
    132 #define	ISP_HANDLE_MASK		0x7fff
    133 
    134 #ifdef	ISP_TARGET_MODE
    135 #if	defined(__NetBSD__) || defined(__OpenBSD__)
    136 #include <dev/ic/isp_target.h>
    137 #elif 	defined(__FreeBSD__)
    138 #include <dev/isp/isp_target.h>
    139 #else
    140 #include "isp_target.h"
    141 #endif
    142 
    143 #define	IS_TARGET_HANDLE(x)     ((x) & 0x8000)
    144 
    145 extern int isp_save_xs_tgt(ispsoftc_t *, void *, uint32_t *);
    146 extern void *isp_find_xs_tgt(ispsoftc_t *, uint32_t);
    147 extern uint32_t isp_find_tgt_handle(ispsoftc_t *, void *);
    148 extern void isp_destroy_tgt_handle(ispsoftc_t *, uint32_t);
    149 
    150 extern void
    151 isp_put_atio(ispsoftc_t *, at_entry_t *, at_entry_t *);
    152 extern void
    153 isp_get_atio(ispsoftc_t *, at_entry_t *, at_entry_t *);
    154 extern void
    155 isp_put_atio2(ispsoftc_t *, at2_entry_t *, at2_entry_t *);
    156 extern void
    157 isp_put_atio2e(ispsoftc_t *, at2e_entry_t *, at2e_entry_t *);
    158 extern void
    159 isp_get_atio2(ispsoftc_t *, at2_entry_t *, at2_entry_t *);
    160 extern void
    161 isp_get_atio2e(ispsoftc_t *, at2e_entry_t *, at2e_entry_t *);
    162 extern void
    163 isp_get_atio7(ispsoftc_t *isp, at7_entry_t *, at7_entry_t *);
    164 extern void
    165 isp_put_ctio(ispsoftc_t *, ct_entry_t *, ct_entry_t *);
    166 extern void
    167 isp_get_ctio(ispsoftc_t *, ct_entry_t *, ct_entry_t *);
    168 extern void
    169 isp_put_ctio2(ispsoftc_t *, ct2_entry_t *, ct2_entry_t *);
    170 extern void
    171 isp_put_ctio2e(ispsoftc_t *, ct2e_entry_t *, ct2e_entry_t *);
    172 extern void
    173 isp_put_ctio7(ispsoftc_t *, ct7_entry_t *, ct7_entry_t *);
    174 extern void
    175 isp_get_ctio2(ispsoftc_t *, ct2_entry_t *, ct2_entry_t *);
    176 extern void
    177 isp_get_ctio2e(ispsoftc_t *, ct2e_entry_t *, ct2e_entry_t *);
    178 extern void
    179 isp_get_ctio7(ispsoftc_t *, ct7_entry_t *, ct7_entry_t *);
    180 extern void
    181 isp_put_enable_lun(ispsoftc_t *, lun_entry_t *, lun_entry_t *);
    182 extern void
    183 isp_get_enable_lun(ispsoftc_t *, lun_entry_t *, lun_entry_t *);
    184 extern void
    185 isp_put_notify(ispsoftc_t *, in_entry_t *, in_entry_t *);
    186 extern void
    187 isp_get_notify(ispsoftc_t *, in_entry_t *, in_entry_t *);
    188 extern void
    189 isp_put_notify_fc(ispsoftc_t *, in_fcentry_t *, in_fcentry_t *);
    190 extern void
    191 isp_put_notify_fc_e(ispsoftc_t *, in_fcentry_e_t *, in_fcentry_e_t *);
    192 extern void
    193 isp_put_notify_24xx(ispsoftc_t *, in_fcentry_24xx_t *, in_fcentry_24xx_t *);
    194 extern void
    195 isp_get_notify_fc(ispsoftc_t *, in_fcentry_t *, in_fcentry_t *);
    196 extern void
    197 isp_get_notify_fc_e(ispsoftc_t *, in_fcentry_e_t *, in_fcentry_e_t *);
    198 extern void
    199 isp_get_notify_24xx(ispsoftc_t *, in_fcentry_24xx_t *, in_fcentry_24xx_t *);
    200 extern void
    201 isp_put_notify_ack(ispsoftc_t *, na_entry_t *, na_entry_t *);
    202 extern void
    203 isp_get_notify_ack(ispsoftc_t *, na_entry_t *, na_entry_t *);
    204 extern void
    205 isp_put_notify_24xx_ack(ispsoftc_t *, na_fcentry_24xx_t *, na_fcentry_24xx_t *);
    206 extern void
    207 isp_put_notify_ack_fc(ispsoftc_t *, na_fcentry_t *, na_fcentry_t *);
    208 extern void
    209 isp_put_notify_ack_fc_e(ispsoftc_t *, na_fcentry_e_t *, na_fcentry_e_t *);
    210 extern void isp_put_notify_ack_24xx(ispsoftc_t *, na_fcentry_24xx_t *,
    211     na_fcentry_24xx_t *);
    212 extern void
    213 isp_get_notify_ack_fc(ispsoftc_t *, na_fcentry_t *, na_fcentry_t *);
    214 extern void
    215 isp_get_notify_ack_fc_e(ispsoftc_t *, na_fcentry_e_t *, na_fcentry_e_t *);
    216 extern void isp_get_notify_ack_24xx(ispsoftc_t *, na_fcentry_24xx_t *,
    217     na_fcentry_24xx_t *);
    218 extern void
    219 isp_get_abts(ispsoftc_t *, abts_t *, abts_t *);
    220 extern void
    221 isp_put_abts_rsp(ispsoftc_t *, abts_rsp_t *, abts_rsp_t *);
    222 extern void
    223 isp_get_abts_rsp(ispsoftc_t *, abts_rsp_t *, abts_rsp_t *);
    224 #endif	/* ISP_TARGET_MODE */
    225 #endif	/* _ISP_LIBRARY_H */
    226