hdmi:rk3288/rk3368: modify avi colorimetry information according to input colorimetry.
authorZheng Yang <zhengyang@rock-chips.com>
Tue, 14 Jul 2015 01:52:18 +0000 (09:52 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Tue, 14 Jul 2015 01:52:18 +0000 (09:52 +0800)
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2_hw.c

index ef98b201b3b3e95ef421a10d6f786708859b195c..8492717a1c567682ec295e6c5092a44661ab8668 100755 (executable)
@@ -1136,27 +1136,32 @@ static void hdmi_dev_config_avi(struct hdmi_dev *hdmi_dev,
        case HDMI_720X480P_60HZ_4_3:
        case HDMI_720X576P_50HZ_4_3:
                aspect_ratio = AVI_CODED_FRAME_ASPECT_4_3;
-               colorimetry = AVI_COLORIMETRY_SMPTE_170M;
+               if (vpara->colorimetry == HDMI_COLORIMETRY_NO_DATA)
+                       colorimetry = AVI_COLORIMETRY_SMPTE_170M;
                break;
        case HDMI_720X480I_60HZ_16_9:
        case HDMI_720X576I_50HZ_16_9:
        case HDMI_720X480P_60HZ_16_9:
        case HDMI_720X576P_50HZ_16_9:
                aspect_ratio = AVI_CODED_FRAME_ASPECT_16_9;
-               colorimetry = AVI_COLORIMETRY_SMPTE_170M;
+               if (vpara->colorimetry == HDMI_COLORIMETRY_NO_DATA)
+                       colorimetry = AVI_COLORIMETRY_SMPTE_170M;
                break;
        default:
                aspect_ratio = AVI_CODED_FRAME_ASPECT_16_9;
-               colorimetry = AVI_COLORIMETRY_ITU709;
+               if (vpara->colorimetry == HDMI_COLORIMETRY_NO_DATA)
+                       colorimetry = AVI_COLORIMETRY_ITU709;
        }
 
-       if (vpara->color_output_depth > 8) {
+       if (vpara->colorimetry > HDMI_COLORIMETRY_ITU709) {
                colorimetry = AVI_COLORIMETRY_EXTENDED;
-               ext_colorimetry = 6;
+               ext_colorimetry = vpara->colorimetry;
        } else if (vpara->color_output == HDMI_COLOR_RGB_16_235 ||
                 vpara->color_output == HDMI_COLOR_RGB_0_255) {
                colorimetry = AVI_COLORIMETRY_NO_DATA;
                ext_colorimetry = 0;
+       } else if (vpara->colorimetry != HDMI_COLORIMETRY_NO_DATA) {
+               colorimetry = vpara->colorimetry;
        }
 
        hdmi_writel(hdmi_dev, FC_AVICONF1,