}
 }
 
+static int msm_pinctrl_suspend(struct device *dev)
+{
+       struct msm_pinctrl *pctrl = dev_get_drvdata(dev);
+
+       return pinctrl_force_sleep(pctrl->pctrl);
+}
+
+static int msm_pinctrl_resume(struct device *dev)
+{
+       struct msm_pinctrl *pctrl = dev_get_drvdata(dev);
+
+       return pinctrl_force_default(pctrl->pctrl);
+}
+
+SIMPLE_DEV_PM_OPS(msm_pinctrl_dev_pm_ops, msm_pinctrl_suspend,
+                 msm_pinctrl_resume);
+
+EXPORT_SYMBOL(msm_pinctrl_dev_pm_ops);
+
 int msm_pinctrl_probe(struct platform_device *pdev,
                      const struct msm_pinctrl_soc_data *soc_data)
 {
 
        unsigned int ntiles;
 };
 
+extern const struct dev_pm_ops msm_pinctrl_dev_pm_ops;
+
 int msm_pinctrl_probe(struct platform_device *pdev,
                      const struct msm_pinctrl_soc_data *soc_data);
 int msm_pinctrl_remove(struct platform_device *pdev);
 
 static struct platform_driver sdm845_pinctrl_driver = {
        .driver = {
                .name = "sdm845-pinctrl",
+               .pm = &msm_pinctrl_dev_pm_ops,
                .of_match_table = sdm845_pinctrl_of_match,
        },
        .probe = sdm845_pinctrl_probe,