Re: [PATCH 8/8] extcon: arizona: Use devm_extcon_dev_register()

Seung-Woo Kim
2014-04-16T10:44:26Z

Hi,

On 2014년 04월 16일 19:27, Sangjung Woo wrote:
> 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: Sangjung Woo <sangjung.woo@samsung.com>
> ---
> drivers/extcon/extcon-arizona.c | 13 ++++---------
> 1 file changed, 4 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
> index 98a14f6..40e6c0b 100644
> --- a/drivers/extcon/extcon-arizona.c
> +++ b/drivers/extcon/extcon-arizona.c
> @@ -1105,15 +1105,13 @@ static int arizona_extcon_probe(struct platform_device *pdev)
> info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
> if (!info) {
> dev_err(&pdev->dev, "Failed to allocate memory\n");
> - ret = -ENOMEM;
> - goto err;
> + return -ENOMEM;
> }
>
> info->micvdd = devm_regulator_get(arizona->dev, "MICVDD");
> if (IS_ERR(info->micvdd)) {
> - ret = PTR_ERR(info->micvdd);
> dev_err(arizona->dev, "Failed to get MICVDD: %d\n", ret);

Assignment to ret is removed but it is still used here.

> - goto err;
> + return PTR_ERR(info->micvdd);
> }
>
> mutex_init(&info->lock);
> @@ -1155,11 +1153,11 @@ static int arizona_extcon_probe(struct platform_device *pdev)
> info->edev.dev.parent = arizona->dev;
> info->edev.supported_cable = arizona_cable;
>
> - ret = extcon_dev_register(&info->edev);
> + ret = devm_extcon_dev_register(&pdev->dev, &info->edev);
> if (ret < 0) {
> dev_err(arizona->dev, "extcon_dev_register() failed: %d\n",
> ret);
> - goto err;
> + return ret;
> }
>
> info->input = devm_input_allocate_device(&pdev->dev);
> @@ -1410,8 +1408,6 @@ err_rise:
> err_input:
> err_register:
> pm_runtime_disable(&pdev->dev);
> - extcon_dev_unregister(&info->edev);
> -err:
> return ret;
> }
>
> @@ -1445,7 +1441,6 @@ static int arizona_extcon_remove(struct platform_device *pdev)
> regmap_update_bits(arizona->regmap, ARIZONA_JACK_DETECT_ANALOGUE,
> ARIZONA_JD1_ENA, 0);
> arizona_clk32k_disable(arizona);
> - extcon_dev_unregister(&info->edev);
>
> return 0;
> }
>

--
Seung-Woo Kim
Samsung Software R&D Center
--