[BACK]Return to viasioreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / isa

Annotation of sys/dev/isa/viasioreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: viasioreg.h,v 1.3 2006/02/24 11:16:17 grange Exp $    */
                      2: /*
                      3:  * Copyright (c) 2005 Alexander Yurchenko <grange@openbsd.org>
                      4:  *
                      5:  * Permission to use, copy, modify, and distribute this software for any
                      6:  * purpose with or without fee is hereby granted, provided that the above
                      7:  * copyright notice and this permission notice appear in all copies.
                      8:  *
                      9:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     10:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     11:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     12:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     13:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     14:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     15:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     16:  */
                     17:
                     18: #ifndef _DEV_ISA_VIASIOREG_H_
                     19: #define _DEV_ISA_VIASIOREG_H_
                     20:
                     21: /*
                     22:  * VIA VT1211 LPC Super I/O register definitions.
                     23:  */
                     24:
                     25: /*
                     26:  * Obtained from the following datasheet:
                     27:  *
                     28:  * VT1211
                     29:  * Low Pin Count Super I/O And Hardware Monitor
                     30:  * Revision 1.0
                     31:  * January 8, 2002
                     32:  * VIA TECHNOLOGIES, INC.
                     33:  */
                     34:
                     35: /* ISA bus registers */
                     36: #define VT1211_INDEX           0x00    /* Configuration Index Register */
                     37: #define VT1211_DATA            0x01    /* Configuration Data Register */
                     38:
                     39: #define VT1211_IOSIZE          0x02    /* ISA I/O space size */
                     40:
                     41: #define VT1211_CONF_EN_MAGIC   0x87    /* enable configuration mode */
                     42: #define VT1211_CONF_DS_MAGIC   0xaa    /* disable configuration mode */
                     43:
                     44: /* Configuration Space Registers */
                     45: #define VT1211_LDN             0x07    /* Logical Device Number */
                     46: #define VT1211_ID              0x20    /* Device ID */
                     47: #define VT1211_REV             0x21    /* Device Revision */
                     48: #define VT1211_PDC             0x22    /* Power Down Control */
                     49: #define VT1211_LPCWSS          0x23    /* LPC Wait State Select */
                     50: #define VT1211_GPIO1PS         0x24    /* GPIO Port 1 Pin Select */
                     51: #define VT1211_GPIO2PS         0x25    /* GPIO Port 2 Pin Select */
                     52: #define VT1211_GPIO7PS         0x26    /* GPIO Port 7 Pin Select */
                     53: #define VT1211_UART2PS         0x27    /* UART2 Multi Function Pin Select */
                     54: #define VT1211_MIDIPS          0x28    /* MIDI Multi Function Pin Select */
                     55: #define VT1211_HWMPS           0x29    /* HWM Multi Function Pin Select */
                     56: #define VT1211_TMA             0x2e    /* Test Mode A */
                     57: #define VT1211_TMB             0x2f    /* Test Mode B */
                     58:
                     59: #define VT1211_ID_VT1211       0x3c    /* VT1211 Device ID */
                     60:
                     61: /* Logical Device Number (LDN) Assignments */
                     62: #define VT1211_LDN_FDC         0x00    /* Floppy Disk Controller */
                     63: #define VT1211_LDN_PP          0x01    /* Parallel Port */
                     64: #define VT1211_LDN_UART1       0x02    /* Serial Port 1 */
                     65: #define VT1211_LDN_UART2       0x03    /* Serial Port 2 */
                     66: #define VT1211_LDN_MIDI                0x06    /* MIDI */
                     67: #define VT1211_LDN_GMP         0x07    /* Game Port */
                     68: #define VT1211_LDN_GPIO                0x08    /* GPIO */
                     69: #define VT1211_LDN_WDG         0x09    /* Watch Dog */
                     70: #define VT1211_LDN_WUC         0x0a    /* Wake-up Control */
                     71: #define VT1211_LDN_HM          0x0b    /* Hardware Monitor */
                     72: #define VT1211_LDN_VFIR                0x0c    /* Very Fast IR */
                     73: #define VT1211_LDN_ROM         0x0d    /* Flash ROM */
                     74:
                     75: /* Watchdog Timer Control Registers (LDN 9) */
                     76: #define VT1211_WDG_ACT         0x30    /* Activate */
                     77: #define VT1211_WDG_ACT_EN              (1 << 0)        /* enabled */
                     78: #define VT1211_WDG_ADDR_MSB    0x60    /* Address [15:8] */
                     79: #define VT1211_WDG_ADDR_LSB    0x61    /* Address [7:0] */
                     80: #define VT1211_WDG_IRQSEL      0x70    /* IRQ Select */
                     81: #define VT1211_WDG_CONF                0xf0    /* Configuration */
                     82:
                     83: /* Hardware Monitor Control Registers (LDN B) */
                     84: #define VT1211_HM_ACT          0x30    /* Activate */
                     85: #define VT1211_HM_ACT_EN               (1 << 0)        /* enabled */
                     86: #define VT1211_HM_ADDR_MSB     0x60    /* Address [15:8] */
                     87: #define VT1211_HM_ADDR_LSB     0x61    /* Address [7:0] */
                     88: #define VT1211_HM_IRQSEL       0x70    /* IRQ Select */
                     89:
                     90: /* Watchdog Timer I/O Space Registers */
                     91: #define VT1211_WDG_STAT                0x00    /* Status */
                     92: #define VT1211_WDG_STAT_ACT            (1 << 0)        /* timer is active */
                     93: #define VT1211_WDG_MASK                0x01    /* Mask */
                     94: #define VT1211_WDG_MASK_COM1           (1 << 1)        /* COM1 trigger */
                     95: #define VT1211_WDG_MASK_COM2           (1 << 2)        /* COM2 trigger */
                     96: #define VT1211_WDG_TIMEOUT     0x02    /* Timeout */
                     97:
                     98: #define VT1211_WDG_IOSIZE      0x04    /* Watchdog timer I/O space size */
                     99:
                    100: /* Hardware Monitor I/O Space Registers */
                    101: #define VT1211_HM_SELD0                0x10    /* SELD[7:0] */
                    102: #define VT1211_HM_SELD1                0x11    /* SELD[15:8] */
                    103: #define VT1211_HM_SELD2                0x12    /* SELD[19:16] */
                    104: #define VT1211_HM_ADATA_MSB    0x13    /* Analog Data D[15:8] */
                    105: #define VT1211_HM_ADATA_LSB    0x14    /* Analog Data D[7:0] */
                    106: #define VT1211_HM_DDATA                0x15    /* Digital Data D[7:0] */
                    107: #define VT1211_HM_CHCNT                0x16    /* Channel Counter */
                    108: #define VT1211_HM_DVCI         0x17    /* Data Valid & Channel Indications */
                    109: #define VT1211_HM_SMBUSCTL     0x18    /* SMBus Control */
                    110: #define VT1211_HM_AFECTL       0x19    /* AFE Control */
                    111: #define VT1211_HM_AFETCTL      0x1a    /* AFE Test Control */
                    112: #define VT1211_HM_CHSET                0x1b    /* Channel Setting */
                    113: #define VT1211_HM_HTL3         0x1d    /* Hot Temp Limit 3 */
                    114: #define VT1211_HM_HTHL3                0x1e    /* Hot Temp Hysteresis Limit 3 */
                    115: #define VT1211_HM_TEMP1                0x1f    /* Temperature Reading 1 */
                    116: #define VT1211_HM_TEMP3                0x20    /* Temperature Reading 3 */
                    117: #define VT1211_HM_UCH1         0x21    /* UCH1 */
                    118: #define VT1211_HM_UCH2         0x22    /* UCH2 */
                    119: #define VT1211_HM_UCH3         0x23    /* UCH3 */
                    120: #define VT1211_HM_UCH4         0x24    /* UCH4 */
                    121: #define VT1211_HM_UCH5         0x25    /* UCH5 */
                    122: #define VT1211_HM_33V          0x26    /* +3.3V (Internal Vcc ) */
                    123: #define VT1211_HM_FAN1         0x29    /* FAN1 Reading */
                    124: #define VT1211_HM_FAN2         0x2a    /* FAN2 Reading */
                    125: #define VT1211_HM_UCH2HL       0x2b    /* UCH2 High Limit */
                    126: #define VT1211_HM_UCH2LL       0x2c    /* UCH2 Low Limit */
                    127: #define VT1211_HM_UCH3HL       0x2d    /* UCH3 High Limit */
                    128: #define VT1211_HM_UCH3LL       0x2e    /* UCH3 Low Limit */
                    129: #define VT1211_HM_UCH4HL       0x2f    /* UCH4 High Limit */
                    130: #define VT1211_HM_UCH4LL       0x30    /* UCH4 Low Limit */
                    131: #define VT1211_HM_UCH5HL       0x31    /* UCH5 High Limit */
                    132: #define VT1211_HM_UCH5LL       0x32    /* UCH5 Low Limit */
                    133: #define VT1211_HM_33VHL                0x33    /* Internal +3.3V High Limit */
                    134: #define VT1211_HM_33VLL                0x34    /* Internal +3.3V Low Limit */
                    135: #define VT1211_HM_HTL1         0x39    /* Hot Temp Limit 1 */
                    136: #define VT1211_HM_HTHL1                0x3a    /* Hot Temp Hysteresis Limit 1 */
                    137: #define VT1211_HM_FAN1CL       0x3b    /* FAN1 Fan Count Limit */
                    138: #define VT1211_HM_FAN2CL       0x3c    /* FAN2 Fan Count Limit */
                    139: #define VT1211_HM_UCH1HL       0x3d    /* UCH1 High Limit */
                    140: #define VT1211_HM_UCH1LL       0x3e    /* UCH1 Low Limit */
                    141: #define VT1211_HM_STEPID       0x3f    /* Stepping ID Number */
                    142: #define VT1211_HM_CONF         0x40    /* Configuration */
                    143: #define VT1211_HM_CONF_START           (1 << 0)
                    144: #define VT1211_HM_INTST1       0x41    /* Interrupt INT Status 1 */
                    145: #define VT1211_HM_INTST2       0x42    /* Interrupt INT Status 2 */
                    146: #define VT1211_HM_INTMASK1     0x43    /* INT Mask 1 */
                    147: #define VT1211_HM_INTMASK2     0x44    /* INT Mask 2 */
                    148: #define VT1211_HM_VID          0x45    /* VID */
                    149: #define VT1211_HM_OVOFCTL      0x46    /* Over Voltage & Over Fan Control */
                    150: #define VT1211_HM_FSCTL                0x47    /* Fan Speed Control */
                    151: #define VT1211_HM_FSCTL_DIV1(v)                (((v) >> 4) & 0x03)
                    152: #define VT1211_HM_FSCTL_DIV2(v)                (((v) >> 6) & 0x03)
                    153: #define VT1211_HM_SBA          0x48    /* Serial Bus Address */
                    154: #define VT1211_HM_VID4         0x49    /* VID 4 */
                    155: #define VT1211_HM_VID4_UCH1(v)         (((v) >> 4) & 0x03)
                    156: #define VT1211_HM_UCHCONF      0x4a    /* Universal Channel Configuration */
                    157: #define VT1211_HM_UCHCONF_ISTEMP(v, n) (((v) & (1 << ((n) + 1))) != 0)
                    158: #define VT1211_HM_TCONF1       0x4b    /* Temperature Configuration 1 */
                    159: #define VT1211_HM_TCONF1_TEMP1(v)      (((v) >> 6) & 0x03)
                    160: #define VT1211_HM_TCONF2       0x4c    /* Temperature Configuration 2 */
                    161: #define VT1211_HM_ETR          0x4d    /* Extended Temperature Resolution */
                    162: #define VT1211_HM_ETR_UCH(v, n)                (((v) >> (((n) - 2) * 2)) & 0x03)
                    163: #define VT1211_HM_OTCTL                0x4e    /* Over Temperature Control */
                    164: #define VT1211_HM_PWMCS                0x50    /* PWM Clock Select */
                    165: #define VT1211_HM_PWMCTL       0x51    /* PWM Control */
                    166: #define VT1211_HM_PWMFST       0x52    /* PWM Full Speed Temperature Value */
                    167: #define VT1211_HM_PWMHST       0x53    /* PWM High Speed Temperature Value */
                    168: #define VT1211_HM_PWMLST       0x54    /* PWM Low Speed Temperature Value */
                    169: #define VT1211_HM_PWMFOT       0x55    /* PWM Fan Off Temperature Value */
                    170: #define VT1211_HM_PWMO1HSDC    0x56    /* PWM Output 1 Hi Speed Duty Cycle */
                    171: #define VT1211_HM_PWMO1LSDC    0x57    /* PWM Output 1 Lo Speed Duty Cycle */
                    172: #define VT1211_HM_PWMO2HSDC    0x58    /* PWM Output 2 Hi Speed Duty Cycle */
                    173: #define VT1211_HM_PWMO2LSDC    0x59    /* PWM Output 2 Lo Speed Duty Cycle */
                    174: #define VT1211_HM_PWMO3HSDC    0x5a    /* PWM Output 3 Hi Speed Duty Cycle */
                    175: #define VT1211_HM_PWMO3LSDC    0x5b    /* PWM Output 3 Lo Speed Duty Cycle */
                    176: #define VT1211_HM_BEEPEN       0x5c    /* BEEP Event Enable */
                    177: #define VT1211_HM_FEBFD                0x5d    /* Fan Event BEEP Frequency Divisor */
                    178: #define VT1211_HM_VEBFD                0x5e    /* Volt Event BEEP Frequency Divisor */
                    179: #define VT1211_HM_TEBFD                0x5f    /* Temp Event BEEP Frequency Divisor */
                    180: #define VT1211_HM_PWM1CDC      0x60    /* PWM1 Current Duty Cycle */
                    181: #define VT1211_HM_PWM2CDC      0x61    /* PWM2 Current Duty Cycle */
                    182:
                    183: #define VT1211_HM_IOSIZE       0x80    /* Hardware monitor I/O space size */
                    184:
                    185: /* PWM clock frequencies */
                    186: static const int vt1211_hm_clock[] = {
                    187:        90000, 45000, 22500, 11250, 5630, 2800, 1400, 700
                    188: };
                    189:
                    190: /* Voltage inputs resistor factors */
                    191: static const int vt1211_hm_vrfact[] = {
                    192:        5952, 8333, 5952, 4167, 1754, 6296
                    193: };
                    194:
                    195: /*
                    196:  * Temperature lookup table for the following conversion formula:
                    197:  *
                    198:  * temp (degC) = (1.0 / (((1.0 / 3435.0) * (log((253.0 - raw / 4.0) /
                    199:  *               (raw / 4.0 - 43.0)))) + (1.0 / 298.15))) - 273.15;
                    200:  *
                    201:  */
                    202: static const struct {
                    203:        int raw;                /* raw value */
                    204:        int64_t temp;           /* temperature in uK */
                    205: } vt1211_hm_temptbl[] = {
                    206:        { 176, 203690000LL },
                    207:        { 184, 218020000LL },
                    208:        { 192, 225470000LL },
                    209:        { 200, 230710000LL },
                    210:        { 208, 234830000LL },
                    211:        { 216, 238260000LL },
                    212:        { 224, 241230000LL },
                    213:        { 232, 243850000LL },
                    214:        { 240, 246220000LL },
                    215:        { 248, 248390000LL },
                    216:        { 256, 250390000LL },
                    217:        { 264, 252260000LL },
                    218:        { 272, 254020000LL },
                    219:        { 280, 255680000LL },
                    220:        { 288, 257260000LL },
                    221:        { 296, 258760000LL },
                    222:        { 304, 260210000LL },
                    223:        { 312, 261600000LL },
                    224:        { 320, 262940000LL },
                    225:        { 328, 264240000LL },
                    226:        { 336, 265500000LL },
                    227:        { 344, 266730000LL },
                    228:        { 352, 267930000LL },
                    229:        { 360, 269100000LL },
                    230:        { 368, 270240000LL },
                    231:        { 376, 271360000LL },
                    232:        { 384, 272460000LL },
                    233:        { 392, 273540000LL },
                    234:        { 400, 274610000LL },
                    235:        { 408, 275660000LL },
                    236:        { 416, 276700000LL },
                    237:        { 424, 277720000LL },
                    238:        { 432, 278730000LL },
                    239:        { 440, 279740000LL },
                    240:        { 448, 280730000LL },
                    241:        { 456, 281720000LL },
                    242:        { 464, 282700000LL },
                    243:        { 472, 283670000LL },
                    244:        { 480, 284640000LL },
                    245:        { 488, 285610000LL },
                    246:        { 496, 286570000LL },
                    247:        { 504, 287530000LL },
                    248:        { 512, 288490000LL },
                    249:        { 520, 289450000LL },
                    250:        { 528, 290400000LL },
                    251:        { 536, 291360000LL },
                    252:        { 544, 292320000LL },
                    253:        { 552, 293280000LL },
                    254:        { 560, 294250000LL },
                    255:        { 568, 295210000LL },
                    256:        { 576, 296190000LL },
                    257:        { 584, 297160000LL },
                    258:        { 592, 298150000LL },
                    259:        { 600, 299130000LL },
                    260:        { 608, 300130000LL },
                    261:        { 616, 301140000LL },
                    262:        { 624, 302150000LL },
                    263:        { 632, 303170000LL },
                    264:        { 640, 304210000LL },
                    265:        { 648, 305250000LL },
                    266:        { 656, 306310000LL },
                    267:        { 664, 307380000LL },
                    268:        { 672, 308470000LL },
                    269:        { 680, 309570000LL },
                    270:        { 688, 310690000LL },
                    271:        { 696, 311830000LL },
                    272:        { 704, 312990000LL },
                    273:        { 712, 314170000LL },
                    274:        { 720, 315380000LL },
                    275:        { 728, 316610000LL },
                    276:        { 736, 317860000LL },
                    277:        { 744, 319150000LL },
                    278:        { 752, 320460000LL },
                    279:        { 760, 321810000LL },
                    280:        { 768, 323200000LL },
                    281:        { 776, 324620000LL },
                    282:        { 784, 326090000LL },
                    283:        { 792, 327610000LL },
                    284:        { 800, 329170000LL },
                    285:        { 808, 330790000LL },
                    286:        { 816, 332470000LL },
                    287:        { 824, 334220000LL },
                    288:        { 832, 336040000LL },
                    289:        { 840, 337940000LL },
                    290:        { 848, 339940000LL },
                    291:        { 856, 342030000LL },
                    292:        { 864, 344230000LL },
                    293:        { 872, 346560000LL },
                    294:        { 880, 349030000LL },
                    295:        { 888, 351670000LL },
                    296:        { 896, 354490000LL },
                    297:        { 904, 357530000LL },
                    298:        { 912, 360830000LL },
                    299:        { 920, 364430000LL },
                    300:        { 928, 368410000LL },
                    301:        { 936, 372830000LL },
                    302:        { 944, 377820000LL },
                    303:        { 952, 383530000LL },
                    304:        { 960, 390210000LL },
                    305:        { 968, 398230000LL },
                    306:        { 976, 408200000LL },
                    307:        { 984, 421270000LL },
                    308:        { 992, 439960000LL }
                    309: };
                    310:
                    311: /* Hardware monitor sensors */
                    312: enum {
                    313:        VT1211_HMS_TEMP1 = 0,
                    314:        VT1211_HMS_UCH1,
                    315:        VT1211_HMS_UCH2,
                    316:        VT1211_HMS_UCH3,
                    317:        VT1211_HMS_UCH4,
                    318:        VT1211_HMS_UCH5,
                    319:        VT1211_HMS_33V,
                    320:        VT1211_HMS_FAN1,
                    321:        VT1211_HMS_FAN2,
                    322:        VT1211_HM_NSENSORS              /* must be the last */
                    323: };
                    324:
                    325: #endif /* !_DEV_ISA_VIASIOREG_H_ */

CVSweb