NAME | SYNOPSIS | FEATURES | DESCRIPTION | ATTRIBUTES | SEE ALSO
drv/src/timer/i8254/i8254.c - driver code drv/src/timer/i8254/i8254Prop.h - driver specific properties
DRV
The i8254 driver implements the timer device driver interface.
The driver uses the common bus driver interface provided by a parent bus driver. Thus, the driver is generic and may be applied to any bus providing this type of interface.
The i8254 driver does not provide the drv_probe() routine. In other words, the i8254 driver does not enumerate the bus, nor does it detect an i8254 device or create an associated device node. When the i8254 driver is used, associated device nodes should be created either statically by a boot program or dynamically by a separate bus enumerator driver. Such an enumerator driver could be developed for this particular bus architecture.
The driver does not provide the drv_bind() routine. In other words, the driver does not support dynamic driver-to-device binding. When the i8254 driver is used, the driver should be explicitly bound to the device using the PROP_DRIVER property. It is assumed that the device-to-driver binding is done either by a device node creator or by a separate binder driver. Such a driver-to-device binder could be developed for this particular bus architecture
The driver does not implement drv_unload(). This means that the driver component cannot be unloaded even if it has been dynamically loaded at run time.
The driver does not support the BUS_DEV_REMOVAL bus event specified by the common bus driver interface. As a consequence, the driver may not be used with a hot-pluggable bus (for example, PCMCIA).
The Table below summarizes the characteristics of the i8254 driver:
driver name: | "sun:bus-i8254-timer" |
hardware: | Intel i8254 timer chip |
exported interfaces: | "timer" (TIMER_CLASS) |
exported interface version: | 0 (TIMER_VERSION_INITIAL) |
imported parent interface: | "bus" (BUS_CLASS) |
minimal parent interface version: | 0 (BUS_VERSION_INITIAL) |
device probing (auto-detection): | not supported |
driver unloading: | not supported |
system (emergency) shut-down: | supported |
normal device shut-down: | supported |
hot-plug (surprise) device removal: | not supported |
The Table below lists device node properties used by the i8254 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 |
"io-regs" | BUS_PROP_IO_REGS | <bus class specific> | m | |
"intr" | BUS_PROP_INTR | <bus class specific> | m | |
"timer-freq" | PROP_TIMER_FREQ | <generic> | o | 1193180 |
"timer-conf" | I8254_PROP_CONF | I8254PropConf | m | see text below |
The BUS_PROP_IO_REGS property specifies the i8254 I/O registers range. The property value is bus class specific.
The BUS_PROP_INTR property specifies the i8254 interrupt source. The property value is bus class specific.
The PROP_TIMER_FREQ property specifies the i8254 frequency. The property value is board specific.
The I8254_PROP_CONF property specifies the role assigned to each i8254 counter. The I8254PropConf type is defined as:
typedef struct { CounterConfig c0; /* Counter 0 configuration */ CounterConfig c1; /* Counter 1 configuration */ CounterConfig c2; /* Counter 2 configuration */ } El3PropCfg;
and the CounterConfig type as:
typedef struct { uint8_f role; } CounterConfig;
The role field can take the following value:
SYSTEM_TICK_COUNTER
SYSTEM_SPEAKER_COUNTER
TIMER_COUNTER
RESERVED_COUNTER
The SYSTEM_TICK_COUNTER and SYSTEM_SPEAKER_COUNTER must only be assigned to one counter. To configure a counter, as used by the system tick timer, simply set it to SYSTEM_TICK_COUNTER.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | FEATURES | DESCRIPTION | ATTRIBUTES | SEE ALSO