Sync up to trunk head.
[reactos.git] / drivers / bus / isapnp / isapnphw.h
1 #pragma once
2
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6
7 #define ISAPNP_ADDRESS 0x279
8 #define ISAPNP_WRITE_DATA 0xA79
9
10 #define ISAPNP_READ_PORT_MIN 0x203
11 #define ISAPNP_READ_PORT_START 0x213
12 #define ISAPNP_READ_PORT_MAX 0x3FF
13 #define ISAPNP_READ_PORT_STEP 0x10
14
15 #define ISAPNP_CSN_MIN 0x01
16 #define ISAPNP_CSN_MAX 0x0F
17
18 #define ISAPNP_READPORT 0x00
19 #define ISAPNP_SERIALISOLATION 0x01
20 #define ISAPNP_CONFIGCONTROL 0x02
21 #define ISAPNP_WAKE 0x03
22 #define ISAPNP_RESOURCEDATA 0x04
23 #define ISAPNP_STATUS 0x05
24 #define ISAPNP_CARDSELECTNUMBER 0x06
25 #define ISAPNP_LOGICALDEVICENUMBER 0x07
26
27 #define ISAPNP_ACTIVATE 0x30
28 #define ISAPNP_IORANGECHECK 0x31
29
30 #define ISAPNP_IOBASE(n) (0x60 + ((n)*2))
31 #define ISAPNP_IRQNO(n) (0x70 + ((n)*2))
32 #define ISAPNP_IRQTYPE(n) (0x71 + ((n) * 2))
33
34 #define ISAPNP_CONFIG_RESET (1 << 0)
35 #define ISAPNP_CONFIG_WAIT_FOR_KEY (1 << 1)
36 #define ISAPNP_CONFIG_RESET_CSN (1 << 2)
37
38 #define ISAPNP_LFSR_SEED 0x6A
39
40 #define ISAPNP_IS_SMALL_TAG(t) (!((t) & 0x80))
41 #define ISAPNP_SMALL_TAG_NAME(t) (((t) >> 3) & 0xF)
42 #define ISAPNP_SMALL_TAG_LEN(t) (((t) & 0x7))
43 #define ISAPNP_TAG_PNPVERNO 0x01
44 #define ISAPNP_TAG_LOGDEVID 0x02
45 #define ISAPNP_TAG_COMPATDEVID 0x03
46 #define ISAPNP_TAG_IRQ 0x04
47 #define ISAPNP_TAG_DMA 0x05
48 #define ISAPNP_TAG_STARTDEP 0x06
49 #define ISAPNP_TAG_ENDDEP 0x07
50 #define ISAPNP_TAG_IOPORT 0x08
51 #define ISAPNP_TAG_FIXEDIO 0x09
52 #define ISAPNP_TAG_RSVDSHORTA 0x0A
53 #define ISAPNP_TAG_RSVDSHORTB 0x0B
54 #define ISAPNP_TAG_RSVDSHORTC 0x0C
55 #define ISAPNP_TAG_RSVDSHORTD 0x0D
56 #define ISAPNP_TAG_VENDORSHORT 0x0E
57 #define ISAPNP_TAG_END 0x0F
58
59 #define ISAPNP_IS_LARGE_TAG(t) (((t) & 0x80))
60 #define ISAPNP_LARGE_TAG_NAME(t) (t)
61 #define ISAPNP_TAG_MEMRANGE 0x81
62 #define ISAPNP_TAG_ANSISTR 0x82
63 #define ISAPNP_TAG_UNICODESTR 0x83
64 #define ISAPNP_TAG_VENDORLONG 0x84
65 #define ISAPNP_TAG_MEM32RANGE 0x85
66 #define ISAPNP_TAG_FIXEDMEM32RANGE 0x86
67 #define ISAPNP_TAG_RSVDLONG0 0xF0
68 #define ISAPNP_TAG_RSVDLONG1 0xF1
69 #define ISAPNP_TAG_RSVDLONG2 0xF2
70 #define ISAPNP_TAG_RSVDLONG3 0xF3
71 #define ISAPNP_TAG_RSVDLONG4 0xF4
72 #define ISAPNP_TAG_RSVDLONG5 0xF5
73 #define ISAPNP_TAG_RSVDLONG6 0xF6
74 #define ISAPNP_TAG_RSVDLONG7 0xF7
75 #define ISAPNP_TAG_RSVDLONG8 0xF8
76 #define ISAPNP_TAG_RSVDLONG9 0xF9
77 #define ISAPNP_TAG_RSVDLONGA 0xFA
78 #define ISAPNP_TAG_RSVDLONGB 0xFB
79 #define ISAPNP_TAG_RSVDLONGC 0xFC
80 #define ISAPNP_TAG_RSVDLONGD 0xFD
81 #define ISAPNP_TAG_RSVDLONGE 0xFE
82 #define ISAPNP_TAG_RSVDLONGF 0xFF
83 #define ISAPNP_TAG_PSEUDO_NEWBOARD 0x100
84
85 typedef struct _ISAPNP_IDENTIFIER {
86 USHORT VendorId;
87 USHORT ProdId;
88 ULONG Serial;
89 UCHAR Checksum;
90 } ISAPNP_IDENTIFIER, *PISAPNP_IDENTIFIER;
91
92 typedef struct _ISAPNP_LOGDEVID {
93 USHORT VendorId;
94 USHORT ProdId;
95 USHORT Flags;
96 } ISAPNP_LOGDEVID, *PISAPNP_LOGDEVID;
97
98 typedef struct _ISAPNP_DEVICEID {
99 CHAR* Name;
100 USHORT VendorId;
101 USHORT ProdId;
102 } ISAPNP_DEVICEID, *PISAPNP_DEVICEID;
103
104 #ifdef __cplusplus
105 }
106 #endif