summaryrefslogtreecommitdiff
path: root/drivers/regulator/mp5416.c
diff options
context:
space:
mode:
authorRobert Marko <robimarko@gmail.com>2022-06-04 17:58:15 +0300
committerMark Brown <broonie@kernel.org>2022-06-06 14:39:08 +0300
commitdf43c245dd0535f6e2256e0261d43a4dd72b8b28 (patch)
tree2dda335a1518c4fcd1db60a708e5c0f1b2b6fbc5 /drivers/regulator/mp5416.c
parentb9dea0184b2641fb3937162a617289b23d52a587 (diff)
downloadlinux-df43c245dd0535f6e2256e0261d43a4dd72b8b28.tar.xz
regulator: mp5416: use OF match data
In preparation for adding support for MP5496 which slightly differs from MP5416 convert the driver to use OF match data instead of always using the MP5416 regulator_desc for regulator registration. Signed-off-by: Robert Marko <robimarko@gmail.com> Acked-by: Saravanan Sekar <sravanhome@gmail.com> Link: https://lore.kernel.org/r/20220604145816.47576-3-robimarko@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/regulator/mp5416.c')
-rw-r--r--drivers/regulator/mp5416.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/regulator/mp5416.c b/drivers/regulator/mp5416.c
index d8245080df03..011a825570ea 100644
--- a/drivers/regulator/mp5416.c
+++ b/drivers/regulator/mp5416.c
@@ -11,6 +11,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
+#include <linux/of_device.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/regulator/driver.h>
@@ -178,6 +179,7 @@ static int mp5416_i2c_probe(struct i2c_client *client)
{
struct device *dev = &client->dev;
struct regulator_config config = { NULL, };
+ static const struct regulator_desc *desc;
struct regulator_dev *rdev;
struct regmap *regmap;
int i;
@@ -188,12 +190,16 @@ static int mp5416_i2c_probe(struct i2c_client *client)
return PTR_ERR(regmap);
}
+ desc = of_device_get_match_data(dev);
+ if (!desc)
+ return -ENODEV;
+
config.dev = dev;
config.regmap = regmap;
for (i = 0; i < MP5416_MAX_REGULATORS; i++) {
rdev = devm_regulator_register(dev,
- &mp5416_regulators_desc[i],
+ &desc[i],
&config);
if (IS_ERR(rdev)) {
dev_err(dev, "Failed to register regulator!\n");
@@ -205,7 +211,7 @@ static int mp5416_i2c_probe(struct i2c_client *client)
}
static const struct of_device_id mp5416_of_match[] = {
- { .compatible = "mps,mp5416" },
+ { .compatible = "mps,mp5416", .data = &mp5416_regulators_desc },
{},
};
MODULE_DEVICE_TABLE(of, mp5416_of_match);