diff --git a/doc/libsensors-API.txt b/doc/libsensors-API.txt index 06e38606..329d5461 100644 --- a/doc/libsensors-API.txt +++ b/doc/libsensors-API.txt @@ -7,6 +7,8 @@ authors can quickly figure out how to test for the availability of a given new feature. 0x402 lm-sensors SVN +* Added bus type "acpi": + #define SENSORS_BUS_TYPE_ACPI * Added support for instantaneous power sensors enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST diff --git a/lib/access.c b/lib/access.c index 231d5355..78503360 100644 --- a/lib/access.c +++ b/lib/access.c @@ -362,6 +362,8 @@ const char *sensors_get_adapter_name(const sensors_bus_id *bus) return "SPI adapter"; case SENSORS_BUS_TYPE_VIRTUAL: return "Virtual device"; + case SENSORS_BUS_TYPE_ACPI: + return "ACPI interface"; } /* bus types with several instances */ diff --git a/lib/data.c b/lib/data.c index 6b6203e8..df58242d 100644 --- a/lib/data.c +++ b/lib/data.c @@ -109,6 +109,8 @@ int sensors_parse_chip_name(const char *name, sensors_chip_name *res) res->bus.type = SENSORS_BUS_TYPE_SPI; else if (!strncmp(name, "virtual", dash - name)) res->bus.type = SENSORS_BUS_TYPE_VIRTUAL; + else if (!strncmp(name, "acpi", dash - name)) + res->bus.type = SENSORS_BUS_TYPE_ACPI; else goto ERROR; name = dash + 1; @@ -172,6 +174,9 @@ int sensors_snprintf_chip_name(char *str, size_t size, case SENSORS_BUS_TYPE_VIRTUAL: return snprintf(str, size, "%s-virtual-%x", chip->prefix, chip->addr); + case SENSORS_BUS_TYPE_ACPI: + return snprintf(str, size, "%s-acpi-%x", chip->prefix, + chip->addr); } return -SENSORS_ERR_CHIP_NAME; diff --git a/lib/sensors.h b/lib/sensors.h index e770fa99..04236abe 100644 --- a/lib/sensors.h +++ b/lib/sensors.h @@ -42,6 +42,7 @@ #define SENSORS_BUS_TYPE_PCI 2 #define SENSORS_BUS_TYPE_SPI 3 #define SENSORS_BUS_TYPE_VIRTUAL 4 +#define SENSORS_BUS_TYPE_ACPI 5 #define SENSORS_BUS_NR_ANY (-1) #define SENSORS_BUS_NR_IGNORE (-2) diff --git a/lib/sysfs.c b/lib/sysfs.c index de578694..7f805a80 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -596,6 +596,11 @@ static int sensors_read_one_sysfs_chip(const char *dev_path, entry.chip.addr = 0; entry.chip.bus.type = SENSORS_BUS_TYPE_ISA; entry.chip.bus.nr = 0; + } else if (subsys && !strcmp(subsys, "acpi")) { + entry.chip.bus.type = SENSORS_BUS_TYPE_ACPI; + /* For now we assume that acpi devices are unique */ + entry.chip.bus.nr = 0; + entry.chip.addr = 0; } else { /* Ignore unknown device */ err = 0;