summaryrefslogtreecommitdiff
path: root/sys/dev/isa/isapnpreg.h
blob: c633408469ed691fce18b70340b776d3c4d74eed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/*	$OpenBSD: isapnpreg.h,v 1.4 1997/12/25 09:22:41 downsj Exp $	*/
/*	$NetBSD: isapnpreg.h,v 1.5 1997/08/12 07:34:34 mikel Exp $	*/

/*
 * Copyright (c) 1996 Christos Zoulas.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by Christos Zoulas.
 * 4. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _DEV_ISA_ISAPNPREG_H_
#define _DEV_ISA_ISAPNPREG_H_

/*
 * ISA Plug and Play register definitions;
 * From Plug and Play ISA Specification V1.0a, May 5 1994
 */

#define ISAPNP_MAX_CARDS		8
#define ISAPNP_MAX_IDENT		32
#define ISAPNP_MAX_DEVCLASS		16
#define ISAPNP_SERIAL_SIZE		9
#define ISAPNP_MAX_TAGSIZE		256

#define ISAPNP_ADDR	0x279	/* Write only */
#define ISAPNP_WRDATA	0xa79	/* Write only */

/* The read port is in range 0x203 to 0x3ff */
#define ISAPNP_RDDATA_MIN	0x203	/* Read only */
#define ISAPNP_RDDATA_MAX	0x3ff

#define ISAPNP_LFSR_INIT	0x6A	/* Initial value of LFSR sequence */
#define ISAPNP_LFSR_LENGTH	32	/* Number of values in LFSR sequence */
				/* Formula to compute the next value */
#define ISAPNP_LFSR_NEXT(v) (((v) >> 1) | (((v) & 1) ^ (((v) & 2) >> 1)) << 7)

#define ISAPNP_SET_RD_PORT				0x00
#define ISAPNP_SERIAL_ISOLATION				0x01
#define ISAPNP_CONFIG_CONTROL				0x02
#define		ISAPNP_CC_RESET				0x01
#define		ISAPNP_CC_WAIT_FOR_KEY			0x02
#define		ISAPNP_CC_RESET_CSN			0x04
#define		ISAPNP_CC_RESET_DRV			0x07
#define ISAPNP_WAKE					0x03
#define ISAPNP_RESOURCE_DATA				0x04
#define ISAPNP_STATUS					0x05
#define ISAPNP_CARD_SELECT_NUM				0x06
#define ISAPNP_LOGICAL_DEV_NUM				0x07

#define ISAPNP_ACTIVATE					0x30
#define ISAPNP_IO_RANGE_CHECK				0x31

#define ISAPNP_NUM_MEM					4
#define ISAPNP_MEM_DESC { 0x40, 0x48, 0x50, 0x58 }
#define		ISAPNP_MEM_BASE_23_16			0x0
#define		ISAPNP_MEM_BASE_15_8			0x1
#define		ISAPNP_MEM_CONTROL			0x2
#define			ISAPNP_MEM_CONTROL_LIMIT	1
#define			ISAPNP_MEM_CONTROL_16		2
#define		ISAPNP_MEM_LRANGE_23_16			0x3
#define		ISAPNP_MEM_LRANGE_15_8			0x4

#define ISAPNP_NUM_IO					8
#define ISAPNP_IO_DESC { 0x60, 0x62, 0x64, 0x68, 0x6a, 0x6c, 0x6e }
#define		ISAPNP_IO_BASE_15_8			0x0
#define		ISAPNP_IO_BASE_7_0			0x1

#define ISAPNP_NUM_IRQ					16
#define ISAPNP_IRQ_DESC { 0x70, 0x72 }
#define		ISAPNP_IRQ_NUMBER			0x0
#define		ISAPNP_IRQ_CONTROL			0x1
#define			ISAPNP_IRQ_LEVEL		1
#define			ISAPNP_IRQ_HIGH			2

#define ISAPNP_NUM_DRQ					8
#define ISAPNP_DRQ_DESC { 0x74, 0x75 }

#define ISAPNP_NUM_MEM32				4
#define ISAPNP_MEM32_DESC { 0x76, 0x80, 0x90, 0xa0 }
#define		ISAPNP_MEM32_BASE_31_24			0x0
#define		ISAPNP_MEM32_BASE_23_16			0x1
#define		ISAPNP_MEM32_BASE_15_8			0x2
#define		ISAPNP_MEM32_BASE_7_0			0x3
#define		ISAPNP_MEM32_CONTROL			0x4
#define			ISAPNP_MEM32_CONTROL_LIMIT	1
#define			ISAPNP_MEM32_CONTROL_16		2
#define			ISAPNP_MEM32_CONTROL_32		6
#define		ISAPNP_MEM32_LRANGE_31_24		0x5
#define		ISAPNP_MEM32_LRANGE_23_16		0x6
#define		ISAPNP_MEM32_LRANGE_15_8		0x7
#define		ISAPNP_MEM32_LRANGE_7_0			0x8

