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