static void hdmi_wq_set_video(struct hdmi *hdmi)
{
struct hdmi_video video;
+ int deepcolor;
DBG("%s", __func__);
video.vic = hdmi->vic & HDMI_VIC_MASK;
video.sink_hdmi = hdmi->edid.sink_hdmi;
video.format_3d = hdmi->mode_3d;
+
/* For DVI, output RGB */
if (hdmi->edid.sink_hdmi == 0) {
video.color_output = HDMI_COLOR_RGB_0_255;
video.color_output = hdmi->colormode;
}
}
+ if (hdmi->vic & HDMI_VIDEO_YUV420) {
+ video.color_output = HDMI_COLOR_YCBCR420;
+ deepcolor = hdmi->edid.deepcolor_420;
+ } else {
+ deepcolor = hdmi->edid.deepcolor;
+ }
if ((hdmi->property->feature & SUPPORT_DEEP_10BIT) &&
- (hdmi->edid.deepcolor & HDMI_DEEP_COLOR_30BITS)) {
+ (deepcolor & HDMI_DEEP_COLOR_30BITS)) {
if (hdmi->colordepth == HDMI_DEPP_COLOR_AUTO ||
hdmi->colordepth == 10)
video.color_output_depth = 10;
} else {
video.color_output_depth = 8;
}
- if (hdmi->vic & HDMI_VIDEO_YUV420)
- video.color_output = HDMI_COLOR_YCBCR420;
+
pr_info("hdmi output corlor mode is %d\n", video.color_output);
video.color_input = HDMI_COLOR_RGB_0_255;
if (hdmi->property->feature & SUPPORT_YCBCR_INPUT) {
break;
case 0xc45dd8:
pedid->sink_hdmi = 1;
- if (count > 4)
- pedid->hf_vsdb_version = buf[cur_offset + 4];
+ pedid->hf_vsdb_version = buf[cur_offset + 4];
switch (pedid->hf_vsdb_version) {
case 1:/*compliant with HDMI Specification 2.0*/
- if (count > 5) {
- pedid->maxtmdsclock =
- buf[cur_offset + 5] * 5000000;
- EDBG("[CEA] maxtmdsclock is %d.\n",
- pedid->maxtmdsclock);
- }
- if (count > 6) {
- pedid->scdc_present = buf[cur_offset+6] >> 7;
- pedid->rr_capable =
- (buf[cur_offset+6]&0x40) >> 6;
- pedid->lte_340mcsc_scramble =
- (buf[cur_offset+6]&0x08) >> 3;
- pedid->independent_view =
- (buf[cur_offset+6]&0x04) >> 2;
- pedid->dual_view =
- (buf[cur_offset+6]&0x02) >> 1;
- pedid->osd_disparity_3d =
- buf[cur_offset+6] & 0x01;
- }
- if (count > 7) {
- pedid->deepcolor = buf[cur_offset+7]&0x7;
- EDBG("[CEA] deepcolor is %d.\n",
- pedid->deepcolor);
- }
+ pedid->maxtmdsclock =
+ buf[cur_offset + 5] * 5000000;
+ EDBG("[CEA] maxtmdsclock is %d.\n",
+ pedid->maxtmdsclock);
+ pedid->scdc_present = buf[cur_offset+6] >> 7;
+ pedid->rr_capable =
+ (buf[cur_offset+6]&0x40) >> 6;
+ pedid->lte_340mcsc_scramble =
+ (buf[cur_offset+6]&0x08) >> 3;
+ pedid->independent_view =
+ (buf[cur_offset+6]&0x04) >> 2;
+ pedid->dual_view =
+ (buf[cur_offset+6]&0x02) >> 1;
+ pedid->osd_disparity_3d =
+ buf[cur_offset+6] & 0x01;
+ pedid->deepcolor_420 =
+ (buf[cur_offset+7] & 0x7) << 1;
break;
default:
pr_info("hf_vsdb_version = %d\n",
pr_info(" 36bit\n");
if (hdmi->edid.deepcolor & HDMI_DEEP_COLOR_48BITS)
pr_info(" 48bit\n");
-
+ if (hdmi->edid.ycbcr420)
+ pr_info(" 420_24bit\n");
+ if (hdmi->edid.deepcolor_420 & HDMI_DEEP_COLOR_30BITS)
+ pr_info(" 420_30bit\n");
+ if (hdmi->edid.deepcolor_420 & HDMI_DEEP_COLOR_36BITS)
+ pr_info(" 420_36bit\n");
+ if (hdmi->edid.deepcolor_420 & HDMI_DEEP_COLOR_48BITS)
+ pr_info(" 420_48bit\n");
pr_info("Support audio type:\n");
for (i = 0; i < hdmi->edid.audio_num; i++) {
audio = &(hdmi->edid.audio[i]);
unsigned char ycbcr420; /*Display device support YCbCr420*/
unsigned char deepcolor; /*bit3:DC_48bit; bit2:DC_36bit;
bit1:DC_30bit; bit0:DC_Y444;*/
+ unsigned char deepcolor_420;
unsigned int cecaddress; /*CEC physical address*/
unsigned int maxtmdsclock; /*Max supported tmds clock*/
unsigned char fields_present; /*bit7: latency