Merge remote-tracking branch 'origin/develop-3.0-rk2928' into develop-3.0
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / hdmi / chips / rk30 / rk30_hdmi_hw.c
index e8b5f1e74b7471e53cc209b5ec0a6f71c36824a9..5f1d2662cf23e94683996fa98fdc833d483e2394 100755 (executable)
@@ -69,6 +69,8 @@ int rk30_hdmi_detect_hotplug(void)
        int value =     HDMIRdReg(HPD_MENS_STA);
        
        hdmi_dbg(hdmi->dev, "[%s] value %02x\n", __FUNCTION__, value);
+       #if 0
+       // When HPD and TMDS_CLK was high, HDMI is actived.
        value &= m_HOTPLUG_STATUS | m_MSEN_STATUS;
        if(value  == (m_HOTPLUG_STATUS | m_MSEN_STATUS) )
                return HDMI_HPD_ACTIVED;
@@ -76,6 +78,15 @@ int rk30_hdmi_detect_hotplug(void)
                return HDMI_HPD_INSERT;
        else
                return HDMI_HPD_REMOVED;
+       #else
+       // When HPD was high, HDMI is actived.
+       if(value & m_HOTPLUG_STATUS)
+               return HDMI_HPD_ACTIVED;
+       else if(value & m_MSEN_STATUS)
+               return HDMI_HPD_INSERT;
+       else
+               return HDMI_HPD_REMOVED;
+       #endif
 }
 
 #define HDMI_EDID_DDC_CLK      90000
@@ -556,10 +567,9 @@ void rk30_hdmi_control_output(int enable)
 {
        hdmi_dbg(hdmi->dev, "[%s] %d\n", __FUNCTION__, enable);
        if(enable == 0) {
-               HDMIWrReg(AV_MUTE, v_AUDIO_MUTE(1) | v_VIDEO_MUTE(1));
+               HDMIWrReg(VIDEO_SETTING2, 0x03);
        }
        else {
-               HDMIWrReg(VIDEO_SETTING2, 0x03);
                if(hdmi->pwr_mode == PWR_SAVE_MODE_B) {
                        //  Switch to power save mode_d
                        rk30_hdmi_set_pwr_mode(PWR_SAVE_MODE_D);