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.0 |