Merge from vendor branch LIBARCHIVE:
[dragonfly.git] / sys / bus / isa / isareg.h
1 /*-
2  * Copyright (c) 1990 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * William Jolitz.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. All advertising materials mentioning features or use of this software
17  *    must display the following acknowledgement:
18  *      This product includes software developed by the University of
19  *      California, Berkeley and its contributors.
20  * 4. Neither the name of the University nor the names of its contributors
21  *    may be used to endorse or promote products derived from this software
22  *    without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34  * SUCH DAMAGE.
35  *
36  *      from: @(#)isa.h 5.7 (Berkeley) 5/9/91
37  * $FreeBSD: src/sys/isa/isareg.h,v 1.4.2.1 2000/07/18 20:39:05 dfr Exp $
38  * $DragonFly: src/sys/bus/isa/isareg.h,v 1.3 2003/06/29 03:28:44 dillon Exp $
39  */
40
41 #ifdef PC98
42 #error isa.h is included from PC-9801 source
43 #endif
44
45 #ifndef _ISA_ISA_H_
46 #define _ISA_ISA_H_
47
48 /* BEWARE:  Included in both assembler and C code */
49
50 /*
51  * ISA Bus conventions
52  */
53
54 /*
55  * Input / Output Port Assignments
56  */
57 #ifndef IO_ISABEGIN
58 #define IO_ISABEGIN     0x000           /* 0x000 - Beginning of I/O Registers */
59
60 #define ICU_IMR_OFFSET  1               /* IO_ICU{1,2} + 1 */
61
62                 /* CPU Board */
63 #define IO_DMA1         0x000           /* 8237A DMA Controller #1 */
64 #define IO_ICU1         0x020           /* 8259A Interrupt Controller #1 */
65 #define IO_PMP1         0x026           /* 82347 Power Management Peripheral */
66 #define IO_TIMER1       0x040           /* 8253 Timer #1 */
67 #define IO_TIMER2       0x048           /* 8253 Timer #2 */
68 #define IO_KBD          0x060           /* 8042 Keyboard */
69 #define IO_PPI          0x061           /* Programmable Peripheral Interface */
70 #define IO_RTC          0x070           /* RTC */
71 #define IO_NMI          IO_RTC          /* NMI Control */
72 #define IO_DMAPG        0x080           /* DMA Page Registers */
73 #define IO_ICU2         0x0A0           /* 8259A Interrupt Controller #2 */
74 #define IO_DMA2         0x0C0           /* 8237A DMA Controller #2 */
75 #define IO_NPX          0x0F0           /* Numeric Coprocessor */
76
77                 /* Cards */
78                                         /* 0x100 - 0x16F Open */
79
80 #define IO_WD2          0x170           /* Secondary Fixed Disk Controller */
81
82 #define IO_PMP2         0x178           /* 82347 Power Management Peripheral */
83
84                                         /* 0x17A - 0x1EF Open */
85
86 #define IO_WD1          0x1F0           /* Primary Fixed Disk Controller */
87 #define IO_GAME         0x201           /* Game Controller */
88
89                                         /* 0x202 - 0x22A Open */
90
91 #define IO_ASC2         0x22B           /* AmiScan addr.grp. 2 */
92
93                                         /* 0x230 - 0x26A Open */
94
95 #define IO_ASC3         0x26B           /* AmiScan addr.grp. 3 */
96 #define IO_GSC1         0x270 /* -- 0x27B! GeniScan GS-4500 addr.grp. 1 */
97 #define IO_LPT2         0x278           /* Parallel Port #2 */
98
99                                         /* 0x280 - 0x2AA Open */
100
101 #define IO_ASC4         0x2AB           /* AmiScan addr.grp. 4 */
102
103                                         /* 0x2B0 - 0x2DF Open */
104
105 #define IO_GSC2         0x2E0           /* GeniScan GS-4500 addr.grp. 2 */
106 #define IO_COM4         0x2E8           /* COM4 i/o address */
107 #define IO_ASC5         0x2EB           /* AmiScan addr.grp. 5 */
108
109                                         /* 0x2F0 - 0x2F7 Open */
110
111 #define IO_COM2         0x2F8           /* COM2 i/o address */
112
113                                         /* 0x300 - 0x32A Open */
114
115 #define IO_ASC6         0x32B           /* AmiScan addr.grp. 6 */
116 #define IO_AHA0         0x330           /* adaptec 1542 default addr. */
117 #define IO_BT0          0x330           /* bustek 742a default addr. */
118 #define IO_UHA0         0x330           /* ultrastore 14f default addr. */
119 #define IO_AHA1         0x334           /* adaptec 1542 default addr. */
120 #define IO_BT1          0x334           /* bustek 742a default addr. */
121
122                                         /* 0x340 - 0x36A Open */
123
124 #define IO_ASC7         0x36B           /* AmiScan addr.grp. 7 */
125 #define IO_GSC3         0x370           /* GeniScan GS-4500 addr.grp. 3 */
126 #define IO_FD2          0x370           /* secondary base i/o address */
127 #define IO_LPT1         0x378           /* Parallel Port #1 */
128
129                                         /* 0x380 - 0x3AA Open */
130
131 #define IO_ASC8         0x3AB           /* AmiScan addr.grp. 8 */
132 #define IO_MDA          0x3B0           /* Monochome Adapter */
133 #define IO_LPT3         0x3BC           /* Monochome Adapter Printer Port */
134 #define IO_VGA          0x3C0           /* E/VGA Ports */
135 #define IO_CGA          0x3D0           /* CGA Ports */
136 #define IO_GSC4         0x3E0           /* GeniScan GS-4500 addr.grp. 4 */
137 #define IO_COM3         0x3E8           /* COM3 i/o address */
138 #define IO_ASC1         0x3EB           /* AmiScan addr.grp. 1 */
139 #define IO_FD1          0x3F0           /* primary base i/o address */
140 #define IO_COM1         0x3F8           /* COM1 i/o address */
141
142 #define IO_ISAEND       0x3FF           /* End (actually Max) of I/O Regs */
143 #endif /* !IO_ISABEGIN */
144
145 /*
146  * Input / Output Port Sizes - these are from several sources, and tend
147  * to be the larger of what was found.
148  */
149 #ifndef IO_ISASIZES
150 #define IO_ISASIZES
151
152 #define IO_ASCSIZE      5               /* AmiScan GI1904-based hand scanner */
153 #define IO_CGASIZE      12              /* CGA controllers */
154 #define IO_COMSIZE      8               /* 8250, 16x50 com controllers */
155 #define IO_DMASIZE      16              /* 8237 DMA controllers */
156 #define IO_DPGSIZE      32              /* 74LS612 DMA page registers */
157 #define IO_EISASIZE     256             /* EISA controllers */
158 #define IO_FDCSIZE      8               /* Nec765 floppy controllers */
159 #define IO_GAMSIZE      16              /* AT compatible game controllers */
160 #define IO_GSCSIZE      8               /* GeniScan GS-4500G hand scanner */
161 #define IO_ICUSIZE      16              /* 8259A interrupt controllers */
162 #define IO_KBDSIZE      16              /* 8042 Keyboard controllers */
163
164 /* The following line was changed to support more architectures (simpler
165    chipsets (like those for Alpha) only use 4, but more complex controllers
166    (usually modern i386's) can use an additional 4; the probe to see if
167    the additional 4 can be used by the specific chipset is now done in the ppc
168    code by ppc_probe()... */
169
170 #define IO_LPTSIZE_EXTENDED     8       /* "Extended" LPT controllers */
171 #define IO_LPTSIZE_NORMAL       4       /* "Normal" LPT controllers */
172
173 #define IO_MDASIZE      12              /* Monochrome display controllers */
174 #define IO_NPXSIZE      16              /* 80387/80487 NPX registers */
175 #define IO_PMPSIZE      2               /* 82347 power management peripheral */
176 #define IO_PSMSIZE      5               /* 8042 Keyboard controllers */
177 #define IO_RTCSIZE      16              /* CMOS real time clock, NMI control */
178 #define IO_TMRSIZE      16              /* 8253 programmable timers */
179 #define IO_VGASIZE      16              /* VGA controllers */
180 #define IO_WDCSIZE      8               /* WD compatible disk controllers */
181
182 #endif /* !IO_ISASIZES */
183
184 /*
185  * Input / Output Memory Physical Addresses
186  */
187 #ifndef IOM_BEGIN
188 #define IOM_BEGIN       0x0A0000        /* Start of I/O Memory "hole" */
189 #define IOM_END         0x100000        /* End of I/O Memory "hole" */
190 #define IOM_SIZE        (IOM_END - IOM_BEGIN)
191 #endif /* !IOM_BEGIN */
192
193 /*
194  * RAM Physical Address Space (ignoring the above mentioned "hole")
195  */
196 #ifndef RAM_BEGIN
197 #define RAM_BEGIN       0x0000000       /* Start of RAM Memory */
198 #define RAM_END         0x1000000       /* End of RAM Memory */
199 #define RAM_SIZE        (RAM_END - RAM_BEGIN)
200 #endif /* !RAM_BEGIN */
201
202 /*
203  * Oddball Physical Memory Addresses
204  */
205 #ifndef COMPAQ_RAMRELOC
206 #define COMPAQ_RAMRELOC 0x80C00000      /* Compaq RAM relocation/diag */
207 #define COMPAQ_RAMSETUP 0x80C00002      /* Compaq RAM setup */
208 #define WEITEK_FPU      0xC0000000      /* WTL 2167 */
209 #define CYRIX_EMC       0xC0000000      /* Cyrix EMC */
210 #endif /* !COMPAQ_RAMRELOC */
211
212 #endif /* !_ISA_ISA_H_ */