disp: msm: dp: cache edid data for mst

Currently, in SST mode, sink edid is read once after hpd
and reused on subsequent mode enumeration calls. But in
MST mode, there is no caching and the driver re-reads the
edid from the sink on every get_modes call for each monitor.
Each read takes more than 500ms causing unnecessary delays
during MST enumeration.

This change reads the edid once per hpd and uses the
cached data on subsequent calls.

Change-Id: I27545a44b9f9bd40000dde60735815f9c47fa54c
Signed-off-by: Sudarsan Ramesh <sudarame@codeaurora.org>
This commit is contained in:
Sudarsan Ramesh
2020-10-20 16:01:00 -04:00
parent 68f4129cc6
commit cf4877c2c3
2 changed files with 67 additions and 9 deletions

View File

@@ -481,6 +481,7 @@ struct sde_connector_dyn_hdr_metadata {
* @hdr_capable: external hdr support present
* @cmd_rx_buf: the return buffer of response of command transfer
* @rx_len: the length of dcs command received buffer
* @cached_edid: cached edid data for the connector
*/
struct sde_connector {
struct drm_connector base;
@@ -550,6 +551,8 @@ struct sde_connector {
u8 cmd_rx_buf[MAX_CMD_RECEIVE_SIZE];
int rx_len;
struct edid *cached_edid;
};
/**