diff options
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_hdmi_tx.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/video/fbdev/msm/mdss_hdmi_tx.c b/drivers/video/fbdev/msm/mdss_hdmi_tx.c index 66e7c749e595..4c303224ba95 100644 --- a/drivers/video/fbdev/msm/mdss_hdmi_tx.c +++ b/drivers/video/fbdev/msm/mdss_hdmi_tx.c @@ -1707,7 +1707,7 @@ static int hdmi_tx_read_edid(struct hdmi_tx_ctrl *hdmi_ctrl) check_sum += ebuf[ndx]; if (check_sum & 0xFF) { - DEV_ERR("%s: checksome mismatch\n", __func__); + DEV_ERR("%s: checksum mismatch\n", __func__); ret = -EINVAL; goto end; } @@ -2262,6 +2262,8 @@ static void hdmi_tx_update_deep_color(struct hdmi_tx_ctrl *hdmi_ctrl) static void hdmi_tx_hpd_int_work(struct work_struct *work) { struct hdmi_tx_ctrl *hdmi_ctrl = NULL; + int rc = -EINVAL; + int retry = MAX_EDID_READ_RETRY; hdmi_ctrl = container_of(work, struct hdmi_tx_ctrl, hpd_int_work); if (!hdmi_ctrl) { @@ -2280,7 +2282,10 @@ static void hdmi_tx_hpd_int_work(struct work_struct *work) hdmi_ctrl->hpd_state ? "CONNECT" : "DISCONNECT"); if (hdmi_ctrl->hpd_state) { - hdmi_tx_read_sink_info(hdmi_ctrl); + while (rc && retry--) + rc = hdmi_tx_read_sink_info(hdmi_ctrl); + if (!retry && rc) + pr_warn_ratelimited("%s: EDID read failed\n", __func__); hdmi_tx_update_deep_color(hdmi_ctrl); hdmi_tx_send_cable_notification(hdmi_ctrl, true); |
