Add atomic_pre_enable and atomic_post_disable callback to make sure the
bridge is not powered off until atomic_post_disable is called. This
prevents a power leakage when it6505 is powered off, but the upstream
DRM bridge is still sending display signals.

Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
Signed-off-by: Pin-yen Lin <treapk...@chromium.org>

---

 drivers/gpu/drm/bridge/ite-it6505.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/bridge/ite-it6505.c 
b/drivers/gpu/drm/bridge/ite-it6505.c
index 9d37660545fb..f5eea138ace4 100644
--- a/drivers/gpu/drm/bridge/ite-it6505.c
+++ b/drivers/gpu/drm/bridge/ite-it6505.c
@@ -2984,6 +2984,28 @@ static void it6505_bridge_atomic_disable(struct 
drm_bridge *bridge,
        }
 }
 
+static void it6505_bridge_atomic_pre_enable(struct drm_bridge *bridge,
+                                           struct drm_bridge_state *old_state)
+{
+       struct it6505 *it6505 = bridge_to_it6505(bridge);
+       struct device *dev = &it6505->client->dev;
+
+       DRM_DEV_DEBUG_DRIVER(dev, "start");
+
+       pm_runtime_get_sync(dev);
+}
+
+static void it6505_bridge_atomic_post_disable(struct drm_bridge *bridge,
+                                             struct drm_bridge_state 
*old_state)
+{
+       struct it6505 *it6505 = bridge_to_it6505(bridge);
+       struct device *dev = &it6505->client->dev;
+
+       DRM_DEV_DEBUG_DRIVER(dev, "start");
+
+       pm_runtime_put_sync(dev);
+}
+
 static enum drm_connector_status
 it6505_bridge_detect(struct drm_bridge *bridge)
 {
@@ -3018,6 +3040,8 @@ static const struct drm_bridge_funcs it6505_bridge_funcs 
= {
        .mode_valid = it6505_bridge_mode_valid,
        .atomic_enable = it6505_bridge_atomic_enable,
        .atomic_disable = it6505_bridge_atomic_disable,
+       .atomic_pre_enable = it6505_bridge_atomic_pre_enable,
+       .atomic_post_disable = it6505_bridge_atomic_post_disable,
        .detect = it6505_bridge_detect,
        .get_edid = it6505_bridge_get_edid,
 };
-- 
2.37.2.789.g6183377224-goog

Reply via email to