(2011年07月06日 18:36), ashishj3 wrote:
+static int __devinit da9052_regulator_probe(struct platform_device *pdev) +{
- struct da9052_regulator *regulator;
- struct da9052 *da9052;
- struct da9052_pdata *pdata;
- int ret;
- regulator = kzalloc(sizeof(struct da9052_regulator), GFP_KERNEL);
- if (!regulator)
return -ENOMEM;
- da9052 = dev_get_drvdata(pdev->dev.parent);
- pdata = da9052->dev->platform_data;
- regulator->info = find_regulator_info(pdev->id);
- if (regulator->info == NULL) {
dev_err(&pdev->dev, "invalid regulator ID specified\n");
ret = -EINVAL;
goto err;
- }
- regulator->rdev = regulator_register(®ulator->info->reg_desc,
&pdev->dev,
pdata->regulators[pdev->id],
regulator);
- if (IS_ERR(regulator->rdev)) {
dev_err(&pdev->dev, "failed to register regulator %s\n",
regulator->info->reg_desc.name);
ret = PTR_ERR(regulator->rdev);
goto err;
- }
- platform_set_drvdata(pdev, regulator);
- return 0;
+err:
- kfree(regulator);
- return ret;
+}
Hi Ashish,
It seems to me that in this function, regulator->da9052 isn't initialized.
Regards, Paul