bt865.h
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:6k
源码类别:

DVD

开发平台:

Unix_Linux

  1. /*
  2.   **********************************************************************
  3.   *
  4.   *     Copyright 1999, 2000 Creative Labs, Inc.
  5.   *
  6.   **********************************************************************
  7.   *
  8.   *     Date                 Author               Summary of changes
  9.   *     ----                 ------               ------------------
  10.   *     October 20, 1999     Andrew de Quincey    Rewrote and extended
  11.   *                          Lucien Murray-Pitts  original incomplete 
  12.   *                                               driver.
  13.   *
  14.   *     April 18, 1999       Andrew Veliath       Original Driver
  15.   *                                               implementation
  16.   *
  17.   **********************************************************************
  18.   *
  19.   *     This program is free software; you can redistribute it and/or
  20.   *     modify it under the terms of the GNU General Public License as
  21.   *     published by the Free Software Foundation; either version 2 of
  22.   *     the License, or (at your option) any later version.
  23.   *
  24.   *     This program is distributed in the hope that it will be useful,
  25.   *     but WITHOUT ANY WARRANTY; without even the implied warranty of
  26.   *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  27.   *     GNU General Public License for more details.
  28.   *
  29.   *     You should have received a copy of the GNU General Public
  30.   *     License along with this program; if not, write to the Free
  31.   *     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  32.   *     USA.
  33.   *
  34.   **********************************************************************
  35.   */
  36. /**
  37.  *
  38.  * Driver for the Brooktree/Rockwell/Conexant BT865 TV encoder chip
  39.  *
  40.  */
  41. #ifndef __BT865_H__
  42. #define __BT865_H__
  43. // *******************************************************************
  44. // useful defines
  45. // Full name of the chip
  46. #define BT865_FULLNAME              "Brooktree BT865 TV encoder"
  47. // Log name of the driver
  48. #define BT865_LOGNAME "BT865"
  49. // Chip ID (for i2c interface)
  50. #define BT865_CHIPID 0x8a
  51. // macrovision modes
  52. #define BT865_MACROVISION_OFF   0
  53. #define BT865_MACROVISION_1     1
  54. #define BT865_MACROVISION_2     2
  55. #define BT865_MACROVISION_3     3
  56. #define BT865_MACROVISION_AGC   4
  57. // TV modes
  58. #define BT865_NTSC_MODE 0
  59. #define BT865_PAL_MODE  1
  60. // *******************************************************************
  61. // register definitions
  62. #define BT865_READBACK -1
  63. // *******************************************************************
  64. // Structures
  65. typedef struct _bt865_ops_t bt865_ops_t;
  66. typedef struct _bt865_t bt865_t;
  67. // generic driver structure
  68. struct _bt865_t {
  69.   bt865_ops_t* ops;
  70.   void* data;
  71.   
  72.   char regValues[256];
  73.   
  74.   int chipType; // 4 = bt864, 5 = bt865
  75. };
  76. // lowlevel access operations
  77. struct _bt865_ops_t {
  78.   char name[32];
  79.   int (*get_reg) (bt865_t* instance, int reg);
  80.   int (*set_reg) (bt865_t* instance, int reg, int val);
  81. };
  82. // *******************************************************************
  83. // function declarations
  84. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  85. // Driver maintenance functions
  86. /**
  87.  *
  88.  * Create new BT865 driver instance
  89.  *
  90.  * @param ops Lowlevel operations to talk to chip
  91.  * @param data Any extra data for the chip
  92.  *
  93.  */
  94. extern bt865_t* bt865_new(bt865_ops_t* ops, void *data);
  95. /**
  96.  *
  97.  * Destroy a BT865 driver instance
  98.  *
  99.  * @param instance The instance to destroy
  100.  *
  101.  */
  102. extern void bt865_free(bt865_t* instance);
  103. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  104. // High level convenience functions
  105. /**
  106.  *
  107.  * Initialises the bt865 chip
  108.  *
  109.  * @param instance bt865 instance to use
  110.  *
  111.  */
  112. extern int bt865_init(bt865_t* instance);
  113. /**
  114.  *
  115.  * Put the bt865 into PAL mode
  116.  *
  117.  * @param instance bt865 instance to use
  118.  *
  119.  * @return 0 on success, <0 on failure
  120.  *
  121.  */
  122. extern int bt865_set_PAL_mode(bt865_t* instance);
  123. /**
  124.  *
  125.  * Put the bt865 into NTSC mode
  126.  *
  127.  * @param instance bt865 instance to use
  128.  *
  129.  * @return 0 on success, <0 on failure
  130.  *
  131.  */
  132. extern int bt865_set_NTSC_mode(bt865_t* instance);
  133. /**
  134.  *
  135.  * Set the macrovision mode.
  136.  *
  137.  * @param instance bt865 instance to use
  138.  * @param macrovisionMode (one of BT865_MACROVISION_OFF, BT865_MACROVISION_1, BT865_MACROVISION_2,
  139.  *                         BT865_MACROVISION_3, BT865_MACROVISION_AGC)
  140.  * @param tvMode Current TV mode (one of BT865_PAL_MODE, or BT865_NTSC_MODE)
  141.  *
  142.  * @return 0 on success, <0 on failure
  143.  *
  144.  */
  145. extern int bt865_set_macrovision_mode(bt865_t* instance, int macrovisionMode, 
  146.       int tvMode);
  147. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  148. // Register get/set functions
  149. /**
  150.  *
  151.  * Get register from the BT865
  152.  *
  153.  * @param instance Instance of the BT865 to use
  154.  * @param reg Register to retrieve
  155.  * @return The register's value (or negative on error)
  156.  *
  157.  */
  158. extern int bt865_get_reg(bt865_t* instance, int reg);
  159. /**
  160.  *
  161.  * Set register on the BT865
  162.  *
  163.  * @param instance Instance of the BT865 to use
  164.  * @param reg Register to retrieve
  165.  * @param val Value to set
  166.  *
  167.  */
  168. extern void bt865_set_reg(bt865_t* instance, int reg, int val);
  169. /**
  170.  *
  171.  * Get specified bitmask of a register from BT865
  172.  *
  173.  * @param instance Instance of the BT865 to use
  174.  * @param reg Register to retrieve
  175.  * @param bitmask Bitmask of bits to retrive from that register
  176.  *
  177.  * @return The register bitvalues
  178.  *
  179.  */
  180. extern int bt865_get_bits(bt865_t* instance, int reg, int bitmask);
  181. /**
  182.  *
  183.  * Set specified bits of a register on BT865
  184.  *
  185.  * @param instance Instance of the BT865 to use
  186.  * @param reg Register to retrieve
  187.  * @param bitmask Bitmask of bits to set from that register
  188.  * @param valuemask Values of the bits in the bitmask
  189.  *
  190.  */
  191. extern void bt865_set_bits(bt865_t* instance, int reg, int bitmask, int valuemask);
  192. #endif