pctrl->desc.custom_conf_items = pm8xxx_conf_items;
 #endif
 
-       pctrl->pctrl = pinctrl_register(&pctrl->desc, &pdev->dev, pctrl);
+       pctrl->pctrl = devm_pinctrl_register(&pdev->dev, &pctrl->desc, pctrl);
        if (IS_ERR(pctrl->pctrl)) {
                dev_err(&pdev->dev, "couldn't register pm8xxx mpp driver\n");
                return PTR_ERR(pctrl->pctrl);
        ret = gpiochip_add_data(&pctrl->chip, pctrl);
        if (ret) {
                dev_err(&pdev->dev, "failed register gpiochip\n");
-               goto unregister_pinctrl;
+               return ret;
        }
 
        ret = gpiochip_add_pin_range(&pctrl->chip,
 unregister_gpiochip:
        gpiochip_remove(&pctrl->chip);
 
-unregister_pinctrl:
-       pinctrl_unregister(pctrl->pctrl);
-
        return ret;
 }
 
 
        gpiochip_remove(&pctrl->chip);
 
-       pinctrl_unregister(pctrl->pctrl);
-
        return 0;
 }