ipctl->info = info;
        ipctl->dev = info->dev;
        platform_set_drvdata(pdev, ipctl);
-       ipctl->pctl = pinctrl_register(&imx_pinctrl_desc, &pdev->dev, ipctl);
+       ipctl->pctl = devm_pinctrl_register(&pdev->dev, &imx_pinctrl_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 imx_pinctrl_remove(struct platform_device *pdev)
-{
-       struct imx_pinctrl *ipctl = platform_get_drvdata(pdev);
-
-       pinctrl_unregister(ipctl->pctl);
-
-       return 0;
-}
 
 
 int imx_pinctrl_probe(struct platform_device *pdev,
                        struct imx_pinctrl_soc_info *info);
-int imx_pinctrl_remove(struct platform_device *pdev);
 #endif /* __DRIVERS_PINCTRL_IMX_H */
 
                .of_match_table = of_match_ptr(imx25_pinctrl_of_match),
        },
        .probe = imx25_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx25_pinctrl_init(void)
 
                .of_match_table = imx35_pinctrl_of_match,
        },
        .probe = imx35_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx35_pinctrl_init(void)
 
                .of_match_table = of_match_ptr(imx50_pinctrl_of_match),
        },
        .probe = imx50_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx50_pinctrl_init(void)
 
                .of_match_table = imx51_pinctrl_of_match,
        },
        .probe = imx51_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx51_pinctrl_init(void)
 
                .of_match_table = imx53_pinctrl_of_match,
        },
        .probe = imx53_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx53_pinctrl_init(void)
 
                .of_match_table = imx6dl_pinctrl_of_match,
        },
        .probe = imx6dl_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx6dl_pinctrl_init(void)
 
                .of_match_table = imx6q_pinctrl_of_match,
        },
        .probe = imx6q_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx6q_pinctrl_init(void)
 
                .of_match_table = imx6sl_pinctrl_of_match,
        },
        .probe = imx6sl_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx6sl_pinctrl_init(void)
 
                .of_match_table = of_match_ptr(imx6sx_pinctrl_of_match),
        },
        .probe = imx6sx_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx6sx_pinctrl_init(void)
 
                .of_match_table = of_match_ptr(imx6ul_pinctrl_of_match),
        },
        .probe = imx6ul_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx6ul_pinctrl_init(void)
 
                .of_match_table = of_match_ptr(imx7d_pinctrl_of_match),
        },
        .probe = imx7d_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init imx7d_pinctrl_init(void)
 
                .of_match_table = vf610_pinctrl_of_match,
        },
        .probe = vf610_pinctrl_probe,
-       .remove = imx_pinctrl_remove,
 };
 
 static int __init vf610_pinctrl_init(void)