NAME | SYNOPSIS | FEATURES | DESCRIPTION | EXTENDED DESCRIPTION | ATTRIBUTES | SEE ALSO
drv/src/isa/w83c553/w83c553.h - w83c553 hardware related constants drv/src/isa/w83c553/w83c553.c - driver code drv/src/isa/w83c553/w83c553Prop.h - driver specific properties
DRV
Implements the common bus and isa bus driver interfaces.
The w83c553 bridge driver implements:
The common bus driver interface.
The ISA bus driver interface.
The driver works on a winbond w83c553F PCI to ISA bus bridge.
The driver uses the PCI bus driver interface provided by a parent PCI bus driver. Thus, the driver may be applied to any bus driver implementing the PCI bus interface.
The driver provides a very simple drv_probe() entry. In other words, the driver does not implement true device probing/auto-detection. Rather, it searches the device tree, looking for its device name or its PCI vendor/device identifiers, to find device nodes to which it can be bound.
When the w83c553 driver is used, the associated device node has to be created either statically or by another driver. For instance, a probe-only driver may be developed for a PCI bus architecture in order to dynamically discover a w83c553 device residing on the PCI bus and to create an associated device node.
The w83c553 driver provides the drv_bind() routine. This routine examines the device node properties and thus, identifies a w83c553 compatible device. The routine checks for the PCI vendor and device identifiers matching a w83c553 compatible device. If the check is positive, the drv_bind() routine binds the driver to the device node, attaching a PROP_DRIVER property to the device node. The property value specifies the w83c553 driver name. The parent bus driver uses such a property to determine the name of the driver servicing the device. Via the PROP_DRIVER property, the driver gives its name to the parent bus driver, asking it to invoke the drv_int() routine on that device. The drv_bind() routine does nothing if the PROP_DRIVER property is already present in the device node. In other words, the drv_bind() routine will not override existing driver-to-device binding.
The driver provides the drv_unload() entry and supports driver component unloading. This allows the driver component to be unloaded if it is no longer being used and if it has been dynamically loaded at run time. The driver supports all bus events specified by the pci bus driver interface. As a consequence, the driver may be used with a hot-pluggable pci bus (for example, CompactPCI).
The Table below summarizes the characteristics of the w83c553 isa bus driver.
driver name: | "sun:pci-w83c553-(bus,isa)" |
hardware: | Winbond W83C553F PCI/ISA bridge |
exported interface: | "bus,isa" (BUS_CLASS,ISA_CLASS) |
exported interface version: | 0 (ISA_VERSION_INITIAL) |
imported parent interface: | "pci" (PCI_CLASS) |
minimal parent interface version: | 0 (PCI_VERSION_INITIAL) |
device probing (auto-detection): | not supported |
driver unloading: | supported |
system (emergency) shut-down: | supported |
normal device shut-down: | supported |
hot-plug (surprise) device removal: | supported |
The Table below lists device node properties used by the w83c553 driver. Note that the column "m/o" specifies whether a given property is mandatory or optional. For optional properties, the column "default value" shows a default value which is used by the driver when a given property is not specified.
Name | Alias | Type | m/o | Default value |
---|---|---|---|---|
"vend-id" | PCI_PROP_VEND_ID | PciPropVendId | m | |
"dev-id" | PCI_PROP_DEV_ID | PciPropDevId | m | |
"bus-num" | PCI_PROP_BUS_NUM | PciPropBusNum | m | |
"dev-num" | PCI_PROP_DEV_NUM | PciPropDevNum | m | |
"func-num" | PCI_PROP_FUNC_NUM | PciPropFuncNum | m | |
"intr" | PCI_PROP_INTR | PciPropIntr | m | |
"intr-conf" | W83C553_PROP_INTR_CONF | W83c553PropIntrConf | o | see text below |
Note that the driver does not use any PCI_PROP_IO_REGS properties because its I/O range cannot be relocated. The bridge assumes zero based PCI/ISA I/O addresses, and uses dynamic resource allocation when available.
The PCI_PROP_VEND_ID property specifies the winbond PCI vendor identifier (must be 0x10ad).
The PCI_PROP_DEV_ID property specifies the winbond W83C553F PCI device identifier (must be 0x0565).
The PCI_PROP_BUS_NUM, PCI_PROP_DEV_NUM, and PCI_PROP_FUNC_NUM properties specify the configuration space address of the device. That is, the pci bus, device and function numbers to which the device is connected.
The PCI_PROP_INTR property specifies the w83c553 PCI interrupt used. Note that this interrupt is used for all 16 isa interrupts.
The W83C553_PROP_INTR_CONF property specifies the routing and priority configuration for w83c553 interrupt requests. This property defines the following fields:
Routing of the PCI interrupts (A,B,C,D) to ISA interrupt requests. This field should be set using the W83C553_PCI_INTR_ROUTING() macro. By default, pci interrupts are not routed to any ISA interrupt requests (IRQs). It is assumed that they are handled directly by a PCI interrupt controller.
Routing of the primary and secondary IDE interrupts to ISA IRQs. This field should be set using the W83C553_IDE_INTR_ROUTING() macro. By default, the IDE primary interrupt is routed to ISA IRQ #14 and the IDE secondary interrupt is routed to ISA IRQ #15.
Relative priority of each ISA interrupt request. This field is an array [0..15] which specifies the priority of each ISA IRQ ranging from the lowest priority 0 to the highest priority 15. An in-service interrupt cannot be interrupted by another interrupt having a lower priority value. By default, all interrupt requests have the same priority. Thus, any in-service interrupt may be interrupted by the others
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | FEATURES | DESCRIPTION | EXTENDED DESCRIPTION | ATTRIBUTES | SEE ALSO