regulator: ad5398: Add device tree support
[ Upstream commit 5a6a461079decea452fdcae955bccecf92e07e97 ] Previously, the ad5398 driver used only platform_data, which is deprecated in favour of device tree. This caused the AD5398 to fail to probe as it could not load its init_data. If the AD5398 has a device tree node, pull the init_data from there using of_get_regulator_init_data. Signed-off-by: Isaac Scott <isaac.scott@ideasonboard.com> Acked-by: Michael Hennerich <michael.hennerich@analog.com> Link: https://patch.msgid.link/20250128173143.959600-4-isaac.scott@ideasonboard.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
df76df11fd
commit
b658e144a0
@@ -14,6 +14,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regulator/driver.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regulator/of_regulator.h>
|
||||
|
||||
#define AD5398_CURRENT_EN_MASK 0x8000
|
||||
|
||||
@@ -221,15 +222,20 @@ static int ad5398_probe(struct i2c_client *client)
|
||||
const struct ad5398_current_data_format *df =
|
||||
(struct ad5398_current_data_format *)id->driver_data;
|
||||
|
||||
if (!init_data)
|
||||
return -EINVAL;
|
||||
|
||||
chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
|
||||
if (!chip)
|
||||
return -ENOMEM;
|
||||
|
||||
config.dev = &client->dev;
|
||||
if (client->dev.of_node)
|
||||
init_data = of_get_regulator_init_data(&client->dev,
|
||||
client->dev.of_node,
|
||||
&ad5398_reg);
|
||||
if (!init_data)
|
||||
return -EINVAL;
|
||||
|
||||
config.init_data = init_data;
|
||||
config.of_node = client->dev.of_node;
|
||||
config.driver_data = chip;
|
||||
|
||||
chip->client = client;
|
||||
|
Reference in New Issue
Block a user