}
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;
HDMIDBG("hbr mode.\n");
hdmi_writel(hdmi_dev, AUD_CONF2, 0x1);
word_length = I2S_24BIT_SAMPLE;
- } else if ((HDMI_AUDIO_FS_48000 == audio->rate)
- || (HDMI_AUDIO_FS_192000 == audio->rate)) {
+ } else if ((HDMI_AUDIO_FS_48000 == audio->rate) ||
+ (HDMI_AUDIO_FS_192000 == audio->rate)) {
HDMIDBG("nlpcm mode.\n");
hdmi_writel(hdmi_dev, AUD_CONF2, 0x2);
word_length = I2S_24BIT_SAMPLE;
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;
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;
}
if (hdcp2_int) {
hdmi_writel(hdmi_dev, HDCP2REG_STAT, hdcp2_int);
pr_info("hdcp2_int is 0x%02x\n", hdcp2_int);
+ if ((hdcp2_int & m_HDCP2_AUTH_FAIL ||
+ hdcp2_int & m_HDCP2_AUTH_LOST) &&
+ hdmi_dev->hdcp2_start) {
+ pr_info("hdcp2 failed or lost\n");
+ hdmi_dev->hdcp2_start();
+ }
}
return IRQ_HANDLED;
}