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

  man pages->NetBSD man pages -> mca_intr_establish (9)              



NAME    [Toc]    [Back]

     MCA, mca_intr_establish, mca_intr_disestablish, mca_intr_evcnt,
     mca_conf_read, mca_conf_write - MicroChannel Architecture bus

SYNOPSIS    [Toc]    [Back]

     #include <machine/bus.h>
     #include <dev/mca/mcavar.h>
     #include <dev/mca/mcadevs.h>

     void *
     mca_intr_establish(mca_chipset_tag_t mc, mca_intr_handle_t hdl,
             int level, int (*handler)(void *), void *arg);

     mca_intr_disestablish(mca_chipset_tag_t mc, mca_intr_handle_t hdl);

     const struct evcnt *
     mca_intr_evcnt(mca_chipset_tag_t mc, mca_intr_handle_t hdl);

     mca_conf_read(mca_chipset_tag_t mc, int slot, int reg);

     mca_conf_write(mca_chipset_tag_t mc, int slot, int reg, int data);

DESCRIPTION    [Toc]    [Back]

     The MCA device provides support for IBM's MicroChannel Architecture bus
     found on IBM PS/2 systems and selected workstations.  It was designed as
     a replacement bus for the ISA bus found on IBM's older machines.  However,
 the bus specifications were only available under license, so MCA
     did not achieve widespread acceptance in the industry.

     Being a replacement for the ISA bus, the MCA bus does share some similar
     aspects with the ISA bus.  Some MCA devices can be detected via the usual
     ISA-style probing.  However, most device detection is done through the
     Programmable Option Select (POS) registers.  These registers provide a
     window into a device to determine device-specific properties and configuration.
  The configuration of devices and their POS registers is performed
 using IBM's system configuration software.

     The MCA bus uses level-triggered interrupts while the ISA bus uses edgetriggered
 interrupts.  Level triggered interrupts have the advantage that
     they can be shared among multiple device.  Therefore, most MCA-specific
     devices should be coded with shared interrupts in mind.

DATA TYPES    [Toc]    [Back]

     Drivers for devices attached to the MCA bus will make use of the following
 data types:

              Chipset tag for the MCA bus.

              The opaque handle describing an established interrupt handler.

     struct mca_attach_args
              A structure use to inform the driver of MCA bus properties.  It
              contains the following members:

                      bus_space_tag_t ma_iot;         /* MCA I/O space tag */
                      bus_space_tag_t ma_memt;        /* MCA mem space tag */
                      bus_dma_tag_t ma_dmat;          /* MCA DMA tag */
                      int ma_slot;                    /* MCA slot number */
                      int ma_pos[8];                  /* MCA POS values */
                      int ma_id;                      /* MCA device */

FUNCTIONS    [Toc]    [Back]

     mca_intr_establish(mc, hdl, level, handler, arg)
              Establish a MCA interrupt handler on the MCA bus specified by mc
              for the interrupt described completely by hdl.  The priority of
              the interrupt is specified by level.  When the interrupt occurs
              the function handler is called with argument arg.

     mca_intr_disestablish(mc, hdl)
              Dis-establish the interrupt handler on the MCA bus specified by
              mc for the interrupt described completely hdl.

     mca_intr_evcnt(mc, hdl)
              Do interrupt event counting on the MCA bus specified by mc for
              the event described completely by hdl.

     mca_conf_read(mc, slot, reg)
              Read the POS register reg for the device in slot slot on the MCA
              bus specified by mc.

     mca_conf_write(mc, slot, reg, data)
              Write data data to the POS register reg for the device in slot
              slot on the MCA bus specified by mc.


     The MCA bus is a direct-connection bus.  During autoconfiguration, the
     parent specifies the MCA device ID for the found device in the ma_id member
 of the mca_attach_args structure.  Drivers should match on the device
     ID.  Device capabilities and configuration information should be read
     from device POS registers using mca_conf_read().  Some important configuration
 information found in the POS registers include the I/O base
     address, memory base address and interrupt number.  The location of these
     configurable options with the POS registers are device specific.

DMA SUPPORT    [Toc]    [Back]

     The MCA bus supports 32-bit, bidirectional DMA transfers.  Currently, no
     machine-independent support for MCA DMA is available.

CODE REFERENCES    [Toc]    [Back]

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

     The MCA subsystem itself is implemented within the file
     sys/dev/mca/mca_subr.c.  Machine-dependent portions can be found in
     sys/arch/<arch>/mca/mca_machdep.c.  The database of known devices exists
     within the file sys/dev/mca/mcadevs_data.h and is generated automatically
     from the file sys/dev/mca/mcadevs.  New vendor and product identifiers
     should be added to this file.  The database can be regenerated using the
     Makefile sys/dev/mca/Makefile.mcadevs.

     A good source of information about MCA devices is IBM's system configuration
 disk.  The disk contains .adf files which describe the location of
     device configuration options in the POS registers.

SEE ALSO    [Toc]    [Back]

     mca(4), autoconf(9), bus_dma(9), bus_space(9), driver(9), isa(9)

BUGS    [Toc]    [Back]

     The machine-independent MCA driver does not currently support DMA.  MCA
     devices which require DMA operation currently access the DMA capabilities

BSD                             October 7, 2001                            BSD
[ Back ]
 Similar pages
Name OS Title
isa_dmacount NetBSD Industry-standard Architecture
isa_dmaabort NetBSD Industry-standard Architecture
isa_dmastart NetBSD Industry-standard Architecture
arch OpenBSD print architecture type
isa_free NetBSD Industry-standard Architecture
isa_dmadone NetBSD Industry-standard Architecture
isa_dmamaxsize NetBSD Industry-standard Architecture
isa_drq_isfree NetBSD Industry-standard Architecture
isa_dmacascade NetBSD Industry-standard Architecture
isa_mappage NetBSD Industry-standard Architecture
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service