hdmi: fix set hdmi switch state error when remove hdmi.
authorZheng Yang <zhengyang@rock-chips.com>
Sat, 14 Feb 2015 00:51:54 +0000 (08:51 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Sat, 14 Feb 2015 00:51:54 +0000 (08:51 +0800)
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/hdmi/rockchip-hdmi-core.c

index b7b67178d083f335cb68f22188aa6d8d080e7069..c066797d696825d968d9ae06f8c729ff4156de15 100644 (file)
@@ -236,7 +236,12 @@ static void hdmi_wq_remove(struct hdmi *hdmi)
        DBG("%s", __func__);
        if (hdmi->ops->remove)
                hdmi->ops->remove(hdmi);
-
+       #ifdef CONFIG_SWITCH
+       if ((hdmi->edid.baseaudio_support &&
+            hdmi->edid.sink_hdmi) ||
+            rk_fb_get_display_policy() == DISPLAY_POLICY_BOX)
+               switch_set_state(&(hdmi->switchdev), 0);
+       #endif
        list_for_each_safe(pos, n, &hdmi->edid.modelist) {
                list_del(pos);
                kfree(pos);
@@ -259,12 +264,6 @@ static void hdmi_wq_remove(struct hdmi *hdmi)
        }
        hdmi->hotplug = HDMI_HPD_REMOVED;
        hdmi_send_uevent(hdmi, KOBJ_REMOVE);
-       #ifdef CONFIG_SWITCH
-       if ((hdmi->edid.baseaudio_support &&
-            hdmi->edid.sink_hdmi) ||
-           rk_fb_get_display_policy() == DISPLAY_POLICY_BOX)
-               switch_set_state(&(hdmi->switchdev), 0);
-       #endif
 }
 
 static void hdmi_work_queue(struct work_struct *work)