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)

tribblix@gmail.com :: GitHub :: Privacy