#ifndef LINUX_PNP_RESOURCE #define LINUX_PNP_RESOURCE /* ISA Plug and Play Resource Definitions */ #define PNP_RES_LARGE_ITEM 0x80 /* Small resource items */ #define PNP_RES_SMTAG_VERSION 0x01 #define PNP_RES_SMTAG_LDID 0x02 #define PNP_RES_SMTAG_CDID 0x03 #define PNP_RES_SMTAG_IRQ 0x04 #define PNP_RES_SMTAG_DMA 0x05 #define PNP_RES_SMTAG_DEP_START 0x06 #define PNP_RES_SMTAG_DEP_END 0x07 #define PNP_RES_SMTAG_IO 0x08 #define PNP_RES_SMTAG_IO_FIXED 0x09 #define PNP_RES_SMTAG_VENDOR 0x0e #define PNP_RES_SMTAG_END 0x0f /* Large resource items */ #define PNP_RES_LGTAG_MEM 0x01 #define PNP_RES_LGTAG_ID_ANSI 0x02 #define PNP_RES_LGTAG_ID_UNICODE 0x03 #define PNP_RES_LGTAG_VENDOR 0x04 #define PNP_RES_LGTAG_MEM32 0x05 #define PNP_RES_LGTAG_MEM32_FIXED 0x06 /* Logical device ID flags */ #define PNP_RES_LDID_BOOT 0x01 /* IRQ information */ #define PNP_RES_IRQ_HIGH_EDGE 0x01 #define PNP_RES_IRQ_LOW_EDGE 0x02 #define PNP_RES_IRQ_HIGH_LEVEL 0x04 #define PNP_RES_IRQ_LOW_LEVEL 0x08 /* DMA information */ #define PNP_RES_DMA_WIDTH_MASK 0x03 #define PNP_RES_DMA_WIDTH_8 0x00 #define PNP_RES_DMA_WIDTH_8_16 0x01 #define PNP_RES_DMA_WIDTH_16 0x02 #define PNP_RES_DMA_BUSMASTER 0x04 #define PNP_RES_DMA_COUNT_BYTE 0x08 #define PNP_RES_DMA_COUNT_WORD 0x10 #define PNP_RES_DMA_SPEED_MASK 0x60 #define PNP_RES_DMA_SPEED_COMPAT 0x00 #define PNP_RES_DMA_SPEED_TYPEA 0x20 #define PNP_RES_DMA_SPEED_TYPEB 0x40 #define PNP_RES_DMA_SPEED_TYPEF 0x60 /* Resource group priority */ #define PNP_RES_CONFIG_GOOD 0x00 #define PNP_RES_CONFIG_ACCEPTABLE 0x01 #define PNP_RES_CONFIG_SUBOPTIMAL 0x02 /* IO information */ #define PNP_RES_IO_DECODE_16 0x01 /* Memory information */ #define PNP_RES_MEM_WRITEABLE 0x01 #define PNP_RES_MEM_CACHEABLE 0x02 #define PNP_RES_MEM_HIGH_ADDRESS 0x04 #define PNP_RES_MEM_WIDTH_MASK 0x18 #define PNP_RES_MEM_WIDTH_8 0x00 #define PNP_RES_MEM_WIDTH_16 0x08 #define PNP_RES_MEM_WIDTH_8_16 0x10 #define PNP_RES_MEM_WIDTH_32 0x18 #define PNP_RES_MEM_SHADOWABLE 0x20 #define PNP_RES_MEM_EXPANSION_ROM 0x40 /* note: multi-byte data types in these structures are little endian, and have to be byte swapped before use on big endian platforms. */ #pragma pack(1) union pnp_small_resource { struct { __u8 pnp, vendor; } version; struct { __u32 id; __u8 flag0, flag1; } ldid; struct { __u32 id; } gdid; struct { __u16 mask; __u8 info; } irq; struct { __u8 mask, info; } dma; struct { __u8 priority; } dep_start; struct { __u8 info; __u16 min, max; __u8 align, len; } io; struct { __u16 base; __u8 len; } io_fixed; struct { __u8 checksum; } end; }; union pnp_large_resource { struct { __u8 info; __u16 min, max, align, len; } mem; struct { __u8 str[0]; } ansi; struct { __u16 country; __u8 str[0]; } unicode; struct { __u8 info; __u32 min, max, align, len; } mem32; struct { __u8 info; __u32 base, len; } mem32_fixed; }; union pnp_resource { struct { __u8 tag; union pnp_small_resource d; } sm; struct { __u8 tag; __u16 sz; union pnp_large_resource d; } lg; }; #pragma pack() #endif /* LINUX_PNP_RESOURCE */