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