Module Name: src
Committed By: macallan
Date: Fri Sep 29 14:17:47 UTC 2017
Modified Files:
src/sys/dev/i2c: adm1021.c
Log Message:
get sensor descriptions from OpenFirmware if we know how
this needs to be generalized
To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/dev/i2c/adm1021.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/i2c/adm1021.c
diff -u src/sys/dev/i2c/adm1021.c:1.15 src/sys/dev/i2c/adm1021.c:1.16
--- src/sys/dev/i2c/adm1021.c:1.15 Wed Sep 20 22:44:28 2017
+++ src/sys/dev/i2c/adm1021.c Fri Sep 29 14:17:47 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: adm1021.c,v 1.15 2017/09/20 22:44:28 macallan Exp $ */
+/* $NetBSD: adm1021.c,v 1.16 2017/09/29 14:17:47 macallan Exp $ */
/* $OpenBSD: adm1021.c,v 1.27 2007/06/24 05:34:35 dlg Exp $ */
/*
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: adm1021.c,v 1.15 2017/09/20 22:44:28 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: adm1021.c,v 1.16 2017/09/29 14:17:47 macallan Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -47,6 +47,14 @@ __KERNEL_RCSID(0, "$NetBSD: adm1021.c,v
#include <dev/i2c/i2cvar.h>
+#ifdef macppc
+#define HAVE_OF 1
+#endif
+
+#ifdef HAVE_OF
+#include <dev/ofw/openfirm.h>
+#endif
+
/* Registers */
#define ADM1021_INT_TEMP 0x00 /* Internal temperature value */
#define ADM1021_EXT_TEMP 0x01 /* External temperature value */
@@ -322,7 +330,10 @@ admtemp_attach(device_t parent, device_t
struct i2c_attach_args *ia = aux;
uint8_t cmd, data, stat, comp, rev;
char name[ADMTEMP_NAMELEN];
-
+#ifdef HAVE_OF
+ char ename[64], iname[64];
+ int ch;
+#endif
sc->sc_tag = ia->ia_tag;
sc->sc_addr = ia->ia_addr;
@@ -384,10 +395,27 @@ admtemp_attach(device_t parent, device_t
sc->sc_sensor[ADMTEMP_EXT].units = ENVSYS_STEMP;
sc->sc_sensor[ADMTEMP_INT].flags = ENVSYS_FMONLIMITS;
sc->sc_sensor[ADMTEMP_EXT].flags = ENVSYS_FMONLIMITS;
+#ifdef HAVE_OF
+ strcpy(iname, "internal");
+ strcpy(ename, "external");
+ ch = OF_child(ia->ia_cookie);
+ if (ch != 0) {
+ OF_getprop(ch, "location", iname, 64);
+ ch = OF_peer(ch);
+ if (ch != 0) {
+ OF_getprop(ch, "location", ename, 64);
+ }
+ }
+ strlcpy(sc->sc_sensor[ADMTEMP_INT].desc, iname,
+ sizeof(sc->sc_sensor[ADMTEMP_INT].desc));
+ strlcpy(sc->sc_sensor[ADMTEMP_EXT].desc, ename,
+ sizeof(sc->sc_sensor[ADMTEMP_EXT].desc));
+#else
strlcpy(sc->sc_sensor[ADMTEMP_INT].desc, "internal",
sizeof(sc->sc_sensor[ADMTEMP_INT].desc));
strlcpy(sc->sc_sensor[ADMTEMP_EXT].desc, "external",
sizeof(sc->sc_sensor[ADMTEMP_EXT].desc));
+#endif
sc->sc_sme = sysmon_envsys_create();
if (sysmon_envsys_sensor_attach(
sc->sc_sme, &sc->sc_sensor[ADMTEMP_INT])) {