NAME | SYNOPSIS | FEATURES | DESCRIPTION | RESTRICTIONS | ATTRIBUTES | SEE ALSO
drv/src/vme/universe/universe.c - driver code drv/src/vme/universe/universe.h - hardware specific properties drv/src/vme/universe/universeProp.h - driver specific properties
DRV
The universe driver implements:
the VME bus driver interface, and
the BUSCOM (local) device driver interface
The driver works on a TUNDRA Universe PCI to VME bus bridge controller.
The driver uses the PCI bus device driver interface provided by a parent bus driver.
The universe driver does not provide the drv_probe() routine. In other words, the universe driver does not enumerate the bus in order to detect a compatible device and create an associated device node. When the universe driver is used, associated device nodes should be created either statically by a boot program or dynamically by a separate bus enumerator driver. This type of enumerator driver could be developed for a particular (PCI/VME) bus architecture.
The universe driver provides the drv_bind() routine. This routine examines the device node properties in order to recognize a universe compatible device. The routine checks for PCI vendor/device identifier properties that match the universe device ones. If the check is positive, the drv_bind() routine binds the driver to the device node, attaching a PROP_DRIVER property to it. The property value specifies the universe driver name. The parent bus driver uses this property to determin the name of the driver servicing the device. In other words, it is through the PROP_DRIVER property that the driver gives its name to the parent bus driver when asking to invoke the drv_init() routine on that device. Note that the drv_bind() routine does nothing if a PROP_DRIVER property is already present in the device node; drv_bind() does not override an existing driver-to-device binding.
The driver provides the drv_unload() entry and supports the driver component unloading. This allows the driver component to be unloaded if it is no longer being used. Note that the driver component can be unloaded only if it has been dynamically loaded at run time. In other words, a resident driver component (embedded in the system bootable image) cannot be unloaded although unloading is supported by the driver.
The driver supports all events specified by the PCI bus driver interface except for VGA palette related events.
The table below summarizes characteristics of the universe bus driver.
driver name: | "sun:pci-universe-vme" |
hardware: | TUNDRA Universe PCI-to-VME bridge |
exported interface: | "vme" (VME_CLASS) |
exported interface version: | 0 (VME_VERSION_INITIAL) |
imported parent interface: | "pci" (PCI_CLASS) |
minimal parent interface version: | 0 (PCI_VERSION_INITIAL) |
device probing (auto-detection): | not supported |
driver-to-device binding: | supported (on PCI vendor/device ids) |
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 universe vme bus 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 | |
"dev-num" | PCI_PROP_DEV_NUM | PciPropDevNum | m | |
"func-num" | PCI_PROP_FUNC_NUM | PciPropFuncNum | m | |
"intr" | PCI_PROP_INTR | PciPropIntr | m | |
"io-regs" | PCI_PROP_IO_REGS | PciPropIoRegs | m | |
"vme-map" | UNIVERSE_PROP_VME_MAP | UniversePropVmeMap | m | |
"sysfail" | UNIVERSE_PROP_SYSFAIL | none | o | not managed |
"dma-burst" | VME_PROP_DMA_BURST | VmePropDmaBurst | o | no maximum |
"dma-off" | VME_PROP_DMA_OFF_TIMER | VmePropDmaOffTimer | o | 0 |
The PCI_PROP_VEND_ID property specifies the TUNDRA pci vendor identifier (must be 0x10E3).
The PCI_PROP_DEV_ID property specifies the universe pci device identifier (must be 0x0000).
The PCI_PROP_DEV_NUM and PCI_PROP_FUNC_NUM properties specify the configuration space address of the device. That is, the device and function numbers to which the device is connected on the PCI bus.
The PCI_PROP_INTR property specifies the pci interrupt(s) used by the universe device.
The PCI_PROP_IO_REGS property specifies the pci address space allocated to the universe's I/O registers.
The UNIVERSE_PROP_VME_MAP property specifies the universe configuration for pci bus slave map decoders. This property is an array. Each element in this array defines a pci space address range which will be translated into vme bus cycles by the universe. The maximum number of elements in the array depends on the universe device version. The first universe version defines array indexes in the range [0,3]. The universe II version accepts indexes in the range [0,7].
Each element in the array defines:
a PCI region:
PCI address space (I/O, memory)
start address
region size
a VME region:
VME address space (short, standard, extended)
start address
region size
region mapping attributes (AM codes)
The universe driver assumes that the UNIVERSE_PROP_VME_MAP property sums up VME space resources allocated to all universe's child devices on the underlaying VME bus.
The UNIVERSE_PROP_SYSFAIL property indicates whether the VME SYSFAIL signal is handled by the driver or not. By default, the SYSFAIL signal is ignored.
The VME_PROP_DMA_BURST and VME_PROP_DMA_OFF_TIMER properties specify the maximum DMA burst size and minimum VME bus off timer, respectively. Together, these properties define the behavior of the universe during a DMA transfer by specifying the:
size boundary at which the DMA transfer will be split into multiple bursts (no maximum by default), and the
minimum time that the VME bus will be unused between bursts (minimum off time is zero, by default).
The table below lists device node properties used by the universe buscom (local) device 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 | |
"buscom-remote" | BUSCOM_PROP_REMOTE | novalue | m | |
"buscom-monarch" | BUSCOM_PROP_MONARCH | no value | m | |
"buscom-id" | BUSCOM_PROP_ID | BusComPropId | m | |
"io-regs" | VME_PROP_IO_REGS | VmePropIoRegs | m | |
"mem-rgn" | VME_PROP_MEM_RGN | VmePropMemRgn | m |
The BUSCOM_PROP_REMOTE property flags the device node as a "remote" universe device (indicating that it is located on another VME host board). This property must be absent for the universe local communication driver to run on that device.
The BUSCOM_PROP_MONARCH property flags the device node as being the bus communication "monarch". If present, this property indicates that the associated device must be booted and made accessible on the vme bus before all other devices. Typically, on the vme bus, this device is the vme bus system controller. This property should be used by the universe client application to choose the bus device on which any shared vital data should be located.
The BUSCOM_PROP_ID is the unique identifier (UID) of the device on the underlaying vme bus. It can be used as a location identifier by the universe client application that is implementing communication protocols over the vme bus.
The VME_PROP_IO_REGS property specifies the vme address range allocated to the local universe I/O registers. The universe local communication driver will respond to the addresses, specified in the range, allowing univRemCom drivers running on other CPU boards to access local universe registers through the VME bus.
The VME_PROP_MEM_RGN property specifies the vme address range dedicated to the local universe bus communication memory. The universe local communication driver will respond to the addresses, specified in the range, allowing univRemCom drivers running on other boards to access local communication memory through the VME bus.
The universe driver does not support dynamic resource allocation.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | FEATURES | DESCRIPTION | RESTRICTIONS | ATTRIBUTES | SEE ALSO