提交 4b5dd738 编写于 作者: S Sangjung Woo 提交者: Chanwoo Choi

extcon: adc-jack: Use devm_extcon_dev_register()

Use the resource-managed extcon device register function (i.e.
devm_extcon_dev_register()) instead of extcon_dev_register(). If extcon device
is attached with this function, that extcon device is automatically unregistered
on driver detach. That reduces tiresome managing code.
Signed-off-by: NSangjung Woo <sangjung.woo@samsung.com>
Signed-off-by: NChanwoo Choi <cw00.choi@samsung.com>
上级 1111244f
...@@ -105,9 +105,8 @@ static int adc_jack_probe(struct platform_device *pdev) ...@@ -105,9 +105,8 @@ static int adc_jack_probe(struct platform_device *pdev)
data->edev.name = pdata->name; data->edev.name = pdata->name;
if (!pdata->cable_names) { if (!pdata->cable_names) {
err = -EINVAL;
dev_err(&pdev->dev, "error: cable_names not defined.\n"); dev_err(&pdev->dev, "error: cable_names not defined.\n");
goto out; return -EINVAL;
} }
data->edev.dev.parent = &pdev->dev; data->edev.dev.parent = &pdev->dev;
...@@ -117,18 +116,16 @@ static int adc_jack_probe(struct platform_device *pdev) ...@@ -117,18 +116,16 @@ static int adc_jack_probe(struct platform_device *pdev)
for (i = 0; data->edev.supported_cable[i]; i++) for (i = 0; data->edev.supported_cable[i]; i++)
; ;
if (i == 0 || i > SUPPORTED_CABLE_MAX) { if (i == 0 || i > SUPPORTED_CABLE_MAX) {
err = -EINVAL;
dev_err(&pdev->dev, "error: pdata->cable_names size = %d\n", dev_err(&pdev->dev, "error: pdata->cable_names size = %d\n",
i - 1); i - 1);
goto out; return -EINVAL;
} }
data->num_cables = i; data->num_cables = i;
if (!pdata->adc_conditions || if (!pdata->adc_conditions ||
!pdata->adc_conditions[0].state) { !pdata->adc_conditions[0].state) {
err = -EINVAL;
dev_err(&pdev->dev, "error: adc_conditions not defined.\n"); dev_err(&pdev->dev, "error: adc_conditions not defined.\n");
goto out; return -EINVAL;
} }
data->adc_conditions = pdata->adc_conditions; data->adc_conditions = pdata->adc_conditions;
...@@ -138,10 +135,8 @@ static int adc_jack_probe(struct platform_device *pdev) ...@@ -138,10 +135,8 @@ static int adc_jack_probe(struct platform_device *pdev)
data->num_conditions = i; data->num_conditions = i;
data->chan = iio_channel_get(&pdev->dev, pdata->consumer_channel); data->chan = iio_channel_get(&pdev->dev, pdata->consumer_channel);
if (IS_ERR(data->chan)) { if (IS_ERR(data->chan))
err = PTR_ERR(data->chan); return PTR_ERR(data->chan);
goto out;
}
data->handling_delay = msecs_to_jiffies(pdata->handling_delay_ms); data->handling_delay = msecs_to_jiffies(pdata->handling_delay_ms);
...@@ -149,15 +144,14 @@ static int adc_jack_probe(struct platform_device *pdev) ...@@ -149,15 +144,14 @@ static int adc_jack_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, data); platform_set_drvdata(pdev, data);
err = extcon_dev_register(&data->edev); err = devm_extcon_dev_register(&pdev->dev, &data->edev);
if (err) if (err)
goto out; return err;
data->irq = platform_get_irq(pdev, 0); data->irq = platform_get_irq(pdev, 0);
if (!data->irq) { if (!data->irq) {
dev_err(&pdev->dev, "platform_get_irq failed\n"); dev_err(&pdev->dev, "platform_get_irq failed\n");
err = -ENODEV; return -ENODEV;
goto err_irq;
} }
err = request_any_context_irq(data->irq, adc_jack_irq_thread, err = request_any_context_irq(data->irq, adc_jack_irq_thread,
...@@ -165,15 +159,10 @@ static int adc_jack_probe(struct platform_device *pdev) ...@@ -165,15 +159,10 @@ static int adc_jack_probe(struct platform_device *pdev)
if (err < 0) { if (err < 0) {
dev_err(&pdev->dev, "error: irq %d\n", data->irq); dev_err(&pdev->dev, "error: irq %d\n", data->irq);
goto err_irq; return err;
} }
return 0; return 0;
err_irq:
extcon_dev_unregister(&data->edev);
out:
return err;
} }
static int adc_jack_remove(struct platform_device *pdev) static int adc_jack_remove(struct platform_device *pdev)
...@@ -182,7 +171,6 @@ static int adc_jack_remove(struct platform_device *pdev) ...@@ -182,7 +171,6 @@ static int adc_jack_remove(struct platform_device *pdev)
free_irq(data->irq, data); free_irq(data->irq, data);
cancel_work_sync(&data->handler.work); cancel_work_sync(&data->handler.work);
extcon_dev_unregister(&data->edev);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册