diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2006-01-14 15:14:34 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2006-01-14 15:14:34 +0000 |
commit | f83a64de348c2d1013a09e1230f2b64cb75c2f77 (patch) | |
tree | bd62ba58d13f948232fa0e60142985918a1106ff | |
parent | 56d66ee4aa47abf8364b55b921e2fbf164cc7f35 (diff) |
Rename nslm7x.c into lm78.c and nslm7xvar.h into lm78var.h, and clean up
lm78var.h.
Now that I've completely rewritten the driver, replace copyright with my own.
suggested by deraadt@
-rw-r--r-- | sys/conf/files | 6 | ||||
-rw-r--r-- | sys/dev/i2c/files.i2c | 4 | ||||
-rw-r--r-- | sys/dev/i2c/lm_i2c.c | 4 | ||||
-rw-r--r-- | sys/dev/ic/lm78.c (renamed from sys/dev/ic/nslm7x.c) | 95 | ||||
-rw-r--r-- | sys/dev/ic/lm78var.h | 146 | ||||
-rw-r--r-- | sys/dev/ic/nslm7xvar.h | 167 | ||||
-rw-r--r-- | sys/dev/isa/files.isa | 4 | ||||
-rw-r--r-- | sys/dev/isa/lm_isa.c | 20 |
8 files changed, 205 insertions, 241 deletions
diff --git a/sys/conf/files b/sys/conf/files index b3685bdca8a..c7ccf1cdc62 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1,4 +1,4 @@ -# $OpenBSD: files,v 1.360 2006/01/09 21:19:48 jsg Exp $ +# $OpenBSD: files,v 1.361 2006/01/14 15:14:32 kettenis Exp $ # $NetBSD: files,v 1.87 1996/05/19 17:17:50 jonathan Exp $ # @(#)files.newconf 7.5 (Berkeley) 5/10/93 @@ -331,9 +331,9 @@ file dev/ic/iha.c iha device trm: scsi file dev/ic/trm.c trm -# National Semiconductor LM7[89] and compatible hardware monitors +# National Semiconductor LM78/79/81 and compatible hardware monitors device lm -file dev/ic/nslm7x.c lm +file dev/ic/lm78.c lm # Atheros AR5k (802.11/a/b/g) Hardware Abstraction Layer define ar5xxx diff --git a/sys/dev/i2c/files.i2c b/sys/dev/i2c/files.i2c index 30a3a46327d..cdc5f59fbbf 100644 --- a/sys/dev/i2c/files.i2c +++ b/sys/dev/i2c/files.i2c @@ -1,4 +1,4 @@ -# $OpenBSD: files.i2c,v 1.27 2006/01/13 23:56:46 grange Exp $ +# $OpenBSD: files.i2c,v 1.28 2006/01/14 15:14:33 kettenis Exp $ # $NetBSD: files.i2c,v 1.3 2003/10/20 16:24:10 briggs Exp $ define i2c {[addr = -1], [size = -1]} @@ -84,7 +84,7 @@ device adt attach adt at i2c file dev/i2c/adt7460.c adt -# National Semiconductor LM7[89] and compatible hardware monitors +# National Semiconductor LM78/79/81 and compatible hardware monitors attach lm at i2c with lm_i2c file dev/i2c/lm_i2c.c lm_i2c diff --git a/sys/dev/i2c/lm_i2c.c b/sys/dev/i2c/lm_i2c.c index 5bdfadd0c36..bf826a5556d 100644 --- a/sys/dev/i2c/lm_i2c.c +++ b/sys/dev/i2c/lm_i2c.c @@ -1,4 +1,4 @@ -/* $OpenBSD: lm_i2c.c,v 1.6 2006/01/09 22:41:39 kettenis Exp $ */ +/* $OpenBSD: lm_i2c.c,v 1.7 2006/01/14 15:14:33 kettenis Exp $ */ /* * Copyright (c) 2005 Mark Kettenis @@ -24,7 +24,7 @@ #include <machine/bus.h> #include <dev/i2c/i2cvar.h> -#include <dev/ic/nslm7xvar.h> +#include <dev/ic/lm78var.h> struct lm_i2c_softc { struct lm_softc sc_lmsc; diff --git a/sys/dev/ic/nslm7x.c b/sys/dev/ic/lm78.c index 30ca6c2360d..344aaae4f89 100644 --- a/sys/dev/ic/nslm7x.c +++ b/sys/dev/ic/lm78.c @@ -1,40 +1,19 @@ -/* $OpenBSD: nslm7x.c,v 1.18 2006/01/12 22:45:46 kettenis Exp $ */ -/* $NetBSD: nslm7x.c,v 1.17 2002/11/15 14:55:41 ad Exp $ */ +/* $OpenBSD: lm78.c,v 1.1 2006/01/14 15:14:33 kettenis Exp $ */ -/*- - * Copyright (c) 2000 The NetBSD Foundation, Inc. - * All rights reserved. +/* + * Copyright (c) 2005, 2006 Mark Kettenis * - * This code is derived from software contributed to The NetBSD Foundation - * by Bill Squier. + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include <sys/param.h> @@ -45,7 +24,7 @@ #include <sys/sensors.h> #include <machine/bus.h> -#include <dev/ic/nslm7xvar.h> +#include <dev/ic/lm78var.h> #if defined(LMDEBUG) #define DPRINTF(x) do { printf x; } while (0) @@ -343,8 +322,8 @@ lm_attach(struct lm_softc *sc) } /* Start the monitoring loop */ - config = sc->lm_readreg(sc, LMD_CONFIG); - sc->lm_writereg(sc, LMD_CONFIG, config | 0x01); + config = sc->lm_readreg(sc, LM_CONFIG); + sc->lm_writereg(sc, LM_CONFIG, config | 0x01); /* Add sensors */ for (i = 0; i < sc->numsensors; ++i) @@ -357,18 +336,18 @@ lm_match(struct lm_softc *sc) int chipid; /* See if we have an LM78 or LM79. */ - chipid = sc->lm_readreg(sc, LMD_CHIPID) & LM_ID_MASK; + chipid = sc->lm_readreg(sc, LM_CHIPID) & LM_CHIPID_MASK; switch(chipid) { - case LM_ID_LM78: + case LM_CHIPID_LM78: printf(": LM78\n"); break; - case LM_ID_LM78J: + case LM_CHIPID_LM78J: printf(": LM78J\n"); break; - case LM_ID_LM79: + case LM_CHIPID_LM79: printf(": LM79\n"); break; - case LM_ID_LM81: + case LM_CHIPID_LM81: printf(": LM81\n"); break; default: @@ -385,7 +364,7 @@ def_match(struct lm_softc *sc) { int chipid; - chipid = sc->lm_readreg(sc, LMD_CHIPID) & LM_ID_MASK; + chipid = sc->lm_readreg(sc, LM_CHIPID) & LM_CHIPID_MASK; printf(": unknown chip (ID %d)\n", chipid); lm_setup_sensors(sc, lm78_sensors); @@ -411,7 +390,7 @@ wb_match(struct lm_softc *sc) /* Read device/chip ID */ sc->lm_writereg(sc, WB_BANKSEL, WB_BANKSEL_B0); - devid = sc->lm_readreg(sc, LMD_CHIPID); + devid = sc->lm_readreg(sc, LM_CHIPID); chipid = sc->lm_readreg(sc, WB_BANK0_CHIPID); sc->lm_writereg(sc, WB_BANKSEL, banksel); DPRINTF(("winbond chip id 0x%x\n", chipid)); @@ -562,10 +541,10 @@ lm_refresh_fanrpm(struct lm_softc *sc, int n) */ /* FAN3 has a fixed fan divisor. */ - if (sc->lm_sensors[n].reg == LMD_FAN1 || - sc->lm_sensors[n].reg == LMD_FAN2) { - data = sc->lm_readreg(sc, LMD_VIDFAN); - if (sc->lm_sensors[n].reg == LMD_FAN1) + if (sc->lm_sensors[n].reg == LM_FAN1 || + sc->lm_sensors[n].reg == LM_FAN2) { + data = sc->lm_readreg(sc, LM_VIDFAN); + if (sc->lm_sensors[n].reg == LM_FAN1) divisor = (data >> 4) & 0x03; else divisor = (data >> 6) & 0x03; @@ -649,23 +628,23 @@ wb_refresh_fanrpm(struct lm_softc *sc, int n) * over the place. */ - if (sc->lm_sensors[n].reg == LMD_FAN1 || - sc->lm_sensors[n].reg == LMD_FAN2 || - sc->lm_sensors[n].reg == LMD_FAN3) { - data = sc->lm_readreg(sc, WB_BANK0_FANBAT); - fan = (sc->lm_sensors[n].reg - LMD_FAN1); + if (sc->lm_sensors[n].reg == LM_FAN1 || + sc->lm_sensors[n].reg == LM_FAN2 || + sc->lm_sensors[n].reg == LM_FAN3) { + data = sc->lm_readreg(sc, WB_BANK0_VBAT); + fan = (sc->lm_sensors[n].reg - LM_FAN1); if ((data >> 5) & (1 << fan)) divisor |= 0x04; } - if (sc->lm_sensors[n].reg == LMD_FAN1 || - sc->lm_sensors[n].reg == LMD_FAN2) { - data = sc->lm_readreg(sc, LMD_VIDFAN); - if (sc->lm_sensors[n].reg == LMD_FAN1) + if (sc->lm_sensors[n].reg == LM_FAN1 || + sc->lm_sensors[n].reg == LM_FAN2) { + data = sc->lm_readreg(sc, LM_VIDFAN); + if (sc->lm_sensors[n].reg == LM_FAN1) divisor |= (data >> 4) & 0x03; else divisor |= (data >> 6) & 0x03; - } else if (sc->lm_sensors[n].reg == LMD_FAN3) { + } else if (sc->lm_sensors[n].reg == LM_FAN3) { data = sc->lm_readreg(sc, WB_PIN); divisor |= (data >> 6) & 0x03; } else if (sc->lm_sensors[n].reg == WB_BANK0_FAN4 || diff --git a/sys/dev/ic/lm78var.h b/sys/dev/ic/lm78var.h new file mode 100644 index 00000000000..69d08a7843a --- /dev/null +++ b/sys/dev/ic/lm78var.h @@ -0,0 +1,146 @@ +/* $OpenBSD: lm78var.h,v 1.1 2006/01/14 15:14:33 kettenis Exp $ */ + +/* + * Copyright (c) 2005, 2006 Mark Kettenis + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * National Semiconductor LM78/79/81 registers + */ + +#define LM_POST_RAM 0x00 /* POST RAM occupies 0x00 -- 0x1f */ +#define LM_VALUE_RAM 0x20 /* Value RAM occupies 0x20 -- 0x3f */ +#define LM_FAN1 0x28 /* FAN1 reading */ +#define LM_FAN2 0x29 /* FAN2 reading */ +#define LM_FAN3 0x2a /* FAN3 reading */ + +#define LM_CONFIG 0x40 /* Configuration */ +#define LM_ISR1 0x41 /* Interrupt Status 1 */ +#define LM_ISR2 0x42 /* Interrupt Status 2 */ +#define LM_SMI1 0x43 /* SMI# Mask 1 */ +#define LM_SMI2 0x44 /* SMI# Mask 2 */ +#define LM_NMI1 0x45 /* NMI Mask 1 */ +#define LM_NMI2 0x46 /* NMI Mask 2 */ +#define LM_VIDFAN 0x47 /* VID/Fan Divisor */ +#define LM_SBUSADDR 0x48 /* Serial Bus Address */ +#define LM_CHIPID 0x49 /* Chip Reset/ID */ + +/* Chip IDs */ + +#define LM_CHIPID_LM78 0x00 +#define LM_CHIPID_LM78J 0x40 +#define LM_CHIPID_LM79 0xC0 +#define LM_CHIPID_LM81 0x80 +#define LM_CHIPID_MASK 0xfe + +/* + * Winbond registers + * + * Several models exists. The W83781D is mostly compatible with the + * LM78, but has two extra temperatures. Later models add extra + * voltage sensors, fans and bigger fan divisors to accomodate slow + * running fans. To accomodate the extra sensors some models have + * different memory banks. + */ + +#define WB_T23ADDR 0x4a /* Temperature 2 and 3 Serial Bus Address */ +#define WB_PIN 0x4b /* Pin Control */ +#define WB_BANKSEL 0x4e /* Bank Select */ +#define WB_VENDID 0x4f /* Vendor ID */ + +/* Bank 0 regs */ +#define WB_BANK0_CHIPID 0x58 /* Chip ID */ +#define WB_BANK0_FAN45 0x5c /* Fan 4/5 Divisor Control (W83791D only) */ +#define WB_BANK0_VBAT 0x5d /* VBAT Monitor Control */ +#define WB_BANK0_FAN4 0xba /* Fan 4 reading (W83791D only) */ +#define WB_BANK0_FAN5 0xbb /* Fan 5 reading (W83791D only) */ + +/* Bank 1 registers */ +#define WB_BANK1_T2H 0x50 /* Temperature 2 High Byte */ +#define WB_BANK1_T2L 0x51 /* Temperature 2 Low Byte */ + +/* Bank 2 registers */ +#define WB_BANK2_T3H 0x50 /* Temperature 3 High Byte */ +#define WB_BANK2_T3L 0x51 /* Temperature 3 Low Byte */ + +/* Bank 4 registers (W83782D/W83627HF and later models only) */ +#define WB_BANK4_T1OFF 0x54 /* Temperature 1 Offset */ +#define WB_BANK4_T2OFF 0x55 /* Temperature 2 Offset */ +#define WB_BANK4_T3OFF 0x56 /* Temperature 3 Offset */ + +/* Bank 5 registers (W83782D/W83627HF and later models only) */ +#define WB_BANK5_5VSB 0x50 /* 5VSB reading */ +#define WB_BANK5_VBAT 0x51 /* VBAT reading */ + +/* Bank selection */ +#define WB_BANKSEL_B0 0x00 /* Bank 0 */ +#define WB_BANKSEL_B1 0x01 /* Bank 1 */ +#define WB_BANKSEL_B2 0x02 /* Bank 2 */ +#define WB_BANKSEL_B3 0x03 /* Bank 3 */ +#define WB_BANKSEL_B4 0x04 /* Bank 4 */ +#define WB_BANKSEL_B5 0x05 /* Bank 5 */ +#define WB_BANKSEL_HBAC 0x80 /* Register 0x4f Hight Byte Access */ + +/* Vendor IDs */ +#define WB_VENDID_WINBOND 0x5ca3 /* Winbond */ +#define WB_VENDID_ASUS 0x12c3 /* ASUS */ + +/* Chip IDs */ +#define WB_CHIPID_W83781D 0x10 +#define WB_CHIPID_W83781D_2 0x11 +#define WB_CHIPID_W83627HF 0x21 +#define WB_CHIPID_AS99127F 0x31 /* Asus W83781D clone */ +#define WB_CHIPID_W83782D 0x30 +#define WB_CHIPID_W83783S 0x40 +#define WB_CHIPID_W83697HF 0x60 +#define WB_CHIPID_W83791D 0x71 +#define WB_CHIPID_W83791D_2 0x72 +#define WB_CHIPID_W83792D 0x7a +#define WB_CHIPID_W83637HF 0x80 +#define WB_CHIPID_W83627THF 0x90 + +/* Reference voltage (mV) */ +#define WB_VREF 3600 + +#define WB_MAX_SENSORS 19 + +struct lm_softc; + +struct lm_sensor { + char *desc; + enum sensor_type type; + u_int8_t bank; + u_int8_t reg; + void (*refresh)(struct lm_softc *, int); + u_int rfact; +}; + +struct lm_softc { + struct device sc_dev; + + bus_space_tag_t lm_iot; + bus_space_handle_t lm_ioh; + + int sc_flags; + struct sensor sensors[WB_MAX_SENSORS]; + struct lm_sensor *lm_sensors; + u_int numsensors; + void (*refresh_sensor_data) (struct lm_softc *); + + u_int8_t (*lm_readreg)(struct lm_softc *, int); + void (*lm_writereg)(struct lm_softc *, int, int); +}; + +void lm_attach(struct lm_softc *); diff --git a/sys/dev/ic/nslm7xvar.h b/sys/dev/ic/nslm7xvar.h deleted file mode 100644 index 92311d614f3..00000000000 --- a/sys/dev/ic/nslm7xvar.h +++ /dev/null @@ -1,167 +0,0 @@ -/* $OpenBSD: nslm7xvar.h,v 1.11 2006/01/12 22:45:46 kettenis Exp $ */ -/* $NetBSD: nslm7xvar.h,v 1.10 2002/11/15 14:55:42 ad Exp $ */ - -/*- - * Copyright (c) 2000 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Bill Squier. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _DEV_ISA_NSLM7XVAR_H_ -#define _DEV_ISA_NSLM7XVAR_H_ - -/* ctl registers */ - -#define LMC_ADDR 0x05 -#define LMC_DATA 0x06 - -/* data registers */ - -#define LMD_SENSORBASE 0x20 /* Sensors occupy 0x20 -- 0x2a */ -#define LMD_FAN1 0x28 -#define LMD_FAN2 0x29 -#define LMD_FAN3 0x2a - -#define LMD_CONFIG 0x40 /* Configuration */ -#define LMD_ISR1 0x41 /* Interrupt Status 1 */ -#define LMD_ISR2 0x42 /* Interrupt Status 2 */ -#define LMD_SMI1 0x43 /* SMI Mask 1 */ -#define LMD_SMI2 0x44 /* SMI Mask 2 */ -#define LMD_NMI1 0x45 /* NMI Mask 1 */ -#define LMD_NMI2 0x46 /* NMI Mask 2 */ -#define LMD_VIDFAN 0x47 /* VID/Fan Divisor */ -#define LMD_SBUSADDR 0x48 /* Serial Bus Address */ -#define LMD_CHIPID 0x49 /* Chip Reset/ID */ - -/* misc constants */ - -#define LM_ID_LM78 0x00 -#define LM_ID_LM78J 0x40 -#define LM_ID_LM79 0xC0 -#define LM_ID_LM81 0x80 -#define LM_ID_MASK 0xfe - -/* - * Additional registers for the Winbond chips: - * W83781D: mostly LM78 compatible; extra temp sensors in bank 1 & 2. - * W83782D & W83627HF: voltage sensors needs different handling, more FAN - * dividers; extra voltage sensors in bank 4. - * W83791D: extra fans; all sensors accessable through bank 0. - */ -#define WB_T23ADDR 0x4a /* temp sens 2/3 I2C addr */ -#define WB_PIN 0x4b /* pin & fan3 divider */ -#define WB_BANKSEL 0x4e /* banck select register */ -#define WB_BANKSEL_B0 0x00 /* select bank 0 */ -#define WB_BANKSEL_B1 0x01 /* select bank 1 */ -#define WB_BANKSEL_B2 0x02 /* select bank 2 */ -#define WB_BANKSEL_B3 0x03 /* select bank 3 */ -#define WB_BANKSEL_B4 0x04 /* select bank 4 */ -#define WB_BANKSEL_B5 0x05 /* select bank 5 */ -#define WB_BANKSEL_HBAC 0x80 /* hight byte access */ - -#define WB_VENDID 0x4f /* vendor ID register */ -#define WB_VENDID_WINBOND 0x5ca3 -#define WB_VENDID_ASUS 0x12c3 - -/* Bank 0 regs */ -#define WB_BANK0_CHIPID 0x58 -#define WB_CHIPID_W83781D 0x10 -#define WB_CHIPID_W83781D_2 0x11 -#define WB_CHIPID_W83627HF 0x21 -#define WB_CHIPID_AS99127F 0x31 /* Asus W83781D clone */ -#define WB_CHIPID_W83782D 0x30 -#define WB_CHIPID_W83783S 0x40 -#define WB_CHIPID_W83697HF 0x60 -#define WB_CHIPID_W83791D 0x71 -#define WB_CHIPID_W83791D_2 0x72 -#define WB_CHIPID_W83792D 0x7a -#define WB_CHIPID_W83637HF 0x80 -#define WB_CHIPID_W83627THF 0x90 -#define WB_BANK0_FAN45 0x5c /* fan4/5 divider; W83791D only */ -#define WB_BANK0_FANBAT 0x5d -#define WB_BANK0_FAN4 0xba /* W83791D only */ -#define WB_BANK0_FAN5 0xbb /* W83791D only */ - -/* Bank 1 regs */ -#define WB_BANK1_T2H 0x50 -#define WB_BANK1_T2L 0x51 - -/* Bank 2 regs */ -#define WB_BANK2_T3H 0x50 -#define WB_BANK2_T3L 0x51 - -/* Bank 4 regs W83782D/W83627HF and later models only */ -#define WB_BANK4_T1OFF 0x54 -#define WB_BANK4_T2OFF 0x55 -#define WB_BANK4_T3OFF 0x56 - -/* Bank 5 regs W83782D/W83627HF and later models only */ -#define WB_BANK5_5VSB 0x50 -#define WB_BANK5_VBAT 0x51 - -/* Reference voltage */ -#define WB_VREF 3600 - -#define WB_MAX_SENSORS 19 - -struct lm_softc; - -struct lm_sensor { - char *desc; - enum sensor_type type; - u_int8_t bank; - u_int8_t reg; - void (*refresh)(struct lm_softc *, int); - u_int rfact; -}; - -struct lm_softc { - struct device sc_dev; - - int lm_iobase; - bus_space_tag_t lm_iot; - bus_space_handle_t lm_ioh; - - int sc_flags; - struct sensor sensors[WB_MAX_SENSORS]; - struct lm_sensor *lm_sensors; - u_int numsensors; - void (*refresh_sensor_data) (struct lm_softc *); - - u_int8_t (*lm_readreg)(struct lm_softc *, int); - void (*lm_writereg)(struct lm_softc *, int, int); -}; - -void lm_attach(struct lm_softc *); - -#endif /* _DEV_ISA_NSLM7XVAR_H_ */ diff --git a/sys/dev/isa/files.isa b/sys/dev/isa/files.isa index 219a00962e4..c5a45f270d1 100644 --- a/sys/dev/isa/files.isa +++ b/sys/dev/isa/files.isa @@ -1,4 +1,4 @@ -# $OpenBSD: files.isa,v 1.91 2005/08/05 03:52:32 jsg Exp $ +# $OpenBSD: files.isa,v 1.92 2006/01/14 15:14:33 kettenis Exp $ # $NetBSD: files.isa,v 1.21 1996/05/16 03:45:55 mycroft Exp $ # # Config file and device description for machine-independent ISA code. @@ -374,7 +374,7 @@ file dev/isa/midi_pcppi.c midi_pcppi attach lpt at isa with lpt_isa file dev/isa/lpt_isa.c lpt_isa needs-flag -# National Semiconductor LM7[89] and compatible hardware monitors +# National Semiconductor LM78/79/81 and compatible hardware monitors attach lm at isa with lm_isa file dev/isa/lm_isa.c lm_isa diff --git a/sys/dev/isa/lm_isa.c b/sys/dev/isa/lm_isa.c index 7e550620324..1007a66872a 100644 --- a/sys/dev/isa/lm_isa.c +++ b/sys/dev/isa/lm_isa.c @@ -1,4 +1,4 @@ -/* $OpenBSD: lm_isa.c,v 1.4 2006/01/12 22:34:51 kettenis Exp $ */ +/* $OpenBSD: lm_isa.c,v 1.5 2006/01/14 15:14:33 kettenis Exp $ */ /* $NetBSD: lm_isa.c,v 1.9 2002/11/15 14:55:44 ad Exp $ */ /*- @@ -46,7 +46,11 @@ #include <dev/isa/isareg.h> #include <dev/isa/isavar.h> -#include <dev/ic/nslm7xvar.h> +#include <dev/ic/lm78var.h> + +/* ISA registers */ +#define LMC_ADDR 0x05 +#define LMC_DATA 0x06 #if defined(LMDEBUG) #define DPRINTF(x) do { printf x; } while (0) @@ -91,12 +95,14 @@ lm_isa_match(struct device *parent, void *match, void *aux) goto found; /* - * Probe for LM78/79/81. + * Probe for National Semiconductor LM78/79/81. * - * XXX Assumes the address has not been changed from the - * power up default. - */ - bus_space_write_1(iot, ioh, LMC_ADDR, LMD_SBUSADDR); + * XXX This assumes the address has not been changed from the + * power up default. This is probably a reasonable + * assumption, and if it isn't true, we should be able to + * access the chip using the serial bus. + */ + bus_space_write_1(iot, ioh, LMC_ADDR, LM_SBUSADDR); addr = bus_space_read_1(iot, ioh, LMC_DATA); if ((addr & 0xfc) == 0x2c) goto found; |