/* Support ext_wakeup pinconf */
        rtc_pinctrl_desc.name = dev_name(&pdev->dev);
 
-       rtc->pctldev = pinctrl_register(&rtc_pinctrl_desc, &pdev->dev, rtc);
+       rtc->pctldev = devm_pinctrl_register(&pdev->dev, &rtc_pinctrl_desc, rtc);
        if (IS_ERR(rtc->pctldev)) {
                dev_err(&pdev->dev, "Couldn't register pinctrl driver\n");
                ret = PTR_ERR(rtc->pctldev);
 
        ret = rtc_register_device(rtc->rtc);
        if (ret)
-               goto err_deregister_pinctrl;
+               goto err;
 
        rtc_nvmem_register(rtc->rtc, &omap_rtc_nvmem_config);
 
 
        return 0;
 
-err_deregister_pinctrl:
-       pinctrl_unregister(rtc->pctldev);
 err:
        clk_disable_unprepare(rtc->clk);
        device_init_wakeup(&pdev->dev, false);
        pm_runtime_put_sync(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
 
-       /* Remove ext_wakeup pinconf */
-       pinctrl_unregister(rtc->pctldev);
-
        return 0;
 }