7.3. Example Three
Dependent functions can also be used to express the priority of configuration options. For example consider a card that performs DMA using a memory buffer if memory space is available. Alternatively, the card uses a DMA channel if no memory resources are available. This example card needs 16 consecutive I/O ports that may be located anywhere in the range of 0x300 to 0x3F0. The card needs one interrupt that can be either IRQ 5,7,10,11,12. The card needs a 128 KByte memory window, if that is not available it can use a 64 KByte memory window and if that is not available, it will run using a DMA channel. It supports DMA channels 5,6,7. This device has the following resource data structure:
TAG Plug and Play Version Number
TAG Identifier String
TAG Logical Device ID
TAG I/O Format (Length 16, Min Base 0x0300, Max Base 0x03F0)
TAG IRQ Format (MASK IRQ 5,7,10,11,12)
TAG Start DF (Length 1) (Priority 0)
TAG Memory Format (Length = 128K, Min Base 0x0C0000, Max Base 0x0E0000)
TAG DMA Format (MASK no DMA channel)
TAG Start DF (Length 1) (Priority 1)
TAG Memory Format (Length = 64K, Min Base 0x0C0000, Max Base 0x0E0000)
TAG DMA Format (MASK no DMA channel)
TAG Start DF (Length 1) (Priority 2)
TAG Memory Format (Length = 0, Min Base 0x0C0000, Max Base 0x0E0000)
TAG DMA Format (MASK 5,6,7)
TAG End DF
TAG END Tag