Linux Step By Steps
ISAPNP-Programming-Registers

UP

INTERFACE
ISOLATION
SERIAL NUMBER
RECORDS
DECODES


 Memory Address Base registers (up to four non-contiguous ranges)

#if never
00..07: Card control registers
08..1F: reserved

20..2F # Vendor defined card level registers 0x20..2f:
for each logical device
30..31 logical card control
32..3F reserved
40..75 device configs
76..FF  reserved

There are a maximum of four memory descriptors available per logical device. Only the 24bit, or the 32 bit set are useable per CARD.

40..44 # 24 bit Memory descriptor 0
45..47 # not used
48..4c # 24 bit Memory descriptor 1
4D..4F
50..54 # 24 bit Memory descriptor 2
55..57
58..5C # 24 bit Memory descriptor 3
5D..5F
24 bit memory descriptor
[base *256] flag [range/size]
flag bit 0 = range/size
bit 1 = 16 bit

<2 byte address> <flag> <2byte size or range>
 <flag> bit 0 range vs size
            1 16 / 8 bit

60..61: # IO descriptor 0 Base address word
62..63:
64..65:
66..67:
68..69: msb first
6a..6b:
6c..6d:
6e..6f: # IO descriptor 7 Base address

70..71: # Interrupt descriptor 0
72..73: # Interrupt descriptor 1
 <irq> <flag>
  irq Interrupt level 0..15
 flag
  bit 0 edge vs level triggered
  bit 1 active high/low
74: # DMA descriptor 0
75: # DMA descriptor 0
 single byte dma number

76..7F: # 32 bit Memory descriptor 0
80..88: # 32 bit Memory descriptor 1
90..98: # 32 bit Memory descriptor 2
A0..A8: # 32 bit Memory descriptor 3
[long base] flag [long range/size]
desc: as above

flag 0 range vs size
    1 16 vs 8 bit
    2 32 bit