video: rockchip: hdmi: skip operation when suspend or disabled

Change-Id: I294d338416a04d751ec5a5771e6b623ba7b69c02
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
This commit is contained in:
Zheng Yang
2016-03-01 14:25:47 +08:00
parent fe05c53704
commit 0fdde42e0c

View File

@@ -307,6 +307,13 @@ static void hdmi_work_queue(struct work_struct *work)
(event & 0xFF00) >> 8,
event & 0xFF);
if ((!hdmi->enable || hdmi->sleep) &&
(event != HDMI_ENABLE_CTL) &&
(event != HDMI_RESUME_CTL) &&
(event != HDMI_DISABLE_CTL) &&
(event != HDMI_SUSPEND_CTL))
goto exit;
switch (event) {
case HDMI_ENABLE_CTL:
if (!hdmi->enable) {
@@ -369,24 +376,21 @@ static void hdmi_work_queue(struct work_struct *work)
}
break;
case HDMI_SET_VIDEO:
if (hdmi->enable && !hdmi->sleep) {
hdmi_wq_set_output(hdmi,
HDMI_VIDEO_MUTE | HDMI_AUDIO_MUTE);
if (rk_fb_get_display_policy() == DISPLAY_POLICY_BOX)
msleep(2000);
else
msleep(1000);
hdmi_wq_set_video(hdmi);
hdmi_send_uevent(hdmi, KOBJ_CHANGE);
hdmi_wq_set_audio(hdmi);
hdmi_wq_set_output(hdmi, hdmi->mute);
if (hdmi->ops->hdcp_cb)
hdmi->ops->hdcp_cb(hdmi);
}
hdmi_wq_set_output(hdmi,
HDMI_VIDEO_MUTE | HDMI_AUDIO_MUTE);
if (rk_fb_get_display_policy() == DISPLAY_POLICY_BOX)
msleep(2000);
else
msleep(1000);
hdmi_wq_set_video(hdmi);
hdmi_send_uevent(hdmi, KOBJ_CHANGE);
hdmi_wq_set_audio(hdmi);
hdmi_wq_set_output(hdmi, hdmi->mute);
if (hdmi->ops->hdcp_cb)
hdmi->ops->hdcp_cb(hdmi);
break;
case HDMI_SET_AUDIO:
if ((hdmi->mute & HDMI_AUDIO_MUTE) == 0 &&
hdmi->enable && !hdmi->sleep) {
if ((hdmi->mute & HDMI_AUDIO_MUTE) == 0) {
hdmi_wq_set_output(hdmi, HDMI_AUDIO_MUTE);
hdmi_wq_set_audio(hdmi);
hdmi_wq_set_output(hdmi, hdmi->mute);
@@ -395,7 +399,6 @@ static void hdmi_work_queue(struct work_struct *work)
case HDMI_MUTE_AUDIO:
case HDMI_UNMUTE_AUDIO:
if (hdmi->mute & HDMI_AUDIO_MUTE ||
!hdmi->enable || hdmi->sleep ||
hdmi->hotplug != HDMI_HPD_ACTIVED)
break;
if (event == HDMI_MUTE_AUDIO)
@@ -446,7 +449,7 @@ static void hdmi_work_queue(struct work_struct *work)
pr_err("HDMI: hdmi_work_queue() unkown event\n");
break;
}
exit:
kfree(hdmi_w->data);
if (!hdmi_w->sync)
kfree(hdmi_w);