pedid->ycbcr444 = (buf[3] >> 5) & 0x01;\r
pedid->ycbcr422 = (buf[3] >> 4) & 0x01;\r
native_dtd_num = buf[3] & 0x0F;\r
- hdmi_edid_debug("[EDID-CEA] ddc_offset %d underscan_support %d baseaudio_support %d yuv_support %d native_dtd_num %d\n", ddc_offset, underscan_support, baseaudio_support, yuv_support, native_dtd_num);\r
+// hdmi_edid_debug("[EDID-CEA] ddc_offset %d underscan_support %d baseaudio_support %d yuv_support %d native_dtd_num %d\n", ddc_offset, underscan_support, baseaudio_support, yuv_support, native_dtd_num);\r
// Parse data block\r
while(cur_offset < ddc_offset)\r
{\r
ret = 0;
hdmi_dbg(hdmi->dev, "[%s] edid read sucess\n", __FUNCTION__);
-#if 0
+#ifdef HDMI_DEBUG
for(value = 0; value < 128; value++) {
printk("%02x ,", buff[value]);
- if( (value + 1) % 8 == 0)
+ if( (value + 1) % 16 == 0)
printk("\n");
}
#endif
return -ENOENT;
}
hdmi->tmdsclk = mode->pixclock;
- value = v_EXT_VIDEO_ENABLE(1) | v_INTERLACE(mode->vmode);
+
+ if( (vpara->vic == HDMI_720x480p_60Hz_4_3) || (vpara->vic == HDMI_720x480p_60Hz_16_9) )
+ value = v_VSYNC_OFFSET(6);
+ else
+ value = v_VSYNC_OFFSET(0);
+ value |= v_EXT_VIDEO_ENABLE(1) | v_INTERLACE(mode->vmode);
if(mode->sync & FB_SYNC_HOR_HIGH_ACT)
value |= v_HSYNC_POLARITY(1);
- if(mode->sync | FB_SYNC_VERT_HIGH_ACT)
+ if(mode->sync & FB_SYNC_VERT_HIGH_ACT)
value |= v_VSYNC_POLARITY(1);
HDMIWrReg(EXT_VIDEO_PARA, value);
value = mode->left_margin + mode->xres + mode->right_margin + mode->hsync_len;
value = mode->upper_margin + mode->vsync_len + mode->lower_margin;
HDMIWrReg(EXT_VIDEO_PARA_VBLANK_L, value & 0xFF);
- value = mode->upper_margin + mode->vsync_len;
+ if(vpara->vic == HDMI_720x480p_60Hz_4_3 || vpara->vic == HDMI_720x480p_60Hz_16_9)
+ value = 42;
+ else
+ value = mode->upper_margin + mode->vsync_len;
+
HDMIWrReg(EXT_VIDEO_PARA_VDELAY, value & 0xFF);
value = mode->vsync_len;
hdmi_err(hdmi->dev, "[%s] not support such sample rate %d\n", __FUNCTION__, audio->rate);
return -ENOENT;
}
- switch(audio->word_length)
- {
- case HDMI_AUDIO_WORD_LENGTH_16bit:
- word_length = 0x02;
- break;
- case HDMI_AUDIO_WORD_LENGTH_20bit:
- word_length = 0x0a;
- break;
- case HDMI_AUDIO_WORD_LENGTH_24bit:
- word_length = 0x0b;
- break;
- default:
- hdmi_err(hdmi->dev, "[%s] not support such word length %d\n", __FUNCTION__, audio->word_length);
- return -ENOENT;
- }
+// switch(audio->word_length)
+// {
+// case HDMI_AUDIO_WORD_LENGTH_16bit:
+// word_length = 0x02;
+// break;
+// case HDMI_AUDIO_WORD_LENGTH_20bit:
+// word_length = 0x0a;
+// break;
+// case HDMI_AUDIO_WORD_LENGTH_24bit:
+// word_length = 0x0b;
+// break;
+// default:
+// hdmi_err(hdmi->dev, "[%s] not support such word length %d\n", __FUNCTION__, audio->word_length);
+// return -ENOENT;
+// }
//set_audio_if I2S
HDMIWrReg(AUDIO_CTRL1, 0x00); //internal CTS, disable down sample, i2s input, disable MCLK
HDMIWrReg(AUDIO_CTRL2, 0x40);
HDMIWrReg(I2S_AUDIO_CTRL, v_I2S_MODE(I2S_MODE_STANDARD) | v_I2S_CHANNEL(channel) );
HDMIWrReg(I2S_INPUT_SWAP, 0x00); //no swap
HDMIMskReg(value, AV_CTRL1, m_AUDIO_SAMPLE_RATE, v_AUDIO_SAMPLE_RATE(rate))
- HDMIWrReg(SRC_NUM_AUDIO_LEN, word_length);
+// HDMIWrReg(SRC_NUM_AUDIO_LEN, word_length);
//Set N value 6144, fs=48kHz
HDMIWrReg(N_1, N & 0xFF);
#ifdef CONFIG_SWITCH
switch_set_state(&(hdmi->switch_hdmi), 0);
#endif
- #if CONFIG_HDMI_RK30_CTL_CODEC
+ #ifdef CONFIG_HDMI_RK30_CTL_CODEC
codec_set_spk(1);
#endif
}
if(hotplug != hdmi->hotplug)
{
if(hotplug == HDMI_HPD_ACTIVED){
- hdmi->hotplug = hotplug;
hdmi->state = READ_PARSE_EDID;
}
else if(hdmi->hotplug == HDMI_HPD_ACTIVED) {
hdmi->state = HDMI_SLEEP;
rk30_hdmi_removed();
}
+ hdmi->hotplug = hotplug;
}
else if(hotplug == HDMI_HPD_REMOVED)
hdmi_sys_sleep();
video.input_mode = VIDEO_INPUT_RGB_YCBCR_444;
video.input_color = VIDEO_INPUT_COLOR_RGB;//VIDEO_INPUT_COLOR_YCBCR
video.output_mode = hdmi->edid.sink_hdmi;
+
if(hdmi->edid.ycbcr444)
video.output_color = VIDEO_OUTPUT_YCBCR444;
else if(hdmi->edid.ycbcr422)
video.output_color = VIDEO_OUTPUT_YCBCR422;
else
video.output_color = VIDEO_OUTPUT_RGB444;
+ // For DVI, output RGB
+ if(hdmi->edid.sink_hdmi == 0)
+ video.output_color = VIDEO_OUTPUT_RGB444;
+
rc = rk30_hdmi_config_video(&video);
if(rc == HDMI_ERROR_SUCESS)
{