| MCA(9) | Kernel Developer's Manual | MCA(9) | 
MCA, mca_intr_establish,
  mca_intr_disestablish,
  mca_intr_evcnt, mca_conf_read,
  mca_conf_write —
#include <sys/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);
void
  
  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);
int
  
  mca_conf_read(mca_chipset_tag_t
    mc, int slot,
    int reg);
void
  
  mca_conf_write(mca_chipset_tag_t
    mc, int slot,
    int reg,
    int data);
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 edge-triggered 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.
	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 */
    
    mca_intr_establish(mc,
    hdl, level,
    handler, arg)mca_intr_disestablish(mc,
    hdl)mca_intr_evcnt(mc,
    hdl)mca_conf_read(mc,
    slot, reg)mca_conf_write(mc,
    slot, reg,
    data)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.
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.
MCA driver does not currently
  support DMA. MCA devices which require DMA operation currently access the DMA
  capabilities directly.
| October 7, 2001 | NetBSD 9.4 |