summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2006-01-14 15:14:34 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2006-01-14 15:14:34 +0000
commitf83a64de348c2d1013a09e1230f2b64cb75c2f77 (patch)
treebd62ba58d13f948232fa0e60142985918a1106ff
parent56d66ee4aa47abf8364b55b921e2fbf164cc7f35 (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/files6
-rw-r--r--sys/dev/i2c/files.i2c4
-rw-r--r--sys/dev/i2c/lm_i2c.c4
-rw-r--r--sys/dev/ic/lm78.c (renamed from sys/dev/ic/nslm7x.c)95
-rw-r--r--sys/dev/ic/lm78var.h146
-rw-r--r--sys/dev/ic/nslm7xvar.h167
-rw-r--r--sys/dev/isa/files.isa4
-rw-r--r--sys/dev/isa/lm_isa.c20
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;