Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3e07363 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: hdmi: fix EDID parser issue"

parents a0f7b85f 74384218
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
/* Copyright (c) 2010-2020, The Linux Foundation. All rights reserved.
/* Copyright (c) 2010-2017,2019-2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -192,8 +192,10 @@ static bool hdmi_edid_is_mode_supported(struct hdmi_edid_ctrl *edid_ctrl,
	return true;
}

static int hdmi_edid_reset_parser(struct hdmi_edid_ctrl *edid_ctrl)
int hdmi_edid_reset_parser(void *input)
{
	struct hdmi_edid_ctrl *edid_ctrl = (struct hdmi_edid_ctrl *)input;

	if (!edid_ctrl) {
		DEV_ERR("%s: invalid input\n", __func__);
		return -EINVAL;
@@ -2445,7 +2447,7 @@ int hdmi_edid_parser(void *input)
	}

	/* reset edid data for new hdmi connection */
	hdmi_edid_reset_parser(edid_ctrl);
	hdmi_edid_reset_parser(input);

	edid_buf = edid_ctrl->edid_buf;

+2 −1
Original line number Diff line number Diff line
/* Copyright (c) 2010-2020, The Linux Foundation. All rights reserved.
/* Copyright (c) 2010-2017,2019-2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -69,6 +69,7 @@ struct hdmi_edid_override_data {
};

int hdmi_edid_parser(void *edid_ctrl);
int hdmi_edid_reset_parser(void *edid_ctrl);
u32 hdmi_edid_get_raw_data(void *edid_ctrl, u8 *buf, u32 size);
u8 hdmi_edid_get_sink_scaninfo(void *edid_ctrl, u32 resolution);
bool hdmi_edid_is_dvi_mode(void *input);
+9 −0
Original line number Diff line number Diff line
@@ -797,6 +797,15 @@ static int hdmi_panel_setup_scrambler(struct hdmi_panel *panel)
		rc = hdmi_setup_ddc_timers(panel->ddc,
			HDMI_TX_DDC_TIMER_SCRAMBLER_STATUS, timeout_hsync);
	} else {
		tmds_clock_ratio = 0;
		rc = hdmi_scdc_write(panel->ddc,
			HDMI_TX_SCDC_TMDS_BIT_CLOCK_RATIO_UPDATE,
			tmds_clock_ratio);
		if (rc) {
			pr_err("TMDS CLK RATIO ERR\n");
			return rc;
		}

		hdmi_scdc_write(panel->ddc,
			HDMI_TX_SCDC_SCRAMBLING_ENABLE, 0x0);

+3 −1
Original line number Diff line number Diff line
/* Copyright (c) 2010-2020, The Linux Foundation. All rights reserved.
/* Copyright (c) 2010-2017,2019-2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -3517,6 +3517,8 @@ static void hdmi_tx_hpd_off(struct hdmi_tx_ctrl *hdmi_ctrl)
	hdmi_ctrl->hpd_off_pending = false;
	hdmi_ctrl->dc_support = false;

	hdmi_edid_reset_parser(hdmi_tx_get_fd(HDMI_TX_FEAT_EDID));

	DEV_DBG("%s: HPD is now OFF\n", __func__);
} /* hdmi_tx_hpd_off */