]> Pileus Git - ~andy/linux/blobdiff - drivers/regulator/aat2870-regulator.c
Merge branch 'exynos-drm-fixes' of git://git.infradead.org/users/kmpark/linux-samsung...
[~andy/linux] / drivers / regulator / aat2870-regulator.c
index 685ad43b074973f40e579fe4896ad5e0e595c041..9ed5c5d84e12b57aa4cb7080110eff22ef0b134c 100644 (file)
@@ -31,7 +31,7 @@
 #include <linux/mfd/aat2870.h>
 
 struct aat2870_regulator {
-       struct platform_device *pdev;
+       struct aat2870_data *aat2870;
        struct regulator_desc desc;
 
        const int *voltages; /* uV */
@@ -60,7 +60,7 @@ static int aat2870_ldo_set_voltage_sel(struct regulator_dev *rdev,
                                       unsigned selector)
 {
        struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = dev_get_drvdata(ri->pdev->dev.parent);
+       struct aat2870_data *aat2870 = ri->aat2870;
 
        return aat2870->update(aat2870, ri->voltage_addr, ri->voltage_mask,
                               selector << ri->voltage_shift);
@@ -69,7 +69,7 @@ static int aat2870_ldo_set_voltage_sel(struct regulator_dev *rdev,
 static int aat2870_ldo_get_voltage_sel(struct regulator_dev *rdev)
 {
        struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = dev_get_drvdata(ri->pdev->dev.parent);
+       struct aat2870_data *aat2870 = ri->aat2870;
        u8 val;
        int ret;
 
@@ -83,7 +83,7 @@ static int aat2870_ldo_get_voltage_sel(struct regulator_dev *rdev)
 static int aat2870_ldo_enable(struct regulator_dev *rdev)
 {
        struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = dev_get_drvdata(ri->pdev->dev.parent);
+       struct aat2870_data *aat2870 = ri->aat2870;
 
        return aat2870->update(aat2870, ri->enable_addr, ri->enable_mask,
                               ri->enable_mask);
@@ -92,7 +92,7 @@ static int aat2870_ldo_enable(struct regulator_dev *rdev)
 static int aat2870_ldo_disable(struct regulator_dev *rdev)
 {
        struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = dev_get_drvdata(ri->pdev->dev.parent);
+       struct aat2870_data *aat2870 = ri->aat2870;
 
        return aat2870->update(aat2870, ri->enable_addr, ri->enable_mask, 0);
 }
@@ -100,7 +100,7 @@ static int aat2870_ldo_disable(struct regulator_dev *rdev)
 static int aat2870_ldo_is_enabled(struct regulator_dev *rdev)
 {
        struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = dev_get_drvdata(ri->pdev->dev.parent);
+       struct aat2870_data *aat2870 = ri->aat2870;
        u8 val;
        int ret;
 
@@ -185,7 +185,7 @@ static int aat2870_regulator_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Invalid device ID, %d\n", pdev->id);
                return -EINVAL;
        }
-       ri->pdev = pdev;
+       ri->aat2870 = dev_get_drvdata(pdev->dev.parent);
 
        rdev = regulator_register(&ri->desc, &pdev->dev,
                                  pdev->dev.platform_data, ri, NULL);