saa7121.c
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:3k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
  9. /********************************************************************************/
  10. /* saa7105edc.c file */
  11. /********************************************************************************/
  12. #include <std.h>        
  13. #include <csl_stdinc.h>
  14. #include <csl_i2c.h>
  15. #include <edc.h>
  16. #include <saa7121.h>
  17. #include "_iic.h"
  18. #include "_saa7121.h"   
  19.                                                 
  20. /* local functions declaration */
  21. static EDC_Handle SAA7121_open(String devName, Arg optArg);
  22. static Int SAA7121_close(EDC_Handle handle);
  23. static Int SAA7121_ctrl(EDC_Handle handle, SAA7121_Cmd cmd, Arg param);
  24. static void configSAA7121(Int devId, SAA7121_Mode videoInMode);
  25. static void resetSAA7121(Int devId);
  26. static void powerdownSAA7121(Int devId);
  27. static void powerupSAA7121(Int devId);
  28. static void setI2CRegs(Int devId, _SAA7121_I2CReg I2CRegs[]);
  29. EDC_Fxns SAA7121_Fxns = {
  30.     SAA7121_open,
  31.     SAA7121_close,
  32.     SAA7121_ctrl
  33. };
  34. /* local variables and arrays */
  35. static I2C_Handle hI2C;
  36. static Uint8 addrI2C[2]={_SAA7121_IICADDR0, _SAA7121_IICADDR1};
  37. /*
  38.  * ======== SAA7121_open ========
  39.  */
  40. static EDC_Handle SAA7121_open(String devName, Arg optArg)
  41. {
  42.     Int devId;
  43.     /* Check if the addresse is correct */
  44.     if(devName[0]!='/'||devName[1]<'0'||devName[1]>'1') {
  45.         devId = -1;
  46.     } else
  47.     {
  48.       devId = devName[1]-'0';
  49.     }
  50.     return (EDC_Handle)devId;
  51. }
  52. /*
  53.  * ======== SAA7121_open ========
  54. */
  55. static Int SAA7121_close(EDC_Handle handle) 
  56. {
  57.     Int devId = (int)handle;
  58.     powerdownSAA7121(devId);
  59.     return EDC_SUCCESS;    
  60. }
  61. /*
  62.  * ======== SAA7121_ctrl ========
  63.  */
  64. static Int SAA7121_ctrl(EDC_Handle handle, SAA7121_Cmd cmd, Arg arg)
  65. {
  66.     Int devId = (int)handle;
  67.     SAA7121_ConfParams *SAA7121Params;                    
  68.     /*First Check if the Handle is correct */
  69.     if(devId <0 || devId >1) {
  70.         return EDC_FAILED;
  71.     }
  72.     
  73.     switch(cmd) {
  74.         case EDC_CONFIG:
  75.             SAA7121Params = (SAA7121_ConfParams *)arg;
  76.             hI2C = SAA7121Params->hI2C;
  77.             configSAA7121(devId, SAA7121Params->mode);
  78.             break;
  79.         case EDC_RESET:
  80.             resetSAA7121(devId);
  81.             break;
  82.         case SAA7121_POWERDOWN:
  83.             powerdownSAA7121(devId);
  84.             break;                 
  85.         case SAA7121_POWERUP:
  86.             powerupSAA7121(devId);
  87.             break;
  88.         default:
  89.             break;
  90.     }
  91.     return EDC_SUCCESS;
  92. }
  93. /*
  94.  * ======== configSAA7105 ========
  95.  */
  96. static void configSAA7121(Int devId, SAA7121_Mode videoInMode)//, Bool enableBT656Sync)
  97. {
  98.     _SAA7121_I2CReg* pI2CRegs;
  99.     if(videoInMode==SAA7121_MODE_PAL)pI2CRegs=SAA7121_PalRegParam;
  100.     else if(videoInMode==SAA7121_MODE_NTSC)pI2CRegs=SAA7121_NtscRegParam;
  101.     setI2CRegs(devId, pI2CRegs);
  102. }
  103. static void setI2CRegs(Int devId, _SAA7121_I2CReg I2CRegs[])
  104. {
  105. Int i;
  106. for(i=0;i<256;i++)
  107. {
  108.  if(I2CRegs[i].subaddr==0xFF)break;
  109.  _IIC_write(hI2C, addrI2C[devId], I2CRegs[i].subaddr, &I2CRegs[i].content,1);
  110. }
  111. }
  112. static void resetSAA7121(Int devId)
  113. {
  114.     setI2CRegs(devId, SAA7121_ResetRegParam);
  115. }
  116. static void powerdownSAA7121(Int devId)
  117. {
  118. }
  119. static void powerupSAA7121(Int devId)
  120. {
  121. }