File Formats sbus(4)
NAME
sbus - configuration files for SBus device drivers
DESCRIPTION
The SBus is a geographically addressed peripheral bus present on many SPARC hardware platforms. SBus devices areself-identifying - that is to say the SBus card itself pro-
vides information to the system so that it can identify thedevice driver that needs to be used. The device usually pro-
vides additional information to the system in the form ofname-value pairs that can be retrieved using the DDI pro-
perty interfaces. See ddi_prop_op(9F) for details.
The information is usually derived from a small Forth pro-
gram stored in the FCode PROM on the card, so driver confi-
guration files should be completely unnecessary for thesedevices. However, on some occasions, drivers for SBus dev-
ices may need to use driver configuration files to augment the information provided by the SBus card. See driver.conf(4) for further details. When they are needed, configuration files for SBus device drivers should identify the parent bus driver implicitly using the class keyword. This removes the dependency on theparticular bus driver involved since this may be named dif-
ferently on different platforms.All bus drivers of class sbus recognise the following pro-
perties: reg An arbitrary length array where each elementof the array consists of a 3-tuple of
integers. Each array element describes a log-
ically contiguous mappable resource on the SBus. The first integer of each tuple specifies the slot number the card is plugged into. Thesecond integer of each 3-tuple specifies the
offset in the slot address space identified by the first element. The third integer of each3-tuple specifies the size in bytes of the
mappable resource. The driver can refer to the elements of this array by index, and construct kernel mappingsto these addresses using ddi_map_regs(9F). The
index into the array is passed as the rnumberargument of ddi_map_regs().
SunOS 5.11 Last change: 31 Dec 1996 1
File Formats sbus(4)
You can use the ddi_get* and ddi_put* family
of functions to access register space from ahigh-level interrupt context.
interrupts An arbitrary length array where each element of the array consists of a single integer. Each array element describes a possible SBusinterrupt level that the device might gen-
erate. The driver can refer to the elements of this array by index, and register interrupt handlers with the system usingddi_add_intr(9F). The index into the array is
passed as the inumber argument ofddi_add_intr().
registers An arbitrary length array where each elementof the array consists of a 3-tuple of
integers. Each array element describes a log-
ically contiguous mappable resource on the SBus. The first integer of each tuple should be setto -1, specifying that any SBus slot may be
matched. The second integer of each 3-tuple
specifies the offset in the slot address space identified by the first element. The thirdinteger of each 3-tuple specifies the size in
bytes of the mappable resoure. The registers property can only be used to augment an incompletely specified reg property with information from a driver configuration file. It may only be specified in a driver configuration file. All SBus devices must provide reg properties to the system. The first two integer elements of the reg property are usedto construct the address part of the device name under /dev-
ices.Only devices that generate interrupts need to provide inter-
rupts properties.SunOS 5.11 Last change: 31 Dec 1996 2
File Formats sbus(4)
Occasionally, it may be necessary to override or augment the configuration information supplied by the SBus device. This can be achieved by writing a driver configuration file that describes a prototype device information (devinfo) node specification, containing the additional properties required. For the system to merge the information, certain conditions must be met. First, the name property must be the same. Second, either the first two integers (slot number and offset) of the two reg properties must be the same, or the second integer (offset) of the reg and registers properties must be the same. In the event that the SBus card has no reg property at all,the self-identifying information cannot be used, so all the
details of the card must be specified in a driver configura-
tion file.EXAMPLES
Example 1 A sample configuration file. Here is a configuration file for an SBus card called SUNW,netboard. The card already has a simple FCode PROM that creates name and reg properties, and will have a complete set of properties for normal use once the driver and firmware is complete. In this example, we want to augment the properties given to us by the firmware. We use the same name property, and use the registers property to match the firmware reg property. That way we don't have to worry about which slot the card is really plugged into.We want to add an interrupts property while we are develop-
ing the firmware and driver so that we can start to experi-
ment with interrupts. The device can generate interrupts atSBus level 3. Additionally, we want to set a debug-level
property to 4.#
# Copyright (c) 1992, by Sun Microsystems, Inc.
#ident "@(#)SUNW,netboard.conf 1.4 92/03/10 SMI"
#
SunOS 5.11 Last change: 31 Dec 1996 3
File Formats sbus(4)
name="SUNW,netboard" class="sbus"
registers=-1,0x40000,64,-1,0x80000,1024
interrupts=3 debug-level=4;
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Architecture | SPARC ||_____________________________|_____________________________|
SEE ALSO
driver.conf(4), attributes(5), ddi_add_intr(9F),
ddi_map_regs(9F), ddi_prop_op(9F)
Writing Device Drivers WARNINGS The wildcarding mechanism of the registers property matchesevery instance of the particular device attached to the sys-
tem. This may not always be what is wanted.SunOS 5.11 Last change: 31 Dec 1996 4