12.4. Other PC Buses
PCI and ISA are the most commonly used peripheral interfaces in the
PC world, but they aren't the only ones.
Here's a summary of the features of other buses
found in the PC market.
12.4.1. MCA
Micro
Channel Architecture (MCA) is an IBM
standard used in PS/2 computers and some laptops. At the hardware
level, Micro Channel has more features than ISA. It supports
multimaster DMA, 32-bit address and data lines, shared interrupt
lines, and geographical addressing to access per-board configuration
registers. Such registers are called Programmable Option
Select (POS), but they
don't have all the features of the PCI registers.
Linux support for Micro Channel includes functions that are exported
to modules.
A device driver can read the integer value MCA_bus
to see if it is running on a Micro Channel computer. If the symbol is
a preprocessor macro, the macro MCA_bus_
_is_a_macro is defined as well. If MCA_bus_
_is_a_macro is undefined, then MCA_bus
is an integer variable exported to modularized code. Both
MCA_BUS and MCA_bus_
_is_a_macro are defined in
<asm/processor.h>.
12.4.2. EISA
The
Extended ISA (EISA) bus is a 32-bit extension
to ISA, with a compatible interface connector; ISA device boards can
be plugged into an EISA connector. The additional wires are routed
under the ISA contacts.
Like PCI and MCA, the EISA bus is designed to host jumperless
devices, and it has the same features as MCA: 32-bit address and data
lines, multimaster DMA, and shared interrupt lines. EISA devices are
configured by software, but they don't need any
particular operating system support. EISA drivers already exist in
the Linux kernel for Ethernet devices and SCSI controllers.
An EISA driver checks the value EISA_bus to
determine if the host computer carries an EISA bus. Like
MCA_bus, EISA_bus is either a
macro or a variable, depending on whether EISA_bus_
_is_a_macro is defined. Both symbols are defined in
<asm/processor.h>.
The kernel has full EISA support for devices with sysfs and resource
management functionality. This is located in the
drivers/eisa directory.
12.4.3. VLB
Another extension to ISA is the
VESA
Local Bus (VLB) interface bus,
which extends the ISA connectors by adding a third lengthwise
slot. A device can just plug into this extra connector (without
plugging in the two associated ISA connectors), because the VLB slot
duplicates all important signals from the ISA connectors. Such
"standalone" VLB peripherals not
using the ISA slot are rare, because most devices need to reach the
back panel so that their external connectors are available.
The VESA bus is much more limited in its capabilities than the EISA,
MCA, and PCI buses and is disappearing from the market. No special
kernel support exists for VLB. However, both the Lance Ethernet
driver and the IDE disk driver in Linux 2.0 can deal with VLB
versions of their devices.
|