Commit graph

12 commits

Author SHA1 Message Date
Guenter Roeck
eec752b2b9 hwmon: (pmbus) Initialize sysfs attributes
Initialize sysfs attrs before device_create_file() call to suppress
lockdep_init_map() warning:

WARNING: at kernel/lockdep.c:2701 lockdep_init_map+0x12d/0x140()

Reviewed-by: Robert Coulson <robert.coulson@ericsson.com>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Cc: stable@kernel.org # .39.x
2011-05-27 02:24:54 -07:00
Guenter Roeck
6586b14c7b hwmon: (pmbus) Use device specific function to read fan configuration
Fan control implementation tends to be device specific, so start using
the device specific function call to read fan configuration registers.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Reviewed-by: Tom Grennan <tom.grennan@ericsson.com>
2011-05-19 08:19:39 -07:00
Guenter Roeck
2cfa6aedb3 hwmon: (pmbus) Expand scope of device specific get_status function
Some devices use non-standard registers to access various functionality.
This does not only affect status registers, but other registers as well.
Rename local get_status function to get_byte_data to reflect this requirement.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Reviewed-by: Tom Grennan <tom.grennan@ericsson.com>
2011-05-19 08:19:38 -07:00
Guenter Roeck
b4ce237b7f hwmon: (pmbus) Introduce infrastructure to detect sensors and limit registers
This commit replaces hard-coded sensor and limit register detection code
with table based sensor detection. This change eliminates code block repetition
and reduces code size.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Reviewed-by: Tom Grennan <tom.grennan@ericsson.com>
2011-05-19 08:19:37 -07:00
Guenter Roeck
3b17857dfb hwmon: (pmbus) Removed unused variable from struct pmbus_data
struct pmbus_data included an unused variable named status_bits.
Remove it.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Reviewed-by: Tom Grennan <tom.grennan@ericsson.com>
2011-04-19 08:49:56 -07:00
Guenter Roeck
3506999e2f hwmon: (pmbus) Fix temperature limit register access
Commit 8677011 added auto-update to temperature limit registers.
Unfortunately, the update flag is also used to determine if an attribute
is writable, which results in read-only temperature limit registers.
To fix the problem, pass 'readonly' as separate flag to the function used
to add sensor attributes.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
2011-03-26 09:53:56 -07:00
Guenter Roeck
9f6ad1ce64 hwmon: (pmbus) Fix LINEAR16 data format
LINEAR16 data format is unsigned, not signed. Impact is that affected
attributes report negative values in the upper half of the supported
value range.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
2011-03-14 22:39:11 -07:00
Guenter Roeck
8677011a5d hwmon: (pmbus) Continuously update temperature limit registers
PMBus only has one set of limit registers for up to three temperature sensors.
Thus, changing a limit for one of the temperature sensors affects limits for
other temperature sensors in the same page (and potentially multiple pages
depending on the chip implementation). To handle this situation, re-read all
temperature limit registers when updating sensor data. This way, all affected
temperature limits are updated whenever the limit for a single sensor is
changed.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
2011-03-14 22:39:10 -07:00
Guenter Roeck
b49547a5df hwmon: (pmbus) Improve support for paged temperature sensors
Assumption so far was that PMBus devices would support TEMP2 and TEMP3 registers
only on page 0, and that only the TEMP1 register would be used/supported
on other pages.

Turns out that is not correct. UCD92xx devices support TEMP1 and TEMP2 on
page 0, and TEMP2 on other pages. So it is necessary to change the core code
such that it does not make a page based assumptions about temperature register
support.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
2011-03-14 22:39:09 -07:00
Guenter Roeck
954df6763c hwmon: (pmbus) Improve support for paged fans
So far, it seemed like fans would either all be in page 0, or that
there would be one page per fan.

Turns out this was a wrong assumption. There is at least one PMBus
fan controller which supports three pages with four fans each.
Update code to handle this situation.

Reported-by: Greg Schnorr <gschnorr@cisco.com>
Tested-by: Greg Schnorr <gschnorr@cisco.com>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Acked-by: Greg Schnorr <gschnorr@cisco.com>
2011-03-14 22:39:09 -07:00
Guenter Roeck
83274c68a3 hwmon: (pmbus) More stringent checking of VOUT_MODE register
Some PMBus chips do not support the VOUT_MODE register. To make matters worse,
such chips may not return an error when reading the register either, but instead
return 0xff.

Check if the register exists using pmbus_check_byte_register() before reading
its value. In addition, validate the returned value and ignore it if it is 0xff
(which is invalid).

Reported-by: Greg Schnorr <gschnorr@cisco.com>
Tested-by: Greg Schnorr <gschnorr@cisco.com>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Acked-by: Greg Schnorr <gschnorr@cisco.com>
2011-03-14 22:39:08 -07:00
Guenter Roeck
442aba7872 hwmon: PMBus device driver
This driver adds support for hardware monitoring features of various PMBus
devices.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
2011-03-14 22:36:26 -07:00