drm/msm/dp: support setting the DP subconnector type
Read the downstream port info and set the subconnector type accordingly. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Patchwork: https://patchwork.freedesktop.org/patch/555531/ Link: https://lore.kernel.org/r/20230903222432.2894093-1-dmitry.baryshkov@linaro.org
This commit is contained in:
parent
6398e4d4ca
commit
bfcc3d8f94
3 changed files with 14 additions and 1 deletions
|
@ -364,8 +364,12 @@ static int dp_display_send_hpd_notification(struct dp_display_private *dp,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reset video pattern flag on disconnect */
|
/* reset video pattern flag on disconnect */
|
||||||
if (!hpd)
|
if (!hpd) {
|
||||||
dp->panel->video_test = false;
|
dp->panel->video_test = false;
|
||||||
|
drm_dp_set_subconnector_property(dp->dp_display.connector,
|
||||||
|
connector_status_disconnected,
|
||||||
|
dp->panel->dpcd, dp->panel->downstream_ports);
|
||||||
|
}
|
||||||
|
|
||||||
dp->dp_display.is_connected = hpd;
|
dp->dp_display.is_connected = hpd;
|
||||||
|
|
||||||
|
@ -393,6 +397,9 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp)
|
||||||
|
|
||||||
dp_link_process_request(dp->link);
|
dp_link_process_request(dp->link);
|
||||||
|
|
||||||
|
drm_dp_set_subconnector_property(dp->dp_display.connector, connector_status_connected,
|
||||||
|
dp->panel->dpcd, dp->panel->downstream_ports);
|
||||||
|
|
||||||
edid = dp->panel->edid;
|
edid = dp->panel->edid;
|
||||||
|
|
||||||
dp->dp_display.psr_supported = dp->panel->psr_cap.version && psr_enabled;
|
dp->dp_display.psr_supported = dp->panel->psr_cap.version && psr_enabled;
|
||||||
|
|
|
@ -161,6 +161,11 @@ int dp_panel_read_sink_caps(struct dp_panel *dp_panel,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rc = drm_dp_read_downstream_info(panel->aux, dp_panel->dpcd,
|
||||||
|
dp_panel->downstream_ports);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
kfree(dp_panel->edid);
|
kfree(dp_panel->edid);
|
||||||
dp_panel->edid = NULL;
|
dp_panel->edid = NULL;
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ struct dp_panel_psr {
|
||||||
struct dp_panel {
|
struct dp_panel {
|
||||||
/* dpcd raw data */
|
/* dpcd raw data */
|
||||||
u8 dpcd[DP_RECEIVER_CAP_SIZE];
|
u8 dpcd[DP_RECEIVER_CAP_SIZE];
|
||||||
|
u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
|
||||||
|
|
||||||
struct dp_link_info link_info;
|
struct dp_link_info link_info;
|
||||||
struct drm_dp_desc desc;
|
struct drm_dp_desc desc;
|
||||||
|
|
Loading…
Add table
Reference in a new issue