edt_data(4) edt_data(4)
NAME
/stand/edt_data - Equipped Device Table Data File
DESCRIPTION
The Equipped Device Table (EDT) data file describes board and device
specific data used for configuring a kernel. Each entry in edt_data
describes a board or similar configurable hardware entity. An entry
consists of a single line with the following fields separated by
white space:
NAME Device name, to match that of the corresponding boot
module. 14 characters maximum.
FLAGS Flags: the only one recognised is r, meaning required
device. The driver for a required device cannot be
EXCLUDEd in the system file (as per the r flag in
master(4)).
BOARD Board or controller number. If there is more than one EDT
entry for the same device name, each must have a different
board number. This number is also the default argument
passed to the interrupt handler.
IO_ADDR The base address of the board. Standalone device probe
programs (see edtp(8)) may use this address to probe for
the presence of the board. For the kernel, cunix(1M)
generates an array prefix_addr[] into which it places the
value of IO_ADDR for access by the driver. The array is
indexed by the board number.
IO_LEN Size of the I/O space (beginning at IO_ADDR) in bytes.
cunix places this in the array prefix_iolen[].
MEM_ADDR Address of additional I/O space used by the device, or an
area of local memory on the board. cunix places this in
the array prefix_maddr[].
MEM_LEN Size of the above, placed in the array prefix_memlen[].
NVEC Number of vectors per board. If this field is '-', the
number of descriptors in the VECTORS field (see below) is
counted. The figure is placed in the integer prefix_nvec
by cunix.
VECTORS A comma-separated list of vector numbers for the board.
Each number may optionally be followed by an interrupt
handler name modifier and/or an argument to be passed to
the interrupt handler in place of BOARD. The syntax is:
7/91 Page 1
edt_data(4) edt_data(4)
vector:modifier(argument),...
cunix places the vector numbers in the array prefix_vec[]
and generates interrupt ``glue'' code to connect each one
to its handler in the driver. The default handler name is
prefixint. If modifier is specified, the handler name for
that vector becomes prefixmodifierint.
If there is more than one vector in the list and a given
vector has no modifier character or argument specified,
then a handler name of the form prefixintX is generated,
where X is the numeric position of that vector in the list,
starting from zero. If there is only one vector number in
the list and NVEC is greater than one, then a contiguous
set of NVEC vectors will be generated, starting from the
specified vector and using the prefixintX style for the
handler names. The maximum length of the VECTORS field is
31 characters.
IPL The interrupt priority level, placed in prefix_ilev[].
TYPE Type of board, chosen from:
0 Main CPU board
1 Memory board
2 Some type of I/O board
3 Other ???
This field is not currently used by cunix.
SPARE[4] Spare fields. These are placed in the array prefix_aux[]
by cunix, and may be interpreted as desired by drivers.
The maximum number of entries permitted in an EDT data file is 64.
Extended EDT
An Extended EDT is used for some boards to describe subdevices of the
board, although it can be of zero length for other boards. It
consists of an array of xedt structures, filled in by the driver:
#define E_XNAMLEN 64 /* extended device name length */
struct xedt {
char x_name[E_XNAMLEN]; /* extended device name */
int x_unit; /* extended device unit number */
u_int x_ksize; /* extended device size in K */
};
Page 2 7/91
edt_data(4) edt_data(4)
struct kxedt {
unsigned int count;
struct xedt entry[1];
};
The XEDT can be read by a program using the sysm68k(2) or sysm88k(2)
call with command XGETEDT. It is returned in the form shown by the
kxedt structure above, where count indicates the number of following
xedt entries. The information is obtained from the driver via the
prefixdriverinfo entry point, with command XGETEDT. Note that not
all drivers may support this command.
EXAMPLE
*
* Example edt_data file with just one entry describing an MVME323 device.
* Note:
* comments are introduced by a '*'
* irrelevent fields are marked with a '-'
* all fields for an entry must be on one (very long) line, shown as two lines
* in the following example because of space constraints
*
*NAME FLAGS BOARD IO_ADDR IO_LEN MEM_ADDR
MVME323 r 0 0xffffa000 - -
(1st line cont'd) MEM_LEN NVEC VECTORS IPL TYPE SPARE[4]
(2nd line cont'd) - 1 201 5 3 - - - -
SEE ALSO
cunix(1M), sysm68k(2), sysm88k(2), edtp(8), boot(8)
7/91 Page 3