Binding a Driver to a Device
In addition to constructing the device tree, the kernel also determines the drivers that will be used to manage the devices.
Binding a driver to a device refers to the process by which the system selects a driver to manage a particular device. The driver binding name is the name that links a driver to a unique device node in the device information tree. For each device in the device tree, the system attempts to choose a driver from a list of installed drivers.
Each device node has a name property associated with it. This property can be assigned either from an external agent, such as the PROM, during system boot or from a driver.conf configuration file. In either case, the name property represents the node name assigned to a device in the device tree. The node name is the name visible in /devices and listed in the prtconf(1M) output.
Figure 1-3 Device Node Names
A device node can also have a compatible property associated with it. The compatible property (if it exists) contains an ordered list of one or more possible driver names or driver aliases for the device.
The system uses both the compatible and the name properties to select a driver for the device. The system first attempts to match the contents of the compatible property (if the compatible property exists) to a driver on the system. Beginning with the first driver name on the compatible property list, the system attempts to match the driver name to a known driver on the system. It processes each entry on the list until either a match is found or the end of the list is reached.
If the contents of either the name property or the compatible property match a driver on the system, then that driver is bound to the device node. If no match is found, no driver is bound to the device node.
Generic Device Names
Some devices specify a generic device name as the value for the name property. Generic device names describe the function of a device without actually identifying a specific driver for the device. For example, a SCSI host bus adapter might have a generic device name of scsi. An Ethernet device might have a generic device name of ethernet.
The compatible property allows the system to determine alternate driver names (like glm for scsi HBA device drivers or hme for ethernet device drivers) for devices with a generic device name.
Devices with generic device names are required to supply a compatible property.
Note - For a complete description of generic device names, see the IEEE 1275 Open Firmware Boot Standard.
Figure 1-4 and Figure 1-5 show two device nodes: one node uses a specific device name and the other uses a generic device name. For the device node with a specific device name, the driver binding name SUNW,ffb is the same name as the device node name.
Figure 1-4 Specific Driver Node Binding
For the device node with the generic device name display, the driver binding name SUNW,ffb is the first name on the compatible property driver list that matches a driver on the system driver list. In this case, display is a generic device name for frame buffers.
Figure 1-5 Generic Driver Node Binding