|
@@ -188,7 +188,8 @@ static int __devinit twl4030_audio_probe(struct platform_device *pdev)
|
|
|
twl_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
|
|
|
val, TWL4030_REG_APLL_CTL);
|
|
|
|
|
|
- audio = kzalloc(sizeof(struct twl4030_audio), GFP_KERNEL);
|
|
|
+ audio = devm_kzalloc(&pdev->dev, sizeof(struct twl4030_audio),
|
|
|
+ GFP_KERNEL);
|
|
|
if (!audio)
|
|
|
return -ENOMEM;
|
|
|
|
|
@@ -229,22 +230,18 @@ static int __devinit twl4030_audio_probe(struct platform_device *pdev)
|
|
|
ret = -ENODEV;
|
|
|
}
|
|
|
|
|
|
- if (!ret)
|
|
|
- return 0;
|
|
|
+ if (ret) {
|
|
|
+ platform_set_drvdata(pdev, NULL);
|
|
|
+ twl4030_audio_dev = NULL;
|
|
|
+ }
|
|
|
|
|
|
- platform_set_drvdata(pdev, NULL);
|
|
|
- kfree(audio);
|
|
|
- twl4030_audio_dev = NULL;
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
static int __devexit twl4030_audio_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
- struct twl4030_audio *audio = platform_get_drvdata(pdev);
|
|
|
-
|
|
|
mfd_remove_devices(&pdev->dev);
|
|
|
platform_set_drvdata(pdev, NULL);
|
|
|
- kfree(audio);
|
|
|
twl4030_audio_dev = NULL;
|
|
|
|
|
|
return 0;
|