[BACK]Return to isa_machdep.h CVS log [TXT][DIR] Up to [local] / sys / arch / i386 / isa

Annotation of sys/arch/i386/isa/isa_machdep.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: isa_machdep.h,v 1.21 2006/02/12 19:55:39 miod Exp $   */
                      2: /*     $NetBSD: isa_machdep.h,v 1.7 1997/06/06 23:28:42 thorpej Exp $  */
                      3:
                      4: /*-
                      5:  * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
                     10:  * NASA Ames Research Center.
                     11:  *
                     12:  * Redistribution and use in source and binary forms, with or without
                     13:  * modification, are permitted provided that the following conditions
                     14:  * are met:
                     15:  * 1. Redistributions of source code must retain the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer.
                     17:  * 2. Redistributions in binary form must reproduce the above copyright
                     18:  *    notice, this list of conditions and the following disclaimer in the
                     19:  *    documentation and/or other materials provided with the distribution.
                     20:  * 3. All advertising materials mentioning features or use of this software
                     21:  *    must display the following acknowledgement:
                     22:  *     This product includes software developed by the NetBSD
                     23:  *     Foundation, Inc. and its contributors.
                     24:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     25:  *    contributors may be used to endorse or promote products derived
                     26:  *    from this software without specific prior written permission.
                     27:  *
                     28:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     29:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     30:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     31:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     32:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     33:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     34:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     35:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     36:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     37:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     38:  * POSSIBILITY OF SUCH DAMAGE.
                     39:  */
                     40:
                     41: /*-
                     42:  * Copyright (c) 1990 The Regents of the University of California.
                     43:  * All rights reserved.
                     44:  *
                     45:  * This code is derived from software contributed to Berkeley by
                     46:  * William Jolitz.
                     47:  *
                     48:  * Redistribution and use in source and binary forms, with or without
                     49:  * modification, are permitted provided that the following conditions
                     50:  * are met:
                     51:  * 1. Redistributions of source code must retain the above copyright
                     52:  *    notice, this list of conditions and the following disclaimer.
                     53:  * 2. Redistributions in binary form must reproduce the above copyright
                     54:  *    notice, this list of conditions and the following disclaimer in the
                     55:  *    documentation and/or other materials provided with the distribution.
                     56:  * 3. Neither the name of the University nor the names of its contributors
                     57:  *    may be used to endorse or promote products derived from this software
                     58:  *    without specific prior written permission.
                     59:  *
                     60:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     61:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     62:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     63:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     64:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     65:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     66:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     67:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     68:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     69:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     70:  * SUCH DAMAGE.
                     71:  *
                     72:  *     @(#)isa.h       5.7 (Berkeley) 5/9/91
                     73:  */
                     74:
                     75: /*
                     76:  * Various pieces of the i386 port want to include this file without
                     77:  * or in spite of using isavar.h, and should be fixed.
                     78:  */
                     79:
                     80: #ifndef _I386_ISA_MACHDEP_H_                   /* XXX */
                     81: #define _I386_ISA_MACHDEP_H_                   /* XXX */
                     82:
                     83: #include <machine/bus.h>
                     84:
                     85: /*
                     86:  * ISA can only DMA to 0-16M.
                     87:  */
                     88: #define        ISA_DMA_BOUNCE_THRESHOLD        0x00ffffff
                     89:
                     90: /*
                     91:  * XXX THIS FILE IS A MESS.  copyright: berkeley's probably.
                     92:  * contents from isavar.h and isareg.h, mostly the latter.
                     93:  * perhaps charles's?
                     94:  *
                     95:  * copyright from berkeley's isa.h which is now dev/isa/isareg.h.
                     96:  */
                     97:
                     98: /*
                     99:  * Types provided to machine-independent ISA code.
                    100:  */
                    101: typedef void *isa_chipset_tag_t;
                    102:
                    103: struct device;                 /* XXX */
                    104: struct isabus_attach_args;     /* XXX */
                    105:
                    106: /*
                    107:  * Functions provided to machine-independent ISA code.
                    108:  */
                    109: void   isa_attach_hook(struct device *, struct device *,
                    110:            struct isabus_attach_args *);
                    111: int    isa_intr_alloc(isa_chipset_tag_t, int, int, int *);
                    112: int    isa_intr_check(isa_chipset_tag_t, int, int);
                    113: void   *isa_intr_establish(isa_chipset_tag_t ic, int irq, int type,
                    114:            int level, int (*ih_fun)(void *), void *ih_arg, char *ih_what);
                    115: void   isa_intr_disestablish(isa_chipset_tag_t ic, void *handler);
                    116:
                    117: /*
                    118:  * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
                    119:  * BY PORTABLE CODE.
                    120:  */
                    121:
                    122: extern struct i386_bus_dma_tag isa_bus_dma_tag;
                    123:
                    124: /*
                    125:  * Cookie used by ISA dma.  A pointer to one of these it stashed in
                    126:  * the DMA map.
                    127:  */
                    128: struct i386_isa_dma_cookie {
                    129:        int     id_flags;               /* flags; see below */
                    130:
                    131:        void    *id_origbuf;            /* pointer to orig buffer if
                    132:                                           bouncing */
                    133:        bus_size_t id_origbuflen;       /* ...and size */
                    134:
                    135:        void    *id_bouncebuf;          /* pointer to the bounce buffer */
                    136:        bus_size_t id_bouncebuflen;     /* ...and size */
                    137:        int     id_nbouncesegs;         /* number of valid bounce segs */
                    138:        bus_dma_segment_t id_bouncesegs[0]; /* array of bounce buffer
                    139:                                               physical memory segments */
                    140: };
                    141:
                    142: /* id_flags */
                    143: #define        ID_MIGHT_NEED_BOUNCE    0x01    /* map could need bounce buffers */
                    144: #define        ID_HAS_BOUNCE           0x02    /* map currently has bounce buffers */
                    145: #define        ID_IS_BOUNCING          0x04    /* map is bouncing current xfer */
                    146:
                    147: /*
                    148:  * XXX Various seemingly PC-specific constants, some of which may be
                    149:  * unnecessary anyway.
                    150:  */
                    151:
                    152: /*
                    153:  * RAM Physical Address Space (ignoring the above mentioned "hole")
                    154:  */
                    155: #define        RAM_BEGIN       0x0000000       /* Start of RAM Memory */
                    156: #define        RAM_END         0x1000000       /* End of RAM Memory */
                    157: #define        RAM_SIZE        (RAM_END - RAM_BEGIN)
                    158:
                    159: /*
                    160:  * Oddball Physical Memory Addresses
                    161:  */
                    162: #define        COMPAQ_RAMRELOC 0x80c00000      /* Compaq RAM relocation/diag */
                    163: #define        COMPAQ_RAMSETUP 0x80c00002      /* Compaq RAM setup */
                    164: #define        WEITEK_FPU      0xC0000000      /* WTL 2167 */
                    165: #define        CYRIX_EMC       0xC0000000      /* Cyrix EMC */
                    166:
                    167: /*
                    168:  * stuff that used to be in pccons.c
                    169:  */
                    170: #define        MONO_BUF        0xB0000
                    171: #define        CGA_BUF         0xB8000
                    172: #define        IOPHYSMEM       0xA0000
                    173:
                    174:
                    175: /*
                    176:  * ISA DMA bounce buffers.
                    177:  * XXX should be made partially machine- and bus-mapping-independent.
                    178:  *
                    179:  * DMA_BOUNCE is the number of pages of low-addressed physical memory
                    180:  * to acquire for ISA bounce buffers. If physical memory below 16 MB
                    181:  * then DMA_BOUNCE_LOW will be used.
                    182:  *
                    183:  * isaphysmem is the address of this physical contiguous low memory.
                    184:  * isaphysmempgs is the number of pages allocated.
                    185:  */
                    186:
                    187: #ifndef DMA_BOUNCE
                    188: #define        DMA_BOUNCE      48              /* number of pages if memory > 16M */
                    189: #endif
                    190:
                    191: #ifndef DMA_BOUNCE_LOW
                    192: #define        DMA_BOUNCE_LOW  16              /* number of pages if memory <= 16M */
                    193: #endif
                    194:
                    195: extern vaddr_t isaphysmem;
                    196: extern int isaphysmempgs;
                    197:
                    198:
                    199: /*
                    200:  * Variables and macros to deal with the ISA I/O hole.
                    201:  * XXX These should be converted to machine- and bus-mapping-independent
                    202:  * function definitions, invoked through the softc.
                    203:  */
                    204:
                    205: extern u_long atdevbase;           /* kernel virtual address of "hole" */
                    206:
                    207: /*
                    208:  * Given a kernel virtual address for some location
                    209:  * in the "hole" I/O space, return a physical address.
                    210:  */
                    211: #define ISA_PHYSADDR(v) ((void *) ((u_long)(v) - atdevbase + IOM_BEGIN))
                    212:
                    213: /*
                    214:  * Given a physical address in the "hole",
                    215:  * return a kernel virtual address.
                    216:  */
                    217: #define ISA_HOLE_VADDR(p)  ((void *) ((u_long)(p) - IOM_BEGIN + atdevbase))
                    218:
                    219: #endif /* _I386_ISA_MACHDEP_H_ XXX */

CVSweb