summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuogee Hsieh <khsieh@codeaurora.org>2021-08-05 13:44:54 -0700
committerRob Clark <robdclark@chromium.org>2021-08-10 14:49:29 -0700
commit7948fe12d47a946fb8025a0534c900e3dd4b5839 (patch)
treec243938e92da0ab24a5e39a2b04b3a5b53324571
parent7e10bf427850f2d7133fd091999abd5fc1755cdb (diff)
downloadlinux-7948fe12d47a946fb8025a0534c900e3dd4b5839.tar.gz
linux-7948fe12d47a946fb8025a0534c900e3dd4b5839.tar.bz2
linux-7948fe12d47a946fb8025a0534c900e3dd4b5839.zip
drm/msm/dp: return correct edid checksum after corrupted edid checksum read
Response with correct edid checksum saved at connector after corrupted edid checksum read. This fixes Link Layer CTS cases 4.2.2.3, 4.2.2.6. Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Link: https://lore.kernel.org/r/1628196295-7382-6-git-send-email-khsieh@codeaurora.org Signed-off-by: Rob Clark <robdclark@chromium.org>
-rw-r--r--drivers/gpu/drm/msm/dp/dp_panel.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_panel.c
index 440b32753430..2181b60e1d1d 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.c
+++ b/drivers/gpu/drm/msm/dp/dp_panel.c
@@ -271,7 +271,7 @@ static u8 dp_panel_get_edid_checksum(struct edid *edid)
{
struct edid *last_block;
u8 *raw_edid;
- bool is_edid_corrupt;
+ bool is_edid_corrupt = false;
if (!edid) {
DRM_ERROR("invalid edid input\n");
@@ -303,7 +303,12 @@ void dp_panel_handle_sink_request(struct dp_panel *dp_panel)
panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
if (panel->link->sink_request & DP_TEST_LINK_EDID_READ) {
- u8 checksum = dp_panel_get_edid_checksum(dp_panel->edid);
+ u8 checksum;
+
+ if (dp_panel->edid)
+ checksum = dp_panel_get_edid_checksum(dp_panel->edid);
+ else
+ checksum = dp_panel->connector->real_edid_checksum;
dp_link_send_edid_checksum(panel->link, checksum);
dp_link_send_test_response(panel->link);