Module Name:    src
Committed By:   macallan
Date:           Sun Jul 12 06:38:57 UTC 2020

Modified Files:
        src/sys/dev/i2c: dbcool.c

Log Message:
get sensor names from device properties if possible


To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.55 src/sys/dev/i2c/dbcool.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/dbcool.c
diff -u src/sys/dev/i2c/dbcool.c:1.54 src/sys/dev/i2c/dbcool.c:1.55
--- src/sys/dev/i2c/dbcool.c:1.54	Wed Feb  6 08:37:12 2019
+++ src/sys/dev/i2c/dbcool.c	Sun Jul 12 06:38:56 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: dbcool.c,v 1.54 2019/02/06 08:37:12 martin Exp $ */
+/*	$NetBSD: dbcool.c,v 1.55 2020/07/12 06:38:56 macallan Exp $ */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -50,7 +50,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dbcool.c,v 1.54 2019/02/06 08:37:12 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dbcool.c,v 1.55 2020/07/12 06:38:56 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -775,6 +775,7 @@ dbcool_attach(device_t parent, device_t 
 	sc->sc_dc.dc_readreg = dbcool_readreg;
 	sc->sc_dc.dc_writereg = dbcool_writereg;
 	sc->sc_dev = self;
+	sc->sc_prop = args->ia_prop;
 
 	if (dbcool_chip_ident(&sc->sc_dc) < 0 || sc->sc_dc.dc_chip == NULL)
 		panic("could not identify chip at addr %d", args->ia_addr);
@@ -1689,10 +1690,18 @@ dbcool_attach_sensor(struct dbcool_softc
 {
 	int name_index;
 	int error = 0;
+	char name[8];
+	const char *desc;
 
 	name_index = sc->sc_dc.dc_chip->table[idx].name_index;
-	strlcpy(sc->sc_sensor[idx].desc, dbc_sensor_names[name_index],
-		sizeof(sc->sc_sensor[idx].desc));
+	snprintf(name, 7, "s%02x", sc->sc_dc.dc_chip->table[idx].reg.val_reg);
+	if (prop_dictionary_get_cstring_nocopy(sc->sc_prop, name, &desc)) {
+		 strlcpy(sc->sc_sensor[idx].desc, desc,
+			sizeof(sc->sc_sensor[idx].desc));
+	} else {
+		strlcpy(sc->sc_sensor[idx].desc, dbc_sensor_names[name_index],
+			sizeof(sc->sc_sensor[idx].desc));
+	}
 	sc->sc_regs[idx] = &sc->sc_dc.dc_chip->table[idx].reg;
 	sc->sc_nom_volt[idx] = sc->sc_dc.dc_chip->table[idx].nom_volt_index;
 
@@ -1721,9 +1730,12 @@ dbcool_attach_temp_control(struct dbcool
 
 	/* create sysctl node for the sensor if not one already there */
 	if (sc->sc_sysctl_num[j] == -1) {
+		int name_index = sc->sc_dc.dc_chip->table[idx].name_index;
+		
 		ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL, &me2,
 				     CTLFLAG_READWRITE,
-				     CTLTYPE_NODE, sc->sc_sensor[j].desc, NULL,
+				     CTLTYPE_NODE, dbc_sensor_names[name_index],
+				     sc->sc_sensor[j].desc,
 				     NULL, 0, NULL, 0,
 				     CTL_HW, sc->sc_root_sysctl_num, CTL_CREATE,
 					CTL_EOL);

Reply via email to