1

hwmon: (pmbus/adm1275) add adm1281 support

Add support for adm1281 which is similar to adm1275 and other chips
of the series.

Signed-off-by: Jose Ramon San Buenaventura <jose.sanbuenaventura@analog.com>
Link: https://lore.kernel.org/r/20240425070948.25788-3-jose.sanbuenaventura@analog.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Jose Ramon San Buenaventura 2024-04-25 15:09:48 +08:00 committed by Guenter Roeck
parent 379bb1f4d5
commit 9163009027
3 changed files with 18 additions and 7 deletions

View File

@ -43,6 +43,14 @@ Supported chips:
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1278.pdf Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1278.pdf
* Analog Devices ADM1281
Prefix: 'adm1281'
Addresses scanned: -
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/adm1281.pdf
* Analog Devices ADM1293/ADM1294 * Analog Devices ADM1293/ADM1294
Prefix: 'adm1293', 'adm1294' Prefix: 'adm1293', 'adm1294'
@ -58,10 +66,10 @@ Description
----------- -----------
This driver supports hardware monitoring for Analog Devices ADM1075, ADM1272, This driver supports hardware monitoring for Analog Devices ADM1075, ADM1272,
ADM1275, ADM1276, ADM1278, ADM1293, and ADM1294 Hot-Swap Controller and ADM1275, ADM1276, ADM1278, ADM1281, ADM1293, and ADM1294 Hot-Swap Controller and
Digital Power Monitors. Digital Power Monitors.
ADM1075, ADM1272, ADM1275, ADM1276, ADM1278, ADM1293, and ADM1294 are hot-swap ADM1075, ADM1272, ADM1275, ADM1276, ADM1278, ADM1281, ADM1293, and ADM1294 are hot-swap
controllers that allow a circuit board to be removed from or inserted into controllers that allow a circuit board to be removed from or inserted into
a live backplane. They also feature current and voltage readback via an a live backplane. They also feature current and voltage readback via an
integrated 12 bit analog-to-digital converter (ADC), accessed using a integrated 12 bit analog-to-digital converter (ADC), accessed using a
@ -144,5 +152,5 @@ temp1_highest Highest observed temperature.
temp1_reset_history Write any value to reset history. temp1_reset_history Write any value to reset history.
Temperature attributes are supported on ADM1272 and Temperature attributes are supported on ADM1272 and
ADM1278. ADM1278, and ADM1281.
======================= ======================================================= ======================= =======================================================

View File

@ -51,8 +51,8 @@ config SENSORS_ADM1275
tristate "Analog Devices ADM1275 and compatibles" tristate "Analog Devices ADM1275 and compatibles"
help help
If you say yes here you get hardware monitoring support for Analog If you say yes here you get hardware monitoring support for Analog
Devices ADM1075, ADM1272, ADM1275, ADM1276, ADM1278, ADM1293, Devices ADM1075, ADM1272, ADM1275, ADM1276, ADM1278, ADM1281,
and ADM1294 Hot-Swap Controller and Digital Power Monitors. ADM1293, and ADM1294 Hot-Swap Controller and Digital Power Monitors.
This driver can also be built as a module. If so, the module will This driver can also be built as a module. If so, the module will
be called adm1275. be called adm1275.

View File

@ -18,7 +18,7 @@
#include <linux/log2.h> #include <linux/log2.h>
#include "pmbus.h" #include "pmbus.h"
enum chips { adm1075, adm1272, adm1275, adm1276, adm1278, adm1293, adm1294 }; enum chips { adm1075, adm1272, adm1275, adm1276, adm1278, adm1281, adm1293, adm1294 };
#define ADM1275_MFR_STATUS_IOUT_WARN2 BIT(0) #define ADM1275_MFR_STATUS_IOUT_WARN2 BIT(0)
#define ADM1293_MFR_STATUS_VAUX_UV_WARN BIT(5) #define ADM1293_MFR_STATUS_VAUX_UV_WARN BIT(5)
@ -482,6 +482,7 @@ static const struct i2c_device_id adm1275_id[] = {
{ "adm1275", adm1275 }, { "adm1275", adm1275 },
{ "adm1276", adm1276 }, { "adm1276", adm1276 },
{ "adm1278", adm1278 }, { "adm1278", adm1278 },
{ "adm1281", adm1281 },
{ "adm1293", adm1293 }, { "adm1293", adm1293 },
{ "adm1294", adm1294 }, { "adm1294", adm1294 },
{ } { }
@ -555,7 +556,8 @@ static int adm1275_probe(struct i2c_client *client)
client->name, mid->name); client->name, mid->name);
if (mid->driver_data == adm1272 || mid->driver_data == adm1278 || if (mid->driver_data == adm1272 || mid->driver_data == adm1278 ||
mid->driver_data == adm1293 || mid->driver_data == adm1294) mid->driver_data == adm1281 || mid->driver_data == adm1293 ||
mid->driver_data == adm1294)
config_read_fn = i2c_smbus_read_word_data; config_read_fn = i2c_smbus_read_word_data;
else else
config_read_fn = i2c_smbus_read_byte_data; config_read_fn = i2c_smbus_read_byte_data;
@ -703,6 +705,7 @@ static int adm1275_probe(struct i2c_client *client)
PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
break; break;
case adm1278: case adm1278:
case adm1281:
data->have_vout = true; data->have_vout = true;
data->have_pin_max = true; data->have_pin_max = true;
data->have_temp_max = true; data->have_temp_max = true;