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

Annotation of sys/dev/ic/lm78var.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: lm78var.h,v 1.14 2007/06/25 22:50:18 cnst Exp $       */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2005, 2006 Mark Kettenis
        !             5:  *
        !             6:  * Permission to use, copy, modify, and distribute this software for any
        !             7:  * purpose with or without fee is hereby granted, provided that the above
        !             8:  * copyright notice and this permission notice appear in all copies.
        !             9:  *
        !            10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            17:  */
        !            18:
        !            19: /*
        !            20:  * National Semiconductor LM78/79/81 registers
        !            21:  */
        !            22:
        !            23: #define LM_POST_RAM    0x00    /* POST RAM occupies 0x00 -- 0x1f */
        !            24: #define LM_VALUE_RAM   0x20    /* Value RAM occupies 0x20 -- 0x3f */
        !            25: #define LM_FAN1                0x28    /* FAN1 reading */
        !            26: #define LM_FAN2                0x29    /* FAN2 reading */
        !            27: #define LM_FAN3                0x2a    /* FAN3 reading */
        !            28:
        !            29: #define LM_CONFIG      0x40    /* Configuration */
        !            30: #define LM_ISR1                0x41    /* Interrupt Status 1 */
        !            31: #define LM_ISR2                0x42    /* Interrupt Status 2 */
        !            32: #define LM_SMI1                0x43    /* SMI# Mask 1 */
        !            33: #define LM_SMI2                0x44    /* SMI# Mask 2 */
        !            34: #define LM_NMI1                0x45    /* NMI Mask 1 */
        !            35: #define LM_NMI2                0x46    /* NMI Mask 2 */
        !            36: #define LM_VIDFAN      0x47    /* VID/Fan Divisor */
        !            37: #define LM_SBUSADDR    0x48    /* Serial Bus Address */
        !            38: #define LM_CHIPID      0x49    /* Chip Reset/ID */
        !            39:
        !            40: /* Chip IDs */
        !            41:
        !            42: #define LM_CHIPID_LM78 0x00
        !            43: #define LM_CHIPID_LM78J        0x40
        !            44: #define LM_CHIPID_LM79 0xC0
        !            45: #define LM_CHIPID_LM81 0x80
        !            46: #define LM_CHIPID_MASK 0xfe
        !            47:
        !            48: /*
        !            49:  * Winbond registers
        !            50:  *
        !            51:  * Several models exists.  The W83781D is mostly compatible with the
        !            52:  * LM78, but has two extra temperatures.  Later models add extra
        !            53:  * voltage sensors, fans and bigger fan divisors to accomodate slow
        !            54:  * running fans.  To accomodate the extra sensors some models have
        !            55:  * different memory banks.
        !            56:  */
        !            57:
        !            58: #define WB_T23ADDR     0x4a    /* Temperature 2 and 3 Serial Bus Address */
        !            59: #define WB_PIN         0x4b    /* Pin Control */
        !            60: #define WB_BANKSEL     0x4e    /* Bank Select */
        !            61: #define WB_VENDID      0x4f    /* Vendor ID */
        !            62:
        !            63: /* Bank 0 regs */
        !            64: #define WB_BANK0_CHIPID        0x58    /* Chip ID */
        !            65: #define WB_BANK0_FAN45 0x5c    /* Fan 4/5 Divisor Control (W83791D only) */
        !            66: #define WB_BANK0_VBAT  0x5d    /* VBAT Monitor Control */
        !            67: #define WB_BANK0_FAN4  0xba    /* Fan 4 reading (W83791D only) */
        !            68: #define WB_BANK0_FAN5  0xbb    /* Fan 5 reading (W83791D only) */
        !            69:
        !            70: #define WB_BANK0_CONFIG        0x18    /* VRM & OVT Config (W83627THF/W83637HF) */
        !            71:
        !            72: /* Bank 1 registers */
        !            73: #define WB_BANK1_T2H   0x50    /* Temperature 2 High Byte */
        !            74: #define WB_BANK1_T2L   0x51    /* Temperature 2 Low Byte */
        !            75:
        !            76: /* Bank 2 registers */
        !            77: #define WB_BANK2_T3H   0x50    /* Temperature 3 High Byte */
        !            78: #define WB_BANK2_T3L   0x51    /* Temperature 3 Low Byte */
        !            79:
        !            80: /* Bank 4 registers (W83782D/W83627HF and later models only) */
        !            81: #define WB_BANK4_T1OFF 0x54    /* Temperature 1 Offset */
        !            82: #define WB_BANK4_T2OFF 0x55    /* Temperature 2 Offset */
        !            83: #define WB_BANK4_T3OFF 0x56    /* Temperature 3 Offset */
        !            84:
        !            85: /* Bank 5 registers (W83782D/W83627HF and later models only) */
        !            86: #define WB_BANK5_5VSB  0x50    /* 5VSB reading */
        !            87: #define WB_BANK5_VBAT  0x51    /* VBAT reading */
        !            88:
        !            89: /* Bank selection */
        !            90: #define WB_BANKSEL_B0  0x00    /* Bank 0 */
        !            91: #define WB_BANKSEL_B1  0x01    /* Bank 1 */
        !            92: #define WB_BANKSEL_B2  0x02    /* Bank 2 */
        !            93: #define WB_BANKSEL_B3  0x03    /* Bank 3 */
        !            94: #define WB_BANKSEL_B4  0x04    /* Bank 4 */
        !            95: #define WB_BANKSEL_B5  0x05    /* Bank 5 */
        !            96: #define WB_BANKSEL_HBAC        0x80    /* Register 0x4f High Byte Access */
        !            97:
        !            98: /* Vendor IDs */
        !            99: #define WB_VENDID_WINBOND      0x5ca3  /* Winbond */
        !           100: #define WB_VENDID_ASUS         0x12c3  /* ASUS */
        !           101:
        !           102: /* Chip IDs */
        !           103: #define WB_CHIPID_W83781D      0x10
        !           104: #define WB_CHIPID_W83781D_2    0x11
        !           105: #define WB_CHIPID_W83627HF     0x21
        !           106: #define WB_CHIPID_AS99127F     0x31 /* Asus W83781D clone */
        !           107: #define WB_CHIPID_W83782D      0x30
        !           108: #define WB_CHIPID_W83783S      0x40
        !           109: #define WB_CHIPID_W83697HF     0x60
        !           110: #define WB_CHIPID_W83791D      0x71
        !           111: #define WB_CHIPID_W83791SD     0x72
        !           112: #define WB_CHIPID_W83792D      0x7a
        !           113: #define WB_CHIPID_W83637HF     0x80
        !           114: #define WB_CHIPID_W83627EHF_A  0x88 /* early version, only for ASUS MBs */
        !           115: #define WB_CHIPID_W83627THF    0x90
        !           116: #define WB_CHIPID_W83627EHF    0xa1
        !           117: #define WB_CHIPID_W83627DHG    0xc1
        !           118:
        !           119: /* Config bits */
        !           120: #define WB_CONFIG_VMR9         0x01
        !           121:
        !           122: /* Reference voltage (mV) */
        !           123: #define WB_VREF                        3600
        !           124: #define WB_W83627EHF_VREF      2048
        !           125:
        !           126: #define WB_MAX_SENSORS  19
        !           127:
        !           128: struct lm_softc;
        !           129:
        !           130: struct lm_sensor {
        !           131:        char *desc;
        !           132:        enum sensor_type type;
        !           133:        u_int8_t bank;
        !           134:        u_int8_t reg;
        !           135:        void (*refresh)(struct lm_softc *, int);
        !           136:        int rfact;
        !           137: };
        !           138:
        !           139: struct lm_softc {
        !           140:        struct device sc_dev;
        !           141:
        !           142:        struct ksensor sensors[WB_MAX_SENSORS];
        !           143:        struct ksensordev sensordev;
        !           144:        struct sensor_task *sensortask;
        !           145:        struct lm_sensor *lm_sensors;
        !           146:        u_int numsensors;
        !           147:        void (*refresh_sensor_data) (struct lm_softc *);
        !           148:
        !           149:        u_int8_t (*lm_readreg)(struct lm_softc *, int);
        !           150:        void (*lm_writereg)(struct lm_softc *, int, int);
        !           151:
        !           152:        u_int8_t sbusaddr;
        !           153:        u_int8_t chipid;
        !           154:        u_int8_t vrm9;
        !           155: };
        !           156:
        !           157: void lm_attach(struct lm_softc *);
        !           158: int lm_detach(struct lm_softc *);

CVSweb