diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mfd/pcf50633-core.c | 1 | ||||
-rw-r--r-- | drivers/regulator/pcf50633-regulator.c | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c index 1774f60b1b2a..f109551eedad 100644 --- a/drivers/mfd/pcf50633-core.c +++ b/drivers/mfd/pcf50633-core.c | |||
@@ -613,7 +613,6 @@ static int __devinit pcf50633_probe(struct i2c_client *client, | |||
613 | pdev->dev.parent = pcf->dev; | 613 | pdev->dev.parent = pcf->dev; |
614 | platform_device_add_data(pdev, &pdata->reg_init_data[i], | 614 | platform_device_add_data(pdev, &pdata->reg_init_data[i], |
615 | sizeof(pdata->reg_init_data[i])); | 615 | sizeof(pdata->reg_init_data[i])); |
616 | dev_set_drvdata(&pdev->dev, pcf); | ||
617 | pcf->regulator_pdev[i] = pdev; | 616 | pcf->regulator_pdev[i] = pdev; |
618 | 617 | ||
619 | platform_device_add(pdev); | 618 | platform_device_add(pdev); |
diff --git a/drivers/regulator/pcf50633-regulator.c b/drivers/regulator/pcf50633-regulator.c index 0803ffe6236d..c8f41dc05b76 100644 --- a/drivers/regulator/pcf50633-regulator.c +++ b/drivers/regulator/pcf50633-regulator.c | |||
@@ -314,13 +314,15 @@ static int __devinit pcf50633_regulator_probe(struct platform_device *pdev) | |||
314 | struct pcf50633 *pcf; | 314 | struct pcf50633 *pcf; |
315 | 315 | ||
316 | /* Already set by core driver */ | 316 | /* Already set by core driver */ |
317 | pcf = platform_get_drvdata(pdev); | 317 | pcf = dev_to_pcf50633(pdev->dev.parent); |
318 | 318 | ||
319 | rdev = regulator_register(®ulators[pdev->id], &pdev->dev, | 319 | rdev = regulator_register(®ulators[pdev->id], &pdev->dev, |
320 | pdev->dev.platform_data, pcf); | 320 | pdev->dev.platform_data, pcf); |
321 | if (IS_ERR(rdev)) | 321 | if (IS_ERR(rdev)) |
322 | return PTR_ERR(rdev); | 322 | return PTR_ERR(rdev); |
323 | 323 | ||
324 | platform_set_drvdata(pdev, rdev); | ||
325 | |||
324 | if (pcf->pdata->regulator_registered) | 326 | if (pcf->pdata->regulator_registered) |
325 | pcf->pdata->regulator_registered(pcf, pdev->id); | 327 | pcf->pdata->regulator_registered(pcf, pdev->id); |
326 | 328 | ||
@@ -331,6 +333,7 @@ static int __devexit pcf50633_regulator_remove(struct platform_device *pdev) | |||
331 | { | 333 | { |
332 | struct regulator_dev *rdev = platform_get_drvdata(pdev); | 334 | struct regulator_dev *rdev = platform_get_drvdata(pdev); |
333 | 335 | ||
336 | platform_set_drvdata(pdev, NULL); | ||
334 | regulator_unregister(rdev); | 337 | regulator_unregister(rdev); |
335 | 338 | ||
336 | return 0; | 339 | return 0; |