|
@@ -314,13 +314,15 @@ static int __devinit pcf50633_regulator_probe(struct platform_device *pdev)
|
|
|
struct pcf50633 *pcf;
|
|
|
|
|
|
/* Already set by core driver */
|
|
|
- pcf = platform_get_drvdata(pdev);
|
|
|
+ pcf = dev_to_pcf50633(pdev->dev.parent);
|
|
|
|
|
|
rdev = regulator_register(®ulators[pdev->id], &pdev->dev,
|
|
|
pdev->dev.platform_data, pcf);
|
|
|
if (IS_ERR(rdev))
|
|
|
return PTR_ERR(rdev);
|
|
|
|
|
|
+ platform_set_drvdata(pdev, rdev);
|
|
|
+
|
|
|
if (pcf->pdata->regulator_registered)
|
|
|
pcf->pdata->regulator_registered(pcf, pdev->id);
|
|
|
|
|
@@ -331,6 +333,7 @@ static int __devexit pcf50633_regulator_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct regulator_dev *rdev = platform_get_drvdata(pdev);
|
|
|
|
|
|
+ platform_set_drvdata(pdev, NULL);
|
|
|
regulator_unregister(rdev);
|
|
|
|
|
|
return 0;
|