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


6    Device Autoconfiguration on EISA/ISA Buses

Autoconfiguration is the process that determines what hardware actually exists during the current instance of the running kernel. Writing Device Drivers: Tutorial discusses the events that occur during device autoconfiguration and uses the TURBOchannel bus as an example. This chapter describes device configuration on the EISA bus, including the following topics:


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


6.1    Delivering an EISA Bus Product

Figure 6-1 shows that at least three different types of people are involved in delivering an EISA bus product:

Figure 6-1: People Associated with EISA/ISA Bus Products


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


6.2    Configuration for EISA Devices Connected to the EISA Bus

The following tasks are associated with device autoconfiguration for EISA bus devices:


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


6.2.1    Creating an Expansion Board Configuration File

The EISA expansion board manufacturer creates an expansion board configuration file that contains such resources as the board ID, manufacturer identification, the interrupt line, DMA channel, and board memory. Chapter 9 describes how to write a configuration file. The board manufacturer copies the expansion board configuration file to a diskette.


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


6.2.2    Creating and Specifying Entries in a Device Configuration File

The system vendor creates a device configuration file that contains such device resources as the DMA channel, interrupt channel, and memory space. Chapter 9 describes how to write a configuration file. The system vendor copies the configuration file to a diskette (either the diskette that contains the expansion board configuration file or a separate diskette).

The system vendor also supplies the ECU. The Extended Industry Standard Architecture Revision 3.10 specification provides guidelines on how to write the ECU.


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


6.2.3    Running the ECU

The customer runs the EISA Configuration Utility (ECU) whenever the configuration changes. The ECU reads the board configuration file and device configuration file for each device in the system and assigns resources based on the information in the device configuration file. The ECU resolves any conflicts and saves the configuration information in nonvolatile random-access memory (NVRAM).


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


6.2.4    Reading Information That the ECU Generates

When the customer boots the CPU, the EISA bus configuration code reads the configuration information from NVRAM and does the following for each device in the configuration:


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


6.2.5    Summary Configuration Tasks for Devices Connected to the EISA Bus

In summary, for the EISA bus configuration code to call the driver's xxprobe interface, the following must occur:

  1. The system vendor creates a configuration file for the device and copies it to the system configuration diskette or a separate diskette that the ECU can read. The system configuration diskette, supplied by the board manufacturer, contains a configuration file for the expansion board. The diskette is in FAT format.

  2. The device driver writer creates an entry (or entries if there are multiple instances of the device) in the system configuration file, /etc/sysconfigtab.

  3. The customer runs the ECU.


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


6.3    Configuration for ISA Devices Connected to the EISA Bus

You support ISA bus devices in the same manner as EISA bus devices. With few exceptions, there is no distinction between an EISA bus device and an ISA bus device. Like EISA bus devices, ISA bus devices require a device configuration file. However, because the ECU cannot detect the presence of an ISA card, you must manually inform the ECU of the card's presence and point it to the correct device configuration file. To accomplish this, use the following steps:

  1. Create an EISA device configuration file.

    1. See Chapter 9 for information on writing a configuration file.

    2. Select an ID for the device. The ID is a 7-character string that identifies the device and causes the ECU to generate the configuration file name. You specify the ID as follows: a 3-character manufacturer code, a 3-character hexadecimal product identifier, and a 1-character hexadecimal revision number.

      For ISA bus devices, specify the 3-character manufacturer code as ISA. Choose the 3-character hexadecimal product identifier carefully to avoid conflict with other ISA bus devices. The following is an example device ID:

      ISA5001

      The device ID is used in the EISA device configuration file and in the /etc/sysconfigtab entry.

      The ECU uses the ID to generate the device configuration file name. It places an exclamation point (!) before the ID name and appends a file extension of .CFG. If it cannot find a file with that name, it replaces the exclamation point with the letter a and tries again. If it still cannot find the file, it prompts the user to insert a diskette with the file on it.

      You can use the !ISA0000.CFG generic file along with other !ISAxxx.CFG and !EISAxxx.CFG files provided on the EISA system configuration diskette as examples when creating your EISA device configuration file.

    3. Enter all resource requirements in the EISA device configuration file.

    4. If the ISA bus card can use a range of choices for a given resource, enter all choices in the EISA device configuration file. For example, if the ISA bus card can use one of three interrupt requests (IRQs), enter all three in the EISA device configuration file. This makes it easier for the ECU to generate a conflict-free configuration.

    5. Copy the completed EISA device configuration file to the working version of the EISA system configuration diskette.

  2. Run the ECU to add the device's configuration.

    1. See the hardware documentation shipped with the system for instructions on how to run the ECU.

      Do not install the board before running the ECU.

    2. Insert the EISA system configuration diskette that contains the ISA device's configuration file into the diskette drive.

    3. Type the runecu command at the console prompt and answer Y to the subsequent prompt.

    4. Select item 2 from the ECU main menu.

    5. Type insert to add a board. The ECU displays a list of configuration files.

    6. Select the configuration file associated with the ISA device. The ECU prompts for a slot for the board.

    7. Choose one of the empty slots and record the slot for use in a later step.

    8. Return to the main menu and select item 3.

    9. Locate the entry for the ISA board. Set any jumpers and switches on the board to correspond to the resources assigned by the ECU.

    10. Type F7 and lock the board. These actions prevent the ECU from changing the board's resource assignments during conflict resolution.

    11. Return to the main menu and select item 5 to save the configuration. Exit from the ECU. The ECU returns you to the firmware prompt.

    12. Turn off the machine.

  3. With the system powered off, install the board into the slot you selected in step 2g.

  4. Power on the system and boot the kernel that contains the driver for the board.


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


6.4    Configuration for ISA Devices Connected to the ISA Bus

The ISA bus support code relies on data stored by the console's isacfg utility command for configuration information. You enter the device's resource requirements along with a handle through the isacfg command. The handle is the key to matching the resource information to the driver. The handle can be a maximum of 15 characters.