Implements system sleep power management ops.

Signed-off-by: Yannick Fertré <yannick.fer...@st.com>
---
 drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c 
b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
index a672b59..1bef73e 100644
--- a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
+++ b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
@@ -356,12 +356,40 @@ static int dw_mipi_dsi_stm_remove(struct platform_device 
*pdev)
        return 0;
 }
 
+static int __maybe_unused dw_mipi_dsi_stm_suspend(struct device *dev)
+{
+       struct dw_mipi_dsi_stm *dsi = dw_mipi_dsi_stm_plat_data.priv_data;
+
+       DRM_DEBUG_DRIVER("\n");
+
+       clk_disable_unprepare(dsi->pllref_clk);
+
+       return 0;
+}
+
+static int __maybe_unused dw_mipi_dsi_stm_resume(struct device *dev)
+{
+       struct dw_mipi_dsi_stm *dsi = dw_mipi_dsi_stm_plat_data.priv_data;
+
+       DRM_DEBUG_DRIVER("\n");
+
+       clk_prepare_enable(dsi->pllref_clk);
+
+       return 0;
+}
+
+static const struct dev_pm_ops dw_mipi_dsi_stm_pm_ops = {
+       SET_SYSTEM_SLEEP_PM_OPS(dw_mipi_dsi_stm_suspend,
+                               dw_mipi_dsi_stm_resume)
+};
+
 static struct platform_driver dw_mipi_dsi_stm_driver = {
        .probe          = dw_mipi_dsi_stm_probe,
        .remove         = dw_mipi_dsi_stm_remove,
        .driver         = {
                .of_match_table = dw_mipi_dsi_stm_dt_ids,
                .name   = "stm32-display-dsi",
+               .pm = &dw_mipi_dsi_stm_pm_ops,
        },
 };
 
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to