[PATCH 4/4] libsensors4: Add support for SPI adapters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux