SYSBUS(5) Standards, Environments, and Macros SYSBUS(5)
NAME
sysbus, isa - device tree properties for ISA bus device drivers
DESCRIPTION
Solaris for x86 supports the
ISA bus as the system bus. Drivers for
devices on this bus use the device tree built by the booting system to
retrieve the necessary system resources used by the driver. These
resources include device I/O port addresses, any interrupt capabilities
that the device can have, any DMA channels it can require, and any
memory-mapped addresses it can occupy.
Configuration files for
ISA device drivers are only necessary to describe
properties used by a particular driver that are not part of the standard
properties found in the device tree. See
driver.conf(5) for further
details of configuration file syntax.
The
ISA nexus drivers all belong to class
sysbus. All bus drivers of
class
sysbus recognize the following properties:
interrupts An arbitrary-length array where each element of the array
represents a hardware interrupt (IRQ) that is used by the
device. In general, this array only has one entry unless
a particular device uses more than one IRQ.
Solaris defaults all
ISA interrupts to IPL 5. This
interrupt priority can be overridden by placing an
interrupt-priorities property in a .conf file for the
driver. Each entry in the array of integers for the
interrupt-priorities property is matched one-to-one with
the elements in the
interrupts property to specify the
IPL value that is used by the system for this interrupt
in this driver. This is the priority that this device's
interrupt handler receives relative to the interrupt
handlers of other drivers. The priority is an integer
from
1 to
16. Generally, disks are assigned a priority of
5, while mice and printers are lower, and serial
communication devices are higher, typically
7.
10 is
reserved by the system and must not be used. Priorities
11 and greater are high level priorities and are
generally not recommended (see
ddi_intr_hilevel(9F)).
The driver can refer to the elements of this array by
index using
ddi_add_intr(9F). The index into the array is
passed as the
inumber argument of
ddi_add_intr().
Only devices that generate interrupts have an
interrupts property.
reg An arbitrary-length array where each element of the array
consists of a 3-tuple of integers. Each array element
describes a contiguous memory address range associated
with the device on the bus.
The first integer of the tuple specifies the memory type,
0 specifies a memory range and
1 specifies an I/O range.
The second integer specifies the base address of the
memory range. The third integer of each 3-tuple specifies
the size, in bytes, of the mappable region.
The driver can refer to the elements of this array by
index, and construct kernel mappings to these addresses
using
ddi_map_regs(9F). The index into the array is
passed as the
rnumber argument of
ddi_map_regs().
All
sysbus devices have
reg properties. The first tuple
of this property is used to construct the address part of
the device name under
/devices. In the case of
Plug and Play ISA devices, the first tuple is a special tuple that
does not denote a memory range, but is used by the system
only to create the address part of the device name. This
special tuple can be recognized by determining if the top
bit of the first integer is set to a one.
The order of the tuples in the reg property is determined
by the boot system probe code and depends on the
characteristics of each particular device. However, the
reg property maintains the same order of entries from
system boot to system boot. The recommended way to
determine the reg property for a particular device is to
use the
prtconf(8) command after installing the
particular device. The output of the
prtconf command can
be examined to determine the reg property for any
installed device.
You can use the
ddi_get* and
ddi_put* family of functions
to access register space from a high-level interrupt
context.
dma-channels A list of integers that specifies the DMA channels used
by this device. Only devices that use DMA channels have a
dma-channels property.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+---------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------+
|Architecture | x86 |
+---------------+-----------------+
SEE ALSO
driver.conf(5),
scsi(5),
attributes(7),
prtconf(8),
ddi_add_intr(9F),
ddi_intr_hilevel(9F),
ddi_map_regs(9F),
ddi_prop_op(9F) Writing Device Drivers December 28, 2020
SYSBUS(5)