Specifications

EISA and ISA Bus Support
14.7 EISA Bus Support on DEC 2000
that many EISA devices also have interrupt enable bits resident on the boards
themselves which the driver must explicitly enable also.
The IOC$NODE_FUNCTION function codes are defined in
[LIB.LIS]IOCDEF.SDL.
14.7.6.3.2 IOC$NODE_DATA This routine is used by a driver to get the
resources assigned to its device using an EISA Configuration Utility (ECU)
from MCS Corporation. The resources which are assigned to EISA boards are
Interrupt Request Level (IRQ), DMA Channel #, EISA IO Port address, and EISA
Memory address.
Important Note
ECU may assign multiple resources for a board, depending on what is
in the manufacturers configuration file. It is suggested that the callers
of this routine allocate a buffer large enough to hold the information for
all the resources. That is to say, if the board can be assigned more than
1 Memory Buffer, say 4 (as is the case for the COMPAQ VGA card), the
caller ought to be sure to allocate 4 times the suggested buffer size given
below. All buffer sizes given below are for a single resource.
The parameters to IOC$NODE_DATA are:
crb—Address of the CRB which contains the EISA slot number
fnc_code—Function code to be performed.
This routine supports only 4 of the available function codes: ioc$k_eisa_irq,
ioc$k_eisa_dma_chan, ioc$k_eisa_io_port, and ioc$k_eisa_mem. Any of the
other function codes will return bad status.
user_buffer—Address of a user supplied buffer to contain the data. It is
assumed that the user has allocated enough space for the return data.
Function code ioc$k_eisa_irq requires a longword buffer, and returns the IRQ
assigned to the board in that buffer. Valid EISA IRQ’s for DEC 2000 are
0,1,3-7,9-12,14,15. Boards are typically designed to work with a subset of
these IRQ’s, and need to be told which IRQ they will be using in the current
system configuration. Drivers typically need to program the board to use the
IRQ it has been assigned, and can use this routine to find that out.
Function code IOC$K_EISA_DMA_CHAN requires a longword buffer and returns
the EISA DMA Channel assigned to the board. There are 7 DMA Channels
available on DEC 2000, 0-3 and 5-7. Not all boards do DMA, nor do all DMA
boards use the DMA engine provided by the Intel 82350DT Chip set.
Function code ioc$k_eisa_io_port requires a longword length buffer. It returns
to the user the starting address of the assigned IO port as well as the number
of consecutive bytes assigned. Many ISA boards, and some EISA boards are
designed to use some number of different address ports for CSR access. This
routine will return the starting IO port address assigned to this board with the
lower word and the number of bytes in the upper word.
Function code ioc$k_eisa_mem require at least a quadword buffer. It will return
the assigned starting address of EISA memory in the first longword, and the
size of the allocated buffer in the second longword. These addresses are used to
access on board RAM on DEC 2000 adapters. Available EISA memory addresses
on DEC 2000 are A0000 - EFFFF, and are given out in chunks of 32 or 64K.
14–18