sysbus(4) File Formats sysbus(4)
sysbus, isa - device tree properties for ISA bus device drivers
Solaris for x86 supports the ISA bus as the system bus. Drivers for devices on this buse 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 capabili-
ties 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(4) 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
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 sec-
ond 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(1M) command after
installing the particular device. The output of the prtconf command can be examined to determine the reg property for any
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-chan-
See attributes(5) for descriptions of the following attributes:
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|Architecture |x86 |
prtconf(1M), driver.conf(4), scsi(4), attributes(5), ddi_add_intr(9F), ddi_intr_hilevel(9F), ddi_map_regs(9F), ddi_prop_op(9F)
Writing Device Drivers
SunOS 5.11 18 Nov 2004 sysbus(4)