drm: bridge: dw-hdmi: Fix the issue of EXTCON_DISP_HDMI state error

First, echo off > sys/class/drm/card0-HDMI-A-1/status, the EXTCON_DISP_HDMI state is 0.
Then, echo detect > sys/class/drm/card0-HDMI-A-1/status, the EXTCON_DISP_HDMI state still is 0.
As a result, HDMI has no sound.

Signed-off-by: Shunqing Chen <csq@rock-chips.com>
Change-Id: I6d7904cb75fec21899389dbaba8acbd266dac7cd
This commit is contained in:
Shunqing Chen
2020-10-15 09:30:23 +08:00
committed by Algea Cao
parent 52a3be11d0
commit ee1900dfde

View File

@@ -402,8 +402,6 @@ static void repo_hpd_event(struct work_struct *p_work)
ktime_get());
drm_bridge_hpd_notify(&hdmi->bridge, status);
}
extcon_set_state_sync(hdmi->extcon, EXTCON_DISP_HDMI, hdmi->hpd_state);
}
static bool check_hdmi_irq(struct dw_hdmi *hdmi, int intr_stat,
@@ -2750,6 +2748,11 @@ static enum drm_connector_status dw_hdmi_detect(struct dw_hdmi *hdmi)
}
mutex_unlock(&hdmi->mutex);
if (result == connector_status_connected)
extcon_set_state_sync(hdmi->extcon, EXTCON_DISP_HDMI, true);
else
extcon_set_state_sync(hdmi->extcon, EXTCON_DISP_HDMI, false);
return result;
}
@@ -2927,11 +2930,11 @@ static void dw_hdmi_connector_force(struct drm_connector *connector)
mutex_lock(&hdmi->mutex);
if (!hdmi->disabled && hdmi->force != connector->force) {
if (connector->force == DRM_FORCE_OFF)
if (hdmi->force != connector->force) {
if (!hdmi->disabled && connector->force == DRM_FORCE_OFF)
extcon_set_state_sync(hdmi->extcon, EXTCON_DISP_HDMI,
false);
else if (connector->force == DRM_FORCE_ON)
else if (hdmi->disabled && connector->force == DRM_FORCE_ON)
extcon_set_state_sync(hdmi->extcon, EXTCON_DISP_HDMI,
true);
}