Maintaining eeprom information, Embedded designs, Bios-based design considerations – Cirrus Logic AN83 User Manual
Page 54: Driver interface with bios-based configuration, An83

AN83
54
AN83REV3
Maintaining EEPROM Information
The contents of the EEPROM may either be pre-
programmed in a stand-alone EEPROM program-
mer or programmed after installation through the
CS8900A’s serial interface. See the CS8900A
Data Sheet for programming an EEPROM via the
CS8900A’s serial interface. The OEM is left to de-
termine the best procedure for programming EE-
PROMs via a stand-alone EEPROM programmer.
Cirrus has two utilities suitable for maintaining the
configuration information stored in the EEPROM.
IAGEN.EXE generates a file with individual ad-
dresses and serial numbers. EEPROM.EXE is de-
signed to be used by OEMs to initialize the
EEPROM’s contents before shipping to the end-us-
er. It takes the file generated by IAGEN.EXE as in-
put. Both utilities are available as executables and
source code on request.
Cirrus also provides SETUP.EXE, a DOS-based
Setup and Installation Utility run by the end-user at
the time the adapter is installed. The DOS-based
Setup and Installation utility allows the end-user to
configure the adapter for a specific system.
Embedded Designs
Embedded designs may be implemented using an
on-board serial EEPROM connected to the
CS8900A in the same manner as is used in adapter
board designs. However, to save board space and
reduce costs, motherboard implementations can
store the Driver Configuration Block in the sys-
tem’s BIOS nonvolatile memory.
BIOS-Based Design Considerations
For Cirrus supplied MAC drivers to interface with
a Driver Configuration Block (DCB) stored in
BIOS, the DCB’s data structure must meet the fol-
lowing requirements:
3) The base of the data structure must be marked
by a header consisting of the 8-byte ASCII text
string “$CS8900A$”.
4) The header must be located on a 512-byte
boundary in the BIOS space between C0000h
and FFC00h.
5) The data structure must employ the same for-
mat as defined for EEPROM in Table 8.
An additional design consideration when storing
the Driver Configuration Block in BIOS space con-
cerns the inability to override the CS8900A’s de-
fault configuration after reset. If an EEPROM is
not connected to the CS8900A, it will always come
out of reset using its default configuration. There-
fore, when using BIOS space to store configuration
information, IO addresses of 300h - 310h must be
dedicated to the CS8900A.
The CS8900A’s configuration can be changed
from its default values through software control af-
ter reset. However, it will always revert to its de-
fault configuration after each reset (including
software resets). Refer to Table 3.3 of the CS8900A
Data Sheet for default configuration definitions.
Driver Interface with BIOS-Based Configu-
ration
During initialization, Cirrus-provided drivers test
for the presence of an EEPROM. If an EEPROM
is not detected, the drivers scan the BIOS for the
header indicating the start of a Driver Configura-
tion Block. Before using the data in the Driver
Configuration Block, the drivers verify the data in
the block is valid using a checksum.
The checksum stored at the end of the block is the
2’s complement of the 16-bit sum of all the words
in the Driver Configuration Block, excluding the 8
bytes of header. (The drivers access the Configura-
tion Block in BIOS space as 16-bit words.) Any
carry out of the 16th bit is ignored. Since this
checksum value is calculated as the 2’s comple-
ment of the sum of all the preceding words in the
block, a total of 0 should result when the checksum
value is added to the sum of the previous words.
Table 9 shows the correct format for a data struc-