diff options
Diffstat (limited to 'static/netbsd/man9/mca.9')
| -rw-r--r-- | static/netbsd/man9/mca.9 | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/static/netbsd/man9/mca.9 b/static/netbsd/man9/mca.9 new file mode 100644 index 00000000..5ac4da15 --- /dev/null +++ b/static/netbsd/man9/mca.9 @@ -0,0 +1,192 @@ +.\" $NetBSD: mca.9,v 1.12 2017/07/03 21:28:48 wiz Exp $ +.\" +.\" Copyright (c) 2001 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Gregory McGarry. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd October 7, 2001 +.Dt MCA 9 +.Os +.Sh NAME +.Nm MCA , +.Nm mca_intr_establish , +.Nm mca_intr_disestablish , +.Nm mca_intr_evcnt , +.Nm mca_conf_read , +.Nm mca_conf_write +.Nd MicroChannel Architecture bus +.Sh SYNOPSIS +.In sys/bus.h +.In dev/mca/mcavar.h +.In dev/mca/mcadevs.h +.Ft void * +.Fn mca_intr_establish "mca_chipset_tag_t mc" "mca_intr_handle_t hdl" \ +"int level" "int (*handler)(void *)" "void *arg" +.Ft void +.Fn mca_intr_disestablish "mca_chipset_tag_t mc" "mca_intr_handle_t hdl" +.Ft const struct evcnt * +.Fn mca_intr_evcnt "mca_chipset_tag_t mc" "mca_intr_handle_t hdl" +.Ft int +.Fn mca_conf_read "mca_chipset_tag_t mc" "int slot" "int reg" +.Ft void +.Fn mca_conf_write "mca_chipset_tag_t mc" "int slot" "int reg" \ +"int data" +.Sh DESCRIPTION +The +.Nm +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. +.Pp +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. +.Pp +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. +.Sh DATA TYPES +Drivers for devices attached to the MCA bus will make use of the +following data types: +.Bl -tag -width compact +.It Fa mca_chipset_tag_t +Chipset tag for the MCA bus. +.It Fa mca_intr_handle_t +The opaque handle describing an established interrupt handler. +.It Fa struct mca_attach_args +A structure use to inform the driver of MCA bus properties. +It contains the following members: +.Bd -literal + 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 */ +.Ed +.El +.Sh FUNCTIONS +.Bl -tag -width compact +.It Fn mca_intr_establish "mc" "hdl" "level" "handler" "arg" +Establish a MCA interrupt handler on the MCA bus specified by +.Fa mc +for the interrupt described completely by +.Fa hdl . +The priority of the interrupt is specified by +.Fa level . +When the interrupt occurs the function +.Fa handler +is called with argument +.Fa arg . +.It Fn mca_intr_disestablish "mc" "hdl" +Dis-establish the interrupt handler on the MCA bus specified by +.Fa mc +for the interrupt described completely +.Fa hdl . +.It Fn mca_intr_evcnt "mc" "hdl" +Do interrupt event counting on the MCA bus specified by +.Fa mc +for the event described completely by +.Fa hdl . +.It Fn mca_conf_read "mc" "slot" "reg" +Read the POS register +.Fa reg +for the device in slot +.Fa slot +on the MCA bus specified by +.Fa mc . +.It Fn mca_conf_write "mc" "slot" "reg" "data" +Write data +.Fa data +to the POS register +.Fa reg +for the device in slot +.Fa slot +on the MCA bus specified by +.Fa mc . +.El +.Sh AUTOCONFIGURATION +The MCA bus is a direct-connection bus. +During autoconfiguration, the parent specifies the MCA device ID for the +found device in the +.Fa ma_id +member of the +.Em mca_attach_args +structure. +Drivers should match on the device ID. +Device capabilities and configuration information should be read from +device POS registers using +.Fn 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. +.Sh DMA SUPPORT +The MCA bus supports 32-bit, bidirectional DMA transfers. +Currently, no machine-independent support for MCA DMA is available. +.Sh CODE REFERENCES +The MCA subsystem itself is implemented within the file +.Pa sys/dev/mca/mca_subr.c . +Machine-dependent portions can be found in +.Pa sys/arch/<arch>/mca/mca_machdep.c . +The database of known devices exists within the file +.Pa sys/dev/mca/mcadevs_data.h +and is generated automatically from the file +.Pa sys/dev/mca/mcadevs . +New vendor and product identifiers should be added to this file. +The database can be regenerated using the Makefile +.Pa sys/dev/mca/Makefile.mcadevs . +.Pp +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. +.Sh SEE ALSO +.Xr mca 4 , +.Xr autoconf 9 , +.Xr bus_dma 9 , +.Xr bus_space 9 , +.Xr driver 9 , +.Xr isa 9 +.Sh BUGS +The machine-independent +.Nm +driver does not currently support DMA. +MCA devices which require DMA operation currently access the DMA +capabilities directly. |
