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