/* Small Tags */
#define ISAPNP_TAG_VERSION_NUM				0x1
#define ISAPNP_TAG_LOGICAL_DEV_ID			0x2
#define ISAPNP_TAG_COMPAT_DEV_ID			0x3
#define ISAPNP_TAG_IRQ_FORMAT				0x4
#define		ISAPNP_IRQTYPE_EDGE_PLUS		1
#define		ISAPNP_IRQTYPE_EDGE_MINUS		2
#define		ISAPNP_IRQTYPE_LEVEL_PLUS		4
#define		ISAPNP_IRQTYPE_LEVEL_MINUS		8
#define ISAPNP_TAG_DMA_FORMAT				0x5
#define		ISAPNP_DMAWIDTH_8			0x00
#define		ISAPNP_DMAWIDTH_8_16			0x01
#define		ISAPNP_DMAWIDTH_16			0x02
#define		ISAPNP_DMAWIDTH_RESERVED		0x03
#define		ISAPNP_DMAWIDTH_MASK			0x03
#define		ISAPNP_DMAATTR_BUS_MASTER		0x04
#define		ISAPNP_DMAATTR_INCR_8			0x08
#define		ISAPNP_DMAATTR_INCR_16			0x10
#define		ISAPNP_DMAATTR_MASK			0x1c
#define		ISAPNP_DMASPEED_COMPAT			0x00
#define		ISAPNP_DMASPEED_A			0x20
#define		ISAPNP_DMASPEED_B			0x40
#define		ISAPNP_DMASPEED_F			0x60
#define		ISAPNP_DMASPEED_MASK			0x60
#define ISAPNP_TAG_DEP_START				0x6
#define		ISAPNP_DEP_PREFERRED			0x0
#define		ISAPNP_DEP_ACCEPTABLE			0x1
#define		ISAPNP_DEP_FUNCTIONAL			0x2
#define		ISAPNP_DEP_RESERVED			0x3
#define		ISAPNP_DEP_MASK				0x3
#define		ISAPNP_DEP_UNSET			0x80	/* Internal */
#define		ISAPNP_DEP_CONFLICTING			0x81	/* Internal */
#define ISAPNP_TAG_DEP_END				0x7
#define ISAPNP_TAG_IO_PORT_DESC				0x8
#define		ISAPNP_IOFLAGS_16			0x1
#define ISAPNP_TAG_FIXED_IO_PORT_DESC			0x9
#define ISAPNP_TAG_RESERVED1				0xa
#define ISAPNP_TAG_RESERVED2				0xb
#define ISAPNP_TAG_RESERVED3				0xc
#define ISAPNP_TAG_RESERVED4				0xd
#define ISAPNP_TAG_VENDOR_DEF				0xe
#define ISAPNP_TAG_END					0xf

/* Large Tags */
#define ISAPNP_LARGE_TAG				0x80
#define ISAPNP_TAG_MEM_RANGE_DESC			0x81
#define		ISAPNP_MEMATTR_WRITEABLE		0x01
#define		ISAPNP_MEMATTR_CACHEABLE		0x02
#define		ISAPNP_MEMATTR_HIGH_ADDR		0x04
#define		ISAPNP_MEMATTR_SHADOWABLE		0x20
#define		ISAPNP_MEMATTR_ROM			0x40
#define		ISAPNP_MEMATTR_MASK			0x67
#define		ISAPNP_MEMWIDTH_8			0x00
#define		ISAPNP_MEMWIDTH_16			0x08
#define		ISAPNP_MEMWIDTH_8_16			0x10
#define		ISAPNP_MEMWIDTH_32			0x18
#define		ISAPNP_MEMWIDTH_MASK			0x18
#define ISAPNP_TAG_ANSI_IDENT_STRING			0x82
#define ISAPNP_TAG_UNICODE_IDENT_STRING			0x83
#define ISAPNP_TAG_VENDOR_DEFINED			0x84
#define ISAPNP_TAG_MEM32_RANGE_DESC			0x85
#define ISAPNP_TAG_FIXED_MEM32_RANGE_DESC		0x86

#endif	/* _DEV_ISA_ISAPNPREG_H_ */