void vSetHDMISyncDelay(u8 bResIndex) { MT8193_VIDEO_FUNC(); vWriteHdmiDGIMsk(tg_ctrl00, prgs_out, syn_del | prgs_out); vWriteHdmiDGIMsk(tg_ctrl01, HVSYNC_DELAY[bResIndex], rg_vsync_delay | rg_hsync_delay | rg_vsync_forward); }
void vHDMIVideoOutput(u8 ui1Res, u8 ui1ColorSpace) { MT8193_VIDEO_FUNC(); vWriteHdmiDGIMsk(fifo_ctrl, sw_rst, sw_rst); vWriteHdmiDGIMsk(dgi1_clk_rst_ctrl, dgi1_clk_out_enable | dgi1_clk_in_inv_enable | dgi1_clk_in_enable, dgi1_clk_out_enable | dgi1_clk_in_inv_enable | dgi1_clk_in_enable); vWriteHdmiDGIMsk(data_out_ctrl, fall_use_fall, fall_use_fall | rise_use_fall); vWriteHdmiDGIMsk(fifo_ctrl, (0x40 << 0), rd_start); vWriteHdmiDGIMsk(fifo_ctrl, fifo_reset_on, fifo_reset_sel | fifo_reset_on); vWriteHdmiDGIMsk(dec_ctl, dgi1_on, dgi1_on); vWriteHdmiDGIMsk(ctrl_422_444, (CBCR_PRELOAD[ui1Res] << 8), rg_cbcr_preload); if (ui1ColorSpace == HDMI_YCBCR_444) { vWriteHdmiDGIMsk(ctrl_422_444, rpt_422_444, rpt_422_444 | bypass_422_444); vWriteHdmiDGIMsk(data_out_ctrl, (0x1 << 0) | (0x0 << 2) | (0x0 << 4), y_out_delay | c1_out_delay | c2_out_delay); vWriteHdmiDGIMsk(dgi1_yuv2rgb_ctr, 0, rg_yuv709_rgb | rg_yuv2rgb_en); } else if (ui1ColorSpace == HDMI_YCBCR_422) { vWriteHdmiDGIMsk(ctrl_422_444, bypass_422_444, rpt_422_444 | bypass_422_444); vWriteHdmiDGIMsk(data_out_ctrl, (0x1 << 0) | (0x0 << 2) | (0x0 << 4), y_out_delay | c1_out_delay | c2_out_delay); vWriteHdmiDGIMsk(dgi1_yuv2rgb_ctr, 0, rg_yuv709_rgb | rg_yuv2rgb_en); } else if (ui1ColorSpace == HDMI_RGB) { vWriteHdmiDGIMsk(ctrl_422_444, rpt_422_444, rpt_422_444 | bypass_422_444); vWriteHdmiDGIMsk(data_out_ctrl, (0x1 << 0) | (0x1 << 2) | (0x0 << 4), y_out_delay | c1_out_delay | c2_out_delay); vWriteHdmiDGIMsk(dgi1_yuv2rgb_ctr, rg_yuv709_rgb | rg_yuv2rgb_en, rg_yuv709_rgb | rg_yuv2rgb_en); } else { pr_debug("color space type error\n"); } }
void vHDMIVideoOutput(u8 ui1Res, u8 ui1ColorSpace) { MT8193_VIDEO_FUNC(); vWriteHdmiDGIMsk(fifo_ctrl, sw_rst, sw_rst); vWriteHdmiDGIMsk(dgi0_anaif_ctrl1, dgi1_pad_clk_en, anaif_dig1_clk_sel|dgi1_pad_clk_en|clk_sel_tv_mode|data_in_tv_mode|dgi1_clk_pad_sel_tv_mode|tv_mode_clk_en); vWriteHdmiDGIMsk(dgi1_clk_rst_ctrl, dgi1_clk_out_enable|dgi1_clk_in_inv_enable|dgi1_clk_in_enable, dgi1_clk_out_enable|dgi1_clk_in_inv_enable|dgi1_clk_in_enable); vWriteHdmiDGIMsk(data_out_ctrl, fall_use_fall, fall_use_fall|rise_use_fall); vWriteHdmiDGIMsk(fifo_ctrl, (0x40<<0), rd_start); vWriteHdmiDGIMsk(fifo_ctrl, fifo_reset_on, fifo_reset_sel|fifo_reset_on); vWriteHdmiDGIMsk(dec_ctl, dgi1_on, dgi1_on); vWriteHdmiDGIMsk(ctrl_422_444, (CBCR_PRELOAD[ui1Res]<<8), rg_cbcr_preload); if(ui1ColorSpace==HDMI_YCBCR_444) { vWriteHdmiDGIMsk(ctrl_422_444, rpt_422_444, rpt_422_444|bypass_422_444); vWriteHdmiDGIMsk(data_out_ctrl, (0x1<<0)|(0x0<<2)|(0x0<<4), y_out_delay|c1_out_delay|c2_out_delay); } else if(ui1ColorSpace==HDMI_YCBCR_422) { vWriteHdmiDGIMsk(ctrl_422_444, bypass_422_444, rpt_422_444|bypass_422_444); vWriteHdmiDGIMsk(data_out_ctrl, (0x1<<0)|(0x0<<2)|(0x0<<4), y_out_delay|c1_out_delay|c2_out_delay); } else { vWriteHdmiDGIMsk(ctrl_422_444, 0, rpt_422_444|bypass_422_444); vWriteHdmiDGIMsk(data_out_ctrl, (0x1<<0)|(0x0<<2)|(0x0<<4), y_out_delay|c1_out_delay|c2_out_delay); } }
void vEnableNotice(u8 bOn) { u8 bData; MT8193_VIDEO_FUNC(); if (bOn == TRUE) { bData = bReadByteHdmiGRL(GRL_CFG2); bData |= 0x40; /* temp. solve 720p issue. to avoid audio packet jitter problem */ vWriteByteHdmiGRL(GRL_CFG2, bData); } else { bData = bReadByteHdmiGRL(GRL_CFG2); bData &= ~0x40; vWriteByteHdmiGRL(GRL_CFG2, bData); } }
void vSetHDMIDataEnable(u8 bResIndex) { MT8193_VIDEO_FUNC(); if (bResIndex < HDMI_VIDEO_RESOLUTION_NUM) { vWriteHdmiDGIMsk(tg_ctrl02, HVSYNC_TOTAL_WIDTH_ACTIVE[bResIndex][0], 0xffffffff); vWriteHdmiDGIMsk(tg_ctrl03, HVSYNC_TOTAL_WIDTH_ACTIVE[bResIndex][1], 0xffffffff); vWriteHdmiDGIMsk(tg_ctrl04, HVSYNC_TOTAL_WIDTH_ACTIVE[bResIndex][5] << 5, 0xffffffff); vWriteHdmiDGIMsk(tg_ctrl05, HVSYNC_TOTAL_WIDTH_ACTIVE[bResIndex][4], 0xffffffff); vWriteHdmiDGIMsk(tg_ctrl06, HVSYNC_TOTAL_WIDTH_ACTIVE[bResIndex][3], 0xffffffff); vWriteHdmiDGIMsk(tg_ctrl07, HVSYNC_TOTAL_WIDTH_ACTIVE[bResIndex][2], 0xffffffff); } }
void vSetCTL0BeZero(u8 fgBeZero) { u8 bTemp; MT8193_VIDEO_FUNC(); if (fgBeZero == TRUE) { bTemp = bReadByteHdmiGRL(GRL_CFG1); bTemp |= (1 << 4); vWriteByteHdmiGRL(GRL_CFG1, bTemp); } else { bTemp = bReadByteHdmiGRL(GRL_CFG1); bTemp &= ~(1 << 4); vWriteByteHdmiGRL(GRL_CFG1, bTemp); } }