SVR5 and SCO OpenServer
eisa(D5)
eisa --
data format of the device configuration space
Synopsis
SVR5 DDI:
#include <sys/eisa.h>
#include <sys/ddi.h>
SCO OpenServer ODDI:
#include <sys/nvm.h>
Description
EISA device configuration space
is persistent memory provided
by the hardware/firmware associated with
an EISA bus
that is used to store parameters
of the devices attached to the bus.
For EISA devices,
the device configuration space is composed of
a slot information structure
followed by one or more function block structures
The order of these function blocks is undefined.
The figure below depicts this layout:
-------------------------------------------------
| Slot Information |
-------------------------------------------------
| 1st Function Information |
-------------------------------------------------
| 2nd Function Information |
-------------------------------------------------
| . . . |
-------------------------------------------------
| nth Function Information |
-------------------------------------------------
The operating system structures that correspond
to this layout are:
Slot Information-
DDI-
An eisa_slotinfo structure documented on the
eisa(D4)
manual page.
ODDI-
A nvm_slotinfo structure defined in the
<sys/nvm.h> header file.
Function Information-
DDI-
An eisa_funcinfo structure documented on the
eisa(D4)
manual page.
ODDI-
A nvm_funcinfo structure defined in the
<sys/nvm.h> header file.
Usage
The EISA NVRAM configuration information
is read-only to device drivers.
DDI access to EISA configuration information
Refer to
eisa(D4)
for details on the data format of the
eisa_slotinfo_t and eisa_funcinfo_t
structures for SVR5.
ODDI access to EISA configuration information
ODDI drivers can access
the EISA configuration device information
using definitions in the <sys/nvm.h> header file.
For example, the following code fragment
illustrates how to find
the EISA NVRAM function information:
#include <sys/nvm.h>
NVM_FUNCINFO *
XXeisa_funcinfo(sn, nfunc)
int *nfunc
{
if (! eisa_info->slots[sn].slotinfo.dupid.partial {
*nfunc = (int)eia_info->slots[sn].slotinfo.functions;
return((NVM_FUNCINFO *) (eisa_info+1) +
eisa_info->slots[sn].first_func);
}
return (NVM_FUNCINFO *)0;
}
EISA drivers must never program anything
that is configurable through EISACONFIG.
For example, the edge/level interrupt triggering option
(addresses 0x4d0 and 0x4D1)
should not be programmed by drivers at runtime.
All EISA configuration options
are designed to be programmed by
the EISACONFIG utility
that is supplied with the system.
Hardware applicability
x86/Pentium compatible architectures
Version pplicability
ddi:
1, 2, 3, 4, 5, 5mp, 6, 6mp, 7, 7mp, 7.1, 7.1mp, 8, 8mp
oddi:
1, 2, 2mp, 3, 3mp, 4, 4mp, 5, 5mp
SCO OpenServer and SVR5 compatibility
The configuration space layout is determined
by industry standards boards;
drivers written for SVR5 and SCO OpenServer
access the same configuration space,
although they use different methods for that access.
References
cm_read_devconfig(D3),
cm_write_devconfig(D3),
cm_params(D5),
eisa(D4)
``EISA device configuration'' in HDK Technical Reference
19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005