mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 10:34:22 -04:00
drm/bridge: it6505: Add pre_enable/post_disable callback
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: b5c84a9edc ("drm/bridge: add it6505 driver")
Signed-off-by: Pin-yen Lin <treapking@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Robert Foss <robert.foss@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20221004044943.2407781-3-treapking@chromium.org
This commit is contained in:
@@ -2991,6 +2991,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)
|
||||
{
|
||||
@@ -3025,6 +3047,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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user