NetBSD Problem Report #40420

From tkhr.hash@gmail.com  Sat Jan 17 06:21:38 2009
Return-Path: <tkhr.hash@gmail.com>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by narn.NetBSD.org (Postfix) with ESMTP id 0ED9563B8BA
	for <gnats-bugs@gnats.netbsd.org>; Sat, 17 Jan 2009 06:21:38 +0000 (UTC)
Message-Id: <20090117151257.1D67.44A1DAE8@gmail.com>
Date: Sat, 17 Jan 2009 15:21:33 +0900
From: Takahiro Hayashi <tkhr.hash@gmail.com>
To: gnats-bugs@gnats.NetBSD.org
Cc: tkhr.hash@gmail.com
Subject: adding SMSC LPC47M192 hardware monitor at SMBus

>Number:         40420
>Category:       kern
>Synopsis:       adding SMSC LPC47M192 hardware monitor at SMBus
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    pgoyette
>State:          closed
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Sat Jan 17 06:25:00 +0000 2009
>Closed-Date:    Mon Feb 22 03:55:37 +0000 2010
>Last-Modified:  Mon Feb 22 03:55:37 +0000 2010
>Originator:     Takahiro Hayashi
>Release:        NetBSD current(5.99.6) Jan 10 13:08:54 UTC 2009
>Organization:
>Environment:
System: NetBSD halt 5.99.6 NetBSD 5.99.6 (UNION) #0: Thu Jan 15 20:41:02 JST 2009  root@halt:/usr/obj/sys/arch/i386/compile/UNION i386
Architecture: i386
Machine: i386
>Description:
	This patch adds SMSC LPC47M192 hardware monitor at SMBus
	to the kernel.
	For example, envstat(8) will display:

% envstat
                   Current  CritMax  CritMin  CritCap     Unit
[smsctemp0]
         +2.5V:      2.568                                   V
          Vccp:      1.156                                   V
         +3.3V:      3.287                                   V
           +5V:      4.980                                   V
          +12V:     12.327                                   V
           Vcc:      3.304                                   V
         +1.5V:      1.587                                   V
         +1.8V:      1.784                                   V
  Remote Temp1:     46.000                                degC
  Ambient Temp:     38.000                                degC
  Remote Temp2:     41.000                                degC
% dmesg | grep smsctemp
smsctemp0 at iic0 addr 0x2d: LPC47M192 hardware monitor
% 

	I tested on Intel D945GCLF and D945GCLF2 on i386/amd64.
	This patch does not support fan monitoring.

>How-To-Repeat:
>Fix:
	apply this patch and add line "smsctemp* at iic? addr 0x2d"
	to the kernel configuration file.

Index: sys/dev/i2c/files.i2c
===================================================================
RCS file: /cvsroot/src/sys/dev/i2c/files.i2c,v
retrieving revision 1.23
diff -u -r1.23 files.i2c
--- sys/dev/i2c/files.i2c	30 Oct 2008 12:52:46 -0000	1.23
+++ sys/dev/i2c/files.i2c	17 Jan 2009 06:02:02 -0000
@@ -110,3 +110,8 @@
 device	admtemp: sysmon_envsys
 attach	admtemp at iic
 file	dev/i2c/adm1021.c		admtemp
+
+# SMSC LPC47M192 hardware monitor
+device	smsctemp: sysmon_envsys
+attach	smsctemp at iic
+file	dev/i2c/smsctemp.c		smsctemp
--- /dev/null	2009-01-04 00:00:53.000000000 +0900
+++ sys/dev/i2c/smsctemp.c	2009-01-17 14:42:13.000000000 +0900
@@ -0,0 +1,334 @@
+/* $NetBSD$ */
+
+/*
+ * 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.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/device.h>
+
+#include <dev/i2c/i2cvar.h>
+#include <dev/sysmon/sysmonvar.h>
+#include <dev/i2c/smsctempvar.h>
+
+/*
+ * A driver for SMSC LPC47M192 hardware monitor at SMBus.
+ * This driver supports 8 Voltage and 3 Temperature sensors.
+ * Fan RPM monitoring is not supported in this driver because
+ * they are seen on ISA bus.
+ */
+
+static int smsctemp_match(device_t, cfdata_t, void *);
+static void smsctemp_attach(device_t, device_t, void *);
+static uint8_t smsctemp_readreg(struct smsctemp_sc *, int);
+static void smsctemp_writereg(struct smsctemp_sc *, int, int);
+static void smsctemp_sensors_setup(struct smsctemp_sc *,
+    struct smsctemp_sensor *);
+static void smsctemp_refresh_volt(struct smsctemp_sc *, envsys_data_t *);
+static void smsctemp_refresh_temp(struct smsctemp_sc *, envsys_data_t *);
+static void smsctemp_refresh(struct sysmon_envsys *, envsys_data_t *);
+
+CFATTACH_DECL_NEW(smsctemp, sizeof(struct smsctemp_sc),
+    smsctemp_match, smsctemp_attach, NULL, NULL);
+
+
+static struct smsctemp_sensor smsctemp_lpc47m192[] = {
+	{
+		.desc = "+2.5V",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x20,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =   13000,
+		.vmax = 3320000
+	},
+	{
+		.desc = "Vccp",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x21,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =   12000,
+		.vmax = 2988000
+	},
+	{
+		.desc = "+3.3V",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x22,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =   17000,
+		.vmax = 4383000
+	},
+	{
+		.desc = "+5V",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x23,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =   26000,
+		.vmax = 6640000
+	},
+	{
+		.desc = "+12V",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x24,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =    62000,
+		.vmax = 15938000
+	},
+	{
+		.desc = "Vcc",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x25,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =   17000,
+		.vmax = 4383000
+	},
+	{
+		.desc = "+1.5V",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x50,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =    8000,
+		.vmax = 1992000
+	},
+	{
+		.desc = "+1.8V",
+		.type = ENVSYS_SVOLTS_DC,
+		.reg = 0x51,
+		.refresh = smsctemp_refresh_volt,
+		.vmin =    9000,
+		.vmax = 2391000
+	},
+	{
+		.desc = "Remote Temp1",
+		.type = ENVSYS_STEMP,
+		.reg = 0x26,
+		.refresh = smsctemp_refresh_temp,
+		.vmin = 0,
+		.vmax = 0
+	},
+	{
+		.desc = "Ambient Temp",
+		.type = ENVSYS_STEMP,
+		.reg = 0x27,
+		.refresh = smsctemp_refresh_temp,
+		.vmin = 0,
+		.vmax = 0
+	},
+	{
+		.desc = "Remote Temp2",
+		.type = ENVSYS_STEMP,
+		.reg = 0x52,
+		.refresh = smsctemp_refresh_temp,
+		.vmax = 0,
+		.vmin = 0
+	},
+
+	{ .desc = NULL }
+};
+
+
+static int
+smsctemp_match(device_t parent, cfdata_t match, void *aux)
+{
+	struct i2c_attach_args *ia = aux;
+	uint8_t cmd, cid, rev;
+
+	/* Must supply an address */
+	if (ia->ia_addr < 1)
+		return 0;
+
+	iic_acquire_bus(ia->ia_tag, 0);
+
+	cmd = SMSCTEMP_REG_COMPANY;
+	if (iic_exec(ia->ia_tag, I2C_OP_READ_WITH_STOP,
+	    ia->ia_addr, &cmd, sizeof cmd, &cid, sizeof cid, 0)) {
+		iic_release_bus(ia->ia_tag, 0);
+		return 0;
+	}
+	cmd = SMSCTEMP_REG_STEPPING;
+	if (iic_exec(ia->ia_tag, I2C_OP_READ_WITH_STOP,
+	    ia->ia_addr, &cmd, sizeof cmd, &rev, sizeof rev, 0)) {
+		iic_release_bus(ia->ia_tag, 0);
+		return 0;
+	}
+
+	if ( cid != SMSC_CID_47M192 || rev != SMSC_REV_47M192) {
+		iic_release_bus(ia->ia_tag, 0);
+		return 0;
+	}
+
+	iic_release_bus(ia->ia_tag, 0);
+	return 1;
+}
+
+
+static void
+smsctemp_attach(device_t parent, device_t self, void *aux)
+{
+	struct smsctemp_sc *sc = device_private(self);
+	struct i2c_attach_args *ia = aux;
+	uint8_t cid, rev;
+	int i;
+
+	sc->sc_dev = self;
+	sc->sc_tag = ia->ia_tag;
+	sc->sc_addr = ia->ia_addr;
+	sc->smsctemp_readreg = smsctemp_readreg;
+	sc->smsctemp_writereg = smsctemp_writereg;
+	sc->smsctemp_sensors = NULL;
+
+	cid = sc->smsctemp_readreg(sc, SMSCTEMP_REG_COMPANY);
+	rev = sc->smsctemp_readreg(sc, SMSCTEMP_REG_STEPPING);
+	switch (cid) {
+	case SMSC_CID_47M192:
+		if (rev == SMSC_REV_47M192) {
+			smsctemp_sensors_setup(sc, smsctemp_lpc47m192);
+			aprint_normal(": LPC47M192 hardware monitor\n");
+		}
+		break;
+	default:
+		/* unknown chip */
+		break;
+	}
+
+	if (sc->smsctemp_sensors == NULL) {
+		aprint_normal(": unknown chip: cid 0x%02x rev 0x%02x\n",
+		    cid, rev);
+		return;
+	}
+
+	if ((sc->sc_sme = sysmon_envsys_create()) == NULL) {
+		aprint_error_dev(sc->sc_dev,
+		    "unable to create sysmon structure\n");
+		return;
+	}
+
+	for (i = 0; i < sc->numsensors; i++) {
+		if (sysmon_envsys_sensor_attach(sc->sc_sme, &sc->sensors[i])) {
+			aprint_error_dev(sc->sc_dev,
+			    "unable to attach sensor\n");
+			sysmon_envsys_destroy(sc->sc_sme);
+			return;
+		}
+	}
+
+	sc->sc_sme->sme_name = device_xname(sc->sc_dev);
+	sc->sc_sme->sme_cookie = sc;
+	sc->sc_sme->sme_refresh = smsctemp_refresh;
+	if (sysmon_envsys_register(sc->sc_sme)) {
+		aprint_error_dev(sc->sc_dev,
+		    "unable to register with sysmon\n");
+		sysmon_envsys_destroy(sc->sc_sme);
+		return;
+	}
+}
+
+
+static uint8_t
+smsctemp_readreg(struct smsctemp_sc *sc, int reg)
+{
+	uint8_t cmd, data;
+
+	iic_acquire_bus(sc->sc_tag, 0);
+
+	cmd = reg;
+	iic_exec(sc->sc_tag, I2C_OP_READ_WITH_STOP,
+		 sc->sc_addr, &cmd, sizeof cmd, &data, sizeof data, 0);
+
+	iic_release_bus(sc->sc_tag, 0);
+
+	return data;
+}
+
+static void
+smsctemp_writereg(struct smsctemp_sc *sc, int reg, int val)
+{
+	uint8_t cmd, data;
+
+	iic_acquire_bus(sc->sc_tag, 0);
+
+	cmd = reg;
+	data = val;
+	iic_exec(sc->sc_tag, I2C_OP_WRITE_WITH_STOP,
+		 sc->sc_addr, &cmd, sizeof cmd, &data, sizeof data, 0);
+
+	iic_release_bus(sc->sc_tag, 0);
+}
+
+
+static void
+smsctemp_sensors_setup(struct smsctemp_sc *sc, struct smsctemp_sensor *sens)
+{
+	int i;
+
+	for (i = 0; sens[i].desc; i++) {
+		strlcpy(sc->sensors[i].desc, sens[i].desc,
+		    sizeof(sc->sensors[i].desc));
+		sc->sensors[i].units = sens[i].type;
+		sc->numsensors++;
+	}
+	sc->smsctemp_sensors = sens;
+}
+
+
+static void
+smsctemp_refresh_volt(struct smsctemp_sc *sc, envsys_data_t *edata)
+{
+	struct smsctemp_sensor *sens = &sc->smsctemp_sensors[edata->sensor];
+	int data;
+
+	data = (*sc->smsctemp_readreg)(sc, sens->reg);
+	if (data == 0xff) {
+		edata->state = ENVSYS_SINVALID;
+	} else {
+		edata->value_cur =
+		    (sens->vmax - sens->vmin)/255 * data + sens->vmin;
+		edata->state = ENVSYS_SVALID;
+	}
+}
+
+static void
+smsctemp_refresh_temp(struct smsctemp_sc *sc, envsys_data_t *edata)
+{
+	struct smsctemp_sensor *sens = &sc->smsctemp_sensors[edata->sensor];
+	int data;
+
+	data = (*sc->smsctemp_readreg)(sc, sens->reg);
+	if (data == 0xff) {
+		edata->state = ENVSYS_SINVALID;
+	} else {
+		/* convert data(degC) to uK */
+		edata->value_cur = 273150000 + 1000000 * data;
+		edata->state = ENVSYS_SVALID;
+	}
+}
+
+static void
+smsctemp_refresh(struct sysmon_envsys *sme, envsys_data_t *edata)
+{
+	struct smsctemp_sc *sc = sme->sme_cookie;
+
+	sc->smsctemp_sensors[edata->sensor].refresh(sc, edata);
+}
--- /dev/null	2009-01-04 00:00:53.000000000 +0900
+++ sys/dev/i2c/smsctempvar.h	2009-01-17 14:08:15.000000000 +0900
@@ -0,0 +1,62 @@
+/* $NetBSD$ */
+
+/*
+ * 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.
+ *
+ * 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_I2C_SMSCTEMPVAR_H_
+#define _DEV_I2C_SMSCTEMPVAR_H_
+
+#define SMSCTEMP_REG_COMPANY	0x3e
+#define SMSCTEMP_REG_STEPPING	0x3f
+#define SMSCTEMP_REG_CONFIG	0x40
+
+#define SMSC_CID_47M192		0x55	/* LPC47M192/LPC47M997 */
+#define SMSC_REV_47M192		0x20
+
+#define SMSCTEMP_NUM_SENSORS	12
+
+
+struct smsctemp_sc {
+	device_t	sc_dev;
+	i2c_tag_t	sc_tag;
+	i2c_addr_t	sc_addr;
+
+	uint8_t	(*smsctemp_readreg)(struct smsctemp_sc *, int);
+	void	(*smsctemp_writereg)(struct smsctemp_sc *, int, int);
+
+	struct sysmon_envsys *sc_sme;
+	envsys_data_t sensors[SMSCTEMP_NUM_SENSORS];
+	int		numsensors;
+	struct smsctemp_sensor *smsctemp_sensors;
+};
+
+struct smsctemp_sensor {
+	const char	*desc;
+	enum envsys_units type;
+	uint8_t 	reg;
+	void		(*refresh)(struct smsctemp_sc *, envsys_data_t *);
+	int		vmin;		/* value in uV for 0x00 */
+	int		vmax;		/* value in uV for 0xff */
+};
+
+#endif /* _DEV_I2C_SMSCTEMPVAR_H_ */

-- 
 <tkhr.hash@gmail.com>

>Release-Note:

>Audit-Trail:
From: Andreas Wrede <andreas@wrede.ca>
To: gnats-bugs@NetBSD.org
Cc: kern-bug-people@netbsd.org,
 gnats-admin@netbsd.org,
 netbsd-bugs@netbsd.org
Subject: Re: kern/40420: adding SMSC LPC47M192 hardware monitor at SMBus
Date: Wed, 4 Feb 2009 15:46:30 -0500

 On Jan 17, 2009, at 1:25 , Takahiro Hayashi wrote:

 >> Number:         40420
 >> Category:       kern
 >> Synopsis:       adding SMSC LPC47M192 hardware monitor at SMBus
 >> Confidential:   no
 >> Severity:       non-critical
 >> Priority:       low
 >> Responsible:    kern-bug-people
 >> State:          open
 >> Class:          change-request
 >> Submitter-Id:   net
 >> Arrival-Date:   Sat Jan 17 06:25:00 +0000 2009
 >> Originator:     Takahiro Hayashi
 >> Release:        NetBSD current(5.99.6) Jan 10 13:08:54 UTC 2009
 >> Organization:
 >> Environment:
 > System: NetBSD halt 5.99.6 NetBSD 5.99.6 (UNION) #0: Thu Jan 15  
 > 20:41:02 JST 2009  root@halt:/usr/obj/sys/arch/i386/compile/UNION i386
 > Architecture: i386
 > Machine: i386
 >> Description:
 > 	This patch adds SMSC LPC47M192 hardware monitor at SMBus
 > 	to the kernel.

 The patch alos applies cleanly to the netbsd_5 branch:

 # uname -a
 NetBSD watch.wrede.pvt 5.0_RC1 NetBSD 5.0_RC1 (GENERIC) #48: Wed Feb   
 4 15:33:28 EST 2009  root@wotan.wrede.pvt:/u2/netbsd-5.0/obj.amd64/sys/ 
 arch/amd64/compile/GENERIC amd64

 # grep smsctemp0 /var/run/dmesg.boot
 smsctemp0 at iic0 addr 0x2d: LPC47M192 hardware monitor

 # envstat -d smsctemp0
                   Current  CritMax  CritMin  CritCap     Unit
         +2.5V:      2.503                                   V
          Vccp:      1.156                                   V
         +3.3V:      3.321                                   V
           +5V:      5.084                                   V
          +12V:     12.078                                   V
           Vcc:      3.338                                   V
         +1.5V:      1.548                                   V
         +1.8V:      1.784                                   V
 Remote Temp1:     39.000                                degC
 Ambient Temp:     29.000                                degC
 Remote Temp2:     36.000                                degC


 Can this please be pulled up once it is committed?

 Thanks!
 -- 
      aew

Responsible-Changed-From-To: kern-bug-people->jnemeth
Responsible-Changed-By: jnemeth@NetBSD.org
Responsible-Changed-When: Wed, 11 Feb 2009 08:09:18 +0000
Responsible-Changed-Why:
take


State-Changed-From-To: open->feedback
State-Changed-By: jnemeth@NetBSD.org
State-Changed-When: Wed, 11 Feb 2009 08:09:18 +0000
State-Changed-Why:
Made a comment about the lack of a copyright.


From: jnemeth@victoria.tc.ca (John Nemeth)
To: gnats-bugs@NetBSD.org, kern-bug-people@NetBSD.org, netbsd-bugs@NetBSD.org
Cc: 
Subject: Re: kern/40420: adding SMSC LPC47M192 hardware monitor at SMBus
Date: Wed, 11 Feb 2009 00:08:22 -0800

 On May 3,  6:32pm, Takahiro Hayashi wrote:
 }
 } >Number:         40420
 } >Category:       kern
 } >Synopsis:       adding SMSC LPC47M192 hardware monitor at SMBus
 } >Description:
 } 	This patch adds SMSC LPC47M192 hardware monitor at SMBus
 } 	to the kernel.
 } 	For example, envstat(8) will display:
 } 
 } % envstat
 }                    Current  CritMax  CritMin  CritCap     Unit
 } [smsctemp0]
 }          +2.5V:      2.568                                   V
 }           Vccp:      1.156                                   V
 }          +3.3V:      3.287                                   V
 }            +5V:      4.980                                   V
 }           +12V:     12.327                                   V
 }            Vcc:      3.304                                   V
 }          +1.5V:      1.587                                   V
 }          +1.8V:      1.784                                   V
 }   Remote Temp1:     46.000                                degC
 }   Ambient Temp:     38.000                                degC
 }   Remote Temp2:     41.000                                degC
 } % dmesg | grep smsctemp
 } smsctemp0 at iic0 addr 0x2d: LPC47M192 hardware monitor
 } % 
 } 
 } 	I tested on Intel D945GCLF and D945GCLF2 on i386/amd64.
 } 	This patch does not support fan monitoring.
 } 
 } >How-To-Repeat:
 } >Fix:
 } 	apply this patch and add line "smsctemp* at iic? addr 0x2d"
 } 	to the kernel configuration file.
 } 
 } [snip]
 } --- /dev/null	2009-01-04 00:00:53.000000000 +0900
 } +++ sys/dev/i2c/smsctemp.c	2009-01-17 14:42:13.000000000 +0900
 } @@ -0,0 +1,334 @@
 } +/* $NetBSD$ */
 } +
 } +/*
 } + * Redistribution and use in source and binary forms, with or without
 } + * modification, are permitted provided that the following conditions
 } [snip]

      There is no copyright line (i.e. there is no indication of who is
 granting the licence.  Unfortunately, without a proper copyright to go
 along with the licence the code can't be imported.

 }-- End of excerpt from Takahiro Hayashi

From: Takahiro Hayashi <tkhr.hash@gmail.com>
To: jnemeth@victoria.tc.ca (John Nemeth)
Cc: gnats-bugs@NetBSD.org,
 kern-bug-people@NetBSD.org,
 netbsd-bugs@NetBSD.org
Subject: Re: kern/40420: adding SMSC LPC47M192 hardware monitor at SMBus
Date: Wed, 11 Feb 2009 19:25:36 +0900

 On Wed, 11 Feb 2009 00:08:22 -0800
 jnemeth@victoria.tc.ca (John Nemeth) wrote:

 > On May 3,  6:32pm, Takahiro Hayashi wrote:
 > }
 > } >Number:         40420
 > } >Category:       kern
 > } >Synopsis:       adding SMSC LPC47M192 hardware monitor at SMBus
 > } >Description:
 > } 	This patch adds SMSC LPC47M192 hardware monitor at SMBus
 > } 	to the kernel.
 [snip]
 > } [snip]
 > } --- /dev/null	2009-01-04 00:00:53.000000000 +0900
 > } +++ sys/dev/i2c/smsctemp.c	2009-01-17 14:42:13.000000000 +0900
 > } @@ -0,0 +1,334 @@
 > } +/* $NetBSD$ */
 > } +
 > } +/*
 > } + * Redistribution and use in source and binary forms, with or without
 > } + * modification, are permitted provided that the following conditions
 > } [snip]
 > 
 >      There is no copyright line (i.e. there is no indication of who is
 > granting the licence.  Unfortunately, without a proper copyright to go
 > along with the licence the code can't be imported.

 I've forgotten about the license.
 Can the following license be accepted?

 Thanks,
 Takahiro Hayashi

 --- smsctemp.c.orig	2009-02-11 18:48:08.000000000 +0900
 +++ smsctemp.c	2009-02-11 18:55:17.000000000 +0900
 @@ -1,6 +1,9 @@
  /* $NetBSD$ */

  /*
 + * Copyright (c) 2009 Takahiro Hayashi
 + * All rights reserved.
 + *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
 --- smsctempvar.h.orig	2009-02-11 18:48:14.000000000 +0900
 +++ smsctempvar.h	2009-02-11 18:55:07.000000000 +0900
 @@ -1,6 +1,9 @@
  /* $NetBSD$ */

  /*
 + * Copyright (c) 2009 Takahiro Hayashi
 + * All rights reserved.
 + *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:

 -- 
 <tkhr.hash@gmail.com>

State-Changed-From-To: feedback->open
State-Changed-By: jnemeth@NetBSD.org
State-Changed-When: Wed, 11 Feb 2009 22:06:35 +0000
State-Changed-Why:
Question has been answered.


From: jnemeth@victoria.tc.ca (John Nemeth)
To: Takahiro Hayashi <tkhr.hash@gmail.com>
Cc: gnats-bugs@NetBSD.org, netbsd-bugs@NetBSD.org
Subject: Re: kern/40420: adding SMSC LPC47M192 hardware monitor at SMBus
Date: Wed, 11 Feb 2009 14:05:55 -0800

 On Jul 4,  2:01pm, Takahiro Hayashi wrote:
 } On Wed, 11 Feb 2009 00:08:22 -0800
 } jnemeth@victoria.tc.ca (John Nemeth) wrote:
 } > On May 3,  6:32pm, Takahiro Hayashi wrote:
 } > }
 } > } >Number:         40420
 } > } >Category:       kern
 } > } >Synopsis:       adding SMSC LPC47M192 hardware monitor at SMBus
 } > } >Description:
 } > } 	This patch adds SMSC LPC47M192 hardware monitor at SMBus
 } > } 	to the kernel.
 } [snip]
 } > } [snip]
 } > } --- /dev/null	2009-01-04 00:00:53.000000000 +0900
 } > } +++ sys/dev/i2c/smsctemp.c	2009-01-17 14:42:13.000000000 +0900
 } > } @@ -0,0 +1,334 @@
 } > } +/* $NetBSD$ */
 } > } +
 } > } +/*
 } > } + * Redistribution and use in source and binary forms, with or without
 } > } + * modification, are permitted provided that the following conditions
 } > } [snip]
 } > 
 } >      There is no copyright line (i.e. there is no indication of who is
 } > granting the licence.  Unfortunately, without a proper copyright to go
 } > along with the licence the code can't be imported.
 } 
 } I've forgotten about the license.
 } Can the following license be accepted?
 } 
 } Thanks,
 } Takahiro Hayashi
 } 
 } --- smsctemp.c.orig	2009-02-11 18:48:08.000000000 +0900
 } +++ smsctemp.c	2009-02-11 18:55:17.000000000 +0900
 } @@ -1,6 +1,9 @@
 }  /* $NetBSD$ */
 }  
 }  /*
 } + * Copyright (c) 2009 Takahiro Hayashi
 } + * All rights reserved.
 } + *
 }   * Redistribution and use in source and binary forms, with or without
 }   * modification, are permitted provided that the following conditions
 }   * are met:

      This looks okay to me.  Will take a look at the code later.

 }-- End of excerpt from Takahiro Hayashi

From: jnemeth@cornerstoneservice.ca (John Nemeth)
To: paul@whooppee.com
Cc: Takahiro Hayashi <tkhr.hash@gmail.com>, gnats-bugs@netbsd.org
Subject: Re: kern/40420
Date: Sat, 20 Feb 2010 20:13:00 -0800

 On Feb 20,  7:19am, Paul Goyette wrote:
 } 
 } Any reason you haven't gotten back to this since last year?  :)  Any 

      Other then getting side tracked, nope.

 } objection if I pick it up from you?

      Go ahead.  Just change Responsible to yourself and do your
 own code review.

 }-- End of excerpt from Paul Goyette

Responsible-Changed-From-To: jnemeth->pgoyette
Responsible-Changed-By: pgoyette@NetBSD.org
Responsible-Changed-When: Sun, 21 Feb 2010 15:05:21 +0000
Responsible-Changed-Why:
I've picked this up from John.


State-Changed-From-To: open->analyzed
State-Changed-By: pgoyette@NetBSD.org
State-Changed-When: Sun, 21 Feb 2010 15:05:21 +0000
State-Changed-Why:
Looked at it, will import revised code soon.


From: Paul Goyette <paul@whooppee.com>
To: Takahiro HAYASHI <hash@abox3.so-net.ne.jp>
Cc: tkhr.hash@gmail.com, John Nemeth <jnemeth@netbsd.org>, 
    gnats-bugs@netbsd.org
Subject: Re: kern/40420
Date: Sun, 21 Feb 2010 10:24:03 -0800 (PST)

   This message is in MIME format.  The first part should be readable text,
   while the remaining parts are likely unreadable without MIME-aware tools.

 --0-2127810690-1266776621=:6053
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; format=flowed
 Content-ID: <Pine.NEB.4.64.1002211023491.6053@quicky.whooppee.com>

 On Mon, 22 Feb 2010, Takahiro HAYASHI wrote:

 > Sorry for late response.

 No problem!  Thanks for the reply.

 > I'm afraid that the name "smsc" will conflict with sys/dev/isa/smsc.c.
 > That's why I name this driver "smsctemp".
 > As you say, name of "smsctemp" may not be suitable, i think.
 > How about "smschwmon"?

 Yes, I found that the hard way!

 I have taken the liberty of renaming it to smcsmon(4).  I've made a few 
 other minor changes in the sources (most notably, I replaced the calls 
 to iic_exec() with calls to iic_smbus_{read,write}_byte()) and I've 
 written a basic smcsmon(4) man page.  The rest of the code looked pretty 
 clean to me.  (I personally don't like using the

  	{ member1 = value1, member2 = value2, ... }

 method of initializing the array of sensor descriptors, but it is done 
 that way in other drivers, so I left it alone.)

 I have attached the revised files here - please let me know if this 
 meets with your approval, and I will commit.


 -------------------------------------------------------------------------
 |   Paul Goyette   | PGP DSS Key fingerprint: |  E-mail addresses:      |
 | Customer Service | FA29 0E3B 35AF E8AE 6651 |  paul at whooppee.com   |
 | Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at juniper.net |
 | Kernel Developer |                          | pgoyette at netbsd.org  |
 -------------------------------------------------------------------------
 --0-2127810690-1266776621=:6053
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=smscmonvar.h
 Content-Transfer-Encoding: BASE64
 Content-ID: <Pine.NEB.4.64.1002211023410.6053@quicky.whooppee.com>
 Content-Description: 
 Content-Disposition: ATTACHMENT; FILENAME=smscmonvar.h

 LyogJE5ldEJTRCQgKi8NCg0KLyoNCiAqIENvcHlyaWdodCAoYykgMjAwOSBU
 YWthaGlybyBIYXlhc2hpDQogKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICoN
 CiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
 cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0aW9uLCBh
 cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
 aXRpb25zDQogKiBhcmUgbWV0Og0KICogMS4gUmVkaXN0cmlidXRpb25zIG9m
 IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQN
 CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
 ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAqIDIuIFJlZGlzdHJpYnV0aW9u
 cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
 eXJpZ2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
 IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogKiAgICBk
 b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
 d2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICoNCiAqIFRISVMgU09GVFdBUkUg
 SVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBGT1VOREFUSU9OLCBJTkMuIEFO
 RCBDT05UUklCVVRPUlMNCiAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg
 T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
 SVRFRA0KICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
 TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCiAqIFBV
 UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
 Rk9VTkRBVElPTiBPUiBDT05UUklCVVRPUlMNCiAqIEJFIExJQUJMRSBGT1Ig
 QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
 RU1QTEFSWSwgT1INCiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
 SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQogKiBT
 VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
 QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCiAqIElOVEVSUlVQVElPTikg
 SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
 LCBXSEVUSEVSIElODQogKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
 T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0K
 ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
 U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCiAqIFBPU1NJQklM
 SVRZIE9GIFNVQ0ggREFNQUdFLg0KICovDQoNCiNpZm5kZWYgX0RFVl9JMkNf
 U01TQ01PTlZBUl9IXw0KI2RlZmluZSBfREVWX0kyQ19TTVNDTU9OVkFSX0hf
 DQoNCiNkZWZpbmUgU01TQ01PTl9BRERSCQkweDJjDQojZGVmaW5lIFNNU0NN
 T05fQUREUl9NQVNLCTB4N2UNCg0KI2RlZmluZSBTTVNDTU9OX1JFR19DT01Q
 QU5ZCTB4M2UNCiNkZWZpbmUgU01TQ01PTl9SRUdfU1RFUFBJTkcJMHgzZg0K
 I2RlZmluZSBTTVNDTU9OX1JFR19DT05GSUcJMHg0MA0KDQojZGVmaW5lIFNN
 U0NfQ0lEXzQ3TTE5MgkJMHg1NQkvKiBMUEM0N00xOTIvTFBDNDdNOTk3ICov
 DQojZGVmaW5lIFNNU0NfUkVWXzQ3TTE5MgkJMHgyMA0KDQojZGVmaW5lIFNN
 U0NNT05fTlVNX1NFTlNPUlMJMTINCg0KDQpzdHJ1Y3Qgc21zY21vbl9zYyB7
 DQoJZGV2aWNlX3QJc2NfZGV2Ow0KCWkyY190YWdfdAlzY190YWc7DQoJaTJj
 X2FkZHJfdAlzY19hZGRyOw0KDQoJdWludDhfdAkoKnNtc2Ntb25fcmVhZHJl
 Zykoc3RydWN0IHNtc2Ntb25fc2MgKiwgaW50KTsNCgl2b2lkCSgqc21zY21v
 bl93cml0ZXJlZykoc3RydWN0IHNtc2Ntb25fc2MgKiwgaW50LCBpbnQpOw0K
 DQoJc3RydWN0IHN5c21vbl9lbnZzeXMgKnNjX3NtZTsNCgllbnZzeXNfZGF0
 YV90IHNlbnNvcnNbU01TQ01PTl9OVU1fU0VOU09SU107DQoJaW50CQludW1z
 ZW5zb3JzOw0KCXN0cnVjdCBzbXNjbW9uX3NlbnNvciAqc21zY21vbl9zZW5z
 b3JzOw0KfTsNCg0Kc3RydWN0IHNtc2Ntb25fc2Vuc29yIHsNCgljb25zdCBj
 aGFyCSpkZXNjOw0KCWVudW0gZW52c3lzX3VuaXRzIHR5cGU7DQoJdWludDhf
 dCAJcmVnOw0KCXZvaWQJCSgqcmVmcmVzaCkoc3RydWN0IHNtc2Ntb25fc2Mg
 KiwgZW52c3lzX2RhdGFfdCAqKTsNCglpbnQJCXZtaW47CQkvKiB2YWx1ZSBp
 biB1ViBmb3IgMHgwMCAqLw0KCWludAkJdm1heDsJCS8qIHZhbHVlIGluIHVW
 IGZvciAweGZmICovDQp9Ow0KDQojZW5kaWYgLyogX0RFVl9JMkNfU01TQ1ZB
 Ul9IXyAqLw0K

 --0-2127810690-1266776621=:6053
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=smscmon.c
 Content-Transfer-Encoding: BASE64
 Content-ID: <Pine.NEB.4.64.1002211023411.6053@quicky.whooppee.com>
 Content-Description: 
 Content-Disposition: ATTACHMENT; FILENAME=smscmon.c

 LyogJE5ldEJTRCQgKi8NCg0KLyoNCiAqIENvcHlyaWdodCAoYykgMjAwOSBU
 YWthaGlybyBIYXlhc2hpDQogKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICoN
 CiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
 cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0aW9uLCBh
 cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
 aXRpb25zDQogKiBhcmUgbWV0Og0KICogMS4gUmVkaXN0cmlidXRpb25zIG9m
 IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQN
 CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
 ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAqIDIuIFJlZGlzdHJpYnV0aW9u
 cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
 eXJpZ2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
 IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogKiAgICBk
 b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
 d2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICoNCiAqIFRISVMgU09GVFdBUkUg
 SVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBGT1VOREFUSU9OLCBJTkMuIEFO
 RCBDT05UUklCVVRPUlMNCiAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg
 T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
 SVRFRA0KICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
 TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCiAqIFBV
 UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
 Rk9VTkRBVElPTiBPUiBDT05UUklCVVRPUlMNCiAqIEJFIExJQUJMRSBGT1Ig
 QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
 RU1QTEFSWSwgT1INCiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
 SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQogKiBT
 VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
 QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCiAqIElOVEVSUlVQVElPTikg
 SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
 LCBXSEVUSEVSIElODQogKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
 T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0K
 ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
 U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCiAqIFBPU1NJQklM
 SVRZIE9GIFNVQ0ggREFNQUdFLg0KICovDQoNCiNpbmNsdWRlIDxzeXMvY2Rl
 ZnMuaD4NCl9fS0VSTkVMX1JDU0lEKDAsICIkTmV0QlNEJCIpOw0KDQojaW5j
 bHVkZSA8c3lzL3BhcmFtLmg+DQojaW5jbHVkZSA8c3lzL3N5c3RtLmg+DQoj
 aW5jbHVkZSA8c3lzL2RldmljZS5oPg0KDQojaW5jbHVkZSA8ZGV2L2kyYy9p
 MmN2YXIuaD4NCiNpbmNsdWRlIDxkZXYvc3lzbW9uL3N5c21vbnZhci5oPg0K
 I2luY2x1ZGUgPGRldi9pMmMvc21zY21vbnZhci5oPg0KDQovKg0KICogQSBk
 cml2ZXIgZm9yIFNNU0MgTFBDNDdNMTkyIGhhcmR3YXJlIG1vbml0b3IgYXQg
 U01CdXMuDQogKiBUaGlzIGRyaXZlciBzdXBwb3J0cyA4IFZvbHRhZ2UgYW5k
 IDMgVGVtcGVyYXR1cmUgc2Vuc29ycy4NCiAqIEZhbiBSUE0gbW9uaXRvcmlu
 ZyBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZHJpdmVyIGJlY2F1c2UNCiAq
 IHRoZXkgYXJlIHNlZW4gb24gSVNBIGJ1cy4NCiAqDQogKiBEYXRhc2hlZXQg
 YXZhaWxhYmxlIChhcyBvZiBGZWIuIDIwLCAyMDEwKSBhdA0KICogaHR0cDov
 L3BkZjEuYWxsZGF0YXNoZWV0LmNvbS9kYXRhc2hlZXQtcGRmL3ZpZXcvMTA5
 NzUyL1NNU0MvTFBDNDdNMTkyLU5DLmh0bWwNCiAqLw0KDQpzdGF0aWMgaW50
 IHNtc2Ntb25fbWF0Y2goZGV2aWNlX3QsIGNmZGF0YV90LCB2b2lkICopOw0K
 c3RhdGljIHZvaWQgc21zY21vbl9hdHRhY2goZGV2aWNlX3QsIGRldmljZV90
 LCB2b2lkICopOw0Kc3RhdGljIHVpbnQ4X3Qgc21zY21vbl9yZWFkcmVnKHN0
 cnVjdCBzbXNjbW9uX3NjICosIGludCk7DQpzdGF0aWMgdm9pZCBzbXNjbW9u
 X3dyaXRlcmVnKHN0cnVjdCBzbXNjbW9uX3NjICosIGludCwgaW50KTsNCnN0
 YXRpYyB2b2lkIHNtc2Ntb25fc2Vuc29yc19zZXR1cChzdHJ1Y3Qgc21zY21v
 bl9zYyAqLCBzdHJ1Y3Qgc21zY21vbl9zZW5zb3IgKik7DQpzdGF0aWMgdm9p
 ZCBzbXNjbW9uX3JlZnJlc2hfdm9sdChzdHJ1Y3Qgc21zY21vbl9zYyAqLCBl
 bnZzeXNfZGF0YV90ICopOw0Kc3RhdGljIHZvaWQgc21zY21vbl9yZWZyZXNo
 X3RlbXAoc3RydWN0IHNtc2Ntb25fc2MgKiwgZW52c3lzX2RhdGFfdCAqKTsN
 CnN0YXRpYyB2b2lkIHNtc2Ntb25fcmVmcmVzaChzdHJ1Y3Qgc3lzbW9uX2Vu
 dnN5cyAqLCBlbnZzeXNfZGF0YV90ICopOw0KDQpDRkFUVEFDSF9ERUNMX05F
 VyhzbXNjbW9uLCBzaXplb2Yoc3RydWN0IHNtc2Ntb25fc2MpLA0KICAgIHNt
 c2Ntb25fbWF0Y2gsIHNtc2Ntb25fYXR0YWNoLCBOVUxMLCBOVUxMKTsNCg0K
 c3RhdGljIHN0cnVjdCBzbXNjbW9uX3NlbnNvciBzbXNjbW9uX2xwYzQ3bTE5
 MltdID0gew0KCXsNCgkJLmRlc2MgPSAiKzIuNVYiLA0KCQkudHlwZSA9IEVO
 VlNZU19TVk9MVFNfREMsDQoJCS5yZWcgPSAweDIwLA0KCQkucmVmcmVzaCA9
 IHNtc2Ntb25fcmVmcmVzaF92b2x0LA0KCQkudm1pbiA9ICAgMTMwMDAsDQoJ
 CS52bWF4ID0gMzMyMDAwMA0KCX0sDQoJew0KCQkuZGVzYyA9ICJWY2NwIiwN
 CgkJLnR5cGUgPSBFTlZTWVNfU1ZPTFRTX0RDLA0KCQkucmVnID0gMHgyMSwN
 CgkJLnJlZnJlc2ggPSBzbXNjbW9uX3JlZnJlc2hfdm9sdCwNCgkJLnZtaW4g
 PSAgIDEyMDAwLA0KCQkudm1heCA9IDI5ODgwMDANCgl9LA0KCXsNCgkJLmRl
 c2MgPSAiKzMuM1YiLA0KCQkudHlwZSA9IEVOVlNZU19TVk9MVFNfREMsDQoJ
 CS5yZWcgPSAweDIyLA0KCQkucmVmcmVzaCA9IHNtc2Ntb25fcmVmcmVzaF92
 b2x0LA0KCQkudm1pbiA9ICAgMTcwMDAsDQoJCS52bWF4ID0gNDM4MzAwMA0K
 CX0sDQoJew0KCQkuZGVzYyA9ICIrNVYiLA0KCQkudHlwZSA9IEVOVlNZU19T
 Vk9MVFNfREMsDQoJCS5yZWcgPSAweDIzLA0KCQkucmVmcmVzaCA9IHNtc2Nt
 b25fcmVmcmVzaF92b2x0LA0KCQkudm1pbiA9ICAgMjYwMDAsDQoJCS52bWF4
 ID0gNjY0MDAwMA0KCX0sDQoJew0KCQkuZGVzYyA9ICIrMTJWIiwNCgkJLnR5
 cGUgPSBFTlZTWVNfU1ZPTFRTX0RDLA0KCQkucmVnID0gMHgyNCwNCgkJLnJl
 ZnJlc2ggPSBzbXNjbW9uX3JlZnJlc2hfdm9sdCwNCgkJLnZtaW4gPSAgICA2
 MjAwMCwNCgkJLnZtYXggPSAxNTkzODAwMA0KCX0sDQoJew0KCQkuZGVzYyA9
 ICJWY2MiLA0KCQkudHlwZSA9IEVOVlNZU19TVk9MVFNfREMsDQoJCS5yZWcg
 PSAweDI1LA0KCQkucmVmcmVzaCA9IHNtc2Ntb25fcmVmcmVzaF92b2x0LA0K
 CQkudm1pbiA9ICAgMTcwMDAsDQoJCS52bWF4ID0gNDM4MzAwMA0KCX0sDQoJ
 ew0KCQkuZGVzYyA9ICIrMS41ViIsDQoJCS50eXBlID0gRU5WU1lTX1NWT0xU
 U19EQywNCgkJLnJlZyA9IDB4NTAsDQoJCS5yZWZyZXNoID0gc21zY21vbl9y
 ZWZyZXNoX3ZvbHQsDQoJCS52bWluID0gICAgODAwMCwNCgkJLnZtYXggPSAx
 OTkyMDAwDQoJfSwNCgl7DQoJCS5kZXNjID0gIisxLjhWIiwNCgkJLnR5cGUg
 PSBFTlZTWVNfU1ZPTFRTX0RDLA0KCQkucmVnID0gMHg1MSwNCgkJLnJlZnJl
 c2ggPSBzbXNjbW9uX3JlZnJlc2hfdm9sdCwNCgkJLnZtaW4gPSAgICA5MDAw
 LA0KCQkudm1heCA9IDIzOTEwMDANCgl9LA0KCXsNCgkJLmRlc2MgPSAiUmVt
 b3RlIFRlbXAxIiwNCgkJLnR5cGUgPSBFTlZTWVNfU1RFTVAsDQoJCS5yZWcg
 PSAweDI2LA0KCQkucmVmcmVzaCA9IHNtc2Ntb25fcmVmcmVzaF90ZW1wLA0K
 CQkudm1pbiA9IDAsDQoJCS52bWF4ID0gMA0KCX0sDQoJew0KCQkuZGVzYyA9
 ICJBbWJpZW50IFRlbXAiLA0KCQkudHlwZSA9IEVOVlNZU19TVEVNUCwNCgkJ
 LnJlZyA9IDB4MjcsDQoJCS5yZWZyZXNoID0gc21zY21vbl9yZWZyZXNoX3Rl
 bXAsDQoJCS52bWluID0gMCwNCgkJLnZtYXggPSAwDQoJfSwNCgl7DQoJCS5k
 ZXNjID0gIlJlbW90ZSBUZW1wMiIsDQoJCS50eXBlID0gRU5WU1lTX1NURU1Q
 LA0KCQkucmVnID0gMHg1MiwNCgkJLnJlZnJlc2ggPSBzbXNjbW9uX3JlZnJl
 c2hfdGVtcCwNCgkJLnZtYXggPSAwLA0KCQkudm1pbiA9IDANCgl9LA0KDQoJ
 eyAuZGVzYyA9IE5VTEwgfQ0KfTsNCg0Kc3RhdGljIGludA0Kc21zY21vbl9t
 YXRjaChkZXZpY2VfdCBwYXJlbnQsIGNmZGF0YV90IG1hdGNoLCB2b2lkICph
 dXgpDQp7DQoJc3RydWN0IGkyY19hdHRhY2hfYXJncyAqaWEgPSBhdXg7DQoJ
 dWludDhfdCBjbWQsIGNpZCwgcmV2Ow0KDQoJLyogQWRkcmVzcyBpcyBoYXJk
 d2lyZWQgdG8gMDEwXzExMHggKi8NCglpZiAoKGlhLT5pYV9hZGRyICYgU01T
 Q01PTl9BRERSX01BU0spICE9IFNNU0NNT05fQUREUikNCgkJcmV0dXJuIDA7
 DQoNCglpaWNfYWNxdWlyZV9idXMoaWEtPmlhX3RhZywgMCk7DQoNCgljbWQg
 PSBTTVNDTU9OX1JFR19DT01QQU5ZOw0KCWlmIChpaWNfZXhlYyhpYS0+aWFf
 dGFnLCBJMkNfT1BfUkVBRF9XSVRIX1NUT1AsDQoJICAgIGlhLT5pYV9hZGRy
 LCAmY21kLCBzaXplb2YgY21kLCAmY2lkLCBzaXplb2YgY2lkLCAwKSkgew0K
 CQlpaWNfcmVsZWFzZV9idXMoaWEtPmlhX3RhZywgMCk7DQoJCXJldHVybiAw
 Ow0KCX0NCgljbWQgPSBTTVNDTU9OX1JFR19TVEVQUElORzsNCglpZiAoaWlj
 X2V4ZWMoaWEtPmlhX3RhZywgSTJDX09QX1JFQURfV0lUSF9TVE9QLA0KCSAg
 ICBpYS0+aWFfYWRkciwgJmNtZCwgc2l6ZW9mIGNtZCwgJnJldiwgc2l6ZW9m
 IHJldiwgMCkpIHsNCgkJaWljX3JlbGVhc2VfYnVzKGlhLT5pYV90YWcsIDAp
 Ow0KCQlyZXR1cm4gMDsNCgl9DQoNCglpZiAoIGNpZCAhPSBTTVNDX0NJRF80
 N00xOTIgfHwgcmV2ICE9IFNNU0NfUkVWXzQ3TTE5Mikgew0KCQlpaWNfcmVs
 ZWFzZV9idXMoaWEtPmlhX3RhZywgMCk7DQoJCXJldHVybiAwOw0KCX0NCg0K
 CWlpY19yZWxlYXNlX2J1cyhpYS0+aWFfdGFnLCAwKTsNCglyZXR1cm4gMTsN
 Cn0NCg0Kc3RhdGljIHZvaWQNCnNtc2Ntb25fYXR0YWNoKGRldmljZV90IHBh
 cmVudCwgZGV2aWNlX3Qgc2VsZiwgdm9pZCAqYXV4KQ0Kew0KCXN0cnVjdCBz
 bXNjbW9uX3NjICpzYyA9IGRldmljZV9wcml2YXRlKHNlbGYpOw0KCXN0cnVj
 dCBpMmNfYXR0YWNoX2FyZ3MgKmlhID0gYXV4Ow0KCXVpbnQ4X3QgY2lkLCBy
 ZXY7DQoJaW50IGk7DQoNCglzYy0+c2NfZGV2ID0gc2VsZjsNCglzYy0+c2Nf
 dGFnID0gaWEtPmlhX3RhZzsNCglzYy0+c2NfYWRkciA9IGlhLT5pYV9hZGRy
 Ow0KCXNjLT5zbXNjbW9uX3JlYWRyZWcgPSBzbXNjbW9uX3JlYWRyZWc7DQoJ
 c2MtPnNtc2Ntb25fd3JpdGVyZWcgPSBzbXNjbW9uX3dyaXRlcmVnOw0KCXNj
 LT5zbXNjbW9uX3NlbnNvcnMgPSBOVUxMOw0KDQoJY2lkID0gc2MtPnNtc2Nt
 b25fcmVhZHJlZyhzYywgU01TQ01PTl9SRUdfQ09NUEFOWSk7DQoJcmV2ID0g
 c2MtPnNtc2Ntb25fcmVhZHJlZyhzYywgU01TQ01PTl9SRUdfU1RFUFBJTkcp
 Ow0KCXN3aXRjaCAoY2lkKSB7DQoJY2FzZSBTTVNDX0NJRF80N00xOTI6DQoJ
 CWlmIChyZXYgPT0gU01TQ19SRVZfNDdNMTkyKSB7DQoJCQlzbXNjbW9uX3Nl
 bnNvcnNfc2V0dXAoc2MsIHNtc2Ntb25fbHBjNDdtMTkyKTsNCgkJCWFwcmlu
 dF9ub3JtYWwoIjogTFBDNDdNMTkyIGhhcmR3YXJlIG1vbml0b3JcbiIpOw0K
 CQl9DQoJCWJyZWFrOw0KCWRlZmF1bHQ6DQoJCS8qIHVua25vd24gY2hpcCAq
 Lw0KCQlicmVhazsNCgl9DQoNCglpZiAoc2MtPnNtc2Ntb25fc2Vuc29ycyA9
 PSBOVUxMKSB7DQoJCWFwcmludF9ub3JtYWwoIjogdW5rbm93biBjaGlwOiBj
 aWQgMHglMDJ4IHJldiAweCUwMnhcbiIsDQoJCSAgICBjaWQsIHJldik7DQoJ
 CXJldHVybjsNCgl9DQoNCglpZiAoKHNjLT5zY19zbWUgPSBzeXNtb25fZW52
 c3lzX2NyZWF0ZSgpKSA9PSBOVUxMKSB7DQoJCWFwcmludF9lcnJvcl9kZXYo
 c2MtPnNjX2RldiwNCgkJICAgICJ1bmFibGUgdG8gY3JlYXRlIHN5c21vbiBz
 dHJ1Y3R1cmVcbiIpOw0KCQlyZXR1cm47DQoJfQ0KDQoJZm9yIChpID0gMDsg
 aSA8IHNjLT5udW1zZW5zb3JzOyBpKyspIHsNCgkJaWYgKHN5c21vbl9lbnZz
 eXNfc2Vuc29yX2F0dGFjaChzYy0+c2Nfc21lLCAmc2MtPnNlbnNvcnNbaV0p
 KSB7DQoJCQlhcHJpbnRfZXJyb3JfZGV2KHNjLT5zY19kZXYsDQoJCQkgICAg
 InVuYWJsZSB0byBhdHRhY2ggc2Vuc29yXG4iKTsNCgkJCXN5c21vbl9lbnZz
 eXNfZGVzdHJveShzYy0+c2Nfc21lKTsNCgkJCXJldHVybjsNCgkJfQ0KCX0N
 Cg0KCXNjLT5zY19zbWUtPnNtZV9uYW1lID0gZGV2aWNlX3huYW1lKHNjLT5z
 Y19kZXYpOw0KCXNjLT5zY19zbWUtPnNtZV9jb29raWUgPSBzYzsNCglzYy0+
 c2Nfc21lLT5zbWVfcmVmcmVzaCA9IHNtc2Ntb25fcmVmcmVzaDsNCglpZiAo
 c3lzbW9uX2VudnN5c19yZWdpc3RlcihzYy0+c2Nfc21lKSkgew0KCQlhcHJp
 bnRfZXJyb3JfZGV2KHNjLT5zY19kZXYsDQoJCSAgICAidW5hYmxlIHRvIHJl
 Z2lzdGVyIHdpdGggc3lzbW9uXG4iKTsNCgkJc3lzbW9uX2VudnN5c19kZXN0
 cm95KHNjLT5zY19zbWUpOw0KCQlyZXR1cm47DQoJfQ0KfQ0KDQpzdGF0aWMg
 dWludDhfdA0Kc21zY21vbl9yZWFkcmVnKHN0cnVjdCBzbXNjbW9uX3NjICpz
 YywgaW50IHJlZykNCnsNCgl1aW50OF90IGNtZCwgZGF0YTsNCg0KCWlpY19h
 Y3F1aXJlX2J1cyhzYy0+c2NfdGFnLCAwKTsNCg0KCWNtZCA9IHJlZzsNCglp
 aWNfc21idXNfcmVhZF9ieXRlKHNjLT5zY190YWcsIHNjLT5zY19hZGRyLCBj
 bWQsICZkYXRhLCAwKTsNCg0KCWlpY19yZWxlYXNlX2J1cyhzYy0+c2NfdGFn
 LCAwKTsNCg0KCXJldHVybiBkYXRhOw0KfQ0KDQpzdGF0aWMgdm9pZA0Kc21z
 Y21vbl93cml0ZXJlZyhzdHJ1Y3Qgc21zY21vbl9zYyAqc2MsIGludCByZWcs
 IGludCB2YWwpDQp7DQoJdWludDhfdCBjbWQsIGRhdGE7DQoNCglpaWNfYWNx
 dWlyZV9idXMoc2MtPnNjX3RhZywgMCk7DQoNCgljbWQgPSByZWc7DQoJZGF0
 YSA9IHZhbDsNCglpaWNfc21idXNfd3JpdGVfYnl0ZShzYy0+c2NfdGFnLCBz
 Yy0+c2NfYWRkciwgY21kLCBkYXRhLCAwKTsNCg0KCWlpY19yZWxlYXNlX2J1
 cyhzYy0+c2NfdGFnLCAwKTsNCn0NCg0Kc3RhdGljIHZvaWQNCnNtc2Ntb25f
 c2Vuc29yc19zZXR1cChzdHJ1Y3Qgc21zY21vbl9zYyAqc2MsIHN0cnVjdCBz
 bXNjbW9uX3NlbnNvciAqc2VucykNCnsNCglpbnQgaTsNCg0KCWZvciAoaSA9
 IDA7IHNlbnNbaV0uZGVzYzsgaSsrKSB7DQoJCXN0cmxjcHkoc2MtPnNlbnNv
 cnNbaV0uZGVzYywgc2Vuc1tpXS5kZXNjLA0KCQkgICAgc2l6ZW9mKHNjLT5z
 ZW5zb3JzW2ldLmRlc2MpKTsNCgkJc2MtPnNlbnNvcnNbaV0udW5pdHMgPSBz
 ZW5zW2ldLnR5cGU7DQoJCXNjLT5udW1zZW5zb3JzKys7DQoJfQ0KCXNjLT5z
 bXNjbW9uX3NlbnNvcnMgPSBzZW5zOw0KfQ0KDQpzdGF0aWMgdm9pZA0Kc21z
 Y21vbl9yZWZyZXNoX3ZvbHQoc3RydWN0IHNtc2Ntb25fc2MgKnNjLCBlbnZz
 eXNfZGF0YV90ICplZGF0YSkNCnsNCglzdHJ1Y3Qgc21zY21vbl9zZW5zb3Ig
 KnNlbnMgPSAmc2MtPnNtc2Ntb25fc2Vuc29yc1tlZGF0YS0+c2Vuc29yXTsN
 CglpbnQgZGF0YTsNCg0KCWRhdGEgPSAoKnNjLT5zbXNjbW9uX3JlYWRyZWcp
 KHNjLCBzZW5zLT5yZWcpOw0KCWlmIChkYXRhID09IDB4ZmYpIHsNCgkJZWRh
 dGEtPnN0YXRlID0gRU5WU1lTX1NJTlZBTElEOw0KCX0gZWxzZSB7DQoJCWVk
 YXRhLT52YWx1ZV9jdXIgPQ0KCQkgICAgKHNlbnMtPnZtYXggLSBzZW5zLT52
 bWluKS8yNTUgKiBkYXRhICsgc2Vucy0+dm1pbjsNCgkJZWRhdGEtPnN0YXRl
 ID0gRU5WU1lTX1NWQUxJRDsNCgl9DQp9DQoNCnN0YXRpYyB2b2lkDQpzbXNj
 bW9uX3JlZnJlc2hfdGVtcChzdHJ1Y3Qgc21zY21vbl9zYyAqc2MsIGVudnN5
 c19kYXRhX3QgKmVkYXRhKQ0Kew0KCXN0cnVjdCBzbXNjbW9uX3NlbnNvciAq
 c2VucyA9ICZzYy0+c21zY21vbl9zZW5zb3JzW2VkYXRhLT5zZW5zb3JdOw0K
 CWludCBkYXRhOw0KDQoJZGF0YSA9ICgqc2MtPnNtc2Ntb25fcmVhZHJlZyko
 c2MsIHNlbnMtPnJlZyk7DQoJaWYgKGRhdGEgPT0gMHhmZikgew0KCQllZGF0
 YS0+c3RhdGUgPSBFTlZTWVNfU0lOVkFMSUQ7DQoJfSBlbHNlIHsNCgkJLyog
 Y29udmVydCBkYXRhKGRlZ0MpIHRvIHVLICovDQoJCWVkYXRhLT52YWx1ZV9j
 dXIgPSAyNzMxNTAwMDAgKyAxMDAwMDAwICogZGF0YTsNCgkJZWRhdGEtPnN0
 YXRlID0gRU5WU1lTX1NWQUxJRDsNCgl9DQp9DQoNCnN0YXRpYyB2b2lkDQpz
 bXNjbW9uX3JlZnJlc2goc3RydWN0IHN5c21vbl9lbnZzeXMgKnNtZSwgZW52
 c3lzX2RhdGFfdCAqZWRhdGEpDQp7DQoJc3RydWN0IHNtc2Ntb25fc2MgKnNj
 ID0gc21lLT5zbWVfY29va2llOw0KDQoJc2MtPnNtc2Ntb25fc2Vuc29yc1tl
 ZGF0YS0+c2Vuc29yXS5yZWZyZXNoKHNjLCBlZGF0YSk7DQp9DQo=

 --0-2127810690-1266776621=:6053
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=smscmon.4
 Content-Transfer-Encoding: BASE64
 Content-ID: <Pine.NEB.4.64.1002211023412.6053@quicky.whooppee.com>
 Content-Description: 
 Content-Disposition: ATTACHMENT; FILENAME=smscmon.4

 LlwiCSROZXRCU0Q6IHNtc2MuNCx2IDEuNSAyMDA5LzA1LzEzIDEyOjQyOjAy
 IHdpeiBFeHAgJA0KLlwiDQouXCIgQ29weXJpZ2h0IChjKSAyMDA5IFRha2Fo
 aXJvIEhheWFzaGkNCi5cIiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLlwiDQou
 XCIgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
 eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQouXCIgbW9kaWZpY2F0aW9uLCBh
 cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
 aXRpb25zDQouXCIgYXJlIG1ldDoNCi5cIiAxLiBSZWRpc3RyaWJ1dGlvbnMg
 b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
 dA0KLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
 IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCi5cIiAyLiBSZWRpc3RyaWJ1
 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
 IGNvcHlyaWdodA0KLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
 dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCi5c
 IiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
 dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KLlwiDQouXCIgVEhJUyBT
 T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04s
 IElOQy4gQU5EIENPTlRSSUJVVE9SUw0KLlwiIGBgQVMgSVMnJyBBTkQgQU5Z
 IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
 VCBOT1QgTElNSVRFRA0KLlwiIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
 IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
 TEFSDQouXCIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
 IFNIQUxMIFRIRSBGT1VOREFUSU9OIE9SIENPTlRSSUJVVE9SUw0KLlwiIEJF
 IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
 IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCi5cIiBDT05TRVFVRU5USUFMIERB
 TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
 TUVOVCBPRg0KLlwiIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
 U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KLlwi
 IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
 UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQouXCIgQ09OVFJBQ1QsIFNU
 UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
 IE9SIE9USEVSV0lTRSkNCi5cIiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
 IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
 IFRIRQ0KLlwiIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KLlwiDQou
 RGQgRmVicnVhcnkgMjEsIDIwMTANCi5EdCBTTVNDTU9OIDQNCi5Pcw0KLlNo
 IE5BTUUNCi5ObSBzbXNjbW9uDQouTmQgU3RhbmRhcmQgTWljcm9zeXN0ZW1z
 IENvcnBvcmF0aW9uIExQQzQ3TTE5MiBTdXBlciBJL08NCi5TaCBTWU5PUFNJ
 Uw0KLkNkICJzbXNjbW9uMCBhdCBpaWM/IGFkZHIgMHgyYyINCi5TaCBERVND
 UklQVElPTg0KVGhlDQouTm0NCmRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZv
 ciB0aGUgaGFyZHdhcmUgbW9uaXRvcmluZyBwb3J0aW9uIG9mIHRoZQ0KLlRu
 IFN0YW5kYXJkIE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbg0KTFBDNDdNMTky
 IGFuZCBMUEM0N005OTcgU3VwZXIgSS9PIGNoaXBzIHRvIGJlIHVzZWQgd2l0
 aCB0aGUNCi5YciBlbnZzeXMgNA0KQVBJLg0KLlBwDQpUaGUgY2hpcCBzdXBw
 b3J0cyAxMSBzZW5zb3IgaW5wdXRzOg0KLkJsIC1jb2x1bW4gIlNlbnNvciIg
 IlVuaXRzIiAiVHlwaWNhbCIgLW9mZnNldCBpbmRlbnQNCi5JdCBTeSAiU2Vu
 c29yIiBUYSBTeSAiVW5pdHMiIFRhIFN5ICJUeXBpY2FsIFVzZSINCi5JdCBM
 aSAiKzIuNVYiIFRhICJ1ViBEQyIgVGEgIjIuNVYgU3VwcGx5Ig0KLkl0IExp
 ICJWY2NwIiBUYSAidVYgREMiIFRhICJDUFUgVmNvcmUiDQouSXQgTGkgIisz
 LjNWIiBUYSAidVYgREMiIFRhICIzLjNWIFN1cHBseSINCi5JdCBMaSAiKzVW
 IiBUYSAidVYgREMiIFRhICIlNSBTdXBwbHkiDQouSXQgTGkgIisxMlYiIFRh
 ICJ1ViBEQyIgVGEgIjEyViBTdXBwbHkiDQouSXQgTGkgIlZjYyIgVGEgInVW
 IERDIiBUYSAiQ2hpcCdzIHN1cHBseSB2b2x0YWdlIg0KLkl0IExpICIrMS41
 ViIgVGEgInVWIERDIiBUYSAiMS41ViBTdXBwbHkiDQouSXQgTGkgIisxLjhW
 IiBUYSAidVYgREMiIFRhICIxLjhWIFN1cHBseSINCi5JdCBMaSAiUmVtb3Rl
 IFRlbXAxIiBUYSAidUsiIFRhICJDUFUgdGVtcGVyYXR1cmUiDQouSXQgTGkg
 IkFtYmllbnQgVGVtcCIgVGEgInVLIiBUYSAiTG9jYWwgY2hpcCB0ZW1wZXJh
 dHVyZSINCi5JdCBMaSAiUmVtb3RlIFRlbXAyIiBUYSAidUsiDQouRWwNCi5T
 aCBTRUUgQUxTTw0KLlhyIGVudnN5cyA0ICwNCi5YciBlbnZzdGF0IDgNCi5T
 aCBISVNUT1JZDQpUaGUNCi5ObQ0KZGV2aWNlIGFwcGVhcmVkIGluDQouTngg
 Ni4wIC4NCi5TaCBBVVRIT1INClRoZQ0KLk5tDQpkcml2ZXIgd2FzIHdyaXR0
 ZW4gYnkgVGFrYWhpcm8gSGF5YXNoaS4NCg==

 --0-2127810690-1266776621=:6053--

From: Takahiro HAYASHI <hash@abox3.so-net.ne.jp>
To: paul@whooppee.com
Cc: tkhr.hash@gmail.com, John Nemeth <jnemeth@netbsd.org>,
        gnats-bugs@netbsd.org
Subject: Re: kern/40420
Date: Mon, 22 Feb 2010 02:48:03 +0900

 Hello,

 Sorry for late response.

 On Sat, 20 Feb 2010 07:19:53 -0800 (PST)
 Paul Goyette <paul@whooppee.com> wrote:

 > John,
 > 
 > Any reason you haven't gotten back to this since last year?  :)  Any 
 > objection if I pick it up from you?
 > 
 > Hayashi-san,
 > 
 > And any objection if I rename smcstemp to smcs?  The sensor appears to 
 > provide a lot of voltage readings, as well as temperatures!

 I'm afraid that the name "smsc" will conflict with sys/dev/isa/smsc.c.
 That's why I name this driver "smsctemp".
 As you say, name of "smsctemp" may not be suitable, i think.
 How about "smschwmon"?

 -- 
 <hash@abox3.so-net.ne.jp>

From: Takahiro HAYASHI <hash@abox3.so-net.ne.jp>
To: paul@whooppee.com
Cc: hash@abox3.so-net.ne.jp, tkhr.hash@gmail.com,
        John Nemeth <jnemeth@netbsd.org>, gnats-bugs@netbsd.org
Subject: Re: kern/40420
Date: Mon, 22 Feb 2010 12:31:49 +0900

 Hello,

 On Sun, 21 Feb 2010 10:24:03 -0800 (PST)
 Paul Goyette <paul@whooppee.com> wrote:

 > > I'm afraid that the name "smsc" will conflict with sys/dev/isa/smsc.c.
 > > That's why I name this driver "smsctemp".
 > > As you say, name of "smsctemp" may not be suitable, i think.
 > > How about "smschwmon"?
 > 
 > Yes, I found that the hard way!
 > 
 > I have taken the liberty of renaming it to smcsmon(4).  I've made a few 
 > other minor changes in the sources (most notably, I replaced the calls 
 > to iic_exec() with calls to iic_smbus_{read,write}_byte()) and I've 
 > written a basic smcsmon(4) man page.  The rest of the code looked pretty 
 > clean to me.  (I personally don't like using the
 > 
 >  	{ member1 = value1, member2 = value2, ... }
 > 
 > method of initializing the array of sensor descriptors, but it is done 
 > that way in other drivers, so I left it alone.)

 I agree with the name smscmon. (I like short name.)
 Thank you for consideration and writing man page.

 > I have attached the revised files here - please let me know if this 
 > meets with your approval, and I will commit.

 SYNOPSYS in smscmon.4 may be changed to:

 -.Cd "smscmon0 at iic? addr 0x2c"
 +.Cd "smscmon0 at iic? addr 0x2d"

 because on my D945GCLF board smscmon is seen at iic addr 0x2d.
 No other problems are found, please commit.

 -- 
 Takahiro Hayashi <hash@abox3.so-net.ne.jp>

From: Paul Goyette <paul@whooppee.com>
To: Takahiro HAYASHI <hash@abox3.so-net.ne.jp>
Cc: tkhr.hash@gmail.com, John Nemeth <jnemeth@netbsd.org>, 
    gnats-bugs@netbsd.org
Subject: Re: kern/40420
Date: Sun, 21 Feb 2010 19:38:10 -0800 (PST)

 On Mon, 22 Feb 2010, Takahiro HAYASHI wrote:

 > Hello,
 >
 > On Sun, 21 Feb 2010 10:24:03 -0800 (PST)
 > Paul Goyette <paul@whooppee.com> wrote:
 >
 >>> I'm afraid that the name "smsc" will conflict with sys/dev/isa/smsc.c.
 >>> That's why I name this driver "smsctemp".
 >>> As you say, name of "smsctemp" may not be suitable, i think.
 >>> How about "smschwmon"?
 >>
 >> Yes, I found that the hard way!
 >>
 >> I have taken the liberty of renaming it to smcsmon(4).  I've made a few
 >> other minor changes in the sources (most notably, I replaced the calls
 >> to iic_exec() with calls to iic_smbus_{read,write}_byte()) and I've
 >> written a basic smcsmon(4) man page.  The rest of the code looked pretty
 >> clean to me.  (I personally don't like using the
 >>
 >>  	{ member1 = value1, member2 = value2, ... }
 >>
 >> method of initializing the array of sensor descriptors, but it is done
 >> that way in other drivers, so I left it alone.)
 >
 > I agree with the name smscmon. (I like short name.)
 > Thank you for consideration and writing man page.
 >
 >> I have attached the revised files here - please let me know if this
 >> meets with your approval, and I will commit.
 >
 > SYNOPSYS in smscmon.4 may be changed to:
 >
 > -.Cd "smscmon0 at iic? addr 0x2c"
 > +.Cd "smscmon0 at iic? addr 0x2d"
 >
 > because on my D945GCLF board smscmon is seen at iic addr 0x2d.
 > No other problems are found, please commit.

 Great!

 I think I will leave _both_ addresses in the man page, since the 
 datasheet states that the address is 101_110x where x is the state of 
 one of the input pins.

 I will commit soon.

 Thanks for submitting this driver!


 -------------------------------------------------------------------------
 |   Paul Goyette   | PGP DSS Key fingerprint: |  E-mail addresses:      |
 | Customer Service | FA29 0E3B 35AF E8AE 6651 |  paul at whooppee.com   |
 | Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at juniper.net |
 | Kernel Developer |                          | pgoyette at netbsd.org  |
 -------------------------------------------------------------------------

From: Paul Goyette <pgoyette@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/40420 CVS commit: src/sys/dev/i2c
Date: Mon, 22 Feb 2010 03:50:56 +0000

 Module Name:	src
 Committed By:	pgoyette
 Date:		Mon Feb 22 03:50:56 UTC 2010

 Modified Files:
 	src/sys/dev/i2c: files.i2c
 Added Files:
 	src/sys/dev/i2c: smscmon.c smscmonvar.h

 Log Message:
 Import smcsmon(4) driver for SMSC LPC47M192 hardware monitor

 From Takahiro HAYASHI in PR kern/40420


 To generate a diff of this commit:
 cvs rdiff -u -r1.25 -r1.26 src/sys/dev/i2c/files.i2c
 cvs rdiff -u -r0 -r1.1 src/sys/dev/i2c/smscmon.c src/sys/dev/i2c/smscmonvar.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: analyzed->closed
State-Changed-By: pgoyette@NetBSD.org
State-Changed-When: Mon, 22 Feb 2010 03:55:37 +0000
State-Changed-Why:
Modified version of driver imported, with original author's concurrence.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.