From 05f38c8d3faa3a0a725ddccc83bee1fd1641c388 Mon Sep 17 00:00:00 2001
From: "Oliver F. Brown" <oliver.brown@nxp.com>
Date: Thu, 12 May 2022 12:54:07 -0500
Subject: [PATCH] MLK-25881: Move HDMI RX uevent to after HDMI RX signal is
 acquired

The uevent should be sent after the HDMI RX signal is acquired and the receivier is ready to capture images.

Signed-off-by: Oliver F. Brown <oliver.brown@nxp.com>
Reviewed-by: Sandor Yu <Sandor.yu@nxp.com>
(cherry picked from commit 79e9522a1ec65e82b877f8b80b65d08859d2d2e3)
---
 drivers/staging/media/imx/hdmirx/cdns-hdmirx.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/media/imx/hdmirx/cdns-hdmirx.c b/drivers/staging/media/imx/hdmirx/cdns-hdmirx.c
index 5167c225dfade..d7aee5b575741 100644
--- a/drivers/staging/media/imx/hdmirx/cdns-hdmirx.c
+++ b/drivers/staging/media/imx/hdmirx/cdns-hdmirx.c
@@ -935,6 +935,8 @@ static int tmdsmon_fn(void *data)
 			continue;
 
 		if (change) {
+			char event_string[32];
+			char *envp[] = { event_string, NULL };
 			if (hdmirx->initialized) {
 				if (hdmirx->hdcp_fw_loaded && !hdmirx->allow_hdcp)
 					cdns_hdcprx_disable(hdmirx);
@@ -983,6 +985,12 @@ static int tmdsmon_fn(void *data)
 			startup_attempts = 0;
 			hdmirx->initialized = true;
 			hdmirx->cable_plugin = true;
+
+			/* Only send the UEVENT after HDMI RX is ready */
+			sprintf(event_string, "EVENT=hdmirxin");
+			kobject_uevent_env(&hdmirx->pdev->dev.kobj,
+					   KOBJ_CHANGE, envp);
+
 		} else {
 			if (hdmirx->initialized) {
 
@@ -1099,10 +1107,6 @@ static void hpd5v_work_func(struct work_struct *work)
 		}
 		hdmirx->initialized = 0;
 		hdmirx->tmds_clk = -1;
-
-		sprintf(event_string, "EVENT=hdmirxin");
-		kobject_uevent_env(&hdmirx->pdev->dev.kobj, KOBJ_CHANGE, envp);
-		hdmirx->cable_plugin = true;
 #ifdef CONFIG_MHDP_HDMIRX_CEC
 		if (hdmirx->is_cec) {
 			hdmirx_cec_init(hdmirx);
-- 
GitLab