1sysbus(4) File Formats sysbus(4)
2
3
4
6 sysbus, isa - device tree properties for ISA bus device drivers
7
9 Solaris for x86 supports the ISA bus as the system bus. Drivers for
10 devices on this buse use the device tree built by the booting system to
11 retrieve the necessary system resources used by the driver. These
12 resources include device I/O port addresses, any interrupt capabilities
13 that the device can have, any DMA channels it can require, and any mem‐
14 ory-mapped addresses it can occupy.
15
16
17 Configuration files for ISA device drivers are only necessary to
18 describe properties used by a particular driver that are not part of
19 the standard properties found in the device tree. See driver.conf(4)
20 for further details of configuration file syntax.
21
22
23 The ISA nexus drivers all belong to class sysbus. All bus drivers of
24 class sysbus recognize the following properties:
25
26 interrupts An arbitrary-length array where each element of the
27 array represents a hardware interrupt (IRQ) that is
28 used by the device. In general, this array only has
29 one entry unless a particular device uses more than one
30 IRQ.
31
32 Solaris defaults all ISA interrupts to IPL 5. This
33 interrupt priority can be overridden by placing an
34 interrupt-priorities property in a .conf file for the
35 driver. Each entry in the array of integers for the
36 interrupt-priorities property is matched one-to-one
37 with the elements in the interrupts property to specify
38 the IPL value that is used by the system for this
39 interrupt in this driver. This is the priority that
40 this device's interrupt handler receives relative to
41 the interrupt handlers of other drivers. The priority
42 is an integer from 1 to 16. Generally, disks are
43 assigned a priority of 5, while mice and printers are
44 lower, and serial communication devices are higher,
45 typically 7. 10 is reserved by the system and must not
46 be used. Priorities 11 and greater are high level pri‐
47 orities and are generally not recommended (see
48 ddi_intr_hilevel(9F)).
49
50 The driver can refer to the elements of this array by
51 index using ddi_add_intr(9F). The index into the array
52 is passed as the inumber argument of ddi_add_intr().
53
54 Only devices that generate interrupts have an inter‐
55 rupts property.
56
57
58 reg An arbitrary-length array where each element of the
59 array consists of a 3-tuple of integers. Each array
60 element describes a contiguous memory address range
61 associated with the device on the bus.
62
63 The first integer of the tuple specifies the memory
64 type, 0 specifies a memory range and 1 specifies an I/O
65 range. The second integer specifies the base address of
66 the memory range. The third integer of each 3-tuple
67 specifies the size, in bytes, of the mappable region.
68
69 The driver can refer to the elements of this array by
70 index, and construct kernel mappings to these addresses
71 using ddi_map_regs(9F). The index into the array is
72 passed as the rnumber argument of ddi_map_regs().
73
74 All sysbus devices have reg properties. The first
75 tuple of this property is used to construct the
76 address part of the device name under /devices. In the
77 case of Plug and Play ISA devices, the first tuple is a
78 special tuple that does not denote a memory range, but
79 is used by the system only to create the address part
80 of the device name. This special tuple can be recog‐
81 nized by determining if the top bit of the first inte‐
82 ger is set to a one.
83
84 The order of the tuples in the reg property is deter‐
85 mined by the boot system probe code and depends on the
86 characteristics of each particular device. However,
87 the reg property maintains the same order of entries
88 from system boot to system boot. The recommended way
89 to determine the reg property for a particular device
90 is to use the prtconf(1M) command after installing the
91 particular device. The output of the prtconf command
92 can be examined to determine the reg property for any
93 installed device.
94
95 You can use the ddi_get* and ddi_put* family of func‐
96 tions to access register space from a high-level inter‐
97 rupt context.
98
99
100 dma-channels A list of integers that specifies the DMA channels used
101 by this device. Only devices that use DMA channels have
102 a dma-channels property.
103
104
106 See attributes(5) for descriptions of the following attributes:
107
108
109
110
111 ┌─────────────────────────────┬─────────────────────────────┐
112 │ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
113 ├─────────────────────────────┼─────────────────────────────┤
114 │Architecture │x86 │
115 └─────────────────────────────┴─────────────────────────────┘
116
118 prtconf(1M), driver.conf(4), scsi(4), attributes(5), ddi_add_intr(9F),
119 ddi_intr_hilevel(9F), ddi_map_regs(9F), ddi_prop_op(9F)
120
121
122 Writing Device Drivers
123
124
125
126SunOS 5.11 18 Nov 2004 sysbus(4)