*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->NetBSD man pages -> isapnp_config (9)              
Title
Content
Arch
Section
 

ISAPNP(9)

Contents


NAME    [Toc]    [Back]

     ISAPNP, isapnp_devmatch, isapnp_config, isapnp_unconfig - Plug 'n' Play
     ISA bus

SYNOPSIS    [Toc]    [Back]

     #include <machine/bus.h>
     #include <dev/isa/isareg.h>
     #include <dev/isa/isavar.h>
     #include <dev/isapnp/isapnpreg.h>
     #include <dev/isapnp/isapnpvar.h>
     #include <dev/isapnp/isapnpdevs.h>

     int
     isapnp_devmatch(const struct isapnp_attach_args *ipa,
             const struct isapnp_devinfo *dinfo, int *variant);

     int
     isapnp_config(bus_space_tag_t iot, bus_space_tag_t memt,
             struct isapnp_attach_args *ipa);

     void
     isapnp_unconfig(bus_space_tag_t iot, bus_space_tag_t memt,
             struct isapnp_attach_args *ipa);

DESCRIPTION    [Toc]    [Back]

     The machine-independent ISAPNP subsystem provides support for ISAPNP
     devices.  ISAPNP devices were developed to support "plug and play" connection
 on the ISA bus.  In all other aspects, the ISAPNP bus is same as
     the ISA bus (see isa(9)).

     Devices on the ISAPNP bus are uniquely identified by a 7-character
     string.  Resources, such as I/O address space and interrupts, should be
     allocated to the devices by the machine firmware.  On some machine the
     firmware seems doesn't work correctly and NetBSD will attempt to allocate
     resources as necessary.

DATA TYPES    [Toc]    [Back]

     Drivers attached to the ISAPNP bus will make use of the following data
     types:

     struct isapnp_matchinfo
              NetBSD kernel contains a database of known ISAPNP devices.  Each
              entry in the database has a struct isapnp_matchinfo.  It contains
 the following members:

                      const char *name;               /* device id string */
                      int variant;                    /* variant flag */

     struct isapnp_devinfo
              Defines the devices supported by a driver.  It contains pointer
              to an array of supported struct isapnp_matchinfo structures and
              a pointer to another array of compatibility devices.  It contains
 the following members:

                      struct isapnp_matchinfo *devlogic;
                      int nlogic;
                      struct isapnp_matchinfo *devcompat;
                      int ncompat;

     struct isapnp_region
              Describes ISAPNP bus-space regions.  It contains the following
              members:

                      bus_space_handle_t h;
                      u_int32_t base;
                      u_int32_t length;

     struct isapnp_pin
              Describes the wiring of interrupts and DMA pins from the ISAPNP
              bus onto the host processor.  It contains the following members:

                      u_int8_t  num;
                      u_int8_t  flags:4;
                      u_int8_t  type:4;
                      u_int16_t bits;

     struct isapnp_attach_args
              A structure used to inform the driver of the device properties.
              It contains the following members:

                      bus_space_tag_t ipa_iot;        /* isa i/o space tag */
                      bus_space_tag_t ipa_memt;       /* isa mem space tag */
                      bus_dma_tag_t   ipa_dmat;       /* isa dma tag */
                      isa_chipset_tag_t       ipa_ic;
                      struct isapnp_region    ipa_io[ISAPNP_NUM_IO];
                      struct isapnp_region    ipa_mem[ISAPNP_NUM_MEM];
                      struct isapnp_region    ipa_mem32[ISAPNP_NUM_MEM32];
                      struct isapnp_pin       ipa_irq[ISAPNP_NUM_IRQ];
                      struct isapnp_pin       ipa_drq[ISAPNP_NUM_DRQ];

FUNCTIONS    [Toc]    [Back]

     isapnp_devmatch(ipa, dinfo, variant)
              Matches the device described by the attachment ipa with the
              device-match information in dinfo.  If the device is matched,
              isapnp_devmatch() returns a non-zero value and variant is the
              flag describing the device variant.  isapnp_devmatch() returns
              zero if the device is not found.

     isapnp_config(iot, memt, ipa)
              Allocate device resources specified by ipa.  The device is
              mapped into the I/O and memory bus spaces specified by bus-space
              tags iot and memt respectively.  The ipa_io, ipa_mem, ipa_mem32,
              ipa_irq, and ipa_drq members of ipa are updated to reflect the
              allocated and mapped resources.  isapnp_config() returns zero on
              success and non-zero on error.

     isapnp_unconfig(iot, memt, ipa)
              Free the resources allocated by isapnp_config().

AUTOCONFIGURATION    [Toc]    [Back]

     During autoconfiguration, an ISAPNP driver will receive a pointer to
     struct isapnp_attach_args describing the device attached to the ISAPNP
     bus.  Drivers match the device using ispnp_devmatch().

     During the driver attach step, driver should initially allocate and map
     resources using isapnp_config().  The I/O (memory) bus-space resources
     can be accessed using the bus-space tag ipa_iot (ipa_memt) and the busspace
 handle ipa_io[0].h (ipa_mem[0].h) members of ipa.

     Interrupts should be established using isa_intr_establish() (see isa(9))
     with the IRQ specified by the ipa_irq[0].num member of ipa.  Similarly,
     the standard isa(9) DMA interface should be used with the ipa_drq[0].num
     member of ipa.

DMA SUPPORT    [Toc]    [Back]

     Extensive DMA facilities are provided through the isa(9) DMA facilities.

CODE REFERENCES    [Toc]    [Back]

     This section describes places within the NetBSD source tree where actual
     code implementing or utilising the machine-independent ISAPNP subsystem
     can be found.  All pathnames are relative to /usr/src.

     The ISAPNP subsystem itself is implemented within the file
     sys/dev/isapnp/isapnp.c.  The database of the known devices exists within
     the file sys/dev/isapnp/isapnpdevs.c and is generated automatically from
     the file sys/dev/isapnp/isapnpdevs.  New devices should be added to this
     file.  The database can be regenerated using the Makefile
     sys/dev/isapnp/Makefile.isapnpdevs.

SEE ALSO    [Toc]    [Back]

      
      
     isa(4), isapnp(4), pnpbios(4), autoconf(9), bus_dma(9), bus_space(9),
     driver(9), isa(9)

     Plug and Play ISA Specification V1.0a, May 5 1994.

HISTORY    [Toc]    [Back]

     The machine-independent ISAPNP subsystem appear in NetBSD 1.3.

BSD                              June 19, 2001                             BSD
[ Back ]
 Similar pages
Name OS Title
pnp FreeBSD support for ``Plug and Play'' (PnP) ISA devices
pnp OpenBSD introduction to ISA Plug-and-Play support
isapnp OpenBSD introduction to ISA Plug-and-Play support
pnpinfo FreeBSD reports information about Plug-n-Play ISA devices
pciconfig IRIX hot-plug insert, hot-plug remove, and query PCI devices
libxrx IRIX RX Netscape Navigator Plug-in
java_plugin IRIX Runtime Plug-in for Irix, Java(tm) Edition
scsiadminswap IRIX perform a live plug or unplug of a scsi device
sfplay IRIX play soundfile
fish OpenBSD play ``Go Fish''
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service