mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
hwmon: pmbus: mpq8785: Implement VOUT feedback resistor divider ratio configuration
Implement support for setting the VOUT_SCALE_LOOP PMBus register based on an optional device tree property "mps,vout-fb-divider-ratio-permille". This allows the driver to provide the correct VOUT value depending on the feedback voltage divider configuration for chips where the bootloader does not configure the VOUT_SCALE_LOOP register. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> Link: https://lore.kernel.org/r/20250511035701.2607947-4-paweldembicki@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
1bc6020dc4
commit
dc1a4bab48
|
|
@ -5,11 +5,16 @@
|
|||
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/of_device.h>
|
||||
#include "pmbus.h"
|
||||
|
||||
enum chips { mpq8785 };
|
||||
|
||||
static u16 voltage_scale_loop_max_val[] = {
|
||||
[mpq8785] = GENMASK(10, 0),
|
||||
};
|
||||
|
||||
static int mpq8785_identify(struct i2c_client *client,
|
||||
struct pmbus_driver_info *info)
|
||||
{
|
||||
|
|
@ -74,6 +79,8 @@ static int mpq8785_probe(struct i2c_client *client)
|
|||
struct device *dev = &client->dev;
|
||||
struct pmbus_driver_info *info;
|
||||
enum chips chip_id;
|
||||
u32 voltage_scale;
|
||||
int ret;
|
||||
|
||||
info = devm_kmemdup(dev, &mpq8785_info, sizeof(*info), GFP_KERNEL);
|
||||
if (!info)
|
||||
|
|
@ -92,6 +99,17 @@ static int mpq8785_probe(struct i2c_client *client)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (!device_property_read_u32(dev, "mps,vout-fb-divider-ratio-permille",
|
||||
&voltage_scale)) {
|
||||
if (voltage_scale > voltage_scale_loop_max_val[chip_id])
|
||||
return -EINVAL;
|
||||
|
||||
ret = i2c_smbus_write_word_data(client, PMBUS_VOUT_SCALE_LOOP,
|
||||
voltage_scale);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return pmbus_do_probe(client, info);
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user