Writing Device Drivers

EISA Bus

Memory and I/O Space

Two address spaces are provided: memory address space and I/O address space. Depending on the device, registers may appear in one or both of these address spaces. Table 2-4 shows the registers for memory and I/O address spaces in the EISA bus.

Table 2-4 EISA Bus Address Space

EISA Space 

Name 

Address 

Size 

Data Transfer 

Size 

Physical Address 

Range 

Main Memory 

32 

32 

0x0-0xffffffff 

I/O 

-- 

8/16/32 

0x0-0xffff 

Registers can be mapped in memory address space and used by the driver as normal memory (see "Memory Space Access").

Registers in I/O space are accessed through I/O port numbers using separate kernel routines. See "I/O Space Access" for more information.

Hardware Configuration Files

Beginning with the Solaris7 operating envionment, the use of hardware configuration files to provide arguments to probe(9E) on x86 platforms is highly discouraged, since probes can lead to system hangs and resets. Exact device configuration information is maintained by the booting system and is passed to the probe(9E) function.

A separate realmode driver may need to be developed for the booting system. See the Realmode Drivers white paper in the Driver Development Site at http://www.sun.com/developers/driver for information on realmode drivers. Hardware configuration files may be needed on some occasions to augment the information provided by the booting system. See driver.conf(4) and eisa(4) for further details.