[lm-sensors] [PATCH 4/4] libsensors4: Add support for SPI adapters
Jean Delvare
khali at linux-fr.org
Fri Aug 17 17:25:43 CEST 2007
Add support for hardware monitoring chips on SPI buses.
SPI bus statements in the configuration file are not yet supported, as
SPI buses don't have a name attribute yet, it's not possible to identify
them and thus no substitution is possible.
---
lib/access.c | 4 ++++
lib/data.c | 12 +++++++++---
lib/sensors.h | 1 +
lib/sysfs.c | 4 ++++
4 files changed, 18 insertions(+), 3 deletions(-)
--- lm-sensors-3.orig/lib/data.c 2007-08-17 14:21:37.000000000 +0200
+++ lm-sensors-3/lib/data.c 2007-08-17 16:50:08.000000000 +0200
@@ -106,15 +106,18 @@ int sensors_parse_chip_name(const char *
res->bus.type = SENSORS_BUS_TYPE_ISA;
else if (!strncmp(name, "pci", dash - name))
res->bus.type = SENSORS_BUS_TYPE_PCI;
+ else if (!strncmp(name, "spi", dash - name))
+ res->bus.type = SENSORS_BUS_TYPE_SPI;
else
goto ERROR;
name = dash + 1;
- /* Some bus types (i2c) have an additional bus number. For these, the
- next part is either a "*" (any bus of that type) or a decimal
- number. */
+ /* Some bus types (i2c, spi) have an additional bus number.
+ For these, the next part is either a "*" (any bus of that type)
+ or a decimal number. */
switch (res->bus.type) {
case SENSORS_BUS_TYPE_I2C:
+ case SENSORS_BUS_TYPE_SPI:
if (!strncmp(name, "*-", 2)) {
res->bus.nr = SENSORS_BUS_NR_ANY;
name += 2;
@@ -162,6 +165,9 @@ int sensors_snprintf_chip_name(char *str
case SENSORS_BUS_TYPE_I2C:
return snprintf(str, size, "%s-i2c-%hd-%02x", chip->prefix,
chip->bus.nr, chip->addr);
+ case SENSORS_BUS_TYPE_SPI:
+ return snprintf(str, size, "%s-spi-%hd-%x", chip->prefix,
+ chip->bus.nr, chip->addr);
}
return -SENSORS_ERR_CHIP_NAME;
--- lm-sensors-3.orig/lib/sensors.h 2007-08-17 14:21:37.000000000 +0200
+++ lm-sensors-3/lib/sensors.h 2007-08-17 14:29:53.000000000 +0200
@@ -33,6 +33,7 @@
#define SENSORS_BUS_TYPE_I2C 0
#define SENSORS_BUS_TYPE_ISA 1
#define SENSORS_BUS_TYPE_PCI 2
+#define SENSORS_BUS_TYPE_SPI 3
#define SENSORS_BUS_NR_ANY (-1)
#define SENSORS_BUS_NR_IGNORE (-2)
--- lm-sensors-3.orig/lib/access.c 2007-08-17 14:21:37.000000000 +0200
+++ lm-sensors-3/lib/access.c 2007-08-17 16:22:25.000000000 +0200
@@ -322,6 +322,10 @@ const char *sensors_get_adapter_name(con
return "ISA adapter";
case SENSORS_BUS_TYPE_PCI:
return "PCI adapter";
+ /* SPI should not be here, but for now SPI adapters have no name
+ so we don't have any custom string to return. */
+ case SENSORS_BUS_TYPE_SPI:
+ return "SPI adapter";
}
/* bus types with several instances */
--- lm-sensors-3.orig/lib/sysfs.c 2007-08-17 14:29:21.000000000 +0200
+++ lm-sensors-3/lib/sysfs.c 2007-08-17 14:42:10.000000000 +0200
@@ -252,6 +252,10 @@ static int sensors_read_one_sysfs_chip(s
sysfs_close_attribute(bus_attr);
}
}
+ } else if (sscanf(dev->name, "spi%hd.%d", &entry.chip.bus.nr,
+ &entry.chip.addr) == 2) {
+ /* SPI */
+ entry.chip.bus.type = SENSORS_BUS_TYPE_SPI;
} else if (sscanf(dev->name, "%*[a-z0-9_].%d", &entry.chip.addr) == 1) {
/* must be new ISA (platform driver) */
entry.chip.bus.type = SENSORS_BUS_TYPE_ISA;
--
Jean Delvare
More information about the lm-sensors
mailing list