Home | History | Annotate | Line # | Download | only in isa
      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