if ((vpara->input_color >= VIDEO_INPUT_COLOR_YCBCR444) ||
((vpara->input_color == VIDEO_INPUT_COLOR_RGB) &&
(vpara->color_limit_range == COLOR_LIMIT_RANGE_0_255))) {
- value = v_SOF_DISABLE;
+ value = v_SOF_DISABLE | v_COLOR_DEPTH_NOT_INDICATED(1);
hdmi_writel(hdmi_dev, VIDEO_CONTRL3, value);
hdmi_msk_reg(hdmi_dev, VIDEO_CONTRL,
m_VIDEO_AUTO_CSC | m_VIDEO_C0_C2_EXCHANGE,
hdmi_writel(hdmi_dev, VIDEO_CSC_COEF+i, coeff[i]);
}
- value = v_SOF_DISABLE | csc_enable;
+ value = v_SOF_DISABLE | csc_enable | v_COLOR_DEPTH_NOT_INDICATED(1);
hdmi_writel(hdmi_dev, VIDEO_CONTRL3, value);
hdmi_msk_reg(hdmi_dev, VIDEO_CONTRL,
m_VIDEO_AUTO_CSC | m_VIDEO_C0_C2_EXCHANGE,
#define VIDEO_CONTRL3 0x04
+#define m_COLOR_DEPTH_NOT_INDICATED (1 << 4)
#define m_SOF (1 << 3)
+#define m_COLOR_RANGE (1 << 2)
#define m_CSC (1 << 0)
+#define v_COLOR_DEPTH_NOT_INDICATED(n) ((n) << 4) /*1: Force GCP CD[3:0] zero
+ 0: GCP CD[3:0] according
+ color depth*/
#define v_SOF_ENABLE (0 << 3)
#define v_SOF_DISABLE (1 << 3)
+#define v_COLOR_RANGE_FULL (1 << 2)
+#define v_COLOR_RANGE_LIMITED (0 << 2)
#define v_CSC_ENABLE 1
#define v_CSC_DISABLE 0
}
static inline void rk3036_hdmi_reset_pclk(void)
{
- writel_relaxed(0x00010001, RK_CRU_VIRT+ 0x128);
+ writel_relaxed(0x00010001, RK_CRU_VIRT + 0x128);
msleep(100);
writel_relaxed(0x00010000, RK_CRU_VIRT + 0x128);
}