📄 fs453.cpp
字号:
//Fs453WriteRegister(FS453_MISC_47, &data);
data = (CSP_BITFVAL(FS453_MISC_74_UV_ORDER, 0) | //U/V swap - no
CSP_BITFVAL(FS453_MISC_74_PAL_MODE, FS453_SET_DISABLE) | // NTSC - disable, PAL - enable
CSP_BITFVAL(FS453_MISC_74_CHR_BW, FS453_FILTER_BANDWIDTH_NARROW) |
CSP_BITFVAL(FS453_MISC_74_INVERT_TOP,0) | // 0 - ntsc
CSP_BITFVAL(FS453_MISC_74_SYS625_50,FS453_SET_DISABLE) | // NTSC - disable, PAL - enable
CSP_BITFVAL(FS453_MISC_74_CH_PH_R, FS453_MISC_74_CH_PH_R_EVERY_4_FIELDS) |
CSP_BITFVAL(FS453_MISC_74_VSYNC5, FS453_SET_DISABLE)); // 6
//Fs453WriteRegister(FS453_MISC_74, &data); //0x02//0x04
if(mode == TVOUT_MODE_NTSC)
{
LONG w;
//HSync Width
data = 0x7e;
m_fs453WriteRegister ( 0x48, &data ,1);
//
data = 0x40; m_fs453WriteRegister ( 0x49, &data ,1);
data = 0x80; m_fs453WriteRegister ( 0x4A, &data ,1);
data = 62 + 5 ; m_fs453WriteRegister ( 0x4B, &data ,1);
data = 0x00; m_fs453WriteRegister ( 0x4C, &data ,1);
w= 235 ;//240
data = w >> 2 ; m_fs453WriteRegister ( 0x50, &data,1);
data = (w & 0x03) ; m_fs453WriteRegister( 0x65, &data, 1);
data = 0x13; m_fs453WriteRegister ( 0x69, &data ,1);
data = 0x2a; m_fs453WriteRegister ( 0x6C, &data ,1);
data = 0x14; m_fs453WriteRegister ( 0x73, &data ,1);
data = 0x04; m_fs453WriteRegister ( 0x74, &data ,1);
data = 0x10; m_fs453WriteRegister ( 0x75, &data ,1);
w=240;
data = (w >> 2) ; m_fs453WriteRegister ( 0x7C, &data,1);
data = (w & 0x03); m_fs453WriteRegister ( 0x7D, &data,1);
w=780;
data = (w >> 2) ; m_fs453WriteRegister ( 0x5E, &data, 1);
data = (w & 0x03); m_fs453WriteRegister ( 0x5F, &data, 1);
w=277;
data = (w >> 2) ; m_fs453WriteRegister ( 0x4E, &data, 1);
data = (w & 0x03); m_fs453WriteRegister ( 0x4F, &data, 1);
}
// 12. DAC
// ------------------------------------------------------------------------
// ------ Set DACs
data = (CSP_BITFVAL(FS453_DAC_CNTL_DAC_DMUX,FS453_DAC_CNTL_DAC_MUX_SIGNAL3) | // DACD - composite
CSP_BITFVAL(FS453_DAC_CNTL_DAC_CMUX,FS453_DAC_CNTL_DAC_MUX_SIGNAL2) | // DACC - x
CSP_BITFVAL(FS453_DAC_CNTL_DAC_BMUX,FS453_DAC_CNTL_DAC_MUX_SIGNAL1) | // DACB - C(S-Video)
CSP_BITFVAL(FS453_DAC_CNTL_DAC_AMUX,FS453_DAC_CNTL_DAC_MUX_SIGNAL0)); // DACA - Y(S-Video)
Fs453WriteRegister(FS453_DAC_CNTL, &data);
// 8. misc
// ------------------------------------------------------------------------
// ------ Issue Bridge Reset
data = (CSP_BITFVAL(FS453_MISC_P_ORDER, FS453_SET_DISABLE)| // Only affects UIM is 11,12
CSP_BITFVAL(FS453_MISC_BRDG_RST,FS453_SET_ENABLE)| // Bridge pointer reset - disable
CSP_BITFVAL(FS453_MISC_UIM_E, FS453_SET_DISABLE)| // Change state at edge(0), at middle of pix(1)
CSP_BITFVAL(FS453_MISC_UV_SWAP, FS453_SET_ENABLE)| // Swap Cr(V) and Cb(U) internal input
CSP_BITFVAL(FS453_MISC_UIM_DEC, FS453_SET_DISABLE)| //horizontal prescaler divide by 2 to support high resolution VGA mode.
CSP_BITFVAL(FS453_MISC_UIM_CCLK,FS453_SET_DISABLE)| //inverts the edge on which input control is latched.
CSP_BITFVAL(FS453_MISC_UIM_DCLK,FS453_SET_DISABLE)| //inverts the edge on which input data is latched.
CSP_BITFVAL(FS453_MISC_UIM_MOD, FS453_MISC_UIM_MOD_N565));
Fs453WriteRegister(FS453_MISC, &data);
data &= ~(CSP_BITFMASK(FS453_MISC_BRDG_RST));
data |= CSP_BITFVAL(FS453_MISC_BRDG_RST, FS453_SET_DISABLE);
rc = Fs453WriteRegister(FS453_MISC, &data);
return rc;
}
//-----------------------------------------------------------------------------
//
// Function: Fs453DACOn
//
// This function enable DAC of FS453.
//
// Parameters:
// None.
//
// Returns:
// Returns TRUE if successful, otherwise returns FALSE.
//
//-----------------------------------------------------------------------------
BOOL Fs453DACOn(TVOUT_DAC dac)
{
BOOL rc = FALSE;
DWORD data;
// ------------------------------------------------------------------------
// ------ Power on DACs
data = ( CSP_BITFVAL(FS453_PWR_MGNT_GTLIO_PD, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_PLL_PD, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_CLKOFF, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_CLK_SOFF, FS453_PWR_MGNT_CLK_SOFF_HDTV_CLK_OFF) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_D_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_C_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_B_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_A_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_BGAP_OFF, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_D_OFF, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_C_OFF, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_B_OFF, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_A_OFF, FS453_SET_DISABLE) );
rc = Fs453WriteRegister(FS453_PWR_MGNT, &data); //0x202//data = 0x0204
return rc;
}
//-----------------------------------------------------------------------------
//
// Function: Fs453DACOff
//
// This function disables DAC of FS453.
//
// Parameters:
// None.
//
// Returns:
// Returns TRUE if successful, otherwise returns FALSE.
//
//-----------------------------------------------------------------------------
BOOL Fs453DACOff(TVOUT_DAC dac)
{
BOOL rc = FALSE;
DWORD data;
// Power on DACs
data = ( CSP_BITFVAL(FS453_PWR_MGNT_GTLIO_PD, FS453_SET_DISABLE) | //GTLIO power down mode
CSP_BITFVAL(FS453_PWR_MGNT_PLL_PD, FS453_SET_DISABLE) | // PLL power donw mode
CSP_BITFVAL(FS453_PWR_MGNT_CLKOFF, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_CLK_SOFF, FS453_PWR_MGNT_CLK_SOFF_HDTV_CLK_OFF) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_D_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_C_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_B_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_A_LP, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_BGAP_OFF, FS453_SET_DISABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_D_OFF, FS453_SET_ENABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_C_OFF, FS453_SET_ENABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_B_OFF, FS453_SET_ENABLE) |
CSP_BITFVAL(FS453_PWR_MGNT_DAC_A_OFF, FS453_SET_ENABLE) );
rc = Fs453WriteRegister(FS453_PWR_MGNT, &data); //data = 0x020F
return rc;
}
//-----------------------------------------------------------------------------
//
// Function: Fs453Deinit
//
// This function maps the peripheral registers of the audio devices for
// direct access by the driver.
//
// Parameters:
// None.
//
// Returns:
// Returns TRUE if successful, otherwise returns FALSE.
//
//-----------------------------------------------------------------------------
BOOL Fs453Deinit(void)
{
// Close TV, if I2C is available
// Release I2C
if(m_hI2C != NULL)
{
CloseHandle(m_hI2C);
m_hI2C = NULL;
}
return TRUE;
}
BOOL Fs453ColorBarOn(BOOL bON)
{
BOOL rc;
DWORD data;
Fs453ReadRegister(FS453_MISC_45, &data);
if(bON)
{
data |= 0x02;
}
else
{
data &= (~0x02);
}
rc = Fs453WriteRegister(FS453_MISC_45, &data); //data = 0x02
return rc;
}
void fs453_dump(void)
{
DWORD data;
data = 0;
Fs453ReadRegister(FS453_QPR, &data); // 3
RETAILMSG(1, (_T("FS453_QPR 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_PWR_MGNT, &data); // 4
RETAILMSG(1, (_T("FS453_PWR_MGNT 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_IHO, &data); // 5
RETAILMSG(1, (_T("FS453_IHO 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_IVO, &data);
RETAILMSG(1, (_T("FS453_IVO 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_IHW, &data);
RETAILMSG(1, (_T("FS453_IHW 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_VSC, &data); // 6
RETAILMSG(1, (_T("FS453_VSC 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_HSC, &data);
RETAILMSG(1, (_T("FS453_HSC 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_BYPASS, &data); // 7
RETAILMSG(1, (_T("FS453_BYPASS 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_MISC, &data); // 8
RETAILMSG(1, (_T("FS453_MISC 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_NCON, &data); // 9
RETAILMSG(1, (_T("FS453_NCON 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_NCOD, &data);
RETAILMSG(1, (_T("FS453_NCOD 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_PLLM_PUMPCNTL, &data);
RETAILMSG(1, (_T("FS453_PLLM_PUMPCNTL 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_PLLN, &data);
RETAILMSG(1, (_T("FS453_PLLN 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_PLL_POSTDIV, &data);
RETAILMSG(1, (_T("FS453_PLL_POSTDIV 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_VID_CNTL0, &data); // 10
RETAILMSG(1, (_T("FS453_VID_CNTL0 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_DAC_CNTL, &data); // 12
RETAILMSG(1, (_T("FS453_DAC_CNTL 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_FIFO_LAT, &data); // 13
RETAILMSG(1, (_T("FS453_FIFO_LAT 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_MISC_46, &data); // 14
RETAILMSG(1, (_T("FS453_MISC_46 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_MISC_47, &data);
RETAILMSG(1, (_T("FS453_MISC_47 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_FIFO_LAT, &data);
RETAILMSG(1, (_T("FS453_FIFO_LAT 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_FIFO_LAT, &data);
RETAILMSG(1, (_T("FS453_FIFO_LAT 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_FIFO_LAT, &data);
RETAILMSG(1, (_T("FS453_FIFO_LAT 0x%x\r\n"), data));
data = 0;
Fs453ReadRegister(FS453_CR, &data); // 1,2,11
RETAILMSG(1, (_T("FS453_CR 0x%x\r\n"), data));
}
#ifndef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -