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

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.11.00.00 11-04-03 (ddk-b13)" */
  9. #ifndef _VPORT_H
  10. #define _VPORT_H
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. #include <std.h>
  15. #include <csl.h>
  16. #include <iom.h>
  17. #include <edc.h>     
  18. /* common for both capture and display drivers */                     
  19. /* maximum number of video frame buffers */
  20. #define VPORT_MAX_NUM_FRMBUFS           10
  21. /* VPORT field operation mode */   
  22. #define    VPORT_FLDOP_FLD1              0x1  /* field 1 cap/dis only */
  23. #define    VPORT_FLDOP_FLD2              0x2  /* field 2 cap/dis only */
  24. #define    VPORT_FLDOP_FRAME             0x4  /* frame cap/dis        */
  25. #define    VPORT_FLDOP_PROGRESSIVE       0x5  /* progressive cap/dis  */
  26. /* VPORT video port operation mode */
  27. #define    VPORT_MODE_BT656_8BIT  0x0
  28. #define    VPORT_MODE_BT656_10BIT 0x1
  29. #define    VPORT_MODE_RAW_8BIT    0x2
  30. #define    VPORT_MODE_RAW_10BIT   0x3
  31. #define    VPORT_MODE_YCBCR_8BIT  0x4
  32. #define    VPORT_MODE_YCBCR_10BIT 0x5
  33. #define    VPORT_MODE_RAW_16BIT   0x6
  34. #define    VPORT_MODE_RAW_20BIT   0x7
  35. /* VPORT external PIN POLARITY */
  36. #define   VPORT_POLARITY_ACTIVE_HIGH  0x0
  37. #define   VPORT_POLARITY_ACTIVE_LOW   0x11
  38.                 
  39. /* video port HORIZONTAL scaling mode control */
  40. /* 1/2 for capture, 2x for display */
  41. #define   VPORT_SCALING_DISABLE       0x0
  42. #define   VPORT_SCALING_ENABLE        0x1
  43. /* video port HORIZONTAL chroma resampling mode control */
  44. /* capture : 4:2:2 => 4:2:0    display: 4:2:0 => 4:2:2  */
  45. #define   VPORT_RESMPL_DISABLE        0x0
  46. #define   VPORT_RESMPL_ENABLE         0x1          
  47.                                            
  48.                                            
  49. #define VPORT_FLDS_SEPARATED    0
  50. #define VPORT_FLDS_MERGED       1
  51. /* Video mini-driver control command */
  52. /* The following commands are common for both capture and display operation */
  53. #define VPORT_CMD_RESET         0x10000001  /* video port reset command     */
  54. #define VPORT_CMD_CONFIG_PORT   0x10000002  /* configure video port         */
  55. #define VPORT_CMD_CONFIG_CHAN   0x10000003  /* configure video channel      */
  56. #define VPORT_CMD_START         0x10000004  /* start video port operation   */
  57. #define VPORT_CMD_STOP          0x10000005  /* stop video port operation    */
  58. #define VPORT_CMD_SET_VINTCB    0x10000006  /* set video channel error      */
  59.                                             /* call-back function           */
  60. #define VPORT_CMD_DUND_RECOVER  0x10000007  /* force the recovery of        */
  61.                                             /* display under-run            */
  62. #define VPORT_CMD_COVR_RECOVER  0x10000007  /* force the recovery of        */
  63.                                             /* capture over-run             */
  64. /* base of control commands for external device */
  65. /* that is stack under the video drivers        */
  66. /* external device control command base */
  67. #define VPORT_CMD_EDC_BASE      0x80000000  
  68. /************************************************
  69.  * Error call-back function prototype           *
  70.  ************************************************/
  71. /* Only one video port global interrupt call-back   */
  72. /* function can be defined for each channel/device  */
  73. /* pair. Multiple calls to setup the call-back      */
  74. /* function overwrite the previous setup.           */
  75. typedef void (*VPORT_IntCallBack)(Arg id, Arg mask);
  76. /* video port interrupt masks */
  77. #define VPORT_INT_COVR     0x0002  /* capture fifo over-run interrupt   */
  78. #define VPORT_INT_CCMP     0x0004  /* capture complete interrupt        */
  79. #define VPORT_INT_SERR     0x0008  /* synchronization error interrupt   */
  80. #define VPORT_INT_VINT1    0x0010  /* field 1 vertical interrupt        */
  81. #define VPORT_INT_VINT2    0x0020  /* field 2 vertical interrupt        */
  82. #define VPORT_INT_SFD      0x0040  /* short field detected interrupt    */
  83. #define VPORT_INT_LFD      0x0080  /* long field detected interrupt     */
  84. #define VPORT_INT_STC      0x0400  /* system time clock interrupt       */
  85. #define VPORT_INT_TICK     0x0800  /* clock tick interrupt              */
  86. #define VPORT_INT_DUND     0x1000  /* display fifo under-run            */
  87. #define VPORT_INT_DCMP     0x2000  /* display complete                  */
  88. #define VPORT_INT_DCNA     0x4000  /* display complete not ackowledeged */
  89.                                            
  90. /* parameter structure to setup video port call-back functions */
  91. typedef struct VPORT_VIntCbParams{
  92.     Int cbArg;                   /* call-back argument is for the            */
  93.                                  /* application to identify which channel or */
  94.                                  /* device causes the interrupt              */
  95.     VPORT_IntCallBack vIntCbFxn; /* pointer to the video port interrupt      */
  96.                                  /* call-back function                       */
  97.     Uint16 vIntMask;             /* interrupt mask, All masks OR together    */
  98.                                  /* to indicate errors that are handled by   */
  99.                                  /* by the call-back                         */
  100.     Uint16 vIntLine;             /* line number where vertical interrupt     */
  101.                                  /* occurs, don't care otherwise.            */
  102.     Int irqId;                                   
  103.     
  104. } VPORT_VIntCbParams;
  105. /******************************************************************************
  106.  * Binding of external device control function tables to the video port       *
  107.  * is done when _mdBindDev() is called at system initialization time.         *
  108.  * A statically defined EDC function table is passed to the _mdBindDev()      *
  109.  * function via the "devParam" argument. This argument must point to a        *
  110.  * type of data structure that is defined below                               *
  111.  *****************************************************************************/
  112. typedef struct VPORT_PortParams{
  113.     Bool             dualChanEnable;       /* dual channel mode enable        */
  114.     Uns              vc1Polarity;    /* vport control pin 1 polarity    */
  115.     Uns              vc2Polarity;    /* vport control pin 2 polarity    */
  116.     Uns              vc3Polarity;    /* vport control pin 3 polarity    */
  117.     EDC_Fxns*        edcTbl[2];      /* function tables for edc modules */
  118.     
  119. } VPORT_PortParams;
  120. #ifdef __cplusplus
  121. }
  122. #endif /* extern "C" */
  123. #endif /* _VPORT_H */