drm/stm: dw_mipi_dsi-stm: add sleep power management
authorYannick Fertré <yannick.fertre@st.com>
Thu, 21 Mar 2019 08:13:53 +0000 (09:13 +0100)
committerBenjamin Gaignard <benjamin.gaignard@linaro.org>
Mon, 1 Apr 2019 09:00:05 +0000 (11:00 +0200)
Implements system sleep power management ops.

Signed-off-by: Yannick Fertré <yannick.fertre@st.com>
Acked-by: Philippe Cornu <philippe.cornu@st.com>
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/1553156033-13792-1-git-send-email-yannick.fertre@st.com
drivers/gpu/drm/stm/dw_mipi_dsi-stm.c

index a672b59a22262c949c8519840e9f29c1225d5f83..1bef73e8c8fe93c282f52ea48d7fbf72377f8572 100644 (file)
@@ -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,
        },
 };