[Index]


Table of Contents


Title and Copyright Pages

About This Book
Audience
New and Changed Features
Scope of the Book
Organization
Related Documentation
Hardware Documentation
Device Driver Documentation
Operating System Overview Documentation
Programming Tools Documentation
System Management Documentation
Porting Documentation
Reference Pages
Reader's Comments
Conventions

1    Review of Device Driver Concepts
1.1    Gathering Information
1.2    Designing a Device Driver
1.3    Allocating Data Structures
1.4    Writing Portable Device Drivers
1.5    Reviewing Device Driver Kits Delivery Process
1.6    Identifying the Method for Registering Device Interrupt Handlers

2    EISA/ISA Bus Architectures
2.1    ISA Devices
2.2    ISA Bus Support Code
2.3    ISA Device Slots
2.4    EISA/ISA Bus Hardware Architecture
2.4.1    Address Spaces
2.4.2    Data Sizes
2.4.3    Byte Ordering
2.5    EISA Bus Software Architecture

3    Structure of EISA/ISA Bus Device Drivers
3.1    Include Files Section
3.2    Autoconfiguration Support Section
3.2.1    Setting Up the probe Interface
3.2.2    Setting Up the slave Interface

4    Data Structures for EISA/ISA Bus Device Drivers
4.1    The controller Structure Members as Specified on EISA/ISA Buses
4.1.1    The slot Member
4.1.2    The physaddr Member
4.2    EISA/ISA Bus Structures
4.2.1    Members of the eisa_option Structure
4.2.2    Contents of the eisa_option_data.c File
4.2.3    Contents of the isa_option_data.c File

5    The get_config Kernel Interface

6    Device Autoconfiguration on EISA/ISA Buses
6.1    Delivering an EISA Bus Product
6.2    Configuration for EISA Devices Connected to the EISA Bus
6.2.1    Creating an Expansion Board Configuration File
6.2.2    Creating and Specifying Entries in a Device Configuration File
6.2.3    Running the ECU
6.2.4    Reading Information That the ECU Generates
6.2.5    Summary Configuration Tasks for Devices Connected to the EISA Bus
6.3    Configuration for ISA Devices Connected to the EISA Bus
6.4    Configuration for ISA Devices Connected to the ISA Bus

7    EISA Bus Device Driver Example
7.1    Overview of the /dev/envram Device Driver
7.2    The envram_reg.h Header File
7.3    The envram_data.c File
7.4    Include Files Section
7.5    Declarations Section
7.6    Autoconfiguration Support Section
7.6.1    Implementing the envram_probe Interface
7.6.2    Implementing the envram_attach Interface
7.6.3    Implementing the envram_ssn Interface
7.7    Status Section
7.8    Battery Status Section
7.8.1    Implementing the eisa_nvram_battery_status Interface
7.8.2    Implementing the eisa_nvram_battery_enable Interface
7.8.3    Implementing the eisa_nvram_battery_disable Interface
7.9    Read and Write Device Section
7.9.1    Implementing the envram_read Interface
7.9.2    Implementing the envram_write Interface
7.10    Zero NVRAM Section

8    EISA/ISA Bus Device Driver Configuration

9    Writing an EISA Configuration File
9.1    Sources for Configuration Files
9.1.1    EISA Ethernet Board Specifications
9.1.2    Microsoft ISA Sound Board Specifications
9.1.3    Generic ISA Board Specifications
9.2    Board Identification
9.2.1    EISA Ethernet Board Identification
9.2.2    Microsoft ISA Sound Board Identification
9.2.3    Generic ISA Board Identification
9.3    Function and Type Definitions
9.4    Dynamic Memory Access
9.4.1    EISA Ethernet Board DMA
9.4.2    Microsoft ISA Sound Board DMA
9.4.3    Generic ISA Board DMA
9.5    Interrupts
9.5.1    EISA Ethernet Board Interrupts
9.5.2    Microsft ISA Sound Board Interrupts
9.5.3    Generic ISA Board Interrupts
9.6    I/O Space
9.6.1    EISA Ethernet Board I/O Space
9.6.2    Generc ISA Board I/O Space
9.6.3    Microsoft ISA Sound Board I/O Space
9.7    Memory Space
9.7.1    EISA Ethernet Board Memory Space
9.8    Switch and Jumper Settings
9.8.1    EISA Ethernet Board Jumper Settings
9.9    Running the ECU

A    EISA/ISA Bus-Specific Reference Information
A.1    Include File
eisa.h
A.2    Kernel Interfaces
isa_slot_to_name
A.3    Data Structures
bus_mem
controller
dma
eisa_option
e_port
irq
A.4    Device Driver Interfaces
xxprobe
xxslave

B    Configuration File Format
B.1    Expansion Board Identification Block
B.2    Initialization Information Block
B.2.1    I/O Port Initialization Statement Block
B.2.2    Switch Configuration Block
B.2.3    Jumper Configuration Block Statement
B.2.4    Software Initialization Statement Block
B.3    Function Statement Block
B.4    Choice and Subchoice Statement Blocks
B.5    Resource Description Block
B.6    Resource Statements
B.6.1    DMA Channel Description Block
B.6.2    I/O Port Description Block
B.6.3    Interrupt Description Block
B.6.4    Memory Description Block
B.7    INIT Statements
B.7.1    I/O Port INIT Statement
B.7.2    Switch INIT Statement
B.7.3    Jumper INIT Statement
B.7.4    Software INIT Statement
B.8    System Board Configuration
B.8.1    System Board Identification Block
B.8.2    System Description Block

C    EISA Bus Device Driver Source Listing

D    Summary Tables
D.1    List of Header Files
D.2    List of Kernel Support Interfaces
D.3    List of Global Variables
D.4    List of Data Structures
D.5    List of Device Driver Interfaces
D.6    List of Bus Configuration Interfaces

Glossary

Figures

3-1    Sections of a Character Device Driver and a Block Device Driver
6-1    People Associated with EISA/ISA Bus Products
7-1    Relationship of the /dev/envram and /dev/presto Device Drivers
9-1    EISA Ethernet Configuration Register
9-2    nulldcm3759
9-3    nulldcm3759
9-4    nulldcm3759
9-5    nulldcm3759

Tables

4-1    The controller Structure
4-2    The eisa_option Structure Members and Associated Data Types
7-1    Parts of the /dev/envram Device Driver
7-2    Autoconfiguration Support Section
7-3    Interfaces Implemented as Part of the Battery Status Section
7-4    Interfaces Implemented as Part of the Read and Write Device Section
A-1    Include File for EISA/ISA Bus Device Drivers
A-2    Kernel Interfaces for EISA/ISA Bus Device Drivers
A-3    Data Structures for EISA/ISA Bus Device Drivers
A-4    Driver Interfaces for EISA/ISA Bus Device Drivers
D-1    Summary Descriptions of Header Files
D-2    Summary Descriptions of Kernel Support Interfaces
D-3    Summary Descriptions of Global Variables
D-4    Summary Descriptions of Data Structures
D-5    Summary of Block and Character Device Driver Interfaces
D-6    Summary Descriptions of Bus Configuration Interfaces