www.pudn.com > H265+_C64X_2008.8.rar > TVP5150.c


 
/* 
/////////////////////////////////////////////////////////////////////////////// 
//                                                                           // 
//   Copyright (C) 2006-2008  Beijing,  pengzhen  (pengzhenxp@yahoo.com.cn)  // 
//                                                                           // 
/////////////////////////////////////////////////////////////////////////////// 
*/ 
 
#include  
#include        
#include  
#include  
#include  
 
#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                                                                            */ 
/**************************************************************************/