[BACK]Return to sbcvar.h CVS log [TXT][DIR] Up to [local] / sys / arch / mac68k / dev

Annotation of sys/arch/mac68k/dev/sbcvar.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: sbcvar.h,v 1.8 2006/12/13 21:12:56 miod Exp $ */
                      2: /*     $NetBSD: sbcvar.h,v 1.1 1997/03/01 20:19:00 scottr Exp $        */
                      3:
                      4: /*
                      5:  * Copyright (C) 1996 Scott Reynolds.  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:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *      This product includes software developed by Scott Reynolds for
                     18:  *      the NetBSD Project.
                     19:  * 4. The name of the author may not be used to endorse or promote products
                     20:  *    derived from this software without specific prior written permission
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     23:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     24:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     25:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     26:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     27:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     31:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     32:  */
                     33:
                     34: /*
                     35:  * Transfers smaller than this are done using PIO
                     36:  * (on assumption they're not worth PDMA overhead)
                     37:  */
                     38: #define        MIN_DMA_LEN 128
                     39:
                     40: /*
                     41:  * Transfers larger than 8192 bytes need to be split up
                     42:  * due to the size of the PDMA space.
                     43:  */
                     44: #define        MAX_DMA_LEN 0x2000
                     45:
                     46: #ifdef SBC_DEBUG
                     47: # define       SBC_DB_INTR     0x01
                     48: # define       SBC_DB_DMA      0x02
                     49: # define       SBC_DB_REG      0x04
                     50: # define       SBC_DB_BREAK    0x08
                     51: # ifndef DDB
                     52: #  define      Debugger()      printf("Debug: sbc.c:%d\n", __LINE__)
                     53: # endif
                     54: # define       SBC_BREAK \
                     55:                do { if (sbc_debug & SBC_DB_BREAK) Debugger(); } while (0)
                     56: #else
                     57: # define       SBC_BREAK
                     58: #endif
                     59:
                     60: /*
                     61:  * This structure is used to keep track of PDMA requests.
                     62:  */
                     63: struct sbc_pdma_handle {
                     64:        int     dh_flags;       /* flags */
                     65: #define        SBC_DH_BUSY     0x01    /* This handle is in use */
                     66: #define        SBC_DH_OUT      0x02    /* PDMA data out (write) */
                     67: #define        SBC_DH_DONE     0x04    /* PDMA transfer is complete */
                     68:        u_char  *dh_addr;       /* data buffer */
                     69:        int     dh_len;         /* length of data buffer */
                     70: };
                     71:
                     72: /*
                     73:  * The first structure member has to be the ncr5380_softc
                     74:  * so we can just cast to go back and forth between them.
                     75:  */
                     76: struct sbc_softc {
                     77:        struct ncr5380_softc ncr_sc;
                     78:        struct via2hand sc_ih_drq, sc_ih_irq;
                     79:        volatile struct sbc_regs *sc_regs;
                     80:        volatile vaddr_t        sc_drq_addr;
                     81:        volatile vaddr_t        sc_nodrq_addr;
                     82:        void                    (*sc_clrintr)(struct ncr5380_softc *);
                     83:        int                     sc_options;     /* options for this instance. */
                     84:        struct sbc_pdma_handle sc_pdma[SCI_OPENINGS];
                     85: };
                     86:
                     87: /*
                     88:  * Options.  By default, SCSI interrupts and reselect are disabled.
                     89:  * You may enable either of these features with the `flags' directive
                     90:  * in your kernel's configuration file.
                     91:  *
                     92:  * Alternatively, you can patch your kernel with DDB or some other
                     93:  * mechanism.  The sc_options member of the softc is OR'd with
                     94:  * the value in sbc_options.
                     95:  *
                     96:  * The options code is based on the sparc 'si' driver's version of
                     97:  * the same.
                     98:  */
                     99: #define        SBC_PDMA        0x01    /* Use PDMA for polled transfers */
                    100: #define        SBC_INTR        0x02    /* Allow SCSI IRQ/DRQ interrupts */
                    101: #define        SBC_RESELECT    0x04    /* Allow disconnect/reselect */
                    102: #define        SBC_OPTIONS_MASK        (SBC_RESELECT|SBC_INTR|SBC_PDMA)
                    103: #define        SBC_OPTIONS_BITS        "\10\3RESELECT\2INTR\1PDMA"
                    104:
                    105: extern int     sbc_debug;
                    106: extern int     sbc_link_flags;
                    107: extern int     sbc_options;
                    108: extern struct scsi_adapter sbc_ops;
                    109: extern struct scsi_device sbc_dev;
                    110:
                    111: int    sbc_pdma_in(struct ncr5380_softc *, int, int, u_char *);
                    112: int    sbc_pdma_out(struct ncr5380_softc *, int, int, u_char *);
                    113: int    sbc_irq_intr(void *);
                    114: int    sbc_drq_intr(void *);
                    115: void   sbc_dma_alloc(struct ncr5380_softc *);
                    116: void   sbc_dma_free(struct ncr5380_softc *);
                    117: void   sbc_dma_poll(struct ncr5380_softc *);
                    118: void   sbc_dma_setup(struct ncr5380_softc *);
                    119: void   sbc_dma_start(struct ncr5380_softc *);
                    120: void   sbc_dma_stop(struct ncr5380_softc *);
                    121: #ifdef SBC_DEBUG
                    122: void   decode_5380_intr(struct ncr5380_softc *);
                    123: #endif

CVSweb