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

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 C-Cube Ziva-DS MPEG decoder chip
  39.  *
  40.  */
  41. #ifndef __ZIVADS_H__
  42. #define __ZIVADS_H__
  43. #include <linux/types.h>
  44. // *******************************************************************
  45. // useful defines
  46. // Full name of the chip
  47. #define ZIVADS_FULLNAME              "C-Cube Ziva-DS Mpeg Decoder"
  48. // Log name of the driver
  49. #define ZIVADS_LOGNAME "ZIVADS"
  50. // *******************************************************************
  51. // DRAM location names
  52. #define ZIVADS_AC3_ACMOD_CMIXLEV 0x418
  53. #define ZIVADS_AC3_BSI_FRAME 0x40c
  54. #define ZIVADS_AC3_BSI_IS_BEING_READ 0x404
  55. #define ZIVADS_AC3_BSI_VALID 0x408
  56. #define ZIVADS_AC3_BSID_BSMOD 0x414
  57. #define ZIVADS_AC3_C_LEVEL 0x130
  58. #define ZIVADS_AC3_CENTER_DELAY 0x144
  59. #define ZIVADS_AC3_COMPR_LANGCOD 0x424
  60. #define ZIVADS_AC3_DIALNORM_COMPR2 0x42c
  61. #define ZIVADS_AC3_FRAME_NUMBER 0x400
  62. #define ZIVADS_AC3_FSCOD_FRMSIZECOD 0x410
  63. #define ZIVADS_AC3_HIGH_CUT 0x11c
  64. #define ZIVADS_AC3_L_LEVEL 0x12c
  65. #define ZIVADS_AC3_LANGCOD2_MIXLEV2 0x430
  66. #define ZIVADS_AC3_LFE_OUTPUT_ENABLE 0x124
  67. #define ZIVADS_AC3_LFEON_DIALNORM 0x420
  68. #define ZIVADS_AC3_LOW_BOOST 0x118
  69. #define ZIVADS_AC3_MIXLEV_ROOMTYP 0x428
  70. #define ZIVADS_AC3_OPERATIONAL_MODE 0x114
  71. #define ZIVADS_AC3_ORIGBS_TIMECOD1 0x438
  72. #define ZIVADS_AC3_OUTPUT_MODE 0x110
  73. #define ZIVADS_AC3_PCM_SCALE_FACTOR 0x120
  74. #define ZIVADS_AC3_R_LEVEL 0x134
  75. #define ZIVADS_AC3_ROOMTYP2_COPYRIGHTB 0x434
  76. #define ZIVADS_AC3_SL_LEVEL 0x138
  77. #define ZIVADS_AC3_SR_LEVEL 0x13c
  78. #define ZIVADS_AC3_SURMIXLEV_DSURMOD 0x41c
  79. #define ZIVADS_AC3_SURROUND_DELAY 0x148
  80. #define ZIVADS_AC3_TIMECOD2 0x43c
  81. #define ZIVADS_AC3_VOICE_SELECT 0x128
  82. #define ZIVADS_AEE_INT_SRC 0x2c0
  83. #define ZIVADS_AOR_INT_SRC 0x2bc
  84. #define ZIVADS_ASPECT_RATIO 0x3b8
  85. #define ZIVADS_ASPECT_RATIO_MODE 0x84
  86. #define ZIVADS_AUDIO_ATTENUATION 0xf4
  87. #define ZIVADS_AUDIO_CLOCK_SELECTION 0xec
  88. #define ZIVADS_AUDIO_CONFIG 0xe0
  89. #define ZIVADS_AUDIO_DAC_MODE 0xe8
  90. #define ZIVADS_AUDIO_EMPTINESS 0x2cc
  91. #define ZIVADS_AUDIO_TYPE 0x3f0
  92. #define ZIVADS_AUTOPAAUSE_ENABLE 0x1d4
  93. #define ZIVADS_AV_SYNC_MODE 0x1b0
  94. #define ZIVADS_BACKGROUND_COLOR 0x9c
  95. #define ZIVADS_BIT_RATE 0x3c0
  96. #define ZIVADS_BITSTREAM_SOURCE 0x1a4
  97. #define ZIVADS_BITSTREAM_TYPE 0x1a0
  98. #define ZIVADS_BORDER_COLOR 0x98
  99. #define ZIVADS_BUFF_INT_SRC 0x2b4
  100. #define ZIVADS_CD_MODE 0x1ac
  101. #define ZIVADS_COMMAND 0x40
  102. #define ZIVADS_CURR_PIC_DISPLAYED 0x2d0
  103. #define ZIVADS_DATE_TIME 0x324
  104. #define ZIVADS_DISP_SIZE_H_V 0x3cc
  105. #define ZIVADS_DISPLAY_ASPECT_RATIO 0x80
  106. #define ZIVADS_DRAM_INFO 0x68
  107. #define ZIVADS_DSI_BUFFER_END 0x22c
  108. #define ZIVADS_DSI_BUFFER_START 0x228
  109. #define ZIVADS_DUMP_DATA_BUFFER_END 0x284
  110. #define ZIVADS_DUMP_DATA_BUFFER_START 0x280
  111. #define ZIVADS_ERR_ASPECT_RATIO_INFO 0xc0
  112. #define ZIVADS_ERR_CONCEALMENT_LEVEL 0xb4
  113. #define ZIVADS_ERR_FRAME_RATE_CODE 0xc4
  114. #define ZIVADS_ERR_HORIZONTAL_SIZE 0xb8
  115. #define ZIVADS_ERR_INT_SRC 0x2c4
  116. #define ZIVADS_ERR_VERTICAL_SIZE 0xbc
  117. #define ZIVADS_EXTENDED_VERSION 0x334
  118. #define ZIVADS_FRAME_RATE 0x3bc
  119. #define ZIVADS_GOP_FLAGS 0x3d4
  120. #define ZIVADS_H_SIZE 0x3b0
  121. #define ZIVADS_HLI_INT_SRC 0x2b0
  122. #define ZIVADS_IC_TYPE 0xb0
  123. #define ZIVADS_IEC_958_DELAY 0xf0
  124. #define ZIVADS_INT_MASK 0x200
  125. #define ZIVADS_INT_STATUS 0x2ac
  126. #define ZIVADS_LPCM_AUDIO_DYN_RANGE_CTRL 0x418
  127. #define ZIVADS_LPCM_AUDIO_EMPHASIS_FLAG 0x400
  128. #define ZIVADS_LPCM_AUDIO_FRAME_NUMBER 0x408
  129. #define ZIVADS_LPCM_AUDIO_MUTE_FLAG 0x404
  130. #define ZIVADS_LPCM_AUDIO_NUM_AUDIO_CHANS 0x414
  131. #define ZIVADS_LPCM_AUDIO_SAMPLING_FREQ 0x410
  132. #define ZIVADS_LPCM_AUDIO_QUANT_WORD_LEN 0x40c
  133. #define ZIVADS_MEMORY_MAP 0x21c
  134. #define ZIVADS_MPEG_AUDIO_HEADER1 0x400
  135. #define ZIVADS_MPEG_AUDIO_HEADER2 0x404
  136. #define ZIVADS_MRC_ID 0x2a4
  137. #define ZIVADS_MRC_PIC_PTS 0x2f0
  138. #define ZIVADS_MRC_PIC_STC 0x2f4
  139. #define ZIVADS_MRC_STATUS 0x2a8
  140. #define ZIVADS_N_AUD_DECODED 0x2f8
  141. #define ZIVADS_N_AUD_ERRORS 0x320
  142. #define ZIVADS_N_SYS_ERRORS 0x318
  143. #define ZIVADS_N_VID_ERRORS 0x31c
  144. #define ZIVADS_NEW_AUDIO_CONFIG 0x468
  145. #define ZIVADS_NEW_AUDIO_MODE 0x460
  146. #define ZIVADS_NEW_SUBPICTURE_PALETTE 0x464
  147. #define ZIVADS_NEXT_PIC_DISPLAYED 0x2d4
  148. #define ZIVADS_NEXT_SECTOR_ADDR 0x314
  149. #define ZIVADS_NUM_DECODED 0x2e4
  150. #define ZIVADS_NUM_REPEATED 0x2ec
  151. #define ZIVADS_NUM_SKIPPED 0x2e8
  152. #define ZIVADS_OSD_BUFFER_END 0x244
  153. #define ZIVADS_OSD_BUFFER_IDLE_START 0x248
  154. #define ZIVADS_OSD_BUFFER_START 0x240
  155. #define ZIVADS_OSD_EVEN_FIELD 0xa0
  156. #define ZIVADS_OSD_ODD_FIELD 0xa4
  157. #define ZIVADS_OSD_VALID 0x2e0
  158. #define ZIVADS_PACKET_LEN 0x3a4
  159. #define ZIVADS_PAN_SCAN_HORIZONTAL_OFFSET 0x8c
  160. #define ZIVADS_PAN_SCAN_SOURCE 0x88
  161. #define ZIVADS_PARAMETER_1 0x44
  162. #define ZIVADS_PARAMETER_2 0x48
  163. #define ZIVADS_PARAMETER_3 0x4c
  164. #define ZIVADS_PARAMETER_4 0x50
  165. #define ZIVADS_PARAMETER_5 0x54
  166. #define ZIVADS_PARAMETER_6 0x58
  167. #define ZIVADS_PCI_BUFFER_END 0x224
  168. #define ZIVADS_PCI_BUFFER_START 0x220
  169. #define ZIVADS_PES_HEADER 0x3a8
  170. #define ZIVADS_PIC_HEADER 0x3e4
  171. #define ZIVADS_PIC_TYPE 0x3dc
  172. #define ZIVADS_PIC1_PAN_SCAN 0x348
  173. #define ZIVADS_PIC1_PICTURE_START 0x340
  174. #define ZIVADS_PIC1_PTS 0x344
  175. #define ZIVADS_PIC1_TREF_PTYPE_FLGS 0x358
  176. #define ZIVADS_PIC1_USER_DATA 0x34c
  177. #define ZIVADS_PIC2_PAN_SCAN 0x368
  178. #define ZIVADS_PIC2_PICTURE_BUFFER_START 0x360
  179. #define ZIVADS_PIC2_PTS 0x364
  180. #define ZIVADS_PIC2_TREF_PTYP_FLGS 0x378
  181. #define ZIVADS_PIC2_USER_DATA 0x36c
  182. #define ZIVADS_PIC3_BUFFER_START 0x380
  183. #define ZIVADS_PIC3_PAN_SCAN 0x388
  184. #define ZIVADS_PIC3_PTS 0x384
  185. #define ZIVADS_PIC3_TREF_PTYP_FLGS 0x398
  186. #define ZIVADS_PIC3_USER_DATA 0x38c
  187. #define ZIVADS_PROC_STATE 0x2a0
  188. #define ZIVADS_RDY_S_THRESHOLD_LOW 0x208
  189. #define ZIVADS_ROM_INFO 0x60
  190. #define ZIVADS_SD_MODE 0x1a8
  191. #define ZIVADS_SE_STATUS 0x444
  192. #define ZIVADS_SEQ_FLAGS 0x3c8
  193. #define ZIVADS_STATUS_ADDRESS 0x5c
  194. #define ZIVADS_STREAM_ID 0x3a0
  195. #define ZIVADS_SUBPICTURE_PALETTE_END 0x28c
  196. #define ZIVADS_SUBPICTURE_PALETTE_START 0x288
  197. #define ZIVADS_TEMP_REF 0x2d8
  198. #define ZIVADS_TIME_CODE 0x3d0
  199. #define ZIVADS_TOP_BORDER 0x94
  200. #define ZIVADS_UCODE_MEMORY 0x6c
  201. #define ZIVADS_UND_INT_SRC 0x2b8
  202. #define ZIVADS_USER_DATA_BUFFER_END 0x274
  203. #define ZIVADS_USER_DATA_BUFFER_START 0x270
  204. #define ZIVADS_USER_DATA_READ 0x278
  205. #define ZIVADS_USER_DATA_WRITE 0x27c
  206. #define ZIVADS_V_SIZE   0x3b4
  207. #define ZIVADS_VBV_DELAY   0x3e0
  208. #define ZIVADS_SIZE   0x3c4
  209. #define ZIVADS_VERSION      0x330
  210. #define ZIVADS_VIDEO_EMPTINESS   0x2c8
  211. #define ZIVADS_VIDEO_FIELD   0x2d8
  212. #define ZIVADS_VIDEO_MODE   0x7c
  213. #define ZIVADS_VIDEO_PTS_REPEAT_INTERVAL  0x1bc
  214. #define ZIVADS_VIDEO_PTS_SKIP_INTERVAL   0x1b8
  215. #define ZIVADS_CSS_START                  0x480
  216. #define ZIVADS_CSS_UNKNOWN0               0xAC
  217. #define ZIVADS_ENABLE_SUBPICTURE   0x474
  218. #define ZIVADS_SOURCE_ASPECT_RATIO        0xC8
  219. #define ZIVADS_SOURCE_TV_FORMAT           0x1E0
  220. // *******************************************************************
  221. // offsets from [ZIVADS_CSS_START]
  222. #define ZIVADS_CSSOFFSET_COMMAND          0x00
  223. #define ZIVADS_CSSOFFSET_STATUS           0x04
  224. #define ZIVADS_CSSOFFSET_SENDCHALLENGEKEY 0x54
  225. #define ZIVADS_CSSOFFSET_GETCHALLENGEKEY  0x2C
  226. #define ZIVADS_CSSOFFSET_SENDRESPONSEKEY  0x68
  227. #define ZIVADS_CSSOFFSET_GETRESPONSEKEY   0x7C
  228. #define ZIVADS_CSSOFFSET_SENDTITLEKEY     0x90
  229. // *******************************************************************
  230. // Memory area names & numbers
  231. #define ZIVADS_MEMAREA_DRAM         0
  232. #define ZIVADS_MEMAREA_ROM 1
  233. #define ZIVADS_MEMAREA_IBUS 2
  234. // *******************************************************************
  235. // Register names
  236. #define ZIVADS_REGCONTROL 7
  237. #define ZIVADS_REGADDRESS 4
  238. #define ZIVADS_REGDATA 0
  239. // *******************************************************************
  240. // Ziva commands
  241. #define ZIVADS_CMD_ABORT 0x8120
  242. #define ZIVADS_CMD_PAUSE 0x12A
  243. #define ZIVADS_CMD_SETFILL 0x532
  244. #define ZIVADS_CMD_SLOWFORWARDS 0x235
  245. #define ZIVADS_CMD_BACKWARDS 0x33B
  246. #define ZIVADS_CMD_SCAN 0x32F
  247. #define ZIVADS_CMD_SINGLESTEP 0x134
  248. #define ZIVADS_CMD_RESUME 0x12e
  249. #define ZIVADS_CMD_PLAY 0x42b
  250. #define ZIVADS_CMD_SELECTSTREAM 0x231
  251. #define ZIVADS_CMD_RESET 0x802D
  252. #define ZIVADS_CMD_NEWPLAYMODE 0x28
  253. #define ZIVADS_CMD_HIGHLIGHT 0x326
  254. // *******************************************************************
  255. // misc defines 
  256. // CSS hardware supported
  257. #define ZIVADS_TYPE_1 1
  258. #define ZIVADS_TYPE_3 3
  259. #define ZIVADS_TYPE_4 4
  260. // CSS decryption modes supported
  261. #define ZIVADS_CSSDECRMODE_OFF 0
  262. #define ZIVADS_CSSDECRMODE_ON  1
  263. // subpicture modes
  264. #define ZIVADS_SUBPICTURE_OFF 0
  265. #define ZIVADS_SUBPICTURE_ON 1
  266. // aspect ratios
  267. #define ZIVADS_ASPECTRATIO_4_3 0
  268. #define ZIVADS_ASPECTRATIO_16_9 1
  269. // slow rates
  270. #define ZIVADS_SLOWRATE_2x 0
  271. #define ZIVADS_SLOWRATE_3x 1
  272. #define ZIVADS_SLOWRATE_4x 2
  273. #define ZIVADS_SLOWRATE_5x 3
  274. #define ZIVADS_SLOWRATE_6x 4
  275. // bitstreams possibly present in files
  276. #define ZIVADS_STREAM_VIDEO       0
  277. #define ZIVADS_STREAM_SUBPICTURE  1
  278. #define ZIVADS_STREAM_AUDIO_AC3   2
  279. #define ZIVADS_STREAM_AUDIO_MPEG  3
  280. #define ZIVADS_STREAM_AUDIO_LPCM  4
  281. #define ZIVADS_STREAM_AUDIO_5     5
  282. // bitstream types
  283. #define ZIVADS_BITSTREAM_TYPE_MPEG_VOB       0
  284. #define ZIVADS_BITSTREAM_TYPE_CDROM_VCD      1
  285. #define ZIVADS_BITSTREAM_TYPE_MPEG_VCD       2
  286. #define ZIVADS_BITSTREAM_TYPE_CDDA           3
  287. #define ZIVADS_BITSTREAM_TYPE_4              4
  288. // TV formats
  289. #define ZIVADS_TVFORMAT_NTSC     0
  290. #define ZIVADS_TVFORMAT_PAL      1
  291. // video frequencies
  292. #define ZIVADS_SRC_VIDEO_FREQ_30 0
  293. #define ZIVADS_SRC_VIDEO_FREQ_25 1
  294. // aspect ratio modes
  295. #define ZIVADS_ASPECTRATIOMODE_NORMAL    0
  296. #define ZIVADS_ASPECTRATIOMODE_PAN_SCAN  1
  297. #define ZIVADS_ASPECTRATIOMODE_LETTERBOX 2
  298. // play types
  299. #define ZIVADS_PLAYTYPE_NORMAL 0
  300. #define ZIVADS_PLAYTYPE_STILLSTOP 1
  301. // iec-958 output types
  302. #define ZIVADS_IEC958_DECODED    0
  303. #define ZIVADS_IEC958_ENCODED    1
  304. // AC3 modes
  305. #define ZIVADS_AC3MODE_LR_STEREO          0
  306. #define ZIVADS_AC3MODE_LR_STEREO_PROLOGIC 1
  307. #define ZIVADS_AC3MODE_LR_MONOR           2
  308. // AC3 voice configuration (for karaoke)
  309. #define ZIVADS_AC3VOICE_NONE        0
  310. #define ZIVADS_AC3VOICE_V1V2        1
  311. // highlight actions
  312. #define ZIVADS_BUTTONACTION_SELECT    0
  313. #define ZIVADS_BUTTONACTION_UNHIGHLIGHT 1
  314. #define ZIVADS_BUTTONACTION_ACTIVATE 2
  315. #define ZIVADS_BUTTONACTION_ACTIVATE_SELECTED 3
  316. // special buttons
  317. #define ZIVADS_BUTTON_NONE    0
  318. #define ZIVADS_BUTTON_UP     64
  319. #define ZIVADS_BUTTON_DOWN   65
  320. #define ZIVADS_BUTTON_LEFT   66
  321. #define ZIVADS_BUTTON_RIGHT  67
  322. // audio clock frequencies
  323. #define ZIVADS_CLKFREQ256 0
  324. #define ZIVADS_CLKFREQ384 1
  325. // *******************************************************************
  326. // Structures
  327. typedef struct _zivaDS_ops_t zivaDS_ops_t;
  328. typedef struct _zivaDS_t zivaDS_t;
  329. // generic driver structure
  330. struct _zivaDS_t {
  331.   zivaDS_ops_t* ops;
  332.   void* data;
  333.   // type of Ziva chip
  334.   int zivaDSType;
  335.   // interrupt status
  336.   int intEnabledFlag;
  337. };
  338. // lowlevel access operations
  339. struct _zivaDS_ops_t {
  340.   char name[32];
  341.   int (*get_reg) (zivaDS_t* instance, int reg);
  342.   int (*set_reg) (zivaDS_t* instance, int reg, int val);
  343.   int (*get_mem) (zivaDS_t* instance, int addr);
  344.   int (*set_mem) (zivaDS_t* instance, int addr, int val);
  345.   int (*enable_int) (zivaDS_t* instance, int flag);
  346. };
  347. // to hold flags during CSS operations
  348. typedef struct {
  349.   
  350.   unsigned int flag1;
  351.   unsigned int flag2;
  352. } zivaDS_cssFlags_t;
  353. // to hold ziva interrupt src
  354. typedef struct {
  355.   
  356.   unsigned int HLI_int_src;
  357.   unsigned int BUF_int_src;
  358.   unsigned int UND_int_src;
  359.   unsigned int AOR_int_src;
  360.   unsigned int AEE_int_src;
  361.   unsigned int ERR_int_src;
  362. } zivaDS_int_src_t;
  363.   
  364. // *******************************************************************
  365. // function declarations
  366. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  367. // Driver maintenance functions
  368. /**
  369.  *
  370.  * Create new ZivaDS driver instance
  371.  *
  372.  * @param ops Lowlevel operations to talk to chip
  373.  * @param data Any extra data for said functions
  374.  *
  375.  * @return The new instance (or NULL on error)
  376.  *
  377.  */
  378. extern zivaDS_t* zivaDS_new(zivaDS_ops_t* ops, void* data);
  379. /**
  380.  *
  381.  * Destroy an Anp82 driver instance
  382.  *
  383.  * @param instance The instance to destroy
  384.  *
  385.  */
  386. extern void zivaDS_free(zivaDS_t* instance);
  387. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  388. // High level convenience functions
  389. /**
  390.  *
  391.  * This detects the Ziva chip. You can't just reset the thing, because
  392.  * you need the firmware uploaded first (I think)... 
  393.  *
  394.  * @return 0 on success, <0 on failure
  395.  *
  396.  */
  397. extern int zivaDS_detect(zivaDS_t* instance);
  398. /**
  399.  *
  400.  * Get the CSS flags from the ziva and store them in supplied structure
  401.  *
  402.  * @param instance Ziva instance to use
  403.  * @param flags Where to store the flags
  404.  *
  405.  */
  406. extern void zivaDS_get_css_flags(zivaDS_t* instance, zivaDS_cssFlags_t* flags);
  407. /**
  408.  *
  409.  * Restore the CSS flags to the ziva from the supplied structure
  410.  *
  411.  * @param instance Ziva instance to use
  412.  * @param flags Where to store the flags
  413.  *
  414.  */
  415. extern void zivaDS_restore_css_flags(zivaDS_t* instance, zivaDS_cssFlags_t* flags);
  416. /**
  417.  *
  418.  * Set the CSS mode... used for the tc6807af functions
  419.  * You call this with mode=1 before doing anything with the tc6807af, and then with
  420.  * mode=0 after you have finished.
  421.  *
  422.  * @param instance Ziva instance to use
  423.  * @param mode Mode to set (0 or 1).
  424.  *
  425.  */
  426. extern void zivaDS_set_css_mode(zivaDS_t* instance, int mode);
  427. /**
  428.  *
  429.  * Enable/disable subpicture
  430.  *
  431.  * @param instance instance to use
  432.  * @param flag one of ZIVADS_SUBPICTURE_OFF, ZIVADS_SUBPICTURE_ON
  433.  *
  434.  * @return 0 on success, <0 on failure
  435.  *
  436.  */
  437. extern int zivaDS_enable_subpicture(zivaDS_t* instance, int flag);
  438. /**
  439.  *
  440.  * Abort playback
  441.  *
  442.  * @param instance zivaDS instance to use
  443.  *
  444.  * @return 0 on success, <0 on failure
  445.  *
  446.  */
  447. extern int zivaDS_abort(zivaDS_t* instance);
  448. /**
  449.  *
  450.  * Set the output aspect ratio
  451.  *
  452.  * @param instance zivaDS instance to use
  453.  * @param buffer instance of dxr2_oneArg_t. 
  454.  *               arg is one of ZIVADS_ASPECTRATIO_4_3 or ZIVADS_ASPECTRATIO_16_9
  455.  *
  456.  * @return 0 on success, <0 on failure
  457.  *
  458.  */
  459. extern int zivaDS_set_output_aspect_ratio(zivaDS_t* instance, int ratio);
  460. /**
  461.  *
  462.  * Set source aspect ratio
  463.  *
  464.  * @param instance ZivaDS instance
  465.  * @param ratio one of ZIVADS_ASPECTRATIO_4_3, ZIVADS_ASPECTRATIO_16_9
  466.  *
  467.  * @return 0 on success, <0 on failure
  468.  *
  469.  */
  470. extern int zivaDS_set_source_aspect_ratio(zivaDS_t* instance, int ratio);
  471. /**
  472.  *
  473.  * Set audio volume
  474.  *
  475.  * @param instance ZivaDS instance to use
  476.  * @param volume Volume to to (0-19), 0 =min, 19=max
  477.  *
  478.  * @return 0 on success, <0 on failure
  479.  *
  480.  */
  481. extern int zivaDS_set_audio_volume(zivaDS_t* instance, int volume);
  482. /**
  483.  *
  484.  * Pause playback
  485.  *
  486.  * @param instance ZivaDS instance
  487.  *
  488.  * @return 0 on success, <0 on failure
  489.  *
  490.  */
  491. extern int zivaDS_pause(zivaDS_t* instance);
  492. /**
  493.  *
  494.  * Clear video
  495.  *
  496.  * @param instance ZivaDS instance
  497.  *
  498.  * @return 0 on success, <0 on failure
  499.  *
  500.  */
  501. extern int zivaDS_clear_video(zivaDS_t* instance);
  502. /**
  503.  *
  504.  * Slow forwards
  505.  *
  506.  * @param instance ZivaDS instance
  507.  * @param rate Rate of play (one of ZIVADS_SLOWRATE_2x, ZIVADS_SLOWRATE_3x
  508.  *                           ZIVADS_SLOWRATE_4x, ZIVADS_SLOWRATE_5x, ZIVADS_SLOWRATE_6x)
  509.  *
  510.  * @return 0 on success, <0 on failure
  511.  *
  512.  */
  513. extern int zivaDS_slow_forwards(zivaDS_t* instance, int rate);
  514. /**
  515.  *
  516.  * Slow backwards
  517.  *
  518.  * @param instance ZivaDS instance
  519.  * @param rate Rate of play (one of ZIVADS_SLOWRATE_2x, ZIVADS_SLOWRATE_3x
  520.  *                           ZIVADS_SLOWRATE_4x, ZIVADS_SLOWRATE_5x, ZIVADS_SLOWRATE_6x)
  521.  *
  522.  * @return 0 on success, <0 on failure
  523.  *
  524.  */
  525. extern int zivaDS_slow_backwards(zivaDS_t* instance, int rate);
  526. /**
  527.  * 
  528.  * Set aspect ratio mode
  529.  *
  530.  * @param instance ZivaDS instance to use
  531.  * @param mode Aspect ratio mode (one of ZIVADS_ASPECTRATIOMODE_NORMAL,
  532.  *                                ZIVADS_ASPECTRATIOMODE_PAN_SCAN,
  533.  *                                ZIVADS_ASPECTRATIOMODE_LETTERBOX)
  534.  *
  535.  * @return 0 on success, <0 on failure
  536.  *
  537.  */
  538. extern int zivaDS_set_aspect_ratio_mode(zivaDS_t* instance, int mode);
  539. /**
  540.  * UNSURE
  541.  * Scan (fastforward/fastbackward)
  542.  *
  543.  * @param instance ZivaDS instance to use
  544.  * @param scanOp ???
  545.  * @param scanParam ???
  546.  *
  547.  * @return 0 on success, <0 on failure
  548.  *
  549.  */
  550. extern int zivaDS_scan_mode(zivaDS_t* instance, int arg1, int arg2);
  551. /**
  552.  * 
  553.  * Single Step
  554.  *
  555.  * @param instance ZivaDS instance to use
  556.  *
  557.  * @return 0 on success, <0 on failure
  558.  *
  559.  */
  560. extern int zivaDS_single_step(zivaDS_t* instance);
  561. /**
  562.  * 
  563.  * Reverse play
  564.  *
  565.  * @param instance ZivaDS instance to use
  566.  *
  567.  * @return 0 on success, <0 on failure
  568.  *
  569.  */
  570. extern int zivaDS_reverse_play(zivaDS_t* instance);
  571. /**
  572.  * 
  573.  * Set subpicture palettes
  574.  *
  575.  * @param instance ZivaDS instance to use
  576.  * @param palette (16x32bit palette entries)
  577.  *
  578.  * @return 0 on success, <0 on failure
  579.  *
  580.  */
  581. extern int zivaDS_set_subpicture_palettes(zivaDS_t* instance, unsigned int palettes[]);
  582. /**
  583.  *
  584.  * Initialise the ziva
  585.  *
  586.  * @param instance instance to use
  587.  * @param uCode ucode data to upload
  588.  *
  589.  * @return 0 on success, <0 on failure
  590.  *
  591.  */
  592. extern int zivaDS_init(zivaDS_t* instance, char* uCode);
  593. /**
  594.  *
  595.  * Resume play (e.g. if the device is paused)
  596.  *
  597.  * @param instance instance to use
  598.  *
  599.  * @return 0 on success, <0 on failure
  600.  *
  601.  */
  602. extern int zivaDS_resume(zivaDS_t* instance);
  603. /**
  604.  *
  605.  * Start play (e.g. if the device is stopped)
  606.  *
  607.  * @param instance instance to use
  608.  * @param playType ZIVADS_PLAYTYPE_NORMAL, ZIVADS_PLAYTYPE_STILLSTOP
  609.  *
  610.  * @return 0 on success, <0 on failure
  611.  *
  612.  */
  613. extern int zivaDS_play(zivaDS_t* instance, int arg);
  614. /**
  615.  *
  616.  * Select stream
  617.  *
  618.  * @param streamType Type of stream. One of ZIVADS_STREAM_VIDEO, ZIVADS_STREAM_SUBPICTURE,
  619.  *                   ZIVADS_STREAM_AUDIO_AC3, ZIVADS_STREAM_AUDIO_MPEG1, ZIVADS_STREAM_AUDIO_LPCM,
  620.  *                   ZIVADS_STREAM_AUDIO4
  621.  * @param streamNumber Stream of that type to select
  622.  *
  623.  * @return 0 on success, <0 on failure
  624.  *
  625.  */
  626. extern int zivaDS_select_stream(zivaDS_t* instance, 
  627. int streamType, int streamNumber);
  628. /**
  629.  *
  630.  * Reset the Ziva
  631.  *
  632.  * @param instance instance to use
  633.  *
  634.  * @return 0 on success, <0 on failure
  635.  *
  636.  */
  637. extern int zivaDS_reset(zivaDS_t* instance);
  638. /**
  639.  *
  640.  * Performs a new play mode command on the ziva
  641.  *
  642.  * @param instance instance to use
  643.  *
  644.  * @return 0 on success, <0 on failure
  645.  *
  646.  */
  647. extern int zivaDS_new_play_mode(zivaDS_t* instance);
  648. /**
  649.  *
  650.  * Sets the bitstream type
  651.  *
  652.  * @param instance instance to use
  653.  * @param type Bitstream type, one of ZIVADS_BITSTREAM_TYPE_MPEG_VOB,
  654.  * ZIVADS_BITSTREAM_TYPE_CDROM_VCD, ZIVADS_BITSTREAM_TYPE_MPEG_VCD, 
  655.  * ZIVADS_BITSTREAM_TYPE_CDDA, ZIVADS_BITSTREAM_TYPE_4
  656.  *
  657.  * @return 0 on success, <0 on failure
  658.  *
  659.  */
  660. extern int zivaDS_set_bitstream_type(zivaDS_t* instance, int type);
  661. /**
  662.  *
  663.  * Sets the source video frequency
  664.  *
  665.  * @param instance instance to use
  666.  * @param freq ZIVADS_SRC_VIDEO_FREQ_30, ZIVADS_SRC_VIDEO_FREQ_25
  667.  *
  668.  * @return 0 on success, <0 on failure
  669.  *
  670.  */
  671. extern int zivaDS_set_source_video_frequency(zivaDS_t* instance, int format);
  672. /**
  673.  *
  674.  * Setup audio DAC.
  675.  *
  676.  * @param instance ZivaDS instance to use
  677.  * @param dacMode Current Audio DAC mode
  678.  *
  679.  * @return 0 on success, <0 on failure
  680.  *
  681.  */
  682. extern int zivaDS_setup_audio_dac(zivaDS_t* instance, int dacMode);
  683. /**
  684.  *
  685.  * Get the most significant 32 bits of the STC value
  686.  * this is the System time..
  687.  *
  688.  * @param instance instance to use
  689.  *
  690.  * @return Value on success, <0 on failure
  691.  *
  692.  */
  693. extern int zivaDS_get_mrc_pic_stc(zivaDS_t* instance);
  694. /**
  695.  * 
  696.  * Get the most significant 32 bits of the PTS value
  697.  * this is the presentation time..
  698.  *
  699.  * @param instance instance to use
  700.  *
  701.  * @return Value on success, <0 on failure
  702.  *
  703.  */
  704. extern int zivaDS_get_mrc_pic_pts(zivaDS_t* instance);
  705. /**
  706.  * 
  707.  * Sets the IEC-958 output mode (either decoded AC3, or encoded AC3)
  708.  *
  709.  * @param instance instance to use
  710.  * @param flag (ZIVADS_IEC958_DECODED, ZIVADS_IEC958_ENCODED)
  711.  *
  712.  * @return 0 on success, <0 on failure
  713.  *
  714.  */
  715. extern int zivaDS_set_iec958_output_mode(zivaDS_t* instance, int flag);
  716. /**
  717.  * 
  718.  * Set the AC3 mode... probably for Karaoke... Mmmmm... how useful ;)
  719.  *
  720.  * @param instance instance to use
  721.  * @param dacMode Current Audio DAC mode
  722.  * @param param One of ZIVADS_AC3MODE_LR_STEREO, 
  723.  *                     ZIVADS_AC3MODE_LR_STEREO_PROLOGIC,
  724.  *                     ZIVADS_AC3MODE_LR_MONOR
  725.  *
  726.  * @return 0 on success, <0 on failure
  727.  *
  728.  */
  729. extern int zivaDS_set_AC3_mode(zivaDS_t* instance, 
  730.        int currentDacMode,
  731.        int param);
  732. /**
  733.  * 
  734.  * Selects AC3 voice, either to NONE, or V1V2. This is for karaoke
  735.  *
  736.  * @param instance instance to use
  737.  * @param voice Voice to select (ZIVADS_AC3VOICE_NONE, ZIVADS_AC3VOICE_V1V2)
  738.  *
  739.  * @return 0 on success, <0 on failure
  740.  *
  741.  */
  742. extern int zivaDS_select_AC3_voice(zivaDS_t* instance, int voice);
  743. /**
  744.  *
  745.  * Set the audio attenuation
  746.  *
  747.  * @param instance instance to use
  748.  * @param attenuation The attenuation
  749.  *
  750.  * @return 0 on success, <0 on failure
  751.  *
  752.  */
  753. extern int zivaDS_set_audio_attenuation(zivaDS_t* instance, int attenuation);
  754. /**
  755.  *
  756.  * Highlights a button
  757.  *
  758.  * @param instance zivaDS instance
  759.  * @param button Index of button to highlight (1-36), or ZIVADS_BUTTON_NONE,
  760.  *     ZIVADS_BUTTON_UP, ZIVADS_BUTTON_DOWN, ZIVADS_BUTTON_LEFT, 
  761.  *     ZIVADS_BUTTON_RIGHT
  762.  * @param action to perform on button:
  763.  *     ZIVADS_BUTTONACTION_SELECT, ZIVADS_BUTTONACTION_UNHIGHLIGHT,
  764.  *     ZIVADS_BUTTONACTION_ACTIVATE, ZIVADS_BUTTONACTION_ACTIVATE_SELECTED
  765.  *
  766.  * @return 0 on success, <0 on failure
  767.  *
  768.  */
  769. extern int zivaDS_highlight(zivaDS_t* instance, int buttonIndex, int colour);
  770. /**
  771.  *
  772.  * Waits for the current HLI interrupt to finish??
  773.  *
  774.  * @param instance zivaDS instance
  775.  *
  776.  * @return 0 on success, <0 on failure
  777.  *
  778.  */
  779. extern int zivaDS_wait_for_HLI_int(zivaDS_t* instance);
  780. /**
  781.  *
  782.  * Sets the ziva Audio clock frequency
  783.  *
  784.  * @param instance ZivaDS instance
  785.  * @param freq Frequency to set (ZIVADS_CLKFRE256 or ZIVADS_CLKFREQ384)
  786.  *
  787.  */
  788. extern int zivaDS_set_audio_clock_frequency(zivaDS_t* instance, int freq);
  789. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  790. // CSS functions
  791. /**
  792.  *
  793.  * Sets the CSS decryption mode
  794.  *
  795.  * @param instance Ziva instance to use
  796.  * @param mode CSS mode one of ZIVADS_CSSDECRMODE_ON,ZIVADS_CSSDECRMODE_OFF
  797.  *
  798.  * @return 0 on success, <0 on failure
  799.  *
  800.  */
  801. extern int zivaDS_set_decryption_mode(zivaDS_t* instance, int mode);
  802. /**
  803.  *
  804.  * Send the challenge key to the Ziva
  805.  *
  806.  * @param instance Ziva instance to use
  807.  * @param key 10 byte char array containing the key
  808.  *
  809.  * @return 0 on success, <0 on failure
  810.  *
  811.  */
  812. extern int zivaDS_send_challenge_key(zivaDS_t* instance, char* key);
  813. /**
  814.  *
  815.  * Get the challenge key from the Ziva
  816.  *
  817.  * @param instance Instance of the Ziva to use
  818.  * @param key 10 byte char array to put the key in
  819.  *
  820.  * @return 0 on success, <0 on failure
  821.  *
  822.  */
  823. extern int zivaDS_get_challenge_key(zivaDS_t* instance, char* key);
  824. /**
  825.  *
  826.  * Send the response key to the Ziva
  827.  *
  828.  * @param instance Instance of the Ziva to use
  829.  * @param key 5 byte char array containing the key
  830.  *
  831.  * @return 0 on success, <0 on failure
  832.  *
  833.  */
  834. extern int zivaDS_send_response_key(zivaDS_t* instance, char* key);
  835. /**
  836.  *
  837.  * Get the challenge key from the Ziva
  838.  *
  839.  * @param instance Instance of the Ziva to use
  840.  * @param key 5 byte char array to put the key in
  841.  *
  842.  * @return 0 on success, <0 on failure
  843.  *
  844.  */
  845. extern int zivaDS_get_response_key(zivaDS_t* instance, char* key);
  846. /**
  847.  *
  848.  * Part 1 of send disc key (setup)
  849.  *
  850.  * @param instance Instance of the Ziva to use
  851.  *
  852.  * @return 0 on success, or <0 on failure
  853.  *
  854.  */
  855. extern int zivaDS_send_disc_key_part1(zivaDS_t* instance);
  856. /**
  857.  *
  858.  * Part 2 of send disc key (finalise)
  859.  *
  860.  * @param instance Instance of the Ziva to use
  861.  *
  862.  * @return 0 on success, or <0 on failure
  863.  *
  864.  */
  865. extern int zivaDS_send_disc_key_part2(zivaDS_t* instance);
  866. /**
  867.  *
  868.  * Send the disc title key
  869.  *
  870.  * @param instance Instance of the Ziva to use
  871.  * @param key 6 byte char array containing the key to send
  872.  *
  873.  * @return 0 on success, <0 on failure
  874.  *
  875.  */
  876. extern int zivaDS_send_title_key(zivaDS_t* instance, char* key);
  877. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  878. // Low level functions
  879. /**
  880.  *
  881.  * Get register from the zivaDS
  882.  *
  883.  * @param instance Instance of the zivaDS to use
  884.  * @param reg Register to retrieve
  885.  *
  886.  * @return The register's value, or <0 on failure
  887.  *
  888.  */
  889. extern int zivaDS_get_reg(zivaDS_t* instance, int reg);
  890. /**
  891.  *
  892.  * Set register on the ZivaDS
  893.  *
  894.  * @param instance Instance of the ZivaDS to use
  895.  * @param reg Register to retrieve
  896.  * @param val Value to set
  897.  *
  898.  */
  899. extern void zivaDS_set_reg(zivaDS_t* instance, int reg, int val);
  900. /**
  901.  *
  902.  * Get specified bitmask of a register from ZivaDS
  903.  *
  904.  * @param instance Instance of the ZivaDS to use
  905.  * @param reg Register to retrieve
  906.  * @param bitmask Bitmask of bits to retrive from that register
  907.  *
  908.  * @return The register bitvalues, or <0 on failure
  909.  *
  910.  */
  911. extern int zivaDS_get_bits(zivaDS_t* instance, int reg, int bitmask);
  912. /**
  913.  *
  914.  * Set specified bits of a register on ZivaDS
  915.  *
  916.  * @param instance Instance of the ZivaDS to use
  917.  * @param reg Register to retrieve
  918.  * @param bitmask Bitmask of bits to set from that register
  919.  * @param valuemask Values of the bits in the bitmask
  920.  *
  921.  */
  922. extern void zivaDS_set_bits(zivaDS_t* instance, int reg, int bitmask, 
  923.     int valuemask);
  924. /**
  925.  *
  926.  * Read from a ZivaDS memory location
  927.  *
  928.  * @param instance Instance of Ziva DS to read from
  929.  * @param addr Address to read from in that memory area
  930.  *
  931.  * @return Memory Value
  932.  *
  933.  */
  934. extern int zivaDS_get_mem(zivaDS_t* instance, int addr);
  935. /**
  936.  *
  937.  * Write to a ZivaDS memory location
  938.  *
  939.  * @param instance Instance of Ziva DS to read from
  940.  * @param addr Address to write to in that memory area
  941.  * @param val Value to write
  942.  *
  943.  */
  944. extern void zivaDS_set_mem(zivaDS_t* instance, int addr, int val);
  945. /**
  946.  *
  947.  * Issues a command to the Ziva chip
  948.  *
  949.  * @param instance Instance of the ZivaDS to use
  950.  * @param command Ziva command to send
  951.  * @param arg0 Argument 0 for command
  952.  * @param arg1 Argument 1 for command
  953.  * @param arg2 Argument 2 for command
  954.  * @param arg3 Argument 3 for command
  955.  * @param arg4 Argument 4 for command
  956.  * @param arg5 Argument 5 for command
  957.  * @param intMask Ziva Int Mask to set (0 for don't bother)
  958.  * @param statusToWaitFor Ziva Status to wait for (0 for don't bother)
  959.  *
  960.  * @return 0 on success, <0 on failure
  961.  *
  962.  */
  963. extern int zivaDS_command(zivaDS_t* instance,
  964.   int command,
  965.   int arg0, int arg1, int arg2, int arg3, int arg4, int arg5,
  966.   int intMask, int statusToWaitFor);
  967. /**
  968.  *
  969.  * Determines whether the ziva Int is currently enabled
  970.  *
  971.  * @param instance zivaDS instance
  972.  *
  973.  * @return 0 => int NOT enabled, 1 => int enabled
  974.  *
  975.  */
  976. extern int zivaDS_is_int_enabled(zivaDS_t* instance);
  977. /**
  978.  *
  979.  * Enable/disable ziva interrupt
  980.  *
  981.  * @param instance zivaDS instance
  982.  * @param flag 0=> disable, 1=> enable
  983.  *
  984.  * @return 0 on success, <0 on failure
  985.  *
  986.  */
  987. extern int zivaDS_enable_int(zivaDS_t* instance, int flag);
  988. /**
  989.  *
  990.  * Get ziva int status
  991.  *
  992.  * @param instance zivaDS instance
  993.  * @param itnSrcBuf buffer to hold intsrcs
  994.  * 
  995.  * @return int status bitmap from ziva
  996.  *
  997.  */
  998. extern int zivaDS_get_int_status(zivaDS_t* instance, zivaDS_int_src_t* intSrcBuf);
  999. /**
  1000.  *
  1001.  * Checks if the ziva is ZIVADS_TYPE_1 or not (i.e. doesn't have onboard CSS)
  1002.  *
  1003.  * @param instance zivaDS instance
  1004.  *
  1005.  * @return 0 => NOT ZIVADS_TYPE_1, 1=> it IS ZIVADS_TYPE_1
  1006.  *
  1007.  */
  1008. extern int zivaDS_check_type_1(zivaDS_t* instance);
  1009. #endif