ipctl->info = info;
        ipctl->dev = info->dev;
        platform_set_drvdata(pdev, ipctl);
-       ipctl->pctl = pinctrl_register(pctl_desc, &pdev->dev, ipctl);
+       ipctl->pctl = devm_pinctrl_register(&pdev->dev, pctl_desc, ipctl);
        if (IS_ERR(ipctl->pctl)) {
                dev_err(&pdev->dev, "could not register IMX pinctrl driver\n");
                return PTR_ERR(ipctl->pctl);
 
        return 0;
 }
-
-int imx1_pinctrl_core_remove(struct platform_device *pdev)
-{
-       struct imx1_pinctrl *ipctl = platform_get_drvdata(pdev);
-
-       pinctrl_unregister(ipctl->pctl);
-
-       return 0;
-}
 
                .name           = "imx1-pinctrl",
                .of_match_table = imx1_pinctrl_of_match,
        },
-       .remove = imx1_pinctrl_core_remove,
 };
 module_platform_driver_probe(imx1_pinctrl_driver, imx1_pinctrl_probe);
 
 
 
 int imx1_pinctrl_core_probe(struct platform_device *pdev,
                        struct imx1_pinctrl_soc_info *info);
-int imx1_pinctrl_core_remove(struct platform_device *pdev);
 #endif /* __DRIVERS_PINCTRL_IMX1_H */
 
                .name           = "imx21-pinctrl",
                .of_match_table = imx21_pinctrl_of_match,
        },
-       .remove = imx1_pinctrl_core_remove,
 };
 module_platform_driver_probe(imx21_pinctrl_driver, imx21_pinctrl_probe);
 
 
                .of_match_table = of_match_ptr(imx27_pinctrl_of_match),
        },
        .probe = imx27_pinctrl_probe,
-       .remove = imx1_pinctrl_core_remove,
 };
 
 static int __init imx27_pinctrl_init(void)