📄 tvp5150.c
字号:
/*
///////////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2006-2008 Beijing, pengzhen (pengzhenxp@yahoo.com.cn) //
// //
///////////////////////////////////////////////////////////////////////////////
*/
#include <std.h>
#include <csl_i2c.h>
#include <csl_stdinc.h>
#include <edc.h>
#include <tvp5150.h>
#include "_iic.h"
#include "_TVP5150.h"
static I2C_Handle hI2C[2] = {INV, INV};
/*
* ======== TVP5150_open ========
*/
static EDC_Handle TVP5150_open(String devName, Arg optArg)
{
Int devId = 0 ;
/* Check if the addresse is correct */
if(devName[0] != '/') {
devId = -1;
} else if(devName[1] == '0') {
devId = 0;
} else if(devName[1] == '1'){
devId = 1;
}
return (EDC_Handle)devId;
}
/*
* ======== TVP5150_close ========
*/
static Int TVP5150_close(EDC_Handle handle)
{
Int devId = (int)handle;
Uint8 addrI2C = (devId == 0) ? _TVP5150_IIC_ADDR0 : _TVP5150_IIC_ADDR1;
Int nValue = 0 ;
/*First Check if the Handle is correct */
if(devId == 0 || devId == 1) {
/*Put _TVP5150 in power down mode */
nValue = 0x01 ; _IIC_write(hI2C[devId], addrI2C,SoftwareReset,(Uint8 *)&nValue, 1);
return EDC_SUCCESS;
} else {
return EDC_FAILED;
}
}
/*
* ======== TVP5150_ctrl ========
*/
static Int TVP5150_ctrl(EDC_Handle handle, TVP5150_Cmd cmd, Arg arg)
{
Int devId = (int)handle;
Uint8 addrI2C = (devId == 0) ? _TVP5150_IIC_ADDR0 : _TVP5150_IIC_ADDR1;
Int nValue ;
//genericPtr = &_TVP5150_settingsDef[devId].generics;
/*First Check if the Handle is correct */
if(devId != 0 && devId != 1) { devId =0 ; }
switch(cmd) {
case EDC_CONFIG:
{
TVP5150_ConfParams *TVP5150Params = (TVP5150_ConfParams *)arg;
hI2C[devId] = TVP5150Params->hI2C;
//enableIPortOutput(devId, TVP5150Params->enableIPortOutput);
//setupUserDefResolution(arg);
//configTVP5150(devId, TVP5150Params->inMode, TVP5150Params->outMode,
// TVP5150Params->aFmt);
//setTVP5150SyncMode(devId, TVP5150Params->enableBT656Sync);
}
nValue = 23 ; _IIC_write(hI2C[devId], addrI2C,VerticalBlankStart,(Uint8 *)&nValue, 1); /* PAL */
//nValue = 20 ; _IIC_write(hI2C[devId], addrI2C,VerticalBlankStart,(Uint8 *)&nValue, 1); /* NTSC */
nValue = 0x00 ; _IIC_write(hI2C[devId], addrI2C,AnalogInputControl1,(Uint8 *)&nValue, 1); /* */
nValue = 0x7F ; _IIC_write(hI2C[devId], addrI2C,LuminanceControl,(Uint8 *)&nValue, 1); /* */
nValue = 0x29 ; _IIC_write(hI2C[devId], addrI2C,MiscellaneousControls,(Uint8 *)&nValue, 1);
break;
case EDC_RESET:
//nValue = 0x01 ; _IIC_write(hI2C[devId], addrI2C,SoftwareReset,(Uint8 *)&nValue, 1);
nValue = 0x00 ; _IIC_write(hI2C[devId], addrI2C,SoftwareReset,(Uint8 *)&nValue, 1);
break;
/*
case TVP5150_POWERDOWN:
nValue = 0x00 ; _IIC_write(hI2C[devId], addrI2C,SoftwareReset,(Uint8 *)&nValue, 1);
break;
case TVP5150_POWERUP:
nValue = 0x00 ; _IIC_write(hI2C[devId], addrI2C,SoftwareReset,(Uint8 *)&nValue, 1);
break;
case TVP5150_SET_AMUXMODE:
if( (int)(arg) >= 6)
{ // svideo input
nValue = 0x01 ; _IIC_write(hI2C[devId], addrI2C,AnalogInputControl1,(Uint8 *)&nValue, 1);
nValue = 0x80 ; _IIC_write(hI2C[devId], addrI2C,LuminanceControl,(Uint8 *)&nValue, 1);
}else
{
nValue = 0x00 ; _IIC_write(hI2C[devId], addrI2C,AnalogInputControl1,(Uint8 *)&nValue, 1);
//nValue = 0x7F ; _IIC_write(hI2C[devId], addrI2C,LuminanceControl,(Uint8 *)&nValue, 1);
}
break;*/
}
return EDC_SUCCESS;
}
/**************************************************************************/
/* End of file */
/**************************************************************************/
EDC_Fxns TVP5150_Fxns = {
TVP5150_open,
TVP5150_close,
TVP5150_ctrl
};
/**************************************************************************/
/* End of file */
/**************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -