
The adt7310/adt7320 is the SPI version of the adt7410/adt7420. The register map layout is a bit different, i.e. the register addresses differ between the two variants, but the bit layouts of the individual registers are identical. So both chip variants can easily be supported by the same driver. The issue of non matching register address layouts is solved by a simple look-up table which translates the I2C addresses to the SPI addresses. The patch moves the bulk of the adt7410 driver to a common module that will be shared by the adt7410 and adt7310 drivers. This common module implements the driver logic and uses a set of virtual functions to perform IO access. The adt7410 and adt7310 driver modules provide proper implementations of these IO accessor functions for I2C respective SPI. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Reviewed-by: Hartmut Knaack <knaack.h@gmx.de> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
3.1 KiB
Kernel driver adt7410
Supported chips:
- Analog Devices ADT7410 Prefix: 'adt7410' Addresses scanned: None Datasheet: Publicly available at the Analog Devices website http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf
- Analog Devices ADT7420 Prefix: 'adt7420' Addresses scanned: None Datasheet: Publicly available at the Analog Devices website http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf
- Analog Devices ADT7310 Prefix: 'adt7310' Addresses scanned: None Datasheet: Publicly available at the Analog Devices website http://www.analog.com/static/imported-files/data_sheets/ADT7310.pdf
- Analog Devices ADT7320 Prefix: 'adt7320' Addresses scanned: None Datasheet: Publicly available at the Analog Devices website http://www.analog.com/static/imported-files/data_sheets/ADT7320.pdf
Author: Hartmut Knaack knaack.h@gmx.de
Description
The ADT7310/ADT7410 is a temperature sensor with rated temperature range of -55°C to +150°C. It has a high accuracy of +/-0.5°C and can be operated at a resolution of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an INT pin to indicate that a minimum or maximum temperature set point has been exceeded, as well as a critical temperature (CT) pin to indicate that the critical temperature set point has been exceeded. Both pins can be set up with a common hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events. Both pins can individually set to be active-low or active-high, while the whole device can either run in comparator mode or interrupt mode. The ADT7410 supports continuous temperature sampling, as well as sampling one temperature value per second or even just get one sample on demand for power saving. Besides, it can completely power down its ADC, if power management is required.
The ADT7320/ADT7420 is register compatible, the only differences being the package, a slightly narrower operating temperature range (-40°C to +150°C), and a better accuracy (0.25°C instead of 0.50°C.)
The difference between the ADT7310/ADT7320 and ADT7410/ADT7420 is the control interface, the ADT7310 and ADT7320 use SPI while the ADT7410 and ADT7420 use I2C.
Configuration Notes
Since the device uses one hysteresis value, which is an offset to minimum, maximum and critical temperature, it can only be set for temp#_max_hyst. However, temp#_min_hyst and temp#_crit_hyst show their corresponding hysteresis. The device is set to 16 bit resolution and comparator mode.
sysfs-Interface
temp#_input - temperature input temp#_min - temperature minimum setpoint temp#_max - temperature maximum setpoint temp#_crit - critical temperature setpoint temp#_min_hyst - hysteresis for temperature minimum (read-only) temp#_max_hyst - hysteresis for temperature maximum (read/write) temp#_crit_hyst - hysteresis for critical temperature (read-only) temp#_min_alarm - temperature minimum alarm flag temp#_max_alarm - temperature maximum alarm flag temp#_crit_alarm - critical temperature alarm flag