Unverified Commit 5a6a4610 authored by Isaac Scott's avatar Isaac Scott Committed by Mark Brown
Browse files

regulator: ad5398: Add device tree support



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: default avatarIsaac Scott <isaac.scott@ideasonboard.com>
Acked-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Link: https://patch.msgid.link/20250128173143.959600-4-isaac.scott@ideasonboard.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 19d022d6
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -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_SW_POWER_DOWN	BIT(16)

@@ -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;