cx231xx-pcb-cfg.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. cx231xx-pcb-cfg.h - driver for Conexant
  4. Cx23100/101/102 USB video capture devices
  5. Copyright (C) 2008 <srinivasa.deevi at conexant dot com>
  6. */
  7. #ifndef _PCB_CONFIG_H_
  8. #define _PCB_CONFIG_H_
  9. #include <linux/init.h>
  10. #include <linux/module.h>
  11. /***************************************************************************
  12. * Class Information *
  13. ***************************************************************************/
  14. #define CLASS_DEFAULT 0xFF
  15. enum VENDOR_REQUEST_TYPE {
  16. /* Set/Get I2C */
  17. VRT_SET_I2C0 = 0x0,
  18. VRT_SET_I2C1 = 0x1,
  19. VRT_SET_I2C2 = 0x2,
  20. VRT_GET_I2C0 = 0x4,
  21. VRT_GET_I2C1 = 0x5,
  22. VRT_GET_I2C2 = 0x6,
  23. /* Set/Get GPIO */
  24. VRT_SET_GPIO = 0x8,
  25. VRT_GET_GPIO = 0x9,
  26. /* Set/Get GPIE */
  27. VRT_SET_GPIE = 0xA,
  28. VRT_GET_GPIE = 0xB,
  29. /* Set/Get Register Control/Status */
  30. VRT_SET_REGISTER = 0xC,
  31. VRT_GET_REGISTER = 0xD,
  32. /* Get Extended Compat ID Descriptor */
  33. VRT_GET_EXTCID_DESC = 0xFF,
  34. };
  35. enum BYTE_ENABLE_MASK {
  36. ENABLE_ONE_BYTE = 0x1,
  37. ENABLE_TWE_BYTE = 0x3,
  38. ENABLE_THREE_BYTE = 0x7,
  39. ENABLE_FOUR_BYTE = 0xF,
  40. };
  41. #define SPEED_MASK 0x1
  42. enum USB_SPEED{
  43. FULL_SPEED = 0x0, /* 0: full speed */
  44. HIGH_SPEED = 0x1 /* 1: high speed */
  45. };
  46. #define TS_MASK 0x6
  47. enum TS_PORT{
  48. NO_TS_PORT = 0x0, /* 2'b00: Neither port used. PCB not a Hybrid,
  49. only offers Analog TV or Video */
  50. TS1_PORT = 0x4, /* 2'b10: TS1 Input (Hybrid mode :
  51. Digital or External Analog/Compressed source) */
  52. TS1_TS2_PORT = 0x6, /* 2'b11: TS1 & TS2 Inputs
  53. (Dual inputs from Digital and/or
  54. External Analog/Compressed sources) */
  55. TS1_EXT_CLOCK = 0x6, /* 2'b11: TS1 & TS2 as selector
  56. to external clock */
  57. TS1VIP_TS2_PORT = 0x2 /* 2'b01: TS1 used as 656/VIP Output,
  58. TS2 Input (from Compressor) */
  59. };
  60. #define EAVP_MASK 0x8
  61. enum EAV_PRESENT{
  62. NO_EXTERNAL_AV = 0x0, /* 0: No External A/V inputs
  63. (no need for i2s block),
  64. Analog Tuner must be present */
  65. EXTERNAL_AV = 0x8 /* 1: External A/V inputs
  66. present (requires i2s blk) */
  67. };
  68. #define ATM_MASK 0x30
  69. enum AT_MODE{
  70. DIF_TUNER = 0x30, /* 2'b11: IF Tuner (requires use of DIF) */
  71. BASEBAND_SOUND = 0x20, /* 2'b10: Baseband Composite &
  72. Sound-IF Signals present */
  73. NO_TUNER = 0x10 /* 2'b0x: No Analog Tuner present */
  74. };
  75. #define PWR_SEL_MASK 0x40
  76. enum POWE_TYPE{
  77. SELF_POWER = 0x0, /* 0: self power */
  78. BUS_POWER = 0x40 /* 1: bus power */
  79. };
  80. enum USB_POWE_TYPE{
  81. USB_SELF_POWER = 0,
  82. USB_BUS_POWER
  83. };
  84. #define BO_0_MASK 0x80
  85. enum AVDEC_STATUS{
  86. AVDEC_DISABLE = 0x0, /* 0: A/V Decoder Disabled */
  87. AVDEC_ENABLE = 0x80 /* 1: A/V Decoder Enabled */
  88. };
  89. #define BO_1_MASK 0x100
  90. #define BUSPOWER_MASK 0xC4 /* for Polaris spec 0.8 */
  91. #define SELFPOWER_MASK 0x86
  92. /***************************************************************************/
  93. #define NOT_DECIDE_YET 0xFE
  94. #define NOT_SUPPORTED 0xFF
  95. /***************************************************************************
  96. * for mod field use *
  97. ***************************************************************************/
  98. #define MOD_DIGITAL 0x1
  99. #define MOD_ANALOG 0x2
  100. #define MOD_DIF 0x4
  101. #define MOD_EXTERNAL 0x8
  102. #define CAP_ALL_MOD 0x0f
  103. /***************************************************************************
  104. * source define *
  105. ***************************************************************************/
  106. #define SOURCE_DIGITAL 0x1
  107. #define SOURCE_ANALOG 0x2
  108. #define SOURCE_DIF 0x4
  109. #define SOURCE_EXTERNAL 0x8
  110. #define SOURCE_TS_BDA 0x10
  111. #define SOURCE_TS_ENCODE 0x20
  112. #define SOURCE_TS_EXTERNAL 0x40
  113. /***************************************************************************
  114. * interface information define *
  115. ***************************************************************************/
  116. struct INTERFACE_INFO {
  117. u8 interrupt_index;
  118. u8 ts1_index;
  119. u8 ts2_index;
  120. u8 audio_index;
  121. u8 video_index;
  122. u8 vanc_index; /* VBI */
  123. u8 hanc_index; /* Sliced CC */
  124. u8 ir_index;
  125. };
  126. enum INDEX_INTERFACE_INFO{
  127. INDEX_INTERRUPT = 0x0,
  128. INDEX_TS1,
  129. INDEX_TS2,
  130. INDEX_AUDIO,
  131. INDEX_VIDEO,
  132. INDEX_VANC,
  133. INDEX_HANC,
  134. INDEX_IR,
  135. };
  136. /***************************************************************************
  137. * configuration information define *
  138. ***************************************************************************/
  139. struct CONFIG_INFO {
  140. u8 config_index;
  141. struct INTERFACE_INFO interface_info;
  142. };
  143. struct pcb_config {
  144. u8 index;
  145. u8 type; /* bus power or self power,
  146. self power--0, bus_power--1 */
  147. u8 speed; /* usb speed, 2.0--1, 1.1--0 */
  148. u8 mode; /* digital , anlog, dif or external A/V */
  149. u32 ts1_source; /* three source -- BDA,External,encode */
  150. u32 ts2_source;
  151. u32 analog_source;
  152. u8 digital_index; /* bus-power used */
  153. u8 analog_index; /* bus-power used */
  154. u8 dif_index; /* bus-power used */
  155. u8 external_index; /* bus-power used */
  156. u8 config_num; /* current config num, 0,1,2,
  157. for self-power, always 0 */
  158. struct CONFIG_INFO hs_config_info[3];
  159. struct CONFIG_INFO fs_config_info[3];
  160. };
  161. enum INDEX_PCB_CONFIG{
  162. INDEX_SELFPOWER_DIGITAL_ONLY = 0x0,
  163. INDEX_SELFPOWER_DUAL_DIGITAL,
  164. INDEX_SELFPOWER_ANALOG_ONLY,
  165. INDEX_SELFPOWER_DUAL,
  166. INDEX_SELFPOWER_TRIPLE,
  167. INDEX_SELFPOWER_COMPRESSOR,
  168. INDEX_BUSPOWER_DIGITAL_ONLY,
  169. INDEX_BUSPOWER_ANALOG_ONLY,
  170. INDEX_BUSPOWER_DIF_ONLY,
  171. INDEX_BUSPOWER_EXTERNAL_ONLY,
  172. INDEX_BUSPOWER_EXTERNAL_ANALOG,
  173. INDEX_BUSPOWER_EXTERNAL_DIF,
  174. INDEX_BUSPOWER_EXTERNAL_DIGITAL,
  175. INDEX_BUSPOWER_DIGITAL_ANALOG,
  176. INDEX_BUSPOWER_DIGITAL_DIF,
  177. INDEX_BUSPOWER_DIGITAL_ANALOG_EXTERNAL,
  178. INDEX_BUSPOWER_DIGITAL_DIF_EXTERNAL,
  179. };
  180. /***************************************************************************/
  181. struct cx231xx;
  182. int initialize_cx231xx(struct cx231xx *p_dev);
  183. #endif