SYSBUS(5) File Formats and Configurations 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)