root/arch/i386/isa/isa_machdep.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    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 */

/* [<][>][^][v][top][bottom][index][help] */