1 /* 2 * PROJECT: ReactOS ISA PnP Bus driver 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: Hardware definitions 5 * COPYRIGHT: Copyright 2010 Cameron Gutman <cameron.gutman@reactos.org> 6 * Copyright 2020 Hervé Poussineau <hpoussin@reactos.org> 7 * Copyright 2021 Dmitry Borisov <di.sean@protonmail.com> 8 */ 9 10 #pragma once 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 #if defined(SARCH_PC98) 17 #define ISAPNP_ADDRESS 0x259 18 #define ISAPNP_WRITE_DATA 0xA59 19 #else 20 #define ISAPNP_ADDRESS 0x279 21 #define ISAPNP_WRITE_DATA 0xA79 22 #endif 23 24 #define ISAPNP_READPORT 0x00 25 #define ISAPNP_SERIALISOLATION 0x01 26 #define ISAPNP_CONFIGCONTROL 0x02 27 #define ISAPNP_WAKE 0x03 28 #define ISAPNP_RESOURCEDATA 0x04 29 #define ISAPNP_STATUS 0x05 30 #define ISAPNP_CARDSELECTNUMBER 0x06 31 #define ISAPNP_LOGICALDEVICENUMBER 0x07 32 33 #define ISAPNP_ACTIVATE 0x30 34 #define ISAPNP_IORANGECHECK 0x31 35 36 #define ISAPNP_MEMBASE(n) (0x40 + ((n) * 8)) 37 #define ISAPNP_MEMCONTROL(n) (0x42 + ((n) * 8)) 38 #define MEMORY_UPPER_LIMIT 0x01 39 #define MEMORY_USE_8_BIT_DECODER 0x00 40 #define MEMORY_USE_16_BIT_DECODER 0x02 41 #define MEMORY_USE_32_BIT_DECODER 0x06 42 #define ISAPNP_MEMLIMIT(n) (0x43 + ((n) * 8)) 43 #define ISAPNP_IOBASE(n) (0x60 + ((n)*2)) 44 #define ISAPNP_IRQNO(n) (0x70 + ((n)*2)) 45 #define ISAPNP_IRQTYPE(n) (0x71 + ((n) * 2)) 46 #define IRQTYPE_LOW_LEVEL 0x01 47 #define IRQTYPE_HIGH_EDGE 0x02 48 #define ISAPNP_DMACHANNEL(n) (0x74 + (n)) 49 #define DMACHANNEL_NONE 4 50 #define ISAPNP_MEMBASE32(n) ((n) == 0 ? 0x76 : (0x70 + (n) * 16)) 51 #define ISAPNP_MEMCONTROL32(n) ((n) == 0 ? 0x7A : (0x74 + (n) * 16)) 52 #define ISAPNP_MEMLIMIT32(n) ((n) == 0 ? 0x7B : (0x75 + (n) * 16)) 53 54 #define ISAPNP_CONFIG_RESET (1 << 0) 55 #define ISAPNP_CONFIG_WAIT_FOR_KEY (1 << 1) 56 #define ISAPNP_CONFIG_RESET_CSN (1 << 2) 57 58 #define ISAPNP_LFSR_SEED 0x6A 59 60 #define ISAPNP_IS_SMALL_TAG(t) (!((t) & 0x80)) 61 #define ISAPNP_SMALL_TAG_NAME(t) (((t) >> 3) & 0xF) 62 #define ISAPNP_SMALL_TAG_LEN(t) (((t) & 0x7)) 63 #define ISAPNP_TAG_PNPVERNO 0x01 64 #define ISAPNP_TAG_LOGDEVID 0x02 65 #define ISAPNP_TAG_COMPATDEVID 0x03 66 #define ISAPNP_TAG_IRQ 0x04 67 #define ISAPNP_TAG_DMA 0x05 68 #define ISAPNP_TAG_STARTDEP 0x06 69 #define ISAPNP_TAG_ENDDEP 0x07 70 #define ISAPNP_TAG_IOPORT 0x08 71 #define ISAPNP_TAG_FIXEDIO 0x09 72 #define ISAPNP_TAG_END 0x0F 73 74 #define ISAPNP_IS_LARGE_TAG(t) (((t) & 0x80)) 75 #define ISAPNP_LARGE_TAG_NAME(t) (t) 76 #define ISAPNP_TAG_MEMRANGE 0x81 77 #define MEMRANGE_16_BIT_MEMORY_MASK (0x10 | 0x08) 78 #define MEMRANGE_32_BIT_MEMORY_ONLY 0x18 79 #define ISAPNP_TAG_ANSISTR 0x82 80 #define ISAPNP_TAG_UNICODESTR 0x83 81 #define ISAPNP_TAG_MEM32RANGE 0x85 82 #define ISAPNP_TAG_FIXEDMEM32RANGE 0x86 83 84 #define RANGE_LENGTH_TO_LENGTH(RangeLength) ((~(RangeLength) + 1) & 0xFFFFFF) 85 #define LENGTH_TO_RANGE_LENGTH(Length) (~(Length) + 1) 86 87 #include <pshpack1.h> 88 89 typedef struct _ISAPNP_IDENTIFIER 90 { 91 USHORT VendorId; 92 USHORT ProdId; 93 ULONG Serial; 94 UCHAR Checksum; 95 } ISAPNP_IDENTIFIER, *PISAPNP_IDENTIFIER; 96 97 typedef struct _ISAPNP_LOGDEVID 98 { 99 USHORT VendorId; 100 USHORT ProdId; 101 USHORT Flags; 102 } ISAPNP_LOGDEVID, *PISAPNP_LOGDEVID; 103 104 typedef struct _ISAPNP_COMPATID 105 { 106 USHORT VendorId; 107 USHORT ProdId; 108 } ISAPNP_COMPATID, *PISAPNP_COMPATID; 109 110 typedef struct _ISAPNP_IO_DESCRIPTION 111 { 112 UCHAR Information; 113 USHORT Minimum; 114 USHORT Maximum; 115 UCHAR Alignment; 116 UCHAR Length; 117 } ISAPNP_IO_DESCRIPTION, *PISAPNP_IO_DESCRIPTION; 118 119 typedef struct _ISAPNP_FIXED_IO_DESCRIPTION 120 { 121 USHORT IoBase; 122 UCHAR Length; 123 } ISAPNP_FIXED_IO_DESCRIPTION, *PISAPNP_FIXED_IO_DESCRIPTION; 124 125 typedef struct _ISAPNP_IRQ_DESCRIPTION 126 { 127 USHORT Mask; 128 UCHAR Information; 129 } ISAPNP_IRQ_DESCRIPTION, *PISAPNP_IRQ_DESCRIPTION; 130 131 typedef struct _ISAPNP_DMA_DESCRIPTION 132 { 133 UCHAR Mask; 134 UCHAR Information; 135 } ISAPNP_DMA_DESCRIPTION, *PISAPNP_DMA_DESCRIPTION; 136 137 typedef struct _ISAPNP_MEMRANGE_DESCRIPTION 138 { 139 UCHAR Information; 140 USHORT Minimum; 141 USHORT Maximum; 142 USHORT Alignment; 143 USHORT Length; 144 } ISAPNP_MEMRANGE_DESCRIPTION, *PISAPNP_MEMRANGE_DESCRIPTION; 145 146 typedef struct _ISAPNP_MEMRANGE32_DESCRIPTION 147 { 148 UCHAR Information; 149 ULONG Minimum; 150 ULONG Maximum; 151 ULONG Alignment; 152 ULONG Length; 153 } ISAPNP_MEMRANGE32_DESCRIPTION, *PISAPNP_MEMRANGE32_DESCRIPTION; 154 155 typedef struct _ISAPNP_FIXEDMEMRANGE_DESCRIPTION 156 { 157 UCHAR Information; 158 ULONG MemoryBase; 159 ULONG Length; 160 } ISAPNP_FIXEDMEMRANGE_DESCRIPTION, *PISAPNP_FIXEDMEMRANGE_DESCRIPTION; 161 162 #include <poppack.h> 163 164 #ifdef __cplusplus 165 } 166 #endif 167