Skip to content

Commit cc62d98

Browse files
computersforpeacedianders
authored andcommitted
Revert "drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time"
This reverts commit 211f276. For quite some time, core DRM helpers already ensure that any relevant connectors/CRTCs/etc. are disabled, as well as their associated components (e.g., bridges) when suspending the system. Thus, analogix_dp_bridge_{enable,disable}() already get called, which in turn call drm_panel_{prepare,unprepare}(). This makes these drm_panel_*() calls redundant. Besides redundancy, there are a few problems with this handling: (1) drm_panel_{prepare,unprepare}() are *not* reference-counted APIs and are not in general designed to be handled by multiple callers -- although some panel drivers have a coarse 'prepared' flag that mitigates some damage, at least. So at a minimum this is redundant and confusing, but in some cases, this could be actively harmful. (2) The error-handling is a bit non-standard. We ignored errors in suspend(), but handled errors in resume(). And recently, people noticed that the clk handling is unbalanced in error paths, and getting *that* right is not actually trivial, given the current way errors are mostly ignored. (3) In the particular way analogix_dp_{suspend,resume}() get used (e.g., in rockchip_dp_*(), as a late/early callback), we don't necessarily have a proper PM relationship between the DP/bridge device and the panel device. So while the DP bridge gets resumed, the panel's parent device (e.g., platform_device) may still be suspended, and so any prepare() calls may fail. So remove the superfluous, possibly-harmful suspend()/resume() handling of panel state. Fixes: 211f276 ("drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time") Link: https://lore.kernel.org/all/Yv2CPBD3Picg%[email protected]/ Signed-off-by: Brian Norris <[email protected]> Reviewed-by: Douglas Anderson <[email protected]> Signed-off-by: Douglas Anderson <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/20220822180729.1.I8ac5abe3a4c1c6fd5c061686c6e883c22f69022c@changeid
1 parent 051ad27 commit cc62d98

File tree

1 file changed

+0
-13
lines changed

1 file changed

+0
-13
lines changed

drivers/gpu/drm/bridge/analogix/analogix_dp_core.c

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1864,12 +1864,6 @@ EXPORT_SYMBOL_GPL(analogix_dp_remove);
18641864
int analogix_dp_suspend(struct analogix_dp_device *dp)
18651865
{
18661866
clk_disable_unprepare(dp->clock);
1867-
1868-
if (dp->plat_data->panel) {
1869-
if (drm_panel_unprepare(dp->plat_data->panel))
1870-
DRM_ERROR("failed to turnoff the panel\n");
1871-
}
1872-
18731867
return 0;
18741868
}
18751869
EXPORT_SYMBOL_GPL(analogix_dp_suspend);
@@ -1884,13 +1878,6 @@ int analogix_dp_resume(struct analogix_dp_device *dp)
18841878
return ret;
18851879
}
18861880

1887-
if (dp->plat_data->panel) {
1888-
if (drm_panel_prepare(dp->plat_data->panel)) {
1889-
DRM_ERROR("failed to setup the panel\n");
1890-
return -EBUSY;
1891-
}
1892-
}
1893-
18941881
return 0;
18951882
}
18961883
EXPORT_SYMBOL_GPL(analogix_dp_resume);

0 commit comments

Comments
 (0)