[BACK]Return to aic79xx_inline.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/aic79xx_inline.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: aic79xx_inline.h,v 1.4 2004/08/23 20:16:01 marco Exp $        */
                      2:
                      3: /*
                      4:  * Copyright (c) 2004 Milos Urbanek, Kenneth R. Westerback & Marco Peereboom
                      5:  * All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     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 THE AUTHORS 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 THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
                     20:  * 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:
                     30: /*
                     31:  * Inline routines shareable across OS platforms.
                     32:  *
                     33:  * Copyright (c) 1994-2001 Justin T. Gibbs.
                     34:  * Copyright (c) 2000-2003 Adaptec Inc.
                     35:  * All rights reserved.
                     36:  *
                     37:  * Redistribution and use in source and binary forms, with or without
                     38:  * modification, are permitted provided that the following conditions
                     39:  * are met:
                     40:  * 1. Redistributions of source code must retain the above copyright
                     41:  *    notice, this list of conditions, and the following disclaimer,
                     42:  *    without modification.
                     43:  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
                     44:  *    substantially similar to the "NO WARRANTY" disclaimer below
                     45:  *    ("Disclaimer") and any redistribution must be conditioned upon
                     46:  *    including a substantially similar Disclaimer requirement for further
                     47:  *    binary redistribution.
                     48:  * 3. Neither the names of the above-listed copyright holders nor the names
                     49:  *    of any contributors may be used to endorse or promote products derived
                     50:  *    from this software without specific prior written permission.
                     51:  *
                     52:  * Alternatively, this software may be distributed under the terms of the
                     53:  * GNU General Public License ("GPL") version 2 as published by the Free
                     54:  * Software Foundation.
                     55:  *
                     56:  * NO WARRANTY
                     57:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
                     58:  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
                     59:  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
                     60:  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
                     61:  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     62:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     63:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     64:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     65:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
                     66:  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     67:  * POSSIBILITY OF SUCH DAMAGES.
                     68:  *
                     69:  * $FreeBSD: src/sys/dev/aic7xxx/aic79xx_inline.h,v 1.14 2004/02/04 16:38:38 gibbs Exp $
                     70:  *
                     71:  */
                     72:
                     73: #ifndef _AIC79XX_INLINE_H_
                     74: #define _AIC79XX_INLINE_H_
                     75:
                     76: /******************************** Debugging ***********************************/
                     77: char *ahd_name(struct ahd_softc *ahd);
                     78:
                     79: /************************ Sequencer Execution Control *************************/
                     80: void ahd_known_modes(struct ahd_softc *, ahd_mode, ahd_mode);
                     81: ahd_mode_state ahd_build_mode_state(struct ahd_softc *,
                     82:                                            ahd_mode , ahd_mode );
                     83: void ahd_extract_mode_state(struct ahd_softc *, ahd_mode_state,
                     84:                                            ahd_mode *, ahd_mode *);
                     85: void ahd_set_modes(struct ahd_softc *, ahd_mode, ahd_mode );
                     86: void ahd_update_modes(struct ahd_softc *);
                     87: void ahd_assert_modes(struct ahd_softc *, ahd_mode,
                     88:                                      ahd_mode, const char *, int);
                     89: ahd_mode_state ahd_save_modes(struct ahd_softc *);
                     90: void ahd_restore_modes(struct ahd_softc *, ahd_mode_state);
                     91: int  ahd_is_paused(struct ahd_softc *);
                     92: void ahd_pause(struct ahd_softc *);
                     93:
                     94: void ahd_unpause(struct ahd_softc *);
                     95:
                     96: /*********************** Scatter Gather List Handling *************************/
                     97: void   *ahd_sg_setup(struct ahd_softc *ahd, struct scb *scb,
                     98:                                      void *sgptr, bus_addr_t addr,
                     99:                                      bus_size_t len, int last);
                    100: void    ahd_setup_scb_common(struct ahd_softc *ahd,
                    101:                                              struct scb *scb);
                    102: void    ahd_setup_data_scb(struct ahd_softc *ahd,
                    103:                                            struct scb *scb);
                    104: void    ahd_setup_noxfer_scb(struct ahd_softc *ahd,
                    105:                                              struct scb *scb);
                    106:
                    107: /************************** Memory mapping routines ***************************/
                    108: size_t ahd_sg_size(struct ahd_softc *);
                    109: void *
                    110:                        ahd_sg_bus_to_virt(struct ahd_softc *, struct scb *,
                    111:                                           uint32_t);
                    112: uint32_t
                    113:                        ahd_sg_virt_to_bus(struct ahd_softc *, struct scb *,
                    114:                                           void *);
                    115: void   ahd_sync_scb(struct ahd_softc *, struct scb *, int);
                    116: void   ahd_sync_sglist(struct ahd_softc *, struct scb *, int);
                    117: void   ahd_sync_sense(struct ahd_softc *, struct scb *, int);
                    118: uint32_t
                    119:                        ahd_targetcmd_offset(struct ahd_softc *, u_int);
                    120:
                    121: /*********************** Miscelaneous Support Functions ***********************/
                    122: void   ahd_complete_scb(struct ahd_softc *, struct scb *);
                    123: void   ahd_update_residual(struct ahd_softc *, struct scb *);
                    124: struct ahd_initiator_tinfo *
                    125:                        ahd_fetch_transinfo(struct ahd_softc *, char , u_int,
                    126:                                            u_int, struct ahd_tmode_tstate **);
                    127: uint16_t
                    128:                        ahd_inw(struct ahd_softc *, u_int);
                    129: void   ahd_outw(struct ahd_softc *, u_int, u_int);
                    130: uint32_t
                    131:                        ahd_inl(struct ahd_softc *, u_int);
                    132: void   ahd_outl(struct ahd_softc *, u_int, uint32_t);
                    133: uint64_t               ahd_inq(struct ahd_softc *, u_int);
                    134: void                   ahd_outq(struct ahd_softc *, u_int, uint64_t);
                    135: u_int  ahd_get_scbptr(struct ahd_softc *ahd);
                    136: void   ahd_set_scbptr(struct ahd_softc *ahd, u_int scbptr);
                    137: u_int  ahd_get_hnscb_qoff(struct ahd_softc *ahd);
                    138: void   ahd_set_hnscb_qoff(struct ahd_softc *ahd, u_int value);
                    139: u_int  ahd_get_hescb_qoff(struct ahd_softc *ahd);
                    140: void   ahd_set_hescb_qoff(struct ahd_softc *ahd, u_int value);
                    141: u_int  ahd_get_snscb_qoff(struct ahd_softc *ahd);
                    142: void   ahd_set_snscb_qoff(struct ahd_softc *ahd, u_int value);
                    143: u_int  ahd_get_sescb_qoff(struct ahd_softc *ahd);
                    144: void   ahd_set_sescb_qoff(struct ahd_softc *ahd, u_int value);
                    145: u_int  ahd_get_sdscb_qoff(struct ahd_softc *ahd);
                    146: void   ahd_set_sdscb_qoff(struct ahd_softc *ahd, u_int value);
                    147: u_int  ahd_inb_scbram(struct ahd_softc *ahd, u_int offset);
                    148: u_int  ahd_inw_scbram(struct ahd_softc *ahd, u_int offset);
                    149: uint32_t ahd_inl_scbram(struct ahd_softc *ahd, u_int offset);
                    150: uint64_t ahd_inq_scbram(struct ahd_softc *ahd, u_int offset);
                    151: struct scb *ahd_lookup_scb(struct ahd_softc *, u_int);
                    152: void   ahd_swap_with_next_hscb(struct ahd_softc *ahd, struct scb *scb);
                    153: void   ahd_queue_scb(struct ahd_softc *ahd, struct scb *scb);
                    154: uint8_t *ahd_get_sense_buf(struct ahd_softc *ahd, struct scb *scb);
                    155: uint32_t ahd_get_sense_bufaddr(struct ahd_softc *ahd, struct scb *scb);
                    156:
                    157: /************************** Interrupt Processing ******************************/
                    158: void   ahd_sync_qoutfifo(struct ahd_softc *ahd, int op);
                    159: void   ahd_sync_tqinfifo(struct ahd_softc *ahd, int op);
                    160: u_int                  ahd_check_cmdcmpltqueues(struct ahd_softc *ahd);
                    161: int                    ahd_intr(struct ahd_softc *ahd);
                    162:
                    163: #define AHD_ASSERT_MODES(ahd, source, dest) \
                    164:        ahd_assert_modes(ahd, source, dest, __FILE__, __LINE__);
                    165:
                    166: #endif  /* _AIC79XX_INLINE_H_ */

CVSweb