The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/isa/isavar.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 1998 Doug Rabson
    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 AUTHOR 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 AUTHOR OR CONTRIBUTORS BE LIABLE
   20  * FOR 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  * $FreeBSD: releng/12.0/sys/isa/isavar.h 338948 2018-09-26 17:12:14Z imp $
   29  */
   30 
   31 #ifndef _ISA_ISAVAR_H_
   32 #define _ISA_ISAVAR_H_
   33 
   34 struct isa_config;
   35 struct isa_pnp_id;
   36 typedef void isa_config_cb(void *arg, struct isa_config *config, int enable);
   37 
   38 #include "isa_if.h"
   39 #include <isa/pnpvar.h>
   40 
   41 #ifdef _KERNEL
   42 
   43 /*
   44  * ISA devices are partially ordered.  This is to ensure that hardwired
   45  * devices the BIOS tells us are there appear first, then speculative
   46  * devices that are sensitive to the probe order, then devices that
   47  * are hinted to be there, then the most flexible devices which support
   48  * the ISA bus PNP standard.
   49  */
   50 #define ISA_ORDER_PNPBIOS       10 /* plug-and-play BIOS inflexible hardware */
   51 #define ISA_ORDER_SENSITIVE     20 /* legacy sensitive hardware */
   52 #define ISA_ORDER_SPECULATIVE   30 /* legacy non-sensitive hardware */
   53 #define ISA_ORDER_PNP           40 /* plug-and-play flexible hardware */
   54 
   55 /*
   56  * Limits on resources that we can manage
   57  */
   58 #define ISA_NPORT       50
   59 #define ISA_NMEM        50
   60 #define ISA_NIRQ        50
   61 #define ISA_NDRQ        50
   62 
   63 /*
   64  * Limits on resources the hardware can actually handle
   65  */
   66 #define ISA_PNP_NPORT   8
   67 #define ISA_PNP_NMEM    4
   68 #define ISA_PNP_NIRQ    2
   69 #define ISA_PNP_NDRQ    2
   70 
   71 #define ISADMA_READ     0x00100000
   72 #define ISADMA_WRITE    0
   73 #define ISADMA_RAW      0x00080000
   74 /*
   75  * Plug and play cards can support a range of resource
   76  * configurations. This structure is used by the isapnp parser to
   77  * inform the isa bus about the resource possibilities of the
   78  * device. Each different alternative should be supplied by calling
   79  * ISA_ADD_CONFIG().
   80  */
   81 struct isa_range {
   82         u_int32_t               ir_start;
   83         u_int32_t               ir_end;
   84         u_int32_t               ir_size;
   85         u_int32_t               ir_align;
   86 };
   87 
   88 struct isa_config {
   89         struct isa_range        ic_mem[ISA_NMEM];
   90         struct isa_range        ic_port[ISA_NPORT];
   91         u_int32_t               ic_irqmask[ISA_NIRQ];
   92         u_int32_t               ic_drqmask[ISA_NDRQ];
   93         int                     ic_nmem;
   94         int                     ic_nport;
   95         int                     ic_nirq;
   96         int                     ic_ndrq;
   97 };
   98 
   99 /*
  100  * Used to build lists of IDs and description strings for PnP drivers.
  101  */
  102 struct isa_pnp_id {
  103         u_int32_t               ip_id;
  104         const char              *ip_desc;
  105 };
  106 
  107 enum isa_device_ivars {
  108         ISA_IVAR_PORT,
  109         ISA_IVAR_PORT_0 = ISA_IVAR_PORT,
  110         ISA_IVAR_PORT_1,
  111         ISA_IVAR_PORTSIZE,
  112         ISA_IVAR_PORTSIZE_0 = ISA_IVAR_PORTSIZE,
  113         ISA_IVAR_PORTSIZE_1,
  114         ISA_IVAR_MADDR,
  115         ISA_IVAR_MADDR_0 = ISA_IVAR_MADDR,
  116         ISA_IVAR_MADDR_1,
  117         ISA_IVAR_MEMSIZE,
  118         ISA_IVAR_MEMSIZE_0 = ISA_IVAR_MEMSIZE,
  119         ISA_IVAR_MEMSIZE_1,
  120         ISA_IVAR_IRQ,
  121         ISA_IVAR_IRQ_0 = ISA_IVAR_IRQ,
  122         ISA_IVAR_IRQ_1,
  123         ISA_IVAR_DRQ,
  124         ISA_IVAR_DRQ_0 = ISA_IVAR_DRQ,
  125         ISA_IVAR_DRQ_1,
  126         ISA_IVAR_VENDORID,
  127         ISA_IVAR_SERIAL,
  128         ISA_IVAR_LOGICALID,
  129         ISA_IVAR_COMPATID,
  130         ISA_IVAR_CONFIGATTR,
  131         ISA_IVAR_PNP_CSN,
  132         ISA_IVAR_PNP_LDN,
  133         ISA_IVAR_PNPBIOS_HANDLE
  134 };
  135 
  136 /*
  137  * ISA_IVAR_CONFIGATTR bits
  138  */
  139 #define ISACFGATTR_CANDISABLE   (1 << 0)        /* can be disabled */
  140 #define ISACFGATTR_DYNAMIC      (1 << 1)        /* dynamic configuration */
  141 #define ISACFGATTR_HINTS        (1 << 3)        /* source of config is hints */
  142 
  143 #define ISA_PNP_DESCR "E:pnpid;D:#"
  144 #define ISA_PNP_INFO(t) \
  145         MODULE_PNP_INFO(ISA_PNP_DESCR, isa, t, t, nitems(t) - 1); \
  146 
  147 /*
  148  * Simplified accessors for isa devices
  149  */
  150 #define ISA_ACCESSOR(var, ivar, type)                                   \
  151         __BUS_ACCESSOR(isa, var, ISA, ivar, type)
  152 
  153 ISA_ACCESSOR(port, PORT, int)
  154 ISA_ACCESSOR(portsize, PORTSIZE, int)
  155 ISA_ACCESSOR(irq, IRQ, int)
  156 ISA_ACCESSOR(drq, DRQ, int)
  157 ISA_ACCESSOR(maddr, MADDR, int)
  158 ISA_ACCESSOR(msize, MEMSIZE, int)
  159 ISA_ACCESSOR(vendorid, VENDORID, int)
  160 ISA_ACCESSOR(serial, SERIAL, int)
  161 ISA_ACCESSOR(logicalid, LOGICALID, int)
  162 ISA_ACCESSOR(compatid, COMPATID, int)
  163 ISA_ACCESSOR(configattr, CONFIGATTR, int)
  164 ISA_ACCESSOR(pnp_csn, PNP_CSN, int)
  165 ISA_ACCESSOR(pnp_ldn, PNP_LDN, int)
  166 ISA_ACCESSOR(pnpbios_handle, PNPBIOS_HANDLE, int)
  167 
  168 /* Device class for ISA bridges. */
  169 extern devclass_t isab_devclass;
  170 
  171 extern intrmask_t isa_irq_pending(void);
  172 extern void     isa_probe_children(device_t dev);
  173 
  174 void    isa_dmacascade(int chan);
  175 void    isa_dmadone(int flags, caddr_t addr, int nbytes, int chan);
  176 int     isa_dma_init(int chan, u_int bouncebufsize, int flag);
  177 void    isa_dmastart(int flags, caddr_t addr, u_int nbytes, int chan);
  178 int     isa_dma_acquire(int chan);
  179 void    isa_dma_release(int chan);
  180 int     isa_dmastatus(int chan);
  181 int     isa_dmastop(int chan);
  182 int     isa_dmatc(int chan);
  183 
  184 #define isa_dmainit(chan, size) do { \
  185         if (isa_dma_init(chan, size, M_NOWAIT)) \
  186                 printf("WARNING: isa_dma_init(%d, %ju) failed\n", \
  187                     (int)(chan), (uintmax_t)(size)); \
  188         } while (0) 
  189 
  190 void    isa_hinted_child(device_t parent, const char *name, int unit);
  191 void    isa_hint_device_unit(device_t bus, device_t child, const char *name,
  192             int *unitp);
  193 int     isab_attach(device_t dev);
  194 
  195 #endif /* _KERNEL */
  196 
  197 #endif /* !_ISA_ISAVAR_H_ */

Cache object: e209b16cb611fb5acaab7c456225b3f6


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.