xref: /netbsd-src/sys/dev/isa/wbsioreg.h (revision 5e7dd0391c9d3858a919d064cd87cf466431a7bd)
1 /* $NetBSD: wbsioreg.h,v 1.11 2022/12/16 00:02:28 msaitoh Exp $ */
2 
3 /* $OpenBSD: wbsioreg.h,v 1.4 2015/01/02 23:02:54 chris Exp $ */
4 /*
5  * Copyright (c) 2008 Mark Kettenis <kettenis@openbsd.org>
6  *
7  * Permission to use, copy, modify, and distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /*
21  * Winbond LPC Super I/O driver registers
22  */
23 
24 /* ISA bus registers */
25 #define WBSIO_INDEX		0x00	/* Configuration Index Register */
26 #define WBSIO_DATA		0x01	/* Configuration Data Register */
27 
28 #define WBSIO_IOSIZE		0x02	/* ISA I/O space size */
29 
30 #define WBSIO_CONF_EN_MAGIC	0x87	/* enable configuration mode */
31 #define WBSIO_CONF_DS_MAGIC	0xaa	/* disable configuration mode */
32 
33 /* Configuration Space Registers */
34 #define WBSIO_LDN		0x07	/* Logical Device Number */
35 #define WBSIO_MFS0		0x1A	/* Multi Function Selection 0 */
36 #define WBSIO_MFS1		0x1B	/* Multi Function Selection 1 */
37 #define WBSIO_MFS2		0x1C	/* Multi Function Selection 2 */
38 #define WBSIO_MFS3		0x1D	/* Multi Function Selection 3 */
39 #define WBSIO_ID		0x20	/* Device ID */
40 #define WBSIO_REV		0x21	/* Device Revision */
41 #define WBSIO_GOPT0		0x24	/* Global Option 0 */
42 #define WBSIO_GOPT1		0x26	/* Global Option 1 */
43 #define WBSIO_GOPT2		0x27	/* Global Option 2 */
44 #define WBSIO_GOPT3		0x28	/* Global Option 3 */
45 #define WBSIO_MFS4		0x2A	/* Multi Function Selection 4 */
46 #define WBSIO_MFS5		0x2B	/* Multi Function Selection 5 */
47 #define WBSIO_MFS6		0x2C	/* Multi Function Selection 6 */
48 #define WBSIO_SFR		0x2F	/* Strapping Function Result */
49 
50 
51 #define WBSIO_ID_W83627HF	0x52	/* 8bits */
52 #define WBSIO_ID_W83697HF	0x60
53 #define WBSIO_ID_W83637HF	0x70
54 #define WBSIO_ID_W83627THF	0x82
55 #define WBSIO_ID_W83687THF	0x85
56 #define WBSIO_ID_W83627SF	0x595	/* 12bits */
57 #define WBSIO_ID_W83697UG	0x681
58 #define WBSIO_ID_W83627EHF_A	0x885
59 #define WBSIO_ID_W83627EHF	0x886
60 #define WBSIO_ID_W83627DHG	0xa02
61 #define WBSIO_ID_W83627UHG	0xa23
62 #define WBSIO_ID_W83667HG	0xa51
63 #define WBSIO_ID_W83627DHGP	0xb07
64 #define WBSIO_ID_W83667HGB	0xb35
65 #define WBSIO_ID_NCT6775F	0xb47
66 #define WBSIO_ID_NCT6776F	0xc33
67 #define WBSIO_ID_NCT5104D	0xc45	/* 610[246]D */
68 #define WBSIO_ID_NCT6779D	0xc56
69 #define WBSIO_ID_NCT6791D	0xc80
70 #define WBSIO_ID_NCT6792D	0xc91
71 #define WBSIO_ID_NCT6793D	0xd12
72 #define WBSIO_ID_NCT6795D	0xd35
73 #define WBSIO_ID_NCT6796D	0xd420	/* 13bits */
74 #define WBSIO_ID_NCT6797D	0xd450
75 #define WBSIO_ID_NCT6798D	0xd428
76 #define WBSIO_ID_NCT6799D	0xd800
77 
78 /* Make the above WBSIO_ID_* vaue from WBSIO_ID, WBSIO_REV and IDbits */
79 #define WBSIO_MAKEID(id, rev, bits)					\
80 	(((bits) == 13) ? (((uint16_t)(id) << 8) | ((rev) & 0xf8)) :	\
81 	    ((bits) == 12) ? (((uint16_t)(id) << 4) | ((rev) >> 4)) : (id))
82 
83 #define WBSIO_MAKEREV(rev, bits)					     \
84 	(((bits) == 13) ? ((rev) & 0x07) : ((bits) == 12) ? ((rev) & 0x0f) : \
85 	    (rev))
86 
87 /* Strapping Function Result */
88 #define WBSIO_SFR_24M48M	0x01
89 #define WBSIO_SFR_LPT		0x02
90 #define WBSIO_SFR_TEST		0x04
91 #define WBSIO_SFR_DSW		0x08
92 #define WBSIO_SFR_AMDPWR	0x20
93 #define WBSIO_SFR_UARTP80	0x40
94 
95 /* Logical Device Number (LDN) Assignments */
96 #define WBSIO_LDN_HM		0x0b
97 #define WBSIO_LDN_GPIO0		0x08	/* WDT, GPIO 0 */
98 #define WBSIO_LDN_GPIO1		0x09	/* GPIO 1 to GPIO 8 */
99 
100 /* Hardware Monitor Control Registers (LDN B) */
101 #define WBSIO_HM_ADDR_MSB	0x60	/* Address [15:8] */
102 #define WBSIO_HM_ADDR_LSB	0x61	/* Address [7:0] */
103 #define WBSIO_HM_CONF		0xE4	/* Configuration Register */
104 #define WBSIO_HM_CONF_RSTOUT4	0x02	/* RSTOUT4# bit */
105 #define WBSIO_HM_CONF_RSTOUT3	0x04	/* RSTOUT3# bit */
106 #define WBSIO_HM_CONF_PWROK	0x08	/* Power OK Bit */
107 
108 /* GPIO Registers */
109 #define WBSIO_GPIO_ADDR_MSB	0x60	/* Address [15:8] */
110 #define WBSIO_GPIO_ADDR_LSB	0x61	/* Address [7:0] */
111 #define WBSIO_GPIO_CONF		0x30	/* GPIO0, WDT1 config */
112 #define WBSIO_WDT_MODE		0xF5	/* WDT1 Control Mode */
113 #define WBSIO_WDT_CNTR		0xF6	/* WDT1 Counter */
114 #define WBSIO_WDT_STAT		0xF7	/* WDT1 Control & Status */
115 #define WBSIO_GPIO4_MFS		0xEE	/* GPIO4 Multi-Function Select */
116 
117 #define WBSIO_GPIO0_WDT1	__BIT(0)
118 #define WBSIO_GPIO0_ENABLE	__BIT(1)
119 
120 						/* Reserved */
121 #define WBSIO_GPIO_BASEADDR	__BIT(3)	/* Base address mode */
122 #define WBSIO_GPIO1_ENABLE	__BIT(1)
123 #define WBSIO_GPIO2_ENABLE	__BIT(2)
124 #define WBSIO_GPIO3_ENABLE	__BIT(3)
125 #define WBSIO_GPIO4_ENABLE	__BIT(4)
126 #define WBSIO_GPIO5_ENABLE	__BIT(5)
127 #define WBSIO_GPIO6_ENABLE	__BIT(6)
128 #define WBSIO_GPIO7_ENABLE	__BIT(7)
129 #define WBSIO_GPIO8_ENABLE	__BIT(0)
130 
131 #define WBSIO_GPIO_NPINS	64
132 #define WBSIO_GPIO_IOSIZE	0x06	/* GPIO register table size */
133 
134 #define WBSIO_GPIO_GSR		0x00	/* GPIO Select Register */
135 #define WBSIO_GPIO_IOR		0x01	/* I/O direction */
136 #define WBSIO_GPIO_DAT		0x02	/* Data */
137 #define WBSIO_GPIO_INV		0x03	/* Inversion */
138 #define WBSIO_GPIO_DST		0x04	/* Event Status */
139 					/* WDT1 Control Mode */
140 					/* WDT1 control */
141 #define WBSIO_WDT_MODE_LEVEL	__BIT(0)
142 					/* enable/disable KBRST */
143 #define WBSIO_WDT_MODE_KBCRST	__BIT(2)
144 #define WBSIO_WDT_MODE_MINUTES	__BIT(3)
145 #define WBSIO_WDT_MODE_FASTER	__BIT(4)
146 
147 #define WBSIO_WDT_CNTR_STOP	0
148 #define WBSIO_WDT_CNTR_MAX	255
149 
150 #define WBSIO_WDT_STAT_TIMEOUT	__BIT(4)
151 #define WBSIO_WDT_STAT_EVENT	__BIT(5)
152 
153 
154 /* NCT6779D */
155 #define WBSIO_NCT6779D_MFS2_GP00	__BIT(0)
156 #define WBSIO_NCT6779D_MFS2_GP01	__BIT(1)
157 #define WBSIO_NCT6779D_MFS2_GP02	__BIT(2)
158 #define WBSIO_NCT6779D_MFS2_GP03_MASK	(__BIT(3)|__BIT(4))
159 #define WBSIO_NCT6779D_MFS2_GP04	__BIT(5)
160 #define WBSIO_NCT6779D_MFS2_GP05	__BIT(6)
161 #define WBSIO_NCT6779D_MFS2_GP06	__BIT(7)
162 #define WBSIO_NCT6779D_MFS3_GP07_MASK	__BIT(0)
163 #define WBSIO_NCT6779D_MFS4_GP10_GP17	__BIT(6)
164 #define WBSIO_NCT6779D_MFS4_GP20_GP21	__BIT(0)
165 #define WBSIO_NCT6779D_MFS4_GP22_GP23	__BIT(1)
166 #define WBSIO_NCT6779D_MFS1_GP24_MASK	__BIT(4)
167 #define WBSIO_NCT6779D_GOPT2_GP24_MASK	__BIT(3)
168 #define WBSIO_NCT6779D_MFS4_GP25_MASK	__BIT(3)
169 #define WBSIO_NCT6779D_GOPT2_GP25_MASK	__BIT(3)
170 #define WBSIO_NCT6779D_MFS6_GP26	__BIT(0)
171 #define WBSIO_NCT6779D_MFS6_GP27_MASK	(__BIT(3)|__BIT(4))
172 #define WBSIO_NCT6779D_MFS0_GP30	__BIT(6)
173 #define WBSIO_NCT6779D_MFS0_GP30_MASK	__BIT(7)
174 #define WBSIO_NCT6779D_MFS0_GP31	__BIT(5)
175 #define WBSIO_NCT6779D_MFS1_GP31_MASK	__BIT(0)
176 #define WBSIO_NCT6779D_MFS0_GP32	__BIT(4)
177 #define WBSIO_NCT6779D_MFS1_GP32_MASK	__BIT(0)
178 #define WBSIO_NCT6779D_MFS6_GP33	__BIT(7)
179 #define WBSIO_NCT6779D_MFS6_GP33_MASK	__BIT(6)
180 #define WBSIO_NCT6779D_MFS1_GP40	__BIT(3)
181 #define WBSIO_NCT6779D_MFS0_GP41	__BIT(3)
182 #define WBSIO_NCT6779D_MFS0_GP41_MASK	__BIT(2)
183 #define WBSIO_NCT6779D_MFS1_GP42	(__BIT(1)|__BIT(2))
184 #define WBSIO_NCT6779D_GOPT2_GP43	__BIT(4)
185 #define WBSIO_NCT6779D_MFS1_GP44_GP45_MASK	__BIT(6)
186 #define WBSIO_NCT6779D_GOPT2_GP46_MASK	__BIT(5)
187 #define WBSIO_NCT6779D_MFS1_GP47	__BIT(7)
188 #define WBSIO_NCT6779D_HM_GP50_MASK	__BIT(2)
189 #define WBSIO_NCT6779D_HM_GP52_MASK	__BIT(1)
190 #define WBSIO_NCT6779D_HM_GP55_MASK	__BIT(3)
191 #define WBSIO_NCT6779D_MFS5_GP74	__BIT(5)
192 #define WBSIO_NCT6779D_MFS5_GP75	__BIT(6)
193 #define WBSIO_NCT6779D_MFS5_GP76	__BIT(7)
194 #define WBSIO_NCT6779D_GPIO4_WDTO	__BIT(4)
195