mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user