Commit 647e5735 authored by Sebastian Reichel's avatar Sebastian Reichel Committed by Mark Brown

regulator: rk808: reduce 'struct rk808' usage

Reduce usage of 'struct rk808' (driver data of the parent MFD), so
that only the chip variant field is still being accessed directly.
This allows restructuring the MFD driver to support SPI based
PMICs.
Acked-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20221020204251.108565-3-sebastian.reichel@collabora.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0b21b4dc
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/i2c.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/of_gpio.h> #include <linux/of_gpio.h>
...@@ -1286,19 +1285,23 @@ static int rk808_regulator_dt_parse_pdata(struct device *dev, ...@@ -1286,19 +1285,23 @@ static int rk808_regulator_dt_parse_pdata(struct device *dev,
static int rk808_regulator_probe(struct platform_device *pdev) static int rk808_regulator_probe(struct platform_device *pdev)
{ {
struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent);
struct i2c_client *client = rk808->i2c;
struct regulator_config config = {}; struct regulator_config config = {};
struct regulator_dev *rk808_rdev; struct regulator_dev *rk808_rdev;
struct rk808_regulator_data *pdata; struct rk808_regulator_data *pdata;
const struct regulator_desc *regulators; const struct regulator_desc *regulators;
struct regmap *regmap;
int ret, i, nregulators; int ret, i, nregulators;
regmap = dev_get_regmap(pdev->dev.parent, NULL);
if (!regmap)
return -ENODEV;
pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
if (!pdata) if (!pdata)
return -ENOMEM; return -ENOMEM;
ret = rk808_regulator_dt_parse_pdata(&pdev->dev, &client->dev, ret = rk808_regulator_dt_parse_pdata(&pdev->dev, pdev->dev.parent,
rk808->regmap, pdata); regmap, pdata);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -1326,21 +1329,22 @@ static int rk808_regulator_probe(struct platform_device *pdev) ...@@ -1326,21 +1329,22 @@ static int rk808_regulator_probe(struct platform_device *pdev)
nregulators = RK818_NUM_REGULATORS; nregulators = RK818_NUM_REGULATORS;
break; break;
default: default:
dev_err(&client->dev, "unsupported RK8XX ID %lu\n", dev_err(&pdev->dev, "unsupported RK8XX ID %lu\n",
rk808->variant); rk808->variant);
return -EINVAL; return -EINVAL;
} }
config.dev = &client->dev; config.dev = &pdev->dev;
config.dev->of_node = pdev->dev.parent->of_node;
config.driver_data = pdata; config.driver_data = pdata;
config.regmap = rk808->regmap; config.regmap = regmap;
/* Instantiate the regulators */ /* Instantiate the regulators */
for (i = 0; i < nregulators; i++) { for (i = 0; i < nregulators; i++) {
rk808_rdev = devm_regulator_register(&pdev->dev, rk808_rdev = devm_regulator_register(&pdev->dev,
&regulators[i], &config); &regulators[i], &config);
if (IS_ERR(rk808_rdev)) { if (IS_ERR(rk808_rdev)) {
dev_err(&client->dev, dev_err(&pdev->dev,
"failed to register %d regulator\n", i); "failed to register %d regulator\n", i);
return PTR_ERR(rk808_rdev); return PTR_ERR(rk808_rdev);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment