rk3368 hdmi : fix the hdmi bitstream connot idenfify sometimes
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / hdmi / rockchip-hdmiv2 / rockchip_hdmiv2_hw.c
index e1ef8a6d9cac0de90303db9cc77d9c405588f2e7..7b710986b27454682cad3a2bef73d1b753f20088 100755 (executable)
@@ -1288,9 +1288,9 @@ static int hdmi_dev_config_video(struct hdmi *hdmi, struct hdmi_video *vpara)
                }
                hdmi_msk_reg(hdmi_dev, FC_DBGFORCE,
                             m_FC_FORCEVIDEO, v_FC_FORCEVIDEO(1));
+               hdmi_writel(hdmi_dev, MC_CLKDIS, m_HDCPCLK_DISABLE);
        }
 
-       hdmi_writel(hdmi_dev, MC_CLKDIS, m_HDCPCLK_DISABLE);
        if (rockchip_hdmiv2_video_framecomposer(hdmi, vpara) < 0)
                return -1;
 
@@ -1550,6 +1550,9 @@ static int hdmi_dev_config_audio(struct hdmi *hdmi, struct hdmi_audio *audio)
                     m_AUDIO_SAMPLE_RATE, v_AUDIO_SAMPLE_RATE(rate));
        hdmi_writel(hdmi_dev, FC_AUDSCHNLS8, ((~rate) << 4) | 0x2);
 
+       hdmi_msk_reg(hdmi_dev, AUD_CONF0,
+                    m_SW_AUD_FIFO_RST, v_SW_AUD_FIFO_RST(1));
+
        hdmi_dev_config_aai(hdmi_dev, audio);
 
        return 0;
@@ -1598,7 +1601,8 @@ static int hdmi_dev_insert(struct hdmi *hdmi)
        struct hdmi_dev *hdmi_dev = hdmi->property->priv;
 
        HDMIDBG("%s\n", __func__);
-       hdmi_writel(hdmi_dev, MC_CLKDIS, m_HDCPCLK_DISABLE);
+       if (!hdmi->uboot)
+               hdmi_writel(hdmi_dev, MC_CLKDIS, m_HDCPCLK_DISABLE);
        return HDMI_ERROR_SUCESS;
 }