[Return to Library] [Contents] [Previous Chapter] [Next Chapter] [Index] [Help]


8    EISA/ISA Bus Device Driver Configuration

The third-party device driver model allows dynamic or static configuration of a device driver from a single binary module. The driver's configure routine handles all configuration operations either at startup (for static configuration) or at run time (for dynamic configuration). See Writing Device Drivers: Tutorial for a description of the configure routine.

To support configuration, device drivers must provide a sysconfigtab file fragment, which contains a description of the devices that the driver can control. The information in the file fragment is added to the system's /etc/sysconfigtab file when the driver is installed. This entry is used by both the startup procedure and the sysconfig utility to locate the driver module and set device attributes.

The information provided in the sysconfigtab file fragment depends on the bus on which the device can operate. Entries for EISA and ISA buses have a similar form:

{ EISA_Option | ISA_Option } = \
Board_Id - board_id , \
Function_Name - function , \
Driver_Name - driver_name , \
Intr_B4_Probe - boolean , \
Intr_Aft_Attach - boolean , \
Type - device_type , \
Adpt_Config - cfg_interface , \
Comment - string

The following list describes the information you provide for each attribute in the sysconfigtab entry:

board_id
Specifies the EISA bus option expansion board's product ID. The EISA bus support code compares the value stored in this member with an EISA ID register to identify an option module and connect it to its associated device driver. The product ID consists of a 3-character manufacturer code, a 3-character product identifier, and a 1-character revision number. For example, the string ADP0002 identifies this as a second revision of an Adaptec ADP1742A SCSI option board.

ISA bus device drivers do not use this member. Typically, ISA device drivers set this member to NULL.

function
Specifies the character string that identifies one configuration for the board. This text must match the value specified in the TYPE statement of the EISA configuration file. This is useful for multifunction boards, which have more than one possible configuration. For these boards, you create one EISA_Option entry for each possible configuration; one is chosen when the user runs the ECU. The default is NULL.

driver_name
Specifies up to 8 characters of text that identify the name of the controlling device driver. For example, the string aha identifies this as the controlling device driver for the device connected to an ADP1742A SCSI option board.

boolean
When used with the Intr_B4_Probe option, specifies whether the device needs interrupts enabled before the bus configuration code calls the driver's probe interface. When used with the Intr_Aft_Attach option, specifies whether the device needs interrupts enabled after the driver's probe and cattach or dattach interfaces complete execution. You can set one or the other of these options, but not both.

A value of zero (0), the default, indicates that the device does not need interrupts enabled at the specified configuration point; a value of 1 indicates that the device does need interrupts enabled.

device_type
Specifies the type of device. You can set device_type to C (the device is a controller) or A (the device is a bus or an adapter). The default value is C.

cfg_interface
Specifies the name of the bus (or adapter) configuration interface to call. You set cfg_interface to the string that identifies the bus configuration interface if device_type is A (the device is a bus or an adapter). Otherwise, do not set cfg_interface to any value.

string

Specifies a C comment to appear at the end of the /etc/sysconfigtab entry. Your comment can be a maximum of 24 characters, including the C comment delimiters.

The following example shows the entry for the /dev/envram driver:

EISA_Option = Board_Id - DEC2500, Function - NULL, \
	      Driver_Name - envram, Intr_B4_Probe - 0, \
	      Intr_Aft_Attach - 0, Type - C