⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saa7121.c

📁 在ccs2.0中运行
💻 C
字号:
/*
 *  Copyright 2003 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *  
 */
/* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
/********************************************************************************/
/* saa7105edc.c file */
/********************************************************************************/
#include <std.h>        
#include <csl_stdinc.h>
#include <csl_i2c.h>
#include <edc.h>
#include <saa7121.h>

#include "_iic.h"
#include "_saa7121.h"   
                                                
/* local functions declaration */

static EDC_Handle SAA7121_open(String devName, Arg optArg);
static Int SAA7121_close(EDC_Handle handle);
static Int SAA7121_ctrl(EDC_Handle handle, SAA7121_Cmd cmd, Arg param);
static void configSAA7121(Int devId, SAA7121_Mode videoInMode);
static void resetSAA7121(Int devId);
static void powerdownSAA7121(Int devId);
static void powerupSAA7121(Int devId);
static void setI2CRegs(Int devId, _SAA7121_I2CReg I2CRegs[]);

EDC_Fxns SAA7121_Fxns = {
    SAA7121_open,
    SAA7121_close,
    SAA7121_ctrl
};

/* local variables and arrays */
static I2C_Handle hI2C;
static Uint8 addrI2C[2]={_SAA7121_IICADDR0, _SAA7121_IICADDR1}; //for 642c

/*
 * ======== SAA7121_open ========
 */
static EDC_Handle SAA7121_open(String devName, Arg optArg)
{
    Int devId;

    /* Check if the addresse is correct */
    if(devName[0]!='/'||devName[1]<'0'||devName[1]>'1') {
        devId = -1;
    } else
    {
      devId = devName[1]-'0';
    }
    return (EDC_Handle)devId;
}

/*
 * ======== SAA7121_open ========
*/
static Int SAA7121_close(EDC_Handle handle) 
{
    Int devId = (int)handle;
    powerdownSAA7121(devId);
    return EDC_SUCCESS;    
}

/*
 * ======== SAA7121_ctrl ========
 */
static Int SAA7121_ctrl(EDC_Handle handle, SAA7121_Cmd cmd, Arg arg)
{
    Int devId = (int)handle;
    SAA7121_ConfParams *SAA7121Params;                    

    /*First Check if the Handle is correct */
    if(devId <0 || devId >1) {
        return EDC_FAILED;
    }
    
    switch(cmd) {
        case EDC_CONFIG:
            SAA7121Params = (SAA7121_ConfParams *)arg;
            hI2C = SAA7121Params->hI2C;
            configSAA7121(devId, SAA7121Params->mode);
            break;
        case EDC_RESET:
            resetSAA7121(devId);
            break;
        case SAA7121_POWERDOWN:
            powerdownSAA7121(devId);
            break;                 
        case SAA7121_POWERUP:
            powerupSAA7121(devId);
            break;
        default:
            break;
    }
    return EDC_SUCCESS;
}

/*
 * ======== configSAA7105 ========
 */
static void configSAA7121(Int devId, SAA7121_Mode videoInMode)//, Bool enableBT656Sync)
{
    _SAA7121_I2CReg* pI2CRegs;
    if(videoInMode==SAA7121_MODE_PAL)pI2CRegs=SAA7121_PalRegParam;
    else if(videoInMode==SAA7121_MODE_NTSC)pI2CRegs=SAA7121_NtscRegParam;
    setI2CRegs(devId, pI2CRegs);
}

static void setI2CRegs(Int devId, _SAA7121_I2CReg I2CRegs[])
{
	Int i;
	for(i=0;i<256;i++)
	{
	 if(I2CRegs[i].subaddr==0xFF)break;
	 _IIC_write(hI2C, addrI2C[devId], I2CRegs[i].subaddr, &I2CRegs[i].content,1);
	}
}

static void resetSAA7121(Int devId)
{
    setI2CRegs(devId, SAA7121_ResetRegParam);
}

static void powerdownSAA7121(Int devId)
{
}

static void powerupSAA7121(Int devId)
{
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -