Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/i2c get sensor names from device properties if possible
details: https://anonhg.NetBSD.org/src/rev/664da8172403
branches: trunk
changeset: 973766:664da8172403
user: macallan <macallan%NetBSD.org@localhost>
date: Sun Jul 12 06:38:56 2020 +0000
description:
get sensor names from device properties if possible
diffstat:
sys/dev/i2c/dbcool.c | 22 +++++++++++++++++-----
1 files changed, 17 insertions(+), 5 deletions(-)
diffs (61 lines):
diff -r 1d8045f2987b -r 664da8172403 sys/dev/i2c/dbcool.c
--- a/sys/dev/i2c/dbcool.c Sun Jul 12 06:37:39 2020 +0000
+++ b/sys/dev/i2c/dbcool.c Sun Jul 12 06:38:56 2020 +0000
@@ -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 @@
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 @@
{
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 @@
/* 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);
Home |
Main Index |
Thread Index |
Old Index