Skip to content

Commit

Permalink
hwmon: (pmbus/adm1275) add adm1273 support
Browse files Browse the repository at this point in the history
Add support for adm1273 which is similar to adm1275 and other chips
of the series.

Signed-off-by: John Erasmus Mari Geronimo <[email protected]>
  • Loading branch information
jemfgeronimo committed Jan 8, 2025
1 parent 5d653c7 commit de730ab
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 15 deletions.
28 changes: 18 additions & 10 deletions Documentation/hwmon/adm1275.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@ Supported chips:

Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1272.pdf

* Analog Devices ADM1273

Prefix: 'adm1273'

Addresses scanned: -

Datasheet: Not yet publicly available

* Analog Devices ADM1275

Prefix: 'adm1275'
Expand Down Expand Up @@ -66,14 +74,14 @@ Description
-----------

This driver supports hardware monitoring for Analog Devices ADM1075, ADM1272,
ADM1275, ADM1276, ADM1278, ADM1281, ADM1293, and ADM1294 Hot-Swap Controller and
Digital Power Monitors.
ADM1273, ADM1275, ADM1276, ADM1278, ADM1281, ADM1293, and ADM1294 Hot-Swap
Controller and Digital Power Monitors.

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
a live backplane. They also feature current and voltage readback via an
integrated 12 bit analog-to-digital converter (ADC), accessed using a
PMBus interface.
ADM1075, ADM1272, ADM1273, ADM1275, ADM1276, ADM1278, ADM1281, ADM1293, and
ADM1294 are hot-swap 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 integrated 12 bit analog-to-digital converter (ADC), accessed
using a PMBus interface.

The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Expand Down Expand Up @@ -141,7 +149,7 @@ power1_input_highest Highest observed input power.
power1_reset_history Write any value to reset history.

Power attributes are supported on ADM1075, ADM1272,
ADM1276, ADM1293, and ADM1294.
ADM1273, ADM1276, ADM1293, and ADM1294.

temp1_input Chip temperature.
temp1_max Maximum chip temperature.
Expand All @@ -151,6 +159,6 @@ temp1_crit_alarm Critical temperature high alarm.
temp1_highest Highest observed temperature.
temp1_reset_history Write any value to reset history.

Temperature attributes are supported on ADM1272 and
ADM1278, and ADM1281.
Temperature attributes are supported on ADM1272,
ADM1273, ADM1278, and ADM1281.
======================= =======================================================
2 changes: 1 addition & 1 deletion drivers/hwmon/pmbus/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ config SENSORS_ADM1275
tristate "Analog Devices ADM1275 and compatibles"
help
If you say yes here you get hardware monitoring support for Analog
Devices ADM1075, ADM1272, ADM1275, ADM1276, ADM1278, ADM1281,
Devices ADM1075, ADM1272, ADM1273, ADM1275, ADM1276, ADM1278, ADM1281,
ADM1293, and ADM1294 Hot-Swap Controller and Digital Power Monitors.

This driver can also be built as a module. If so, the module will
Expand Down
10 changes: 6 additions & 4 deletions drivers/hwmon/pmbus/adm1275.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include <linux/log2.h>
#include "pmbus.h"

enum chips { adm1075, adm1272, adm1275, adm1276, adm1278, adm1281, adm1293, adm1294 };
enum chips { adm1075, adm1272, adm1273, adm1275, adm1276, adm1278, adm1281, adm1293, adm1294 };

#define ADM1275_MFR_STATUS_IOUT_WARN2 BIT(0)
#define ADM1293_MFR_STATUS_VAUX_UV_WARN BIT(5)
Expand Down Expand Up @@ -479,6 +479,7 @@ static int adm1275_read_byte_data(struct i2c_client *client, int page, int reg)
static const struct i2c_device_id adm1275_id[] = {
{ "adm1075", adm1075 },
{ "adm1272", adm1272 },
{ "adm1273", adm1273 },
{ "adm1275", adm1275 },
{ "adm1276", adm1276 },
{ "adm1278", adm1278 },
Expand Down Expand Up @@ -555,9 +556,9 @@ static int adm1275_probe(struct i2c_client *client)
"Device mismatch: Configured %s, detected %s\n",
client->name, mid->name);

if (mid->driver_data == adm1272 || mid->driver_data == adm1278 ||
mid->driver_data == adm1281 || mid->driver_data == adm1293 ||
mid->driver_data == adm1294)
if (mid->driver_data == adm1272 || mid->driver_data == adm1273 ||
mid->driver_data == adm1278 || mid->driver_data == adm1281 ||
mid->driver_data == adm1293 || mid->driver_data == adm1294)
config_read_fn = i2c_smbus_read_word_data;
else
config_read_fn = i2c_smbus_read_byte_data;
Expand Down Expand Up @@ -630,6 +631,7 @@ static int adm1275_probe(struct i2c_client *client)
PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
break;
case adm1272:
case adm1273:
data->have_vout = true;
data->have_pin_max = true;
data->have_temp_max = true;
Expand Down

0 comments on commit de730ab

Please sign in to comment.