mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 12:53:14 +01:00
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: Mark Brown <[email protected]> Signed-off-by: Sebastian Reichel <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
This commit is contained in:
1 parent
0b21b4dc9a
commit
647e57351f
1 file changed
+12
-8
@@ -14,7 +14,6 @@
|
||||
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
@@ -1286,19 +1285,23 @@ dt_parse_end:
|
||||
static int rk808_regulator_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent);
|
||||
struct i2c_client *client = rk808->i2c;
|
||||
struct regulator_config config = {};
|
||||
struct regulator_dev *rk808_rdev;
|
||||
struct rk808_regulator_data *pdata;
|
||||
const struct regulator_desc *regulators;
|
||||
struct regmap *regmap;
|
||||
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);
|
||||
if (!pdata)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = rk808_regulator_dt_parse_pdata(&pdev->dev, &client->dev,
|
||||
rk808->regmap, pdata);
|
||||
ret = rk808_regulator_dt_parse_pdata(&pdev->dev, pdev->dev.parent,
|
||||
regmap, pdata);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@@ -1326,21 +1329,22 @@ static int rk808_regulator_probe(struct platform_device *pdev)
|
||||
nregulators = RK818_NUM_REGULATORS;
|
||||
break;
|
||||
default:
|
||||
dev_err(&client->dev, "unsupported RK8XX ID %lu\n",
|
||||
dev_err(&pdev->dev, "unsupported RK8XX ID %lu\n",
|
||||
rk808->variant);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
config.dev = &client->dev;
|
||||
config.dev = &pdev->dev;
|
||||
config.dev->of_node = pdev->dev.parent->of_node;
|
||||
config.driver_data = pdata;
|
||||
config.regmap = rk808->regmap;
|
||||
config.regmap = regmap;
|
||||
|
||||
/* Instantiate the regulators */
|
||||
for (i = 0; i < nregulators; i++) {
|
||||
rk808_rdev = devm_regulator_register(&pdev->dev,
|
||||
®ulators[i], &config);
|
||||
if (IS_ERR(rk808_rdev)) {
|
||||
dev_err(&client->dev,
|
||||
dev_err(&pdev->dev,
|
||||
"failed to register %d regulator\n", i);
|
||||
return PTR_ERR(rk808_rdev);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user