#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>
 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;
 
                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);
                }