Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions Documentation/devicetree/bindings/hwmon/pmbus/adi,max20830.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/pmbus/adi,max20830.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices MAX20830 Step-Down Switching Regulator with PMBus

maintainers:
- Alexis Czezar Torreno <alexisczezar.torreno@analog.com>

description: |
The MAX20830 is a fully integrated step-down DC-DC switching regulator with
PMBus interface. It provides 2.7V to 16V input, 0.4V to 5.8V adjustable
output, and up to 30A output current. It allows monitoring of input/output
voltage, output current and temperature through the PMBus serial interface.
Datasheet:
https://www.analog.com/en/products/max20830.html

properties:
compatible:
const: adi,max20830

reg:
maxItems: 1

vddh-supply:
description:
Phandle to the regulator that provides the VDDH power supply.

avdd-supply:
description:
Phandle to the regulator that provides the AVDD power supply.

required:
- compatible
- reg
- vddh-supply

additionalProperties: false

examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;

hwmon@30 {
compatible = "adi,max20830";
reg = <0x30>;
vddh-supply = <&vddh>;
avdd-supply = <&avdd>;
};
};
...
1 change: 1 addition & 0 deletions Documentation/hwmon/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ Hardware Monitoring Kernel Drivers
max197
max20730
max20751
max20830
max31722
max31730
max31760
Expand Down
48 changes: 48 additions & 0 deletions Documentation/hwmon/max20830.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
.. SPDX-License-Identifier: GPL-2.0
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You may be asked to delete this file if it does not provide significant value (e.g., explain really hard to understand parts that cannot be understood from the code or dt-binding)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do think it doesn't add much. should I just drop the file?


Kernel driver max20830
======================

Supported chips:

* Analog Devices MAX20830

Prefix: 'max20830'

Addresses scanned: -

Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/max20830.pdf

Author:

- Alexis Czezar Torreno <alexisczezar.torreno@analog.com>


Description
-----------

This driver supports hardware monitoring for Analog Devices MAX20830
Step-Down Switching Regulator with PMBus Interface.

The MAX20830 is a 2.7V to 16V, 30A fully integrated step-down DC-DC switching
regulator. Through the PMBus interface, the device can monitor input/output
voltages, output current and temperature.

The driver is a client driver to the core PMBus driver. Please see
:doc:`/hwmon/pmbus` for details on PMBus client drivers.

Sysfs entries
-------------

================= ========================================
in1_label "vin"
in1_input Measured input voltage
in1_alarm Input voltage alarm
in2_label "vout1"
in2_input Measured output voltage
curr1_label "iout1"
curr1_input Measured output current
curr1_alarm Output current alarm
temp1_input Measured temperature
temp1_alarm Chip temperature alarm
================= ========================================
9 changes: 9 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -14063,6 +14063,15 @@ F: Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml
F: Documentation/hwmon/max17616.rst
F: drivers/hwmon/pmbus/max17616.c

MAX20830 HARDWARE MONITOR DRIVER
M: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
L: linux-hwmon@vger.kernel.org
S: Supported
W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/hwmon/pmbus/adi,max20830.yaml
F: Documentation/hwmon/max20830.rst
F: drivers/hwmon/pmbus/max20830.c

MAX2175 SDR TUNER DRIVER
M: Ramesh Shanmugasundaram <rashanmu@gmail.com>
L: linux-media@vger.kernel.org
Expand Down
1 change: 1 addition & 0 deletions drivers/hwmon/Kconfig.adi
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,4 @@ config HWMON_ALL_ADI_DRIVERS
imply SENSORS_LT7182S
imply SENSORS_LTC4282
imply SENSORS_MAX17616
imply SENSORS_MAX20830
9 changes: 9 additions & 0 deletions drivers/hwmon/pmbus/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,15 @@ config SENSORS_MAX20751
This driver can also be built as a module. If so, the module will
be called max20751.

config SENSORS_MAX20830
tristate "Analog Devices MAX20830"
help
If you say yes here you get hardware monitoring support for Analog
Devices MAX20830.

This driver can also be built as a module. If so, the module will
be called max20830.

config SENSORS_MAX31785
tristate "Maxim MAX31785 and compatibles"
help
Expand Down
1 change: 1 addition & 0 deletions drivers/hwmon/pmbus/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ obj-$(CONFIG_SENSORS_MAX16601) += max16601.o
obj-$(CONFIG_SENSORS_MAX17616) += max17616.o
obj-$(CONFIG_SENSORS_MAX20730) += max20730.o
obj-$(CONFIG_SENSORS_MAX20751) += max20751.o
obj-$(CONFIG_SENSORS_MAX20830) += max20830.o
obj-$(CONFIG_SENSORS_MAX31785) += max31785.o
obj-$(CONFIG_SENSORS_MAX34440) += max34440.o
obj-$(CONFIG_SENSORS_MAX8688) += max8688.o
Expand Down
70 changes: 70 additions & 0 deletions drivers/hwmon/pmbus/max20830.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Hardware monitoring driver for Analog Devices MAX20830
*
* Copyright (C) 2026 Analog Devices, Inc.
*/

#include <linux/i2c.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include "pmbus.h"

static struct pmbus_driver_info max20830_info = {
.pages = 1,
.format[PSC_VOLTAGE_IN] = linear,
.format[PSC_VOLTAGE_OUT] = linear,
.format[PSC_CURRENT_OUT] = linear,
.format[PSC_TEMPERATURE] = linear,
.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_IOUT |
PMBUS_HAVE_TEMP |
PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_STATUS_IOUT |
PMBUS_HAVE_STATUS_INPUT | PMBUS_HAVE_STATUS_TEMP,
};

static int max20830_probe(struct i2c_client *client)
{
u8 buf[I2C_SMBUS_BLOCK_MAX + 1];
int ret;

ret = i2c_smbus_read_i2c_block_data(client, PMBUS_IC_DEVICE_ID,
I2C_SMBUS_BLOCK_MAX, buf);
if (ret < 0)
return dev_err_probe(&client->dev, ret,
"Failed to read IC_DEVICE_ID\n");

buf[ret] = '\0';
if (!strstr(buf, "MAX20830"))
return dev_err_probe(&client->dev, -ENODEV,
"Unsupported device: '%s'\n", buf);

return pmbus_do_probe(client, &max20830_info);
}

static const struct i2c_device_id max20830_id[] = {
{"max20830"},
{}
};
MODULE_DEVICE_TABLE(i2c, max20830_id);

static const struct of_device_id max20830_of_match[] = {
{ .compatible = "adi,max20830" },
{}
};
MODULE_DEVICE_TABLE(of, max20830_of_match);

static struct i2c_driver max20830_driver = {
.driver = {
.name = "max20830",
.of_match_table = max20830_of_match,
},
.probe = max20830_probe,
.id_table = max20830_id,
};

module_i2c_driver(max20830_driver);

MODULE_AUTHOR("Alexis Czezar Torreno <alexisczezar.torreno@analog.com>");
MODULE_DESCRIPTION("PMBus driver for Analog Devices MAX20830");
MODULE_LICENSE("GPL");
MODULE_IMPORT_NS(PMBUS);