Initial revision
[opensuse:hwinfo.git] / src / pnpdump / pnp.h
1 extern int read_port;
2
3 #define ADDRESS_ADDR 0x0279
4 #define WRITEDATA_ADDR 0x0a79
5 /* MIN and MAX READ_ADDR must have the bottom two bits set */
6 #define MIN_READ_ADDR 0x0203
7 #define MAX_READ_ADDR 0x03ff
8 /* READ_ADDR_STEP must be a multiple of 4 */
9 #ifndef READ_ADDR_STEP
10 #define READ_ADDR_STEP 8
11 #endif
12
13 #ifdef __DJGPP__
14 #define ADDRESS(x) outportb(ADDRESS_ADDR, x)
15 #define WRITE_DATA(x) outportb(WRITEDATA_ADDR, x)
16 #define READ_DATA inportb(read_port)
17 #define READ_IOPORT(p) inportb(p)
18 #else
19 #ifdef DEBUG
20 static int x;
21 #define ADDRESS(x) (outb(x, ADDRESS_ADDR), printf("\nAddress: %04x", x))
22 #define WRITE_DATA(x) (outb(x, WRITEDATA_ADDR), printf(" WR(%02x)", x & 0xff))
23 #define READ_DATA (x = inb(read_port), printf(" RD(%02x)", x & 0xff), x)
24 #define READ_IOPORT(p) (x = inb(p), printf(" [%04x](%02x)", p, x & 0xff), x)
25 #else
26 #define ADDRESS(x) outb(x, ADDRESS_ADDR)
27 #define WRITE_DATA(x) outb(x, WRITEDATA_ADDR)
28 #define READ_DATA inb(read_port)
29 #define READ_IOPORT(p) inb(p)
30 #endif
31 #endif
32
33 #define INIT_LENGTH 32
34
35 #define INITDATA { 0x6a, 0xb5, 0xda, 0xed, 0xf6, 0xfb, 0x7d, 0xbe,\
36                    0xdf, 0x6f, 0x37, 0x1b, 0x0d, 0x86, 0xc3, 0x61,\
37                    0xb0, 0x58, 0x2c, 0x16, 0x8b, 0x45, 0xa2, 0xd1,\
38                    0xe8, 0x74, 0x3a, 0x9d, 0xce, 0xe7, 0x73, 0x39 }
39
40 /* Registers */
41 #define SetRdPort(x)            (ADDRESS(0x00),WRITE_DATA((x)>>2),read_port=((x)|3))
42 #define SERIALISOLATION         ADDRESS(0x01)
43 #define CONFIGCONTROL           ADDRESS(0x02)
44 #define Wake(x)                         (ADDRESS(0x03),WRITE_DATA(x))
45 #define RESOURCEDATA            (ADDRESS(0x04),READ_DATA)
46 #define STATUS                  (ADDRESS(0x05),READ_DATA)
47 #define CARDSELECTNUMBER        ADDRESS(0x06)
48 #define LOGICALDEVICENUMBER     ADDRESS(0x07)
49 #define ACTIVATE                        ADDRESS(0x30)
50 #define IORANGECHECK            ADDRESS(0x31)
51
52 /* Bits */
53 #define CONFIG_RESET            0x01
54 #define CONFIG_WAIT_FOR_KEY 0x02
55 #define CONFIG_RESET_CSN        0x04
56 #define CONFIG_RESET_DRV        0x07
57
58 /* Short  Tags */
59 #define PnPVerNo_TAG            0x01
60 #define LogDevId_TAG            0x02
61 #define CompatDevId_TAG         0x03
62 #define IRQ_TAG                 0x04
63 #define DMA_TAG                 0x05
64 #define StartDep_TAG            0x06
65 #define EndDep_TAG              0x07
66 #define IOport_TAG              0x08
67 #define FixedIO_TAG             0x09
68 #define RsvdShortA_TAG          0x0A
69 #define RsvdShortB_TAG          0x0B
70 #define RsvdShortC_TAG          0x0C
71 #define RsvdShortD_TAG          0x0D
72 #define VendorShort_TAG         0x0E
73 #define End_TAG                 0x0F
74 /* Long  Tags */
75 #define MemRange_TAG            0x81
76 #define ANSIstr_TAG             0x82
77 #define UNICODEstr_TAG          0x83
78 #define VendorLong_TAG          0x84
79 #define Mem32Range_TAG          0x85
80 #define FixedMem32Range_TAG     0x86
81 #define RsvdLong0_TAG           0xF0
82 #define RsvdLong1_TAG           0xF1
83 #define RsvdLong2_TAG           0xF2
84 #define RsvdLong3_TAG           0xF3
85 #define RsvdLong4_TAG           0xF4
86 #define RsvdLong5_TAG           0xF5
87 #define RsvdLong6_TAG           0xF6
88 #define RsvdLong7_TAG           0xF7
89 #define RsvdLong8_TAG           0xF8
90 #define RsvdLong9_TAG           0xF9
91 #define RsvdLongA_TAG           0xFA
92 #define RsvdLongB_TAG           0xFB
93 #define RsvdLongC_TAG           0xFC
94 #define RsvdLongD_TAG           0xFD
95 #define RsvdLongE_TAG           0xFE
96 #define RsvdLongF_TAG           0xFF
97 #define NewBoard_PSEUDOTAG      0x100