summaryrefslogtreecommitdiff
path: root/drivers/regulator/rk808-regulator.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/regulator/rk808-regulator.c')
-rw-r--r--drivers/regulator/rk808-regulator.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c
index 127dc2e2e690..fa9fc1aa1ae3 100644
--- a/drivers/regulator/rk808-regulator.c
+++ b/drivers/regulator/rk808-regulator.c
@@ -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,24 +1329,23 @@ 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,
&regulators[i], &config);
- if (IS_ERR(rk808_rdev)) {
- dev_err(&client->dev,
- "failed to register %d regulator\n", i);
- return PTR_ERR(rk808_rdev);
- }
+ if (IS_ERR(rk808_rdev))
+ return dev_err_probe(&pdev->dev, PTR_ERR(rk808_rdev),
+ "failed to register %d regulator\n", i);
}
return 0;