mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
drm/msm/dp: clear EDID on display unplug
Currently the driver only updates the EDID when it detects a connected monitor, which results in the connector still listing outdated modes even after the display is unplugged. Set connector's EDID to NULL on unplug to clear the list of modes. Tested-by: Val Packett <val@packett.cool> # x1e80100-dell-latitude-7455 Tested-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com> # Hamoa IOT EVK, QCS8300 Ride Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Patchwork: https://patchwork.freedesktop.org/patch/727619/ Link: https://lore.kernel.org/r/20260524-hpd-refactor-v6-10-cf3ab488dd7b@oss.qualcomm.com
This commit is contained in:
parent
3ea2d1c3d1
commit
24acb35682
|
|
@ -451,6 +451,10 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_display_private *dp)
|
|||
if (!dp->plugged)
|
||||
return 0;
|
||||
|
||||
/* Don't forget modes for eDP */
|
||||
if (!dp->msm_dp_display.is_edp)
|
||||
msm_dp_panel_unplugged(dp->panel, dp->msm_dp_display.connector);
|
||||
|
||||
/* triggered by irq_hdp with sink_count = 0 */
|
||||
if (dp->link->sink_count == 0)
|
||||
msm_dp_display_host_phy_exit(dp);
|
||||
|
|
|
|||
|
|
@ -293,6 +293,14 @@ int msm_dp_panel_read_sink_caps(struct msm_dp_panel *msm_dp_panel,
|
|||
return rc;
|
||||
}
|
||||
|
||||
void msm_dp_panel_unplugged(struct msm_dp_panel *msm_dp_panel,
|
||||
struct drm_connector *connector)
|
||||
{
|
||||
drm_edid_connector_update(connector, NULL);
|
||||
drm_edid_free(msm_dp_panel->drm_edid);
|
||||
msm_dp_panel->drm_edid = NULL;
|
||||
}
|
||||
|
||||
u32 msm_dp_panel_get_mode_bpp(struct msm_dp_panel *msm_dp_panel,
|
||||
u32 mode_edid_bpp, u32 mode_pclk_khz)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ int msm_dp_panel_deinit(struct msm_dp_panel *msm_dp_panel);
|
|||
int msm_dp_panel_timing_cfg(struct msm_dp_panel *msm_dp_panel, bool wide_bus_en);
|
||||
int msm_dp_panel_read_sink_caps(struct msm_dp_panel *msm_dp_panel,
|
||||
struct drm_connector *connector);
|
||||
void msm_dp_panel_unplugged(struct msm_dp_panel *msm_dp_panel,
|
||||
struct drm_connector *connector);
|
||||
u32 msm_dp_panel_get_mode_bpp(struct msm_dp_panel *msm_dp_panel, u32 mode_max_bpp,
|
||||
u32 mode_pclk_khz);
|
||||
int msm_dp_panel_get_modes(struct msm_dp_panel *msm_dp_panel,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user