extcon: arizona: Use devm_extcon_dev_register()
authorSangjung Woo <sangjung.woo@samsung.com>
Mon, 21 Apr 2014 10:10:15 +0000 (19:10 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Thu, 24 Apr 2014 10:37:06 +0000 (19:37 +0900)
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>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
drivers/extcon/extcon-arizona.c

index 98a14f6143a7087accee9c5d2b127c99c300b81d..f63fa6feadb53a360e86c7ef15f816d98767d43d 100644 (file)
@@ -1105,15 +1105,14 @@ 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);
-               goto err;
+               return ret;
        }
 
        mutex_init(&info->lock);
@@ -1155,11 +1154,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 +1409,6 @@ err_rise:
 err_input:
 err_register:
        pm_runtime_disable(&pdev->dev);
-       extcon_dev_unregister(&info->edev);
-err:
        return ret;
 }
 
@@ -1445,7 +1442,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;
 }