diff --git a/drivers/staging/media/imx/hdmirx/cdns-hdmirx.c b/drivers/staging/media/imx/hdmirx/cdns-hdmirx.c index 5167c225dfade04c177e1b1bc33cc95de30bfaf0..d7aee5b57574196be855b4a2539a57b0eabc4fa1 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);