1*577a7ad3SMauro Carvalho Chehab.. SPDX-License-Identifier: GPL-2.0
2*577a7ad3SMauro Carvalho Chehab
3*577a7ad3SMauro Carvalho ChehabThe cx2341x driver
4*577a7ad3SMauro Carvalho Chehab==================
5*577a7ad3SMauro Carvalho Chehab
6*577a7ad3SMauro Carvalho ChehabMemory at cx2341x chips
7*577a7ad3SMauro Carvalho Chehab-----------------------
8*577a7ad3SMauro Carvalho Chehab
9*577a7ad3SMauro Carvalho ChehabThis section describes the cx2341x memory map and documents some of the
10*577a7ad3SMauro Carvalho Chehabregister space.
11*577a7ad3SMauro Carvalho Chehab
12*577a7ad3SMauro Carvalho Chehab.. note:: the memory long words are little-endian ('intel format').
13*577a7ad3SMauro Carvalho Chehab
14*577a7ad3SMauro Carvalho Chehab.. warning::
15*577a7ad3SMauro Carvalho Chehab
16*577a7ad3SMauro Carvalho Chehab	This information was figured out from searching through the memory
17*577a7ad3SMauro Carvalho Chehab	and registers, this information may not be correct and is certainly
18*577a7ad3SMauro Carvalho Chehab	not complete, and was not derived from anything more than searching
19*577a7ad3SMauro Carvalho Chehab	through the memory space with commands like:
20*577a7ad3SMauro Carvalho Chehab
21*577a7ad3SMauro Carvalho Chehab	.. code-block:: none
22*577a7ad3SMauro Carvalho Chehab
23*577a7ad3SMauro Carvalho Chehab		ivtvctl -O min=0x02000000,max=0x020000ff
24*577a7ad3SMauro Carvalho Chehab
25*577a7ad3SMauro Carvalho Chehab	So take this as is, I'm always searching for more stuff, it's a large
26*577a7ad3SMauro Carvalho Chehab	register space :-).
27*577a7ad3SMauro Carvalho Chehab
28*577a7ad3SMauro Carvalho ChehabMemory Map
29*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~
30*577a7ad3SMauro Carvalho Chehab
31*577a7ad3SMauro Carvalho ChehabThe cx2341x exposes its entire 64M memory space to the PCI host via the PCI BAR0
32*577a7ad3SMauro Carvalho Chehab(Base Address Register 0). The addresses here are offsets relative to the
33*577a7ad3SMauro Carvalho Chehabaddress held in BAR0.
34*577a7ad3SMauro Carvalho Chehab
35*577a7ad3SMauro Carvalho Chehab.. code-block:: none
36*577a7ad3SMauro Carvalho Chehab
37*577a7ad3SMauro Carvalho Chehab	0x00000000-0x00ffffff Encoder memory space
38*577a7ad3SMauro Carvalho Chehab	0x00000000-0x0003ffff Encode.rom
39*577a7ad3SMauro Carvalho Chehab	???-???         MPEG buffer(s)
40*577a7ad3SMauro Carvalho Chehab	???-???         Raw video capture buffer(s)
41*577a7ad3SMauro Carvalho Chehab	???-???         Raw audio capture buffer(s)
42*577a7ad3SMauro Carvalho Chehab	???-???         Display buffers (6 or 9)
43*577a7ad3SMauro Carvalho Chehab
44*577a7ad3SMauro Carvalho Chehab	0x01000000-0x01ffffff Decoder memory space
45*577a7ad3SMauro Carvalho Chehab	0x01000000-0x0103ffff Decode.rom
46*577a7ad3SMauro Carvalho Chehab	???-???         MPEG buffers(s)
47*577a7ad3SMauro Carvalho Chehab	0x0114b000-0x0115afff Audio.rom (deprecated?)
48*577a7ad3SMauro Carvalho Chehab
49*577a7ad3SMauro Carvalho Chehab	0x02000000-0x0200ffff Register Space
50*577a7ad3SMauro Carvalho Chehab
51*577a7ad3SMauro Carvalho ChehabRegisters
52*577a7ad3SMauro Carvalho Chehab~~~~~~~~~
53*577a7ad3SMauro Carvalho Chehab
54*577a7ad3SMauro Carvalho ChehabThe registers occupy the 64k space starting at the 0x02000000 offset from BAR0.
55*577a7ad3SMauro Carvalho ChehabAll of these registers are 32 bits wide.
56*577a7ad3SMauro Carvalho Chehab
57*577a7ad3SMauro Carvalho Chehab.. code-block:: none
58*577a7ad3SMauro Carvalho Chehab
59*577a7ad3SMauro Carvalho Chehab	DMA Registers 0x000-0xff:
60*577a7ad3SMauro Carvalho Chehab
61*577a7ad3SMauro Carvalho Chehab	0x00 - Control:
62*577a7ad3SMauro Carvalho Chehab		0=reset/cancel, 1=read, 2=write, 4=stop
63*577a7ad3SMauro Carvalho Chehab	0x04 - DMA status:
64*577a7ad3SMauro Carvalho Chehab		1=read busy, 2=write busy, 4=read error, 8=write error, 16=link list error
65*577a7ad3SMauro Carvalho Chehab	0x08 - pci DMA pointer for read link list
66*577a7ad3SMauro Carvalho Chehab	0x0c - pci DMA pointer for write link list
67*577a7ad3SMauro Carvalho Chehab	0x10 - read/write DMA enable:
68*577a7ad3SMauro Carvalho Chehab		1=read enable, 2=write enable
69*577a7ad3SMauro Carvalho Chehab	0x14 - always 0xffffffff, if set any lower instability occurs, 0x00 crashes
70*577a7ad3SMauro Carvalho Chehab	0x18 - ??
71*577a7ad3SMauro Carvalho Chehab	0x1c - always 0x20 or 32, smaller values slow down DMA transactions
72*577a7ad3SMauro Carvalho Chehab	0x20 - always value of 0x780a010a
73*577a7ad3SMauro Carvalho Chehab	0x24-0x3c - usually just random values???
74*577a7ad3SMauro Carvalho Chehab	0x40 - Interrupt status
75*577a7ad3SMauro Carvalho Chehab	0x44 - Write a bit here and shows up in Interrupt status 0x40
76*577a7ad3SMauro Carvalho Chehab	0x48 - Interrupt Mask
77*577a7ad3SMauro Carvalho Chehab	0x4C - always value of 0xfffdffff,
78*577a7ad3SMauro Carvalho Chehab		if changed to 0xffffffff DMA write interrupts break.
79*577a7ad3SMauro Carvalho Chehab	0x50 - always 0xffffffff
80*577a7ad3SMauro Carvalho Chehab	0x54 - always 0xffffffff (0x4c, 0x50, 0x54 seem like interrupt masks, are
81*577a7ad3SMauro Carvalho Chehab		3 processors on chip, Java ones, VPU, SPU, APU, maybe these are the
82*577a7ad3SMauro Carvalho Chehab		interrupt masks???).
83*577a7ad3SMauro Carvalho Chehab	0x60-0x7C - random values
84*577a7ad3SMauro Carvalho Chehab	0x80 - first write linked list reg, for Encoder Memory addr
85*577a7ad3SMauro Carvalho Chehab	0x84 - first write linked list reg, for pci memory addr
86*577a7ad3SMauro Carvalho Chehab	0x88 - first write linked list reg, for length of buffer in memory addr
87*577a7ad3SMauro Carvalho Chehab		(|0x80000000 or this for last link)
88*577a7ad3SMauro Carvalho Chehab	0x8c-0xdc - rest of write linked list reg, 8 sets of 3 total, DMA goes here
89*577a7ad3SMauro Carvalho Chehab		from linked list addr in reg 0x0c, firmware must push through or
90*577a7ad3SMauro Carvalho Chehab		something.
91*577a7ad3SMauro Carvalho Chehab	0xe0 - first (and only) read linked list reg, for pci memory addr
92*577a7ad3SMauro Carvalho Chehab	0xe4 - first (and only) read linked list reg, for Decoder memory addr
93*577a7ad3SMauro Carvalho Chehab	0xe8 - first (and only) read linked list reg, for length of buffer
94*577a7ad3SMauro Carvalho Chehab	0xec-0xff - Nothing seems to be in these registers, 0xec-f4 are 0x00000000.
95*577a7ad3SMauro Carvalho Chehab
96*577a7ad3SMauro Carvalho ChehabMemory locations for Encoder Buffers 0x700-0x7ff:
97*577a7ad3SMauro Carvalho Chehab
98*577a7ad3SMauro Carvalho ChehabThese registers show offsets of memory locations pertaining to each
99*577a7ad3SMauro Carvalho Chehabbuffer area used for encoding, have to shift them by <<1 first.
100*577a7ad3SMauro Carvalho Chehab
101*577a7ad3SMauro Carvalho Chehab- 0x07F8: Encoder SDRAM refresh
102*577a7ad3SMauro Carvalho Chehab- 0x07FC: Encoder SDRAM pre-charge
103*577a7ad3SMauro Carvalho Chehab
104*577a7ad3SMauro Carvalho ChehabMemory locations for Decoder Buffers 0x800-0x8ff:
105*577a7ad3SMauro Carvalho Chehab
106*577a7ad3SMauro Carvalho ChehabThese registers show offsets of memory locations pertaining to each
107*577a7ad3SMauro Carvalho Chehabbuffer area used for decoding, have to shift them by <<1 first.
108*577a7ad3SMauro Carvalho Chehab
109*577a7ad3SMauro Carvalho Chehab- 0x08F8: Decoder SDRAM refresh
110*577a7ad3SMauro Carvalho Chehab- 0x08FC: Decoder SDRAM pre-charge
111*577a7ad3SMauro Carvalho Chehab
112*577a7ad3SMauro Carvalho ChehabOther memory locations:
113*577a7ad3SMauro Carvalho Chehab
114*577a7ad3SMauro Carvalho Chehab- 0x2800: Video Display Module control
115*577a7ad3SMauro Carvalho Chehab- 0x2D00: AO (audio output?) control
116*577a7ad3SMauro Carvalho Chehab- 0x2D24: Bytes Flushed
117*577a7ad3SMauro Carvalho Chehab- 0x7000: LSB I2C write clock bit (inverted)
118*577a7ad3SMauro Carvalho Chehab- 0x7004: LSB I2C write data bit (inverted)
119*577a7ad3SMauro Carvalho Chehab- 0x7008: LSB I2C read clock bit
120*577a7ad3SMauro Carvalho Chehab- 0x700c: LSB I2C read data bit
121*577a7ad3SMauro Carvalho Chehab- 0x9008: GPIO get input state
122*577a7ad3SMauro Carvalho Chehab- 0x900c: GPIO set output state
123*577a7ad3SMauro Carvalho Chehab- 0x9020: GPIO direction (Bit7 (GPIO 0..7) - 0:input, 1:output)
124*577a7ad3SMauro Carvalho Chehab- 0x9050: SPU control
125*577a7ad3SMauro Carvalho Chehab- 0x9054: Reset HW blocks
126*577a7ad3SMauro Carvalho Chehab- 0x9058: VPU control
127*577a7ad3SMauro Carvalho Chehab- 0xA018: Bit6: interrupt pending?
128*577a7ad3SMauro Carvalho Chehab- 0xA064: APU command
129*577a7ad3SMauro Carvalho Chehab
130*577a7ad3SMauro Carvalho Chehab
131*577a7ad3SMauro Carvalho ChehabInterrupt Status Register
132*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
133*577a7ad3SMauro Carvalho Chehab
134*577a7ad3SMauro Carvalho ChehabThe definition of the bits in the interrupt status register 0x0040, and the
135*577a7ad3SMauro Carvalho Chehabinterrupt mask 0x0048. If a bit is cleared in the mask, then we want our ISR to
136*577a7ad3SMauro Carvalho Chehabexecute.
137*577a7ad3SMauro Carvalho Chehab
138*577a7ad3SMauro Carvalho Chehab- bit 31 Encoder Start Capture
139*577a7ad3SMauro Carvalho Chehab- bit 30 Encoder EOS
140*577a7ad3SMauro Carvalho Chehab- bit 29 Encoder VBI capture
141*577a7ad3SMauro Carvalho Chehab- bit 28 Encoder Video Input Module reset event
142*577a7ad3SMauro Carvalho Chehab- bit 27 Encoder DMA complete
143*577a7ad3SMauro Carvalho Chehab- bit 24 Decoder audio mode change detection event (through event notification)
144*577a7ad3SMauro Carvalho Chehab- bit 22 Decoder data request
145*577a7ad3SMauro Carvalho Chehab- bit 20 Decoder DMA complete
146*577a7ad3SMauro Carvalho Chehab- bit 19 Decoder VBI re-insertion
147*577a7ad3SMauro Carvalho Chehab- bit 18 Decoder DMA err (linked-list bad)
148*577a7ad3SMauro Carvalho Chehab
149*577a7ad3SMauro Carvalho ChehabMissing documentation
150*577a7ad3SMauro Carvalho Chehab---------------------
151*577a7ad3SMauro Carvalho Chehab
152*577a7ad3SMauro Carvalho Chehab- Encoder API post(?)
153*577a7ad3SMauro Carvalho Chehab- Decoder API post(?)
154*577a7ad3SMauro Carvalho Chehab- Decoder VTRACE event
155*577a7ad3SMauro Carvalho Chehab
156*577a7ad3SMauro Carvalho Chehab
157*577a7ad3SMauro Carvalho ChehabThe cx2341x firmware upload
158*577a7ad3SMauro Carvalho Chehab---------------------------
159*577a7ad3SMauro Carvalho Chehab
160*577a7ad3SMauro Carvalho ChehabThis document describes how to upload the cx2341x firmware to the card.
161*577a7ad3SMauro Carvalho Chehab
162*577a7ad3SMauro Carvalho ChehabHow to find
163*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~
164*577a7ad3SMauro Carvalho Chehab
165*577a7ad3SMauro Carvalho ChehabSee the web pages of the various projects that uses this chip for information
166*577a7ad3SMauro Carvalho Chehabon how to obtain the firmware.
167*577a7ad3SMauro Carvalho Chehab
168*577a7ad3SMauro Carvalho ChehabThe firmware stored in a Windows driver can be detected as follows:
169*577a7ad3SMauro Carvalho Chehab
170*577a7ad3SMauro Carvalho Chehab- Each firmware image is 256k bytes.
171*577a7ad3SMauro Carvalho Chehab- The 1st 32-bit word of the Encoder image is 0x0000da7
172*577a7ad3SMauro Carvalho Chehab- The 1st 32-bit word of the Decoder image is 0x00003a7
173*577a7ad3SMauro Carvalho Chehab- The 2nd 32-bit word of both images is 0xaa55bb66
174*577a7ad3SMauro Carvalho Chehab
175*577a7ad3SMauro Carvalho ChehabHow to load
176*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~
177*577a7ad3SMauro Carvalho Chehab
178*577a7ad3SMauro Carvalho Chehab- Issue the FWapi command to stop the encoder if it is running. Wait for the
179*577a7ad3SMauro Carvalho Chehab  command to complete.
180*577a7ad3SMauro Carvalho Chehab- Issue the FWapi command to stop the decoder if it is running. Wait for the
181*577a7ad3SMauro Carvalho Chehab  command to complete.
182*577a7ad3SMauro Carvalho Chehab- Issue the I2C command to the digitizer to stop emitting VSYNC events.
183*577a7ad3SMauro Carvalho Chehab- Issue the FWapi command to halt the encoder's firmware.
184*577a7ad3SMauro Carvalho Chehab- Sleep for 10ms.
185*577a7ad3SMauro Carvalho Chehab- Issue the FWapi command to halt the decoder's firmware.
186*577a7ad3SMauro Carvalho Chehab- Sleep for 10ms.
187*577a7ad3SMauro Carvalho Chehab- Write 0x00000000 to register 0x2800 to stop the Video Display Module.
188*577a7ad3SMauro Carvalho Chehab- Write 0x00000005 to register 0x2D00 to stop the AO (audio output?).
189*577a7ad3SMauro Carvalho Chehab- Write 0x00000000 to register 0xA064 to ping? the APU.
190*577a7ad3SMauro Carvalho Chehab- Write 0xFFFFFFFE to register 0x9058 to stop the VPU.
191*577a7ad3SMauro Carvalho Chehab- Write 0xFFFFFFFF to register 0x9054 to reset the HW blocks.
192*577a7ad3SMauro Carvalho Chehab- Write 0x00000001 to register 0x9050 to stop the SPU.
193*577a7ad3SMauro Carvalho Chehab- Sleep for 10ms.
194*577a7ad3SMauro Carvalho Chehab- Write 0x0000001A to register 0x07FC to init the Encoder SDRAM's pre-charge.
195*577a7ad3SMauro Carvalho Chehab- Write 0x80000640 to register 0x07F8 to init the Encoder SDRAM's refresh to 1us.
196*577a7ad3SMauro Carvalho Chehab- Write 0x0000001A to register 0x08FC to init the Decoder SDRAM's pre-charge.
197*577a7ad3SMauro Carvalho Chehab- Write 0x80000640 to register 0x08F8 to init the Decoder SDRAM's refresh to 1us.
198*577a7ad3SMauro Carvalho Chehab- Sleep for 512ms. (600ms is recommended)
199*577a7ad3SMauro Carvalho Chehab- Transfer the encoder's firmware image to offset 0 in Encoder memory space.
200*577a7ad3SMauro Carvalho Chehab- Transfer the decoder's firmware image to offset 0 in Decoder memory space.
201*577a7ad3SMauro Carvalho Chehab- Use a read-modify-write operation to Clear bit 0 of register 0x9050 to
202*577a7ad3SMauro Carvalho Chehab  re-enable the SPU.
203*577a7ad3SMauro Carvalho Chehab- Sleep for 1 second.
204*577a7ad3SMauro Carvalho Chehab- Use a read-modify-write operation to Clear bits 3 and 0 of register 0x9058
205*577a7ad3SMauro Carvalho Chehab  to re-enable the VPU.
206*577a7ad3SMauro Carvalho Chehab- Sleep for 1 second.
207*577a7ad3SMauro Carvalho Chehab- Issue status API commands to both firmware images to verify.
208*577a7ad3SMauro Carvalho Chehab
209*577a7ad3SMauro Carvalho Chehab
210*577a7ad3SMauro Carvalho ChehabHow to call the firmware API
211*577a7ad3SMauro Carvalho Chehab----------------------------
212*577a7ad3SMauro Carvalho Chehab
213*577a7ad3SMauro Carvalho ChehabThe preferred calling convention is known as the firmware mailbox. The
214*577a7ad3SMauro Carvalho Chehabmailboxes are basically a fixed length array that serves as the call-stack.
215*577a7ad3SMauro Carvalho Chehab
216*577a7ad3SMauro Carvalho ChehabFirmware mailboxes can be located by searching the encoder and decoder memory
217*577a7ad3SMauro Carvalho Chehabfor a 16 byte signature. That signature will be located on a 256-byte boundary.
218*577a7ad3SMauro Carvalho Chehab
219*577a7ad3SMauro Carvalho ChehabSignature:
220*577a7ad3SMauro Carvalho Chehab
221*577a7ad3SMauro Carvalho Chehab.. code-block:: none
222*577a7ad3SMauro Carvalho Chehab
223*577a7ad3SMauro Carvalho Chehab	0x78, 0x56, 0x34, 0x12, 0x12, 0x78, 0x56, 0x34,
224*577a7ad3SMauro Carvalho Chehab	0x34, 0x12, 0x78, 0x56, 0x56, 0x34, 0x12, 0x78
225*577a7ad3SMauro Carvalho Chehab
226*577a7ad3SMauro Carvalho ChehabThe firmware implements 20 mailboxes of 20 32-bit words. The first 10 are
227*577a7ad3SMauro Carvalho Chehabreserved for API calls. The second 10 are used by the firmware for event
228*577a7ad3SMauro Carvalho Chehabnotification.
229*577a7ad3SMauro Carvalho Chehab
230*577a7ad3SMauro Carvalho Chehab  ====== =================
231*577a7ad3SMauro Carvalho Chehab  Index  Name
232*577a7ad3SMauro Carvalho Chehab  ====== =================
233*577a7ad3SMauro Carvalho Chehab  0      Flags
234*577a7ad3SMauro Carvalho Chehab  1      Command
235*577a7ad3SMauro Carvalho Chehab  2      Return value
236*577a7ad3SMauro Carvalho Chehab  3      Timeout
237*577a7ad3SMauro Carvalho Chehab  4-19   Parameter/Result
238*577a7ad3SMauro Carvalho Chehab  ====== =================
239*577a7ad3SMauro Carvalho Chehab
240*577a7ad3SMauro Carvalho Chehab
241*577a7ad3SMauro Carvalho ChehabThe flags are defined in the following table. The direction is from the
242*577a7ad3SMauro Carvalho Chehabperspective of the firmware.
243*577a7ad3SMauro Carvalho Chehab
244*577a7ad3SMauro Carvalho Chehab  ==== ========== ============================================
245*577a7ad3SMauro Carvalho Chehab  Bit  Direction  Purpose
246*577a7ad3SMauro Carvalho Chehab  ==== ========== ============================================
247*577a7ad3SMauro Carvalho Chehab  2    O          Firmware has processed the command.
248*577a7ad3SMauro Carvalho Chehab  1    I          Driver has finished setting the parameters.
249*577a7ad3SMauro Carvalho Chehab  0    I          Driver is using this mailbox.
250*577a7ad3SMauro Carvalho Chehab  ==== ========== ============================================
251*577a7ad3SMauro Carvalho Chehab
252*577a7ad3SMauro Carvalho ChehabThe command is a 32-bit enumerator. The API specifics may be found in this
253*577a7ad3SMauro Carvalho Chehabchapter.
254*577a7ad3SMauro Carvalho Chehab
255*577a7ad3SMauro Carvalho ChehabThe return value is a 32-bit enumerator. Only two values are currently defined:
256*577a7ad3SMauro Carvalho Chehab
257*577a7ad3SMauro Carvalho Chehab- 0=success
258*577a7ad3SMauro Carvalho Chehab- -1=command undefined.
259*577a7ad3SMauro Carvalho Chehab
260*577a7ad3SMauro Carvalho ChehabThere are 16 parameters/results 32-bit fields. The driver populates these fields
261*577a7ad3SMauro Carvalho Chehabwith values for all the parameters required by the call. The driver overwrites
262*577a7ad3SMauro Carvalho Chehabthese fields with result values returned by the call.
263*577a7ad3SMauro Carvalho Chehab
264*577a7ad3SMauro Carvalho ChehabThe timeout value protects the card from a hung driver thread. If the driver
265*577a7ad3SMauro Carvalho Chehabdoesn't handle the completed call within the timeout specified, the firmware
266*577a7ad3SMauro Carvalho Chehabwill reset that mailbox.
267*577a7ad3SMauro Carvalho Chehab
268*577a7ad3SMauro Carvalho ChehabTo make an API call, the driver iterates over each mailbox looking for the
269*577a7ad3SMauro Carvalho Chehabfirst one available (bit 0 has been cleared). The driver sets that bit, fills
270*577a7ad3SMauro Carvalho Chehabin the command enumerator, the timeout value and any required parameters. The
271*577a7ad3SMauro Carvalho Chehabdriver then sets the parameter ready bit (bit 1). The firmware scans the
272*577a7ad3SMauro Carvalho Chehabmailboxes for pending commands, processes them, sets the result code, populates
273*577a7ad3SMauro Carvalho Chehabthe result value array with that call's return values and sets the call
274*577a7ad3SMauro Carvalho Chehabcomplete bit (bit 2). Once bit 2 is set, the driver should retrieve the results
275*577a7ad3SMauro Carvalho Chehaband clear all the flags. If the driver does not perform this task within the
276*577a7ad3SMauro Carvalho Chehabtime set in the timeout register, the firmware will reset that mailbox.
277*577a7ad3SMauro Carvalho Chehab
278*577a7ad3SMauro Carvalho ChehabEvent notifications are sent from the firmware to the host. The host tells the
279*577a7ad3SMauro Carvalho Chehabfirmware which events it is interested in via an API call. That call tells the
280*577a7ad3SMauro Carvalho Chehabfirmware which notification mailbox to use. The firmware signals the host via
281*577a7ad3SMauro Carvalho Chehaban interrupt. Only the 16 Results fields are used, the Flags, Command, Return
282*577a7ad3SMauro Carvalho Chehabvalue and Timeout words are not used.
283*577a7ad3SMauro Carvalho Chehab
284*577a7ad3SMauro Carvalho Chehab
285*577a7ad3SMauro Carvalho ChehabOSD firmware API description
286*577a7ad3SMauro Carvalho Chehab----------------------------
287*577a7ad3SMauro Carvalho Chehab
288*577a7ad3SMauro Carvalho Chehab.. note:: this API is part of the decoder firmware, so it's cx23415 only.
289*577a7ad3SMauro Carvalho Chehab
290*577a7ad3SMauro Carvalho Chehab
291*577a7ad3SMauro Carvalho Chehab
292*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_FRAMEBUFFER
293*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
294*577a7ad3SMauro Carvalho Chehab
295*577a7ad3SMauro Carvalho ChehabEnum: 65/0x41
296*577a7ad3SMauro Carvalho Chehab
297*577a7ad3SMauro Carvalho ChehabDescription
298*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
299*577a7ad3SMauro Carvalho Chehab
300*577a7ad3SMauro Carvalho ChehabReturn base and length of contiguous OSD memory.
301*577a7ad3SMauro Carvalho Chehab
302*577a7ad3SMauro Carvalho ChehabResult[0]
303*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
304*577a7ad3SMauro Carvalho Chehab
305*577a7ad3SMauro Carvalho ChehabOSD base address
306*577a7ad3SMauro Carvalho Chehab
307*577a7ad3SMauro Carvalho ChehabResult[1]
308*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
309*577a7ad3SMauro Carvalho Chehab
310*577a7ad3SMauro Carvalho ChehabOSD length
311*577a7ad3SMauro Carvalho Chehab
312*577a7ad3SMauro Carvalho Chehab
313*577a7ad3SMauro Carvalho Chehab
314*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_PIXEL_FORMAT
315*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
316*577a7ad3SMauro Carvalho Chehab
317*577a7ad3SMauro Carvalho ChehabEnum: 66/0x42
318*577a7ad3SMauro Carvalho Chehab
319*577a7ad3SMauro Carvalho ChehabDescription
320*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
321*577a7ad3SMauro Carvalho Chehab
322*577a7ad3SMauro Carvalho ChehabQuery OSD format
323*577a7ad3SMauro Carvalho Chehab
324*577a7ad3SMauro Carvalho ChehabResult[0]
325*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
326*577a7ad3SMauro Carvalho Chehab
327*577a7ad3SMauro Carvalho Chehab0=8bit index
328*577a7ad3SMauro Carvalho Chehab1=16bit RGB 5:6:5
329*577a7ad3SMauro Carvalho Chehab2=16bit ARGB 1:5:5:5
330*577a7ad3SMauro Carvalho Chehab3=16bit ARGB 1:4:4:4
331*577a7ad3SMauro Carvalho Chehab4=32bit ARGB 8:8:8:8
332*577a7ad3SMauro Carvalho Chehab
333*577a7ad3SMauro Carvalho Chehab
334*577a7ad3SMauro Carvalho Chehab
335*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_PIXEL_FORMAT
336*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
337*577a7ad3SMauro Carvalho Chehab
338*577a7ad3SMauro Carvalho ChehabEnum: 67/0x43
339*577a7ad3SMauro Carvalho Chehab
340*577a7ad3SMauro Carvalho ChehabDescription
341*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
342*577a7ad3SMauro Carvalho Chehab
343*577a7ad3SMauro Carvalho ChehabAssign pixel format
344*577a7ad3SMauro Carvalho Chehab
345*577a7ad3SMauro Carvalho ChehabParam[0]
346*577a7ad3SMauro Carvalho Chehab^^^^^^^^
347*577a7ad3SMauro Carvalho Chehab
348*577a7ad3SMauro Carvalho Chehab- 0=8bit index
349*577a7ad3SMauro Carvalho Chehab- 1=16bit RGB 5:6:5
350*577a7ad3SMauro Carvalho Chehab- 2=16bit ARGB 1:5:5:5
351*577a7ad3SMauro Carvalho Chehab- 3=16bit ARGB 1:4:4:4
352*577a7ad3SMauro Carvalho Chehab- 4=32bit ARGB 8:8:8:8
353*577a7ad3SMauro Carvalho Chehab
354*577a7ad3SMauro Carvalho Chehab
355*577a7ad3SMauro Carvalho Chehab
356*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_STATE
357*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~
358*577a7ad3SMauro Carvalho Chehab
359*577a7ad3SMauro Carvalho ChehabEnum: 68/0x44
360*577a7ad3SMauro Carvalho Chehab
361*577a7ad3SMauro Carvalho ChehabDescription
362*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
363*577a7ad3SMauro Carvalho Chehab
364*577a7ad3SMauro Carvalho ChehabQuery OSD state
365*577a7ad3SMauro Carvalho Chehab
366*577a7ad3SMauro Carvalho ChehabResult[0]
367*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
368*577a7ad3SMauro Carvalho Chehab
369*577a7ad3SMauro Carvalho Chehab- Bit  0   0=off, 1=on
370*577a7ad3SMauro Carvalho Chehab- Bits 1:2 alpha control
371*577a7ad3SMauro Carvalho Chehab- Bits 3:5 pixel format
372*577a7ad3SMauro Carvalho Chehab
373*577a7ad3SMauro Carvalho Chehab
374*577a7ad3SMauro Carvalho Chehab
375*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_STATE
376*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~
377*577a7ad3SMauro Carvalho Chehab
378*577a7ad3SMauro Carvalho ChehabEnum: 69/0x45
379*577a7ad3SMauro Carvalho Chehab
380*577a7ad3SMauro Carvalho ChehabDescription
381*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
382*577a7ad3SMauro Carvalho Chehab
383*577a7ad3SMauro Carvalho ChehabOSD switch
384*577a7ad3SMauro Carvalho Chehab
385*577a7ad3SMauro Carvalho ChehabParam[0]
386*577a7ad3SMauro Carvalho Chehab^^^^^^^^
387*577a7ad3SMauro Carvalho Chehab
388*577a7ad3SMauro Carvalho Chehab0=off, 1=on
389*577a7ad3SMauro Carvalho Chehab
390*577a7ad3SMauro Carvalho Chehab
391*577a7ad3SMauro Carvalho Chehab
392*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_OSD_COORDS
393*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
394*577a7ad3SMauro Carvalho Chehab
395*577a7ad3SMauro Carvalho ChehabEnum: 70/0x46
396*577a7ad3SMauro Carvalho Chehab
397*577a7ad3SMauro Carvalho ChehabDescription
398*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
399*577a7ad3SMauro Carvalho Chehab
400*577a7ad3SMauro Carvalho ChehabRetrieve coordinates of OSD area blended with video
401*577a7ad3SMauro Carvalho Chehab
402*577a7ad3SMauro Carvalho ChehabResult[0]
403*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
404*577a7ad3SMauro Carvalho Chehab
405*577a7ad3SMauro Carvalho ChehabOSD buffer address
406*577a7ad3SMauro Carvalho Chehab
407*577a7ad3SMauro Carvalho ChehabResult[1]
408*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
409*577a7ad3SMauro Carvalho Chehab
410*577a7ad3SMauro Carvalho ChehabStride in pixels
411*577a7ad3SMauro Carvalho Chehab
412*577a7ad3SMauro Carvalho ChehabResult[2]
413*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
414*577a7ad3SMauro Carvalho Chehab
415*577a7ad3SMauro Carvalho ChehabLines in OSD buffer
416*577a7ad3SMauro Carvalho Chehab
417*577a7ad3SMauro Carvalho ChehabResult[3]
418*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
419*577a7ad3SMauro Carvalho Chehab
420*577a7ad3SMauro Carvalho ChehabHorizontal offset in buffer
421*577a7ad3SMauro Carvalho Chehab
422*577a7ad3SMauro Carvalho ChehabResult[4]
423*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
424*577a7ad3SMauro Carvalho Chehab
425*577a7ad3SMauro Carvalho ChehabVertical offset in buffer
426*577a7ad3SMauro Carvalho Chehab
427*577a7ad3SMauro Carvalho Chehab
428*577a7ad3SMauro Carvalho Chehab
429*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_OSD_COORDS
430*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
431*577a7ad3SMauro Carvalho Chehab
432*577a7ad3SMauro Carvalho ChehabEnum: 71/0x47
433*577a7ad3SMauro Carvalho Chehab
434*577a7ad3SMauro Carvalho ChehabDescription
435*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
436*577a7ad3SMauro Carvalho Chehab
437*577a7ad3SMauro Carvalho ChehabAssign the coordinates of the OSD area to blend with video
438*577a7ad3SMauro Carvalho Chehab
439*577a7ad3SMauro Carvalho ChehabParam[0]
440*577a7ad3SMauro Carvalho Chehab^^^^^^^^
441*577a7ad3SMauro Carvalho Chehab
442*577a7ad3SMauro Carvalho Chehabbuffer address
443*577a7ad3SMauro Carvalho Chehab
444*577a7ad3SMauro Carvalho ChehabParam[1]
445*577a7ad3SMauro Carvalho Chehab^^^^^^^^
446*577a7ad3SMauro Carvalho Chehab
447*577a7ad3SMauro Carvalho Chehabbuffer stride in pixels
448*577a7ad3SMauro Carvalho Chehab
449*577a7ad3SMauro Carvalho ChehabParam[2]
450*577a7ad3SMauro Carvalho Chehab^^^^^^^^
451*577a7ad3SMauro Carvalho Chehab
452*577a7ad3SMauro Carvalho Chehablines in buffer
453*577a7ad3SMauro Carvalho Chehab
454*577a7ad3SMauro Carvalho ChehabParam[3]
455*577a7ad3SMauro Carvalho Chehab^^^^^^^^
456*577a7ad3SMauro Carvalho Chehab
457*577a7ad3SMauro Carvalho Chehabhorizontal offset
458*577a7ad3SMauro Carvalho Chehab
459*577a7ad3SMauro Carvalho ChehabParam[4]
460*577a7ad3SMauro Carvalho Chehab^^^^^^^^
461*577a7ad3SMauro Carvalho Chehab
462*577a7ad3SMauro Carvalho Chehabvertical offset
463*577a7ad3SMauro Carvalho Chehab
464*577a7ad3SMauro Carvalho Chehab
465*577a7ad3SMauro Carvalho Chehab
466*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_SCREEN_COORDS
467*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
468*577a7ad3SMauro Carvalho Chehab
469*577a7ad3SMauro Carvalho ChehabEnum: 72/0x48
470*577a7ad3SMauro Carvalho Chehab
471*577a7ad3SMauro Carvalho ChehabDescription
472*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
473*577a7ad3SMauro Carvalho Chehab
474*577a7ad3SMauro Carvalho ChehabRetrieve OSD screen area coordinates
475*577a7ad3SMauro Carvalho Chehab
476*577a7ad3SMauro Carvalho ChehabResult[0]
477*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
478*577a7ad3SMauro Carvalho Chehab
479*577a7ad3SMauro Carvalho Chehabtop left horizontal offset
480*577a7ad3SMauro Carvalho Chehab
481*577a7ad3SMauro Carvalho ChehabResult[1]
482*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
483*577a7ad3SMauro Carvalho Chehab
484*577a7ad3SMauro Carvalho Chehabtop left vertical offset
485*577a7ad3SMauro Carvalho Chehab
486*577a7ad3SMauro Carvalho ChehabResult[2]
487*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
488*577a7ad3SMauro Carvalho Chehab
489*577a7ad3SMauro Carvalho Chehabbottom right horizontal offset
490*577a7ad3SMauro Carvalho Chehab
491*577a7ad3SMauro Carvalho ChehabResult[3]
492*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
493*577a7ad3SMauro Carvalho Chehab
494*577a7ad3SMauro Carvalho Chehabbottom right vertical offset
495*577a7ad3SMauro Carvalho Chehab
496*577a7ad3SMauro Carvalho Chehab
497*577a7ad3SMauro Carvalho Chehab
498*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_SCREEN_COORDS
499*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
500*577a7ad3SMauro Carvalho Chehab
501*577a7ad3SMauro Carvalho ChehabEnum: 73/0x49
502*577a7ad3SMauro Carvalho Chehab
503*577a7ad3SMauro Carvalho ChehabDescription
504*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
505*577a7ad3SMauro Carvalho Chehab
506*577a7ad3SMauro Carvalho ChehabAssign the coordinates of the screen area to blend with video
507*577a7ad3SMauro Carvalho Chehab
508*577a7ad3SMauro Carvalho ChehabParam[0]
509*577a7ad3SMauro Carvalho Chehab^^^^^^^^
510*577a7ad3SMauro Carvalho Chehab
511*577a7ad3SMauro Carvalho Chehabtop left horizontal offset
512*577a7ad3SMauro Carvalho Chehab
513*577a7ad3SMauro Carvalho ChehabParam[1]
514*577a7ad3SMauro Carvalho Chehab^^^^^^^^
515*577a7ad3SMauro Carvalho Chehab
516*577a7ad3SMauro Carvalho Chehabtop left vertical offset
517*577a7ad3SMauro Carvalho Chehab
518*577a7ad3SMauro Carvalho ChehabParam[2]
519*577a7ad3SMauro Carvalho Chehab^^^^^^^^
520*577a7ad3SMauro Carvalho Chehab
521*577a7ad3SMauro Carvalho Chehabbottom left horizontal offset
522*577a7ad3SMauro Carvalho Chehab
523*577a7ad3SMauro Carvalho ChehabParam[3]
524*577a7ad3SMauro Carvalho Chehab^^^^^^^^
525*577a7ad3SMauro Carvalho Chehab
526*577a7ad3SMauro Carvalho Chehabbottom left vertical offset
527*577a7ad3SMauro Carvalho Chehab
528*577a7ad3SMauro Carvalho Chehab
529*577a7ad3SMauro Carvalho Chehab
530*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_GLOBAL_ALPHA
531*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
532*577a7ad3SMauro Carvalho Chehab
533*577a7ad3SMauro Carvalho ChehabEnum: 74/0x4A
534*577a7ad3SMauro Carvalho Chehab
535*577a7ad3SMauro Carvalho ChehabDescription
536*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
537*577a7ad3SMauro Carvalho Chehab
538*577a7ad3SMauro Carvalho ChehabRetrieve OSD global alpha
539*577a7ad3SMauro Carvalho Chehab
540*577a7ad3SMauro Carvalho ChehabResult[0]
541*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
542*577a7ad3SMauro Carvalho Chehab
543*577a7ad3SMauro Carvalho Chehabglobal alpha: 0=off, 1=on
544*577a7ad3SMauro Carvalho Chehab
545*577a7ad3SMauro Carvalho ChehabResult[1]
546*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
547*577a7ad3SMauro Carvalho Chehab
548*577a7ad3SMauro Carvalho Chehabbits 0:7 global alpha
549*577a7ad3SMauro Carvalho Chehab
550*577a7ad3SMauro Carvalho Chehab
551*577a7ad3SMauro Carvalho Chehab
552*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_GLOBAL_ALPHA
553*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
554*577a7ad3SMauro Carvalho Chehab
555*577a7ad3SMauro Carvalho ChehabEnum: 75/0x4B
556*577a7ad3SMauro Carvalho Chehab
557*577a7ad3SMauro Carvalho ChehabDescription
558*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
559*577a7ad3SMauro Carvalho Chehab
560*577a7ad3SMauro Carvalho ChehabUpdate global alpha
561*577a7ad3SMauro Carvalho Chehab
562*577a7ad3SMauro Carvalho ChehabParam[0]
563*577a7ad3SMauro Carvalho Chehab^^^^^^^^
564*577a7ad3SMauro Carvalho Chehab
565*577a7ad3SMauro Carvalho Chehabglobal alpha: 0=off, 1=on
566*577a7ad3SMauro Carvalho Chehab
567*577a7ad3SMauro Carvalho ChehabParam[1]
568*577a7ad3SMauro Carvalho Chehab^^^^^^^^
569*577a7ad3SMauro Carvalho Chehab
570*577a7ad3SMauro Carvalho Chehabglobal alpha (8 bits)
571*577a7ad3SMauro Carvalho Chehab
572*577a7ad3SMauro Carvalho ChehabParam[2]
573*577a7ad3SMauro Carvalho Chehab^^^^^^^^
574*577a7ad3SMauro Carvalho Chehab
575*577a7ad3SMauro Carvalho Chehablocal alpha: 0=on, 1=off
576*577a7ad3SMauro Carvalho Chehab
577*577a7ad3SMauro Carvalho Chehab
578*577a7ad3SMauro Carvalho Chehab
579*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_BLEND_COORDS
580*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
581*577a7ad3SMauro Carvalho Chehab
582*577a7ad3SMauro Carvalho ChehabEnum: 78/0x4C
583*577a7ad3SMauro Carvalho Chehab
584*577a7ad3SMauro Carvalho ChehabDescription
585*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
586*577a7ad3SMauro Carvalho Chehab
587*577a7ad3SMauro Carvalho ChehabMove start of blending area within display buffer
588*577a7ad3SMauro Carvalho Chehab
589*577a7ad3SMauro Carvalho ChehabParam[0]
590*577a7ad3SMauro Carvalho Chehab^^^^^^^^
591*577a7ad3SMauro Carvalho Chehab
592*577a7ad3SMauro Carvalho Chehabhorizontal offset in buffer
593*577a7ad3SMauro Carvalho Chehab
594*577a7ad3SMauro Carvalho ChehabParam[1]
595*577a7ad3SMauro Carvalho Chehab^^^^^^^^
596*577a7ad3SMauro Carvalho Chehab
597*577a7ad3SMauro Carvalho Chehabvertical offset in buffer
598*577a7ad3SMauro Carvalho Chehab
599*577a7ad3SMauro Carvalho Chehab
600*577a7ad3SMauro Carvalho Chehab
601*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_FLICKER_STATE
602*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
603*577a7ad3SMauro Carvalho Chehab
604*577a7ad3SMauro Carvalho ChehabEnum: 79/0x4F
605*577a7ad3SMauro Carvalho Chehab
606*577a7ad3SMauro Carvalho ChehabDescription
607*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
608*577a7ad3SMauro Carvalho Chehab
609*577a7ad3SMauro Carvalho ChehabRetrieve flicker reduction module state
610*577a7ad3SMauro Carvalho Chehab
611*577a7ad3SMauro Carvalho ChehabResult[0]
612*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
613*577a7ad3SMauro Carvalho Chehab
614*577a7ad3SMauro Carvalho Chehabflicker state: 0=off, 1=on
615*577a7ad3SMauro Carvalho Chehab
616*577a7ad3SMauro Carvalho Chehab
617*577a7ad3SMauro Carvalho Chehab
618*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_FLICKER_STATE
619*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
620*577a7ad3SMauro Carvalho Chehab
621*577a7ad3SMauro Carvalho ChehabEnum: 80/0x50
622*577a7ad3SMauro Carvalho Chehab
623*577a7ad3SMauro Carvalho ChehabDescription
624*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
625*577a7ad3SMauro Carvalho Chehab
626*577a7ad3SMauro Carvalho ChehabSet flicker reduction module state
627*577a7ad3SMauro Carvalho Chehab
628*577a7ad3SMauro Carvalho ChehabParam[0]
629*577a7ad3SMauro Carvalho Chehab^^^^^^^^
630*577a7ad3SMauro Carvalho Chehab
631*577a7ad3SMauro Carvalho ChehabState: 0=off, 1=on
632*577a7ad3SMauro Carvalho Chehab
633*577a7ad3SMauro Carvalho Chehab
634*577a7ad3SMauro Carvalho Chehab
635*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_BLT_COPY
636*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
637*577a7ad3SMauro Carvalho Chehab
638*577a7ad3SMauro Carvalho ChehabEnum: 82/0x52
639*577a7ad3SMauro Carvalho Chehab
640*577a7ad3SMauro Carvalho ChehabDescription
641*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
642*577a7ad3SMauro Carvalho Chehab
643*577a7ad3SMauro Carvalho ChehabBLT copy
644*577a7ad3SMauro Carvalho Chehab
645*577a7ad3SMauro Carvalho ChehabParam[0]
646*577a7ad3SMauro Carvalho Chehab^^^^^^^^
647*577a7ad3SMauro Carvalho Chehab
648*577a7ad3SMauro Carvalho Chehab.. code-block:: none
649*577a7ad3SMauro Carvalho Chehab
650*577a7ad3SMauro Carvalho Chehab	'0000'  zero
651*577a7ad3SMauro Carvalho Chehab	'0001' ~destination AND ~source
652*577a7ad3SMauro Carvalho Chehab	'0010' ~destination AND  source
653*577a7ad3SMauro Carvalho Chehab	'0011' ~destination
654*577a7ad3SMauro Carvalho Chehab	'0100'  destination AND ~source
655*577a7ad3SMauro Carvalho Chehab	'0101'                  ~source
656*577a7ad3SMauro Carvalho Chehab	'0110'  destination XOR  source
657*577a7ad3SMauro Carvalho Chehab	'0111' ~destination OR  ~source
658*577a7ad3SMauro Carvalho Chehab	'1000' ~destination AND ~source
659*577a7ad3SMauro Carvalho Chehab	'1001'  destination XNOR source
660*577a7ad3SMauro Carvalho Chehab	'1010'                   source
661*577a7ad3SMauro Carvalho Chehab	'1011' ~destination OR   source
662*577a7ad3SMauro Carvalho Chehab	'1100'  destination
663*577a7ad3SMauro Carvalho Chehab	'1101'  destination OR  ~source
664*577a7ad3SMauro Carvalho Chehab	'1110'  destination OR   source
665*577a7ad3SMauro Carvalho Chehab	'1111'  one
666*577a7ad3SMauro Carvalho Chehab
667*577a7ad3SMauro Carvalho Chehab
668*577a7ad3SMauro Carvalho ChehabParam[1]
669*577a7ad3SMauro Carvalho Chehab^^^^^^^^
670*577a7ad3SMauro Carvalho Chehab
671*577a7ad3SMauro Carvalho ChehabResulting alpha blending
672*577a7ad3SMauro Carvalho Chehab
673*577a7ad3SMauro Carvalho Chehab- '01' source_alpha
674*577a7ad3SMauro Carvalho Chehab- '10' destination_alpha
675*577a7ad3SMauro Carvalho Chehab- '11' source_alpha*destination_alpha+1
676*577a7ad3SMauro Carvalho Chehab  (zero if both source and destination alpha are zero)
677*577a7ad3SMauro Carvalho Chehab
678*577a7ad3SMauro Carvalho ChehabParam[2]
679*577a7ad3SMauro Carvalho Chehab^^^^^^^^
680*577a7ad3SMauro Carvalho Chehab
681*577a7ad3SMauro Carvalho Chehab.. code-block:: none
682*577a7ad3SMauro Carvalho Chehab
683*577a7ad3SMauro Carvalho Chehab	'00' output_pixel = source_pixel
684*577a7ad3SMauro Carvalho Chehab
685*577a7ad3SMauro Carvalho Chehab	'01' if source_alpha=0:
686*577a7ad3SMauro Carvalho Chehab		 output_pixel = destination_pixel
687*577a7ad3SMauro Carvalho Chehab	     if 256 > source_alpha > 1:
688*577a7ad3SMauro Carvalho Chehab		 output_pixel = ((source_alpha + 1)*source_pixel +
689*577a7ad3SMauro Carvalho Chehab				 (255 - source_alpha)*destination_pixel)/256
690*577a7ad3SMauro Carvalho Chehab
691*577a7ad3SMauro Carvalho Chehab	'10' if destination_alpha=0:
692*577a7ad3SMauro Carvalho Chehab		 output_pixel = source_pixel
693*577a7ad3SMauro Carvalho Chehab	      if 255 > destination_alpha > 0:
694*577a7ad3SMauro Carvalho Chehab		 output_pixel = ((255 - destination_alpha)*source_pixel +
695*577a7ad3SMauro Carvalho Chehab				 (destination_alpha + 1)*destination_pixel)/256
696*577a7ad3SMauro Carvalho Chehab
697*577a7ad3SMauro Carvalho Chehab	'11' if source_alpha=0:
698*577a7ad3SMauro Carvalho Chehab		 source_temp = 0
699*577a7ad3SMauro Carvalho Chehab	     if source_alpha=255:
700*577a7ad3SMauro Carvalho Chehab		 source_temp = source_pixel*256
701*577a7ad3SMauro Carvalho Chehab	     if 255 > source_alpha > 0:
702*577a7ad3SMauro Carvalho Chehab		 source_temp = source_pixel*(source_alpha + 1)
703*577a7ad3SMauro Carvalho Chehab	     if destination_alpha=0:
704*577a7ad3SMauro Carvalho Chehab		 destination_temp = 0
705*577a7ad3SMauro Carvalho Chehab	     if destination_alpha=255:
706*577a7ad3SMauro Carvalho Chehab		 destination_temp = destination_pixel*256
707*577a7ad3SMauro Carvalho Chehab	     if 255 > destination_alpha > 0:
708*577a7ad3SMauro Carvalho Chehab		 destination_temp = destination_pixel*(destination_alpha + 1)
709*577a7ad3SMauro Carvalho Chehab	     output_pixel = (source_temp + destination_temp)/256
710*577a7ad3SMauro Carvalho Chehab
711*577a7ad3SMauro Carvalho ChehabParam[3]
712*577a7ad3SMauro Carvalho Chehab^^^^^^^^
713*577a7ad3SMauro Carvalho Chehab
714*577a7ad3SMauro Carvalho Chehabwidth
715*577a7ad3SMauro Carvalho Chehab
716*577a7ad3SMauro Carvalho ChehabParam[4]
717*577a7ad3SMauro Carvalho Chehab^^^^^^^^
718*577a7ad3SMauro Carvalho Chehab
719*577a7ad3SMauro Carvalho Chehabheight
720*577a7ad3SMauro Carvalho Chehab
721*577a7ad3SMauro Carvalho ChehabParam[5]
722*577a7ad3SMauro Carvalho Chehab^^^^^^^^
723*577a7ad3SMauro Carvalho Chehab
724*577a7ad3SMauro Carvalho Chehabdestination pixel mask
725*577a7ad3SMauro Carvalho Chehab
726*577a7ad3SMauro Carvalho ChehabParam[6]
727*577a7ad3SMauro Carvalho Chehab^^^^^^^^
728*577a7ad3SMauro Carvalho Chehab
729*577a7ad3SMauro Carvalho Chehabdestination rectangle start address
730*577a7ad3SMauro Carvalho Chehab
731*577a7ad3SMauro Carvalho ChehabParam[7]
732*577a7ad3SMauro Carvalho Chehab^^^^^^^^
733*577a7ad3SMauro Carvalho Chehab
734*577a7ad3SMauro Carvalho Chehabdestination stride in dwords
735*577a7ad3SMauro Carvalho Chehab
736*577a7ad3SMauro Carvalho ChehabParam[8]
737*577a7ad3SMauro Carvalho Chehab^^^^^^^^
738*577a7ad3SMauro Carvalho Chehab
739*577a7ad3SMauro Carvalho Chehabsource stride in dwords
740*577a7ad3SMauro Carvalho Chehab
741*577a7ad3SMauro Carvalho ChehabParam[9]
742*577a7ad3SMauro Carvalho Chehab^^^^^^^^
743*577a7ad3SMauro Carvalho Chehab
744*577a7ad3SMauro Carvalho Chehabsource rectangle start address
745*577a7ad3SMauro Carvalho Chehab
746*577a7ad3SMauro Carvalho Chehab
747*577a7ad3SMauro Carvalho Chehab
748*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_BLT_FILL
749*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
750*577a7ad3SMauro Carvalho Chehab
751*577a7ad3SMauro Carvalho ChehabEnum: 83/0x53
752*577a7ad3SMauro Carvalho Chehab
753*577a7ad3SMauro Carvalho ChehabDescription
754*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
755*577a7ad3SMauro Carvalho Chehab
756*577a7ad3SMauro Carvalho ChehabBLT fill color
757*577a7ad3SMauro Carvalho Chehab
758*577a7ad3SMauro Carvalho ChehabParam[0]
759*577a7ad3SMauro Carvalho Chehab^^^^^^^^
760*577a7ad3SMauro Carvalho Chehab
761*577a7ad3SMauro Carvalho ChehabSame as Param[0] on API 0x52
762*577a7ad3SMauro Carvalho Chehab
763*577a7ad3SMauro Carvalho ChehabParam[1]
764*577a7ad3SMauro Carvalho Chehab^^^^^^^^
765*577a7ad3SMauro Carvalho Chehab
766*577a7ad3SMauro Carvalho ChehabSame as Param[1] on API 0x52
767*577a7ad3SMauro Carvalho Chehab
768*577a7ad3SMauro Carvalho ChehabParam[2]
769*577a7ad3SMauro Carvalho Chehab^^^^^^^^
770*577a7ad3SMauro Carvalho Chehab
771*577a7ad3SMauro Carvalho ChehabSame as Param[2] on API 0x52
772*577a7ad3SMauro Carvalho Chehab
773*577a7ad3SMauro Carvalho ChehabParam[3]
774*577a7ad3SMauro Carvalho Chehab^^^^^^^^
775*577a7ad3SMauro Carvalho Chehab
776*577a7ad3SMauro Carvalho Chehabwidth
777*577a7ad3SMauro Carvalho Chehab
778*577a7ad3SMauro Carvalho ChehabParam[4]
779*577a7ad3SMauro Carvalho Chehab^^^^^^^^
780*577a7ad3SMauro Carvalho Chehab
781*577a7ad3SMauro Carvalho Chehabheight
782*577a7ad3SMauro Carvalho Chehab
783*577a7ad3SMauro Carvalho ChehabParam[5]
784*577a7ad3SMauro Carvalho Chehab^^^^^^^^
785*577a7ad3SMauro Carvalho Chehab
786*577a7ad3SMauro Carvalho Chehabdestination pixel mask
787*577a7ad3SMauro Carvalho Chehab
788*577a7ad3SMauro Carvalho ChehabParam[6]
789*577a7ad3SMauro Carvalho Chehab^^^^^^^^
790*577a7ad3SMauro Carvalho Chehab
791*577a7ad3SMauro Carvalho Chehabdestination rectangle start address
792*577a7ad3SMauro Carvalho Chehab
793*577a7ad3SMauro Carvalho ChehabParam[7]
794*577a7ad3SMauro Carvalho Chehab^^^^^^^^
795*577a7ad3SMauro Carvalho Chehab
796*577a7ad3SMauro Carvalho Chehabdestination stride in dwords
797*577a7ad3SMauro Carvalho Chehab
798*577a7ad3SMauro Carvalho ChehabParam[8]
799*577a7ad3SMauro Carvalho Chehab^^^^^^^^
800*577a7ad3SMauro Carvalho Chehab
801*577a7ad3SMauro Carvalho Chehabcolor fill value
802*577a7ad3SMauro Carvalho Chehab
803*577a7ad3SMauro Carvalho Chehab
804*577a7ad3SMauro Carvalho Chehab
805*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_BLT_TEXT
806*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
807*577a7ad3SMauro Carvalho Chehab
808*577a7ad3SMauro Carvalho ChehabEnum: 84/0x54
809*577a7ad3SMauro Carvalho Chehab
810*577a7ad3SMauro Carvalho ChehabDescription
811*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
812*577a7ad3SMauro Carvalho Chehab
813*577a7ad3SMauro Carvalho ChehabBLT for 8 bit alpha text source
814*577a7ad3SMauro Carvalho Chehab
815*577a7ad3SMauro Carvalho ChehabParam[0]
816*577a7ad3SMauro Carvalho Chehab^^^^^^^^
817*577a7ad3SMauro Carvalho Chehab
818*577a7ad3SMauro Carvalho ChehabSame as Param[0] on API 0x52
819*577a7ad3SMauro Carvalho Chehab
820*577a7ad3SMauro Carvalho ChehabParam[1]
821*577a7ad3SMauro Carvalho Chehab^^^^^^^^
822*577a7ad3SMauro Carvalho Chehab
823*577a7ad3SMauro Carvalho ChehabSame as Param[1] on API 0x52
824*577a7ad3SMauro Carvalho Chehab
825*577a7ad3SMauro Carvalho ChehabParam[2]
826*577a7ad3SMauro Carvalho Chehab^^^^^^^^
827*577a7ad3SMauro Carvalho Chehab
828*577a7ad3SMauro Carvalho ChehabSame as Param[2] on API 0x52
829*577a7ad3SMauro Carvalho Chehab
830*577a7ad3SMauro Carvalho ChehabParam[3]
831*577a7ad3SMauro Carvalho Chehab^^^^^^^^
832*577a7ad3SMauro Carvalho Chehab
833*577a7ad3SMauro Carvalho Chehabwidth
834*577a7ad3SMauro Carvalho Chehab
835*577a7ad3SMauro Carvalho ChehabParam[4]
836*577a7ad3SMauro Carvalho Chehab^^^^^^^^
837*577a7ad3SMauro Carvalho Chehab
838*577a7ad3SMauro Carvalho Chehabheight
839*577a7ad3SMauro Carvalho Chehab
840*577a7ad3SMauro Carvalho ChehabParam[5]
841*577a7ad3SMauro Carvalho Chehab^^^^^^^^
842*577a7ad3SMauro Carvalho Chehab
843*577a7ad3SMauro Carvalho Chehabdestination pixel mask
844*577a7ad3SMauro Carvalho Chehab
845*577a7ad3SMauro Carvalho ChehabParam[6]
846*577a7ad3SMauro Carvalho Chehab^^^^^^^^
847*577a7ad3SMauro Carvalho Chehab
848*577a7ad3SMauro Carvalho Chehabdestination rectangle start address
849*577a7ad3SMauro Carvalho Chehab
850*577a7ad3SMauro Carvalho ChehabParam[7]
851*577a7ad3SMauro Carvalho Chehab^^^^^^^^
852*577a7ad3SMauro Carvalho Chehab
853*577a7ad3SMauro Carvalho Chehabdestination stride in dwords
854*577a7ad3SMauro Carvalho Chehab
855*577a7ad3SMauro Carvalho ChehabParam[8]
856*577a7ad3SMauro Carvalho Chehab^^^^^^^^
857*577a7ad3SMauro Carvalho Chehab
858*577a7ad3SMauro Carvalho Chehabsource stride in dwords
859*577a7ad3SMauro Carvalho Chehab
860*577a7ad3SMauro Carvalho ChehabParam[9]
861*577a7ad3SMauro Carvalho Chehab^^^^^^^^
862*577a7ad3SMauro Carvalho Chehab
863*577a7ad3SMauro Carvalho Chehabsource rectangle start address
864*577a7ad3SMauro Carvalho Chehab
865*577a7ad3SMauro Carvalho ChehabParam[10]
866*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
867*577a7ad3SMauro Carvalho Chehab
868*577a7ad3SMauro Carvalho Chehabcolor fill value
869*577a7ad3SMauro Carvalho Chehab
870*577a7ad3SMauro Carvalho Chehab
871*577a7ad3SMauro Carvalho Chehab
872*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_FRAMEBUFFER_WINDOW
873*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
874*577a7ad3SMauro Carvalho Chehab
875*577a7ad3SMauro Carvalho ChehabEnum: 86/0x56
876*577a7ad3SMauro Carvalho Chehab
877*577a7ad3SMauro Carvalho ChehabDescription
878*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
879*577a7ad3SMauro Carvalho Chehab
880*577a7ad3SMauro Carvalho ChehabPositions the main output window on the screen. The coordinates must be
881*577a7ad3SMauro Carvalho Chehabsuch that the entire window fits on the screen.
882*577a7ad3SMauro Carvalho Chehab
883*577a7ad3SMauro Carvalho ChehabParam[0]
884*577a7ad3SMauro Carvalho Chehab^^^^^^^^
885*577a7ad3SMauro Carvalho Chehab
886*577a7ad3SMauro Carvalho Chehabwindow width
887*577a7ad3SMauro Carvalho Chehab
888*577a7ad3SMauro Carvalho ChehabParam[1]
889*577a7ad3SMauro Carvalho Chehab^^^^^^^^
890*577a7ad3SMauro Carvalho Chehab
891*577a7ad3SMauro Carvalho Chehabwindow height
892*577a7ad3SMauro Carvalho Chehab
893*577a7ad3SMauro Carvalho ChehabParam[2]
894*577a7ad3SMauro Carvalho Chehab^^^^^^^^
895*577a7ad3SMauro Carvalho Chehab
896*577a7ad3SMauro Carvalho Chehabtop left window corner horizontal offset
897*577a7ad3SMauro Carvalho Chehab
898*577a7ad3SMauro Carvalho ChehabParam[3]
899*577a7ad3SMauro Carvalho Chehab^^^^^^^^
900*577a7ad3SMauro Carvalho Chehab
901*577a7ad3SMauro Carvalho Chehabtop left window corner vertical offset
902*577a7ad3SMauro Carvalho Chehab
903*577a7ad3SMauro Carvalho Chehab
904*577a7ad3SMauro Carvalho Chehab
905*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_CHROMA_KEY
906*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
907*577a7ad3SMauro Carvalho Chehab
908*577a7ad3SMauro Carvalho ChehabEnum: 96/0x60
909*577a7ad3SMauro Carvalho Chehab
910*577a7ad3SMauro Carvalho ChehabDescription
911*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
912*577a7ad3SMauro Carvalho Chehab
913*577a7ad3SMauro Carvalho ChehabChroma key switch and color
914*577a7ad3SMauro Carvalho Chehab
915*577a7ad3SMauro Carvalho ChehabParam[0]
916*577a7ad3SMauro Carvalho Chehab^^^^^^^^
917*577a7ad3SMauro Carvalho Chehab
918*577a7ad3SMauro Carvalho Chehabstate: 0=off, 1=on
919*577a7ad3SMauro Carvalho Chehab
920*577a7ad3SMauro Carvalho ChehabParam[1]
921*577a7ad3SMauro Carvalho Chehab^^^^^^^^
922*577a7ad3SMauro Carvalho Chehab
923*577a7ad3SMauro Carvalho Chehabcolor
924*577a7ad3SMauro Carvalho Chehab
925*577a7ad3SMauro Carvalho Chehab
926*577a7ad3SMauro Carvalho Chehab
927*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_GET_ALPHA_CONTENT_INDEX
928*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
929*577a7ad3SMauro Carvalho Chehab
930*577a7ad3SMauro Carvalho ChehabEnum: 97/0x61
931*577a7ad3SMauro Carvalho Chehab
932*577a7ad3SMauro Carvalho ChehabDescription
933*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
934*577a7ad3SMauro Carvalho Chehab
935*577a7ad3SMauro Carvalho ChehabRetrieve alpha content index
936*577a7ad3SMauro Carvalho Chehab
937*577a7ad3SMauro Carvalho ChehabResult[0]
938*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
939*577a7ad3SMauro Carvalho Chehab
940*577a7ad3SMauro Carvalho Chehabalpha content index, Range 0:15
941*577a7ad3SMauro Carvalho Chehab
942*577a7ad3SMauro Carvalho Chehab
943*577a7ad3SMauro Carvalho Chehab
944*577a7ad3SMauro Carvalho ChehabCX2341X_OSD_SET_ALPHA_CONTENT_INDEX
945*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
946*577a7ad3SMauro Carvalho Chehab
947*577a7ad3SMauro Carvalho ChehabEnum: 98/0x62
948*577a7ad3SMauro Carvalho Chehab
949*577a7ad3SMauro Carvalho ChehabDescription
950*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
951*577a7ad3SMauro Carvalho Chehab
952*577a7ad3SMauro Carvalho ChehabAssign alpha content index
953*577a7ad3SMauro Carvalho Chehab
954*577a7ad3SMauro Carvalho ChehabParam[0]
955*577a7ad3SMauro Carvalho Chehab^^^^^^^^
956*577a7ad3SMauro Carvalho Chehab
957*577a7ad3SMauro Carvalho Chehabalpha content index, range 0:15
958*577a7ad3SMauro Carvalho Chehab
959*577a7ad3SMauro Carvalho Chehab
960*577a7ad3SMauro Carvalho ChehabEncoder firmware API description
961*577a7ad3SMauro Carvalho Chehab--------------------------------
962*577a7ad3SMauro Carvalho Chehab
963*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_PING_FW
964*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~
965*577a7ad3SMauro Carvalho Chehab
966*577a7ad3SMauro Carvalho ChehabEnum: 128/0x80
967*577a7ad3SMauro Carvalho Chehab
968*577a7ad3SMauro Carvalho ChehabDescription
969*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
970*577a7ad3SMauro Carvalho Chehab
971*577a7ad3SMauro Carvalho ChehabDoes nothing. Can be used to check if the firmware is responding.
972*577a7ad3SMauro Carvalho Chehab
973*577a7ad3SMauro Carvalho Chehab
974*577a7ad3SMauro Carvalho Chehab
975*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_START_CAPTURE
976*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
977*577a7ad3SMauro Carvalho Chehab
978*577a7ad3SMauro Carvalho ChehabEnum: 129/0x81
979*577a7ad3SMauro Carvalho Chehab
980*577a7ad3SMauro Carvalho ChehabDescription
981*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
982*577a7ad3SMauro Carvalho Chehab
983*577a7ad3SMauro Carvalho ChehabCommences the capture of video, audio and/or VBI data. All encoding
984*577a7ad3SMauro Carvalho Chehabparameters must be initialized prior to this API call. Captures frames
985*577a7ad3SMauro Carvalho Chehabcontinuously or until a predefined number of frames have been captured.
986*577a7ad3SMauro Carvalho Chehab
987*577a7ad3SMauro Carvalho ChehabParam[0]
988*577a7ad3SMauro Carvalho Chehab^^^^^^^^
989*577a7ad3SMauro Carvalho Chehab
990*577a7ad3SMauro Carvalho ChehabCapture stream type:
991*577a7ad3SMauro Carvalho Chehab
992*577a7ad3SMauro Carvalho Chehab	- 0=MPEG
993*577a7ad3SMauro Carvalho Chehab	- 1=Raw
994*577a7ad3SMauro Carvalho Chehab	- 2=Raw passthrough
995*577a7ad3SMauro Carvalho Chehab	- 3=VBI
996*577a7ad3SMauro Carvalho Chehab
997*577a7ad3SMauro Carvalho Chehab
998*577a7ad3SMauro Carvalho ChehabParam[1]
999*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1000*577a7ad3SMauro Carvalho Chehab
1001*577a7ad3SMauro Carvalho ChehabBitmask:
1002*577a7ad3SMauro Carvalho Chehab
1003*577a7ad3SMauro Carvalho Chehab	- Bit 0 when set, captures YUV
1004*577a7ad3SMauro Carvalho Chehab	- Bit 1 when set, captures PCM audio
1005*577a7ad3SMauro Carvalho Chehab	- Bit 2 when set, captures VBI (same as param[0]=3)
1006*577a7ad3SMauro Carvalho Chehab	- Bit 3 when set, the capture destination is the decoder
1007*577a7ad3SMauro Carvalho Chehab	  (same as param[0]=2)
1008*577a7ad3SMauro Carvalho Chehab	- Bit 4 when set, the capture destination is the host
1009*577a7ad3SMauro Carvalho Chehab
1010*577a7ad3SMauro Carvalho Chehab.. note:: this parameter is only meaningful for RAW capture type.
1011*577a7ad3SMauro Carvalho Chehab
1012*577a7ad3SMauro Carvalho Chehab
1013*577a7ad3SMauro Carvalho Chehab
1014*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_STOP_CAPTURE
1015*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~
1016*577a7ad3SMauro Carvalho Chehab
1017*577a7ad3SMauro Carvalho ChehabEnum: 130/0x82
1018*577a7ad3SMauro Carvalho Chehab
1019*577a7ad3SMauro Carvalho ChehabDescription
1020*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1021*577a7ad3SMauro Carvalho Chehab
1022*577a7ad3SMauro Carvalho ChehabEnds a capture in progress
1023*577a7ad3SMauro Carvalho Chehab
1024*577a7ad3SMauro Carvalho ChehabParam[0]
1025*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1026*577a7ad3SMauro Carvalho Chehab
1027*577a7ad3SMauro Carvalho Chehab- 0=stop at end of GOP (generates IRQ)
1028*577a7ad3SMauro Carvalho Chehab- 1=stop immediate (no IRQ)
1029*577a7ad3SMauro Carvalho Chehab
1030*577a7ad3SMauro Carvalho ChehabParam[1]
1031*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1032*577a7ad3SMauro Carvalho Chehab
1033*577a7ad3SMauro Carvalho ChehabStream type to stop, see param[0] of API 0x81
1034*577a7ad3SMauro Carvalho Chehab
1035*577a7ad3SMauro Carvalho ChehabParam[2]
1036*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1037*577a7ad3SMauro Carvalho Chehab
1038*577a7ad3SMauro Carvalho ChehabSubtype, see param[1] of API 0x81
1039*577a7ad3SMauro Carvalho Chehab
1040*577a7ad3SMauro Carvalho Chehab
1041*577a7ad3SMauro Carvalho Chehab
1042*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_AUDIO_ID
1043*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~
1044*577a7ad3SMauro Carvalho Chehab
1045*577a7ad3SMauro Carvalho ChehabEnum: 137/0x89
1046*577a7ad3SMauro Carvalho Chehab
1047*577a7ad3SMauro Carvalho ChehabDescription
1048*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1049*577a7ad3SMauro Carvalho Chehab
1050*577a7ad3SMauro Carvalho ChehabAssigns the transport stream ID of the encoded audio stream
1051*577a7ad3SMauro Carvalho Chehab
1052*577a7ad3SMauro Carvalho ChehabParam[0]
1053*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1054*577a7ad3SMauro Carvalho Chehab
1055*577a7ad3SMauro Carvalho ChehabAudio Stream ID
1056*577a7ad3SMauro Carvalho Chehab
1057*577a7ad3SMauro Carvalho Chehab
1058*577a7ad3SMauro Carvalho Chehab
1059*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_VIDEO_ID
1060*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~
1061*577a7ad3SMauro Carvalho Chehab
1062*577a7ad3SMauro Carvalho ChehabEnum: 139/0x8B
1063*577a7ad3SMauro Carvalho Chehab
1064*577a7ad3SMauro Carvalho ChehabDescription
1065*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1066*577a7ad3SMauro Carvalho Chehab
1067*577a7ad3SMauro Carvalho ChehabSet video transport stream ID
1068*577a7ad3SMauro Carvalho Chehab
1069*577a7ad3SMauro Carvalho ChehabParam[0]
1070*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1071*577a7ad3SMauro Carvalho Chehab
1072*577a7ad3SMauro Carvalho ChehabVideo stream ID
1073*577a7ad3SMauro Carvalho Chehab
1074*577a7ad3SMauro Carvalho Chehab
1075*577a7ad3SMauro Carvalho Chehab
1076*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_PCR_ID
1077*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~
1078*577a7ad3SMauro Carvalho Chehab
1079*577a7ad3SMauro Carvalho ChehabEnum: 141/0x8D
1080*577a7ad3SMauro Carvalho Chehab
1081*577a7ad3SMauro Carvalho ChehabDescription
1082*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1083*577a7ad3SMauro Carvalho Chehab
1084*577a7ad3SMauro Carvalho ChehabAssigns the transport stream ID for PCR packets
1085*577a7ad3SMauro Carvalho Chehab
1086*577a7ad3SMauro Carvalho ChehabParam[0]
1087*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1088*577a7ad3SMauro Carvalho Chehab
1089*577a7ad3SMauro Carvalho ChehabPCR Stream ID
1090*577a7ad3SMauro Carvalho Chehab
1091*577a7ad3SMauro Carvalho Chehab
1092*577a7ad3SMauro Carvalho Chehab
1093*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_FRAME_RATE
1094*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
1095*577a7ad3SMauro Carvalho Chehab
1096*577a7ad3SMauro Carvalho ChehabEnum: 143/0x8F
1097*577a7ad3SMauro Carvalho Chehab
1098*577a7ad3SMauro Carvalho ChehabDescription
1099*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1100*577a7ad3SMauro Carvalho Chehab
1101*577a7ad3SMauro Carvalho ChehabSet video frames per second. Change occurs at start of new GOP.
1102*577a7ad3SMauro Carvalho Chehab
1103*577a7ad3SMauro Carvalho ChehabParam[0]
1104*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1105*577a7ad3SMauro Carvalho Chehab
1106*577a7ad3SMauro Carvalho Chehab- 0=30fps
1107*577a7ad3SMauro Carvalho Chehab- 1=25fps
1108*577a7ad3SMauro Carvalho Chehab
1109*577a7ad3SMauro Carvalho Chehab
1110*577a7ad3SMauro Carvalho Chehab
1111*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_FRAME_SIZE
1112*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
1113*577a7ad3SMauro Carvalho Chehab
1114*577a7ad3SMauro Carvalho ChehabEnum: 145/0x91
1115*577a7ad3SMauro Carvalho Chehab
1116*577a7ad3SMauro Carvalho ChehabDescription
1117*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1118*577a7ad3SMauro Carvalho Chehab
1119*577a7ad3SMauro Carvalho ChehabSelect video stream encoding resolution.
1120*577a7ad3SMauro Carvalho Chehab
1121*577a7ad3SMauro Carvalho ChehabParam[0]
1122*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1123*577a7ad3SMauro Carvalho Chehab
1124*577a7ad3SMauro Carvalho ChehabHeight in lines. Default 480
1125*577a7ad3SMauro Carvalho Chehab
1126*577a7ad3SMauro Carvalho ChehabParam[1]
1127*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1128*577a7ad3SMauro Carvalho Chehab
1129*577a7ad3SMauro Carvalho ChehabWidth in pixels. Default 720
1130*577a7ad3SMauro Carvalho Chehab
1131*577a7ad3SMauro Carvalho Chehab
1132*577a7ad3SMauro Carvalho Chehab
1133*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_BIT_RATE
1134*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~
1135*577a7ad3SMauro Carvalho Chehab
1136*577a7ad3SMauro Carvalho ChehabEnum: 149/0x95
1137*577a7ad3SMauro Carvalho Chehab
1138*577a7ad3SMauro Carvalho ChehabDescription
1139*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1140*577a7ad3SMauro Carvalho Chehab
1141*577a7ad3SMauro Carvalho ChehabAssign average video stream bitrate.
1142*577a7ad3SMauro Carvalho Chehab
1143*577a7ad3SMauro Carvalho ChehabParam[0]
1144*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1145*577a7ad3SMauro Carvalho Chehab
1146*577a7ad3SMauro Carvalho Chehab0=variable bitrate, 1=constant bitrate
1147*577a7ad3SMauro Carvalho Chehab
1148*577a7ad3SMauro Carvalho ChehabParam[1]
1149*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1150*577a7ad3SMauro Carvalho Chehab
1151*577a7ad3SMauro Carvalho Chehabbitrate in bits per second
1152*577a7ad3SMauro Carvalho Chehab
1153*577a7ad3SMauro Carvalho ChehabParam[2]
1154*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1155*577a7ad3SMauro Carvalho Chehab
1156*577a7ad3SMauro Carvalho Chehabpeak bitrate in bits per second, divided by 400
1157*577a7ad3SMauro Carvalho Chehab
1158*577a7ad3SMauro Carvalho ChehabParam[3]
1159*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1160*577a7ad3SMauro Carvalho Chehab
1161*577a7ad3SMauro Carvalho ChehabMux bitrate in bits per second, divided by 400. May be 0 (default).
1162*577a7ad3SMauro Carvalho Chehab
1163*577a7ad3SMauro Carvalho ChehabParam[4]
1164*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1165*577a7ad3SMauro Carvalho Chehab
1166*577a7ad3SMauro Carvalho ChehabRate Control VBR Padding
1167*577a7ad3SMauro Carvalho Chehab
1168*577a7ad3SMauro Carvalho ChehabParam[5]
1169*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1170*577a7ad3SMauro Carvalho Chehab
1171*577a7ad3SMauro Carvalho ChehabVBV Buffer used by encoder
1172*577a7ad3SMauro Carvalho Chehab
1173*577a7ad3SMauro Carvalho Chehab.. note::
1174*577a7ad3SMauro Carvalho Chehab
1175*577a7ad3SMauro Carvalho Chehab	#) Param\[3\] and Param\[4\] seem to be always 0
1176*577a7ad3SMauro Carvalho Chehab	#) Param\[5\] doesn't seem to be used.
1177*577a7ad3SMauro Carvalho Chehab
1178*577a7ad3SMauro Carvalho Chehab
1179*577a7ad3SMauro Carvalho Chehab
1180*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_GOP_PROPERTIES
1181*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1182*577a7ad3SMauro Carvalho Chehab
1183*577a7ad3SMauro Carvalho ChehabEnum: 151/0x97
1184*577a7ad3SMauro Carvalho Chehab
1185*577a7ad3SMauro Carvalho ChehabDescription
1186*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1187*577a7ad3SMauro Carvalho Chehab
1188*577a7ad3SMauro Carvalho ChehabSetup the GOP structure
1189*577a7ad3SMauro Carvalho Chehab
1190*577a7ad3SMauro Carvalho ChehabParam[0]
1191*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1192*577a7ad3SMauro Carvalho Chehab
1193*577a7ad3SMauro Carvalho ChehabGOP size (maximum is 34)
1194*577a7ad3SMauro Carvalho Chehab
1195*577a7ad3SMauro Carvalho ChehabParam[1]
1196*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1197*577a7ad3SMauro Carvalho Chehab
1198*577a7ad3SMauro Carvalho ChehabNumber of B frames between the I and P frame, plus 1.
1199*577a7ad3SMauro Carvalho ChehabFor example: IBBPBBPBBPBB --> GOP size: 12, number of B frames: 2+1 = 3
1200*577a7ad3SMauro Carvalho Chehab
1201*577a7ad3SMauro Carvalho Chehab.. note::
1202*577a7ad3SMauro Carvalho Chehab
1203*577a7ad3SMauro Carvalho Chehab	GOP size must be a multiple of (B-frames + 1).
1204*577a7ad3SMauro Carvalho Chehab
1205*577a7ad3SMauro Carvalho Chehab
1206*577a7ad3SMauro Carvalho Chehab
1207*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_ASPECT_RATIO
1208*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1209*577a7ad3SMauro Carvalho Chehab
1210*577a7ad3SMauro Carvalho ChehabEnum: 153/0x99
1211*577a7ad3SMauro Carvalho Chehab
1212*577a7ad3SMauro Carvalho ChehabDescription
1213*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1214*577a7ad3SMauro Carvalho Chehab
1215*577a7ad3SMauro Carvalho ChehabSets the encoding aspect ratio. Changes in the aspect ratio take effect
1216*577a7ad3SMauro Carvalho Chehabat the start of the next GOP.
1217*577a7ad3SMauro Carvalho Chehab
1218*577a7ad3SMauro Carvalho ChehabParam[0]
1219*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1220*577a7ad3SMauro Carvalho Chehab
1221*577a7ad3SMauro Carvalho Chehab- '0000' forbidden
1222*577a7ad3SMauro Carvalho Chehab- '0001' 1:1 square
1223*577a7ad3SMauro Carvalho Chehab- '0010' 4:3
1224*577a7ad3SMauro Carvalho Chehab- '0011' 16:9
1225*577a7ad3SMauro Carvalho Chehab- '0100' 2.21:1
1226*577a7ad3SMauro Carvalho Chehab- '0101' to '1111' reserved
1227*577a7ad3SMauro Carvalho Chehab
1228*577a7ad3SMauro Carvalho Chehab
1229*577a7ad3SMauro Carvalho Chehab
1230*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_DNR_FILTER_MODE
1231*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1232*577a7ad3SMauro Carvalho Chehab
1233*577a7ad3SMauro Carvalho ChehabEnum: 155/0x9B
1234*577a7ad3SMauro Carvalho Chehab
1235*577a7ad3SMauro Carvalho ChehabDescription
1236*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1237*577a7ad3SMauro Carvalho Chehab
1238*577a7ad3SMauro Carvalho ChehabAssign Dynamic Noise Reduction operating mode
1239*577a7ad3SMauro Carvalho Chehab
1240*577a7ad3SMauro Carvalho ChehabParam[0]
1241*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1242*577a7ad3SMauro Carvalho Chehab
1243*577a7ad3SMauro Carvalho ChehabBit0: Spatial filter, set=auto, clear=manual
1244*577a7ad3SMauro Carvalho ChehabBit1: Temporal filter, set=auto, clear=manual
1245*577a7ad3SMauro Carvalho Chehab
1246*577a7ad3SMauro Carvalho ChehabParam[1]
1247*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1248*577a7ad3SMauro Carvalho Chehab
1249*577a7ad3SMauro Carvalho ChehabMedian filter:
1250*577a7ad3SMauro Carvalho Chehab
1251*577a7ad3SMauro Carvalho Chehab- 0=Disabled
1252*577a7ad3SMauro Carvalho Chehab- 1=Horizontal
1253*577a7ad3SMauro Carvalho Chehab- 2=Vertical
1254*577a7ad3SMauro Carvalho Chehab- 3=Horiz/Vert
1255*577a7ad3SMauro Carvalho Chehab- 4=Diagonal
1256*577a7ad3SMauro Carvalho Chehab
1257*577a7ad3SMauro Carvalho Chehab
1258*577a7ad3SMauro Carvalho Chehab
1259*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_DNR_FILTER_PROPS
1260*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1261*577a7ad3SMauro Carvalho Chehab
1262*577a7ad3SMauro Carvalho ChehabEnum: 157/0x9D
1263*577a7ad3SMauro Carvalho Chehab
1264*577a7ad3SMauro Carvalho ChehabDescription
1265*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1266*577a7ad3SMauro Carvalho Chehab
1267*577a7ad3SMauro Carvalho ChehabThese Dynamic Noise Reduction filter values are only meaningful when
1268*577a7ad3SMauro Carvalho Chehabthe respective filter is set to "manual" (See API 0x9B)
1269*577a7ad3SMauro Carvalho Chehab
1270*577a7ad3SMauro Carvalho ChehabParam[0]
1271*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1272*577a7ad3SMauro Carvalho Chehab
1273*577a7ad3SMauro Carvalho ChehabSpatial filter: default 0, range 0:15
1274*577a7ad3SMauro Carvalho Chehab
1275*577a7ad3SMauro Carvalho ChehabParam[1]
1276*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1277*577a7ad3SMauro Carvalho Chehab
1278*577a7ad3SMauro Carvalho ChehabTemporal filter: default 0, range 0:31
1279*577a7ad3SMauro Carvalho Chehab
1280*577a7ad3SMauro Carvalho Chehab
1281*577a7ad3SMauro Carvalho Chehab
1282*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_CORING_LEVELS
1283*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1284*577a7ad3SMauro Carvalho Chehab
1285*577a7ad3SMauro Carvalho ChehabEnum: 159/0x9F
1286*577a7ad3SMauro Carvalho Chehab
1287*577a7ad3SMauro Carvalho ChehabDescription
1288*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1289*577a7ad3SMauro Carvalho Chehab
1290*577a7ad3SMauro Carvalho ChehabAssign Dynamic Noise Reduction median filter properties.
1291*577a7ad3SMauro Carvalho Chehab
1292*577a7ad3SMauro Carvalho ChehabParam[0]
1293*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1294*577a7ad3SMauro Carvalho Chehab
1295*577a7ad3SMauro Carvalho ChehabThreshold above which the luminance median filter is enabled.
1296*577a7ad3SMauro Carvalho ChehabDefault: 0, range 0:255
1297*577a7ad3SMauro Carvalho Chehab
1298*577a7ad3SMauro Carvalho ChehabParam[1]
1299*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1300*577a7ad3SMauro Carvalho Chehab
1301*577a7ad3SMauro Carvalho ChehabThreshold below which the luminance median filter is enabled.
1302*577a7ad3SMauro Carvalho ChehabDefault: 255, range 0:255
1303*577a7ad3SMauro Carvalho Chehab
1304*577a7ad3SMauro Carvalho ChehabParam[2]
1305*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1306*577a7ad3SMauro Carvalho Chehab
1307*577a7ad3SMauro Carvalho ChehabThreshold above which the chrominance median filter is enabled.
1308*577a7ad3SMauro Carvalho ChehabDefault: 0, range 0:255
1309*577a7ad3SMauro Carvalho Chehab
1310*577a7ad3SMauro Carvalho ChehabParam[3]
1311*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1312*577a7ad3SMauro Carvalho Chehab
1313*577a7ad3SMauro Carvalho ChehabThreshold below which the chrominance median filter is enabled.
1314*577a7ad3SMauro Carvalho ChehabDefault: 255, range 0:255
1315*577a7ad3SMauro Carvalho Chehab
1316*577a7ad3SMauro Carvalho Chehab
1317*577a7ad3SMauro Carvalho Chehab
1318*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_SPATIAL_FILTER_TYPE
1319*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1320*577a7ad3SMauro Carvalho Chehab
1321*577a7ad3SMauro Carvalho ChehabEnum: 161/0xA1
1322*577a7ad3SMauro Carvalho Chehab
1323*577a7ad3SMauro Carvalho ChehabDescription
1324*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1325*577a7ad3SMauro Carvalho Chehab
1326*577a7ad3SMauro Carvalho ChehabAssign spatial prefilter parameters
1327*577a7ad3SMauro Carvalho Chehab
1328*577a7ad3SMauro Carvalho ChehabParam[0]
1329*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1330*577a7ad3SMauro Carvalho Chehab
1331*577a7ad3SMauro Carvalho ChehabLuminance filter
1332*577a7ad3SMauro Carvalho Chehab
1333*577a7ad3SMauro Carvalho Chehab- 0=Off
1334*577a7ad3SMauro Carvalho Chehab- 1=1D Horizontal
1335*577a7ad3SMauro Carvalho Chehab- 2=1D Vertical
1336*577a7ad3SMauro Carvalho Chehab- 3=2D H/V Separable (default)
1337*577a7ad3SMauro Carvalho Chehab- 4=2D Symmetric non-separable
1338*577a7ad3SMauro Carvalho Chehab
1339*577a7ad3SMauro Carvalho ChehabParam[1]
1340*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1341*577a7ad3SMauro Carvalho Chehab
1342*577a7ad3SMauro Carvalho ChehabChrominance filter
1343*577a7ad3SMauro Carvalho Chehab
1344*577a7ad3SMauro Carvalho Chehab- 0=Off
1345*577a7ad3SMauro Carvalho Chehab- 1=1D Horizontal (default)
1346*577a7ad3SMauro Carvalho Chehab
1347*577a7ad3SMauro Carvalho Chehab
1348*577a7ad3SMauro Carvalho Chehab
1349*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_VBI_LINE
1350*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~
1351*577a7ad3SMauro Carvalho Chehab
1352*577a7ad3SMauro Carvalho ChehabEnum: 183/0xB7
1353*577a7ad3SMauro Carvalho Chehab
1354*577a7ad3SMauro Carvalho ChehabDescription
1355*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1356*577a7ad3SMauro Carvalho Chehab
1357*577a7ad3SMauro Carvalho ChehabSelects VBI line number.
1358*577a7ad3SMauro Carvalho Chehab
1359*577a7ad3SMauro Carvalho ChehabParam[0]
1360*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1361*577a7ad3SMauro Carvalho Chehab
1362*577a7ad3SMauro Carvalho Chehab- Bits 0:4 	line number
1363*577a7ad3SMauro Carvalho Chehab- Bit  31		0=top_field, 1=bottom_field
1364*577a7ad3SMauro Carvalho Chehab- Bits 0:31 	all set specifies "all lines"
1365*577a7ad3SMauro Carvalho Chehab
1366*577a7ad3SMauro Carvalho ChehabParam[1]
1367*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1368*577a7ad3SMauro Carvalho Chehab
1369*577a7ad3SMauro Carvalho ChehabVBI line information features: 0=disabled, 1=enabled
1370*577a7ad3SMauro Carvalho Chehab
1371*577a7ad3SMauro Carvalho ChehabParam[2]
1372*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1373*577a7ad3SMauro Carvalho Chehab
1374*577a7ad3SMauro Carvalho ChehabSlicing: 0=None, 1=Closed Caption
1375*577a7ad3SMauro Carvalho ChehabAlmost certainly not implemented. Set to 0.
1376*577a7ad3SMauro Carvalho Chehab
1377*577a7ad3SMauro Carvalho ChehabParam[3]
1378*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1379*577a7ad3SMauro Carvalho Chehab
1380*577a7ad3SMauro Carvalho ChehabLuminance samples in this line.
1381*577a7ad3SMauro Carvalho ChehabAlmost certainly not implemented. Set to 0.
1382*577a7ad3SMauro Carvalho Chehab
1383*577a7ad3SMauro Carvalho ChehabParam[4]
1384*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1385*577a7ad3SMauro Carvalho Chehab
1386*577a7ad3SMauro Carvalho ChehabChrominance samples in this line
1387*577a7ad3SMauro Carvalho ChehabAlmost certainly not implemented. Set to 0.
1388*577a7ad3SMauro Carvalho Chehab
1389*577a7ad3SMauro Carvalho Chehab
1390*577a7ad3SMauro Carvalho Chehab
1391*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_STREAM_TYPE
1392*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
1393*577a7ad3SMauro Carvalho Chehab
1394*577a7ad3SMauro Carvalho ChehabEnum: 185/0xB9
1395*577a7ad3SMauro Carvalho Chehab
1396*577a7ad3SMauro Carvalho ChehabDescription
1397*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1398*577a7ad3SMauro Carvalho Chehab
1399*577a7ad3SMauro Carvalho ChehabAssign stream type
1400*577a7ad3SMauro Carvalho Chehab
1401*577a7ad3SMauro Carvalho Chehab.. note::
1402*577a7ad3SMauro Carvalho Chehab
1403*577a7ad3SMauro Carvalho Chehab	Transport stream is not working in recent firmwares.
1404*577a7ad3SMauro Carvalho Chehab	And in older firmwares the timestamps in the TS seem to be
1405*577a7ad3SMauro Carvalho Chehab	unreliable.
1406*577a7ad3SMauro Carvalho Chehab
1407*577a7ad3SMauro Carvalho ChehabParam[0]
1408*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1409*577a7ad3SMauro Carvalho Chehab
1410*577a7ad3SMauro Carvalho Chehab- 0=Program stream
1411*577a7ad3SMauro Carvalho Chehab- 1=Transport stream
1412*577a7ad3SMauro Carvalho Chehab- 2=MPEG1 stream
1413*577a7ad3SMauro Carvalho Chehab- 3=PES A/V stream
1414*577a7ad3SMauro Carvalho Chehab- 5=PES Video stream
1415*577a7ad3SMauro Carvalho Chehab- 7=PES Audio stream
1416*577a7ad3SMauro Carvalho Chehab- 10=DVD stream
1417*577a7ad3SMauro Carvalho Chehab- 11=VCD stream
1418*577a7ad3SMauro Carvalho Chehab- 12=SVCD stream
1419*577a7ad3SMauro Carvalho Chehab- 13=DVD_S1 stream
1420*577a7ad3SMauro Carvalho Chehab- 14=DVD_S2 stream
1421*577a7ad3SMauro Carvalho Chehab
1422*577a7ad3SMauro Carvalho Chehab
1423*577a7ad3SMauro Carvalho Chehab
1424*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_OUTPUT_PORT
1425*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
1426*577a7ad3SMauro Carvalho Chehab
1427*577a7ad3SMauro Carvalho ChehabEnum: 187/0xBB
1428*577a7ad3SMauro Carvalho Chehab
1429*577a7ad3SMauro Carvalho ChehabDescription
1430*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1431*577a7ad3SMauro Carvalho Chehab
1432*577a7ad3SMauro Carvalho ChehabAssign stream output port. Normally 0 when the data is copied through
1433*577a7ad3SMauro Carvalho Chehabthe PCI bus (DMA), and 1 when the data is streamed to another chip
1434*577a7ad3SMauro Carvalho Chehab(pvrusb and cx88-blackbird).
1435*577a7ad3SMauro Carvalho Chehab
1436*577a7ad3SMauro Carvalho ChehabParam[0]
1437*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1438*577a7ad3SMauro Carvalho Chehab
1439*577a7ad3SMauro Carvalho Chehab- 0=Memory (default)
1440*577a7ad3SMauro Carvalho Chehab- 1=Streaming
1441*577a7ad3SMauro Carvalho Chehab- 2=Serial
1442*577a7ad3SMauro Carvalho Chehab
1443*577a7ad3SMauro Carvalho ChehabParam[1]
1444*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1445*577a7ad3SMauro Carvalho Chehab
1446*577a7ad3SMauro Carvalho ChehabUnknown, but leaving this to 0 seems to work best. Indications are that
1447*577a7ad3SMauro Carvalho Chehabthis might have to do with USB support, although passing anything but 0
1448*577a7ad3SMauro Carvalho Chehabonly breaks things.
1449*577a7ad3SMauro Carvalho Chehab
1450*577a7ad3SMauro Carvalho Chehab
1451*577a7ad3SMauro Carvalho Chehab
1452*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_AUDIO_PROPERTIES
1453*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1454*577a7ad3SMauro Carvalho Chehab
1455*577a7ad3SMauro Carvalho ChehabEnum: 189/0xBD
1456*577a7ad3SMauro Carvalho Chehab
1457*577a7ad3SMauro Carvalho ChehabDescription
1458*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1459*577a7ad3SMauro Carvalho Chehab
1460*577a7ad3SMauro Carvalho ChehabSet audio stream properties, may be called while encoding is in progress.
1461*577a7ad3SMauro Carvalho Chehab
1462*577a7ad3SMauro Carvalho Chehab.. note::
1463*577a7ad3SMauro Carvalho Chehab
1464*577a7ad3SMauro Carvalho Chehab	All bitfields are consistent with ISO11172 documentation except
1465*577a7ad3SMauro Carvalho Chehab	bits 2:3 which ISO docs define as:
1466*577a7ad3SMauro Carvalho Chehab
1467*577a7ad3SMauro Carvalho Chehab	- '11' Layer I
1468*577a7ad3SMauro Carvalho Chehab	- '10' Layer II
1469*577a7ad3SMauro Carvalho Chehab	- '01' Layer III
1470*577a7ad3SMauro Carvalho Chehab	- '00' Undefined
1471*577a7ad3SMauro Carvalho Chehab
1472*577a7ad3SMauro Carvalho Chehab	This discrepancy may indicate a possible error in the documentation.
1473*577a7ad3SMauro Carvalho Chehab	Testing indicated that only Layer II is actually working, and that
1474*577a7ad3SMauro Carvalho Chehab	the minimum bitrate should be 192 kbps.
1475*577a7ad3SMauro Carvalho Chehab
1476*577a7ad3SMauro Carvalho ChehabParam[0]
1477*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1478*577a7ad3SMauro Carvalho Chehab
1479*577a7ad3SMauro Carvalho ChehabBitmask:
1480*577a7ad3SMauro Carvalho Chehab
1481*577a7ad3SMauro Carvalho Chehab.. code-block:: none
1482*577a7ad3SMauro Carvalho Chehab
1483*577a7ad3SMauro Carvalho Chehab	   0:1  '00' 44.1Khz
1484*577a7ad3SMauro Carvalho Chehab		'01' 48Khz
1485*577a7ad3SMauro Carvalho Chehab		'10' 32Khz
1486*577a7ad3SMauro Carvalho Chehab		'11' reserved
1487*577a7ad3SMauro Carvalho Chehab
1488*577a7ad3SMauro Carvalho Chehab	   2:3  '01'=Layer I
1489*577a7ad3SMauro Carvalho Chehab		'10'=Layer II
1490*577a7ad3SMauro Carvalho Chehab
1491*577a7ad3SMauro Carvalho Chehab	   4:7  Bitrate:
1492*577a7ad3SMauro Carvalho Chehab		     Index | Layer I     | Layer II
1493*577a7ad3SMauro Carvalho Chehab		     ------+-------------+------------
1494*577a7ad3SMauro Carvalho Chehab		    '0000' | free format | free format
1495*577a7ad3SMauro Carvalho Chehab		    '0001' |  32 kbit/s  |  32 kbit/s
1496*577a7ad3SMauro Carvalho Chehab		    '0010' |  64 kbit/s  |  48 kbit/s
1497*577a7ad3SMauro Carvalho Chehab		    '0011' |  96 kbit/s  |  56 kbit/s
1498*577a7ad3SMauro Carvalho Chehab		    '0100' | 128 kbit/s  |  64 kbit/s
1499*577a7ad3SMauro Carvalho Chehab		    '0101' | 160 kbit/s  |  80 kbit/s
1500*577a7ad3SMauro Carvalho Chehab		    '0110' | 192 kbit/s  |  96 kbit/s
1501*577a7ad3SMauro Carvalho Chehab		    '0111' | 224 kbit/s  | 112 kbit/s
1502*577a7ad3SMauro Carvalho Chehab		    '1000' | 256 kbit/s  | 128 kbit/s
1503*577a7ad3SMauro Carvalho Chehab		    '1001' | 288 kbit/s  | 160 kbit/s
1504*577a7ad3SMauro Carvalho Chehab		    '1010' | 320 kbit/s  | 192 kbit/s
1505*577a7ad3SMauro Carvalho Chehab		    '1011' | 352 kbit/s  | 224 kbit/s
1506*577a7ad3SMauro Carvalho Chehab		    '1100' | 384 kbit/s  | 256 kbit/s
1507*577a7ad3SMauro Carvalho Chehab		    '1101' | 416 kbit/s  | 320 kbit/s
1508*577a7ad3SMauro Carvalho Chehab		    '1110' | 448 kbit/s  | 384 kbit/s
1509*577a7ad3SMauro Carvalho Chehab
1510*577a7ad3SMauro Carvalho Chehab		.. note::
1511*577a7ad3SMauro Carvalho Chehab
1512*577a7ad3SMauro Carvalho Chehab			For Layer II, not all combinations of total bitrate
1513*577a7ad3SMauro Carvalho Chehab			and mode are allowed. See ISO11172-3 3-Annex B,
1514*577a7ad3SMauro Carvalho Chehab			Table 3-B.2
1515*577a7ad3SMauro Carvalho Chehab
1516*577a7ad3SMauro Carvalho Chehab	   8:9  '00'=Stereo
1517*577a7ad3SMauro Carvalho Chehab		'01'=JointStereo
1518*577a7ad3SMauro Carvalho Chehab		'10'=Dual
1519*577a7ad3SMauro Carvalho Chehab		'11'=Mono
1520*577a7ad3SMauro Carvalho Chehab
1521*577a7ad3SMauro Carvalho Chehab		.. note::
1522*577a7ad3SMauro Carvalho Chehab
1523*577a7ad3SMauro Carvalho Chehab			The cx23415 cannot decode Joint Stereo properly.
1524*577a7ad3SMauro Carvalho Chehab
1525*577a7ad3SMauro Carvalho Chehab	  10:11 Mode Extension used in joint_stereo mode.
1526*577a7ad3SMauro Carvalho Chehab		In Layer I and II they indicate which subbands are in
1527*577a7ad3SMauro Carvalho Chehab		intensity_stereo. All other subbands are coded in stereo.
1528*577a7ad3SMauro Carvalho Chehab		    '00' subbands 4-31 in intensity_stereo, bound==4
1529*577a7ad3SMauro Carvalho Chehab		    '01' subbands 8-31 in intensity_stereo, bound==8
1530*577a7ad3SMauro Carvalho Chehab		    '10' subbands 12-31 in intensity_stereo, bound==12
1531*577a7ad3SMauro Carvalho Chehab		    '11' subbands 16-31 in intensity_stereo, bound==16
1532*577a7ad3SMauro Carvalho Chehab
1533*577a7ad3SMauro Carvalho Chehab	  12:13 Emphasis:
1534*577a7ad3SMauro Carvalho Chehab		    '00' None
1535*577a7ad3SMauro Carvalho Chehab		    '01' 50/15uS
1536*577a7ad3SMauro Carvalho Chehab		    '10' reserved
1537*577a7ad3SMauro Carvalho Chehab		    '11' CCITT J.17
1538*577a7ad3SMauro Carvalho Chehab
1539*577a7ad3SMauro Carvalho Chehab	  14 	CRC:
1540*577a7ad3SMauro Carvalho Chehab		    '0' off
1541*577a7ad3SMauro Carvalho Chehab		    '1' on
1542*577a7ad3SMauro Carvalho Chehab
1543*577a7ad3SMauro Carvalho Chehab	  15    Copyright:
1544*577a7ad3SMauro Carvalho Chehab		    '0' off
1545*577a7ad3SMauro Carvalho Chehab		    '1' on
1546*577a7ad3SMauro Carvalho Chehab
1547*577a7ad3SMauro Carvalho Chehab	  16    Generation:
1548*577a7ad3SMauro Carvalho Chehab		    '0' copy
1549*577a7ad3SMauro Carvalho Chehab		    '1' original
1550*577a7ad3SMauro Carvalho Chehab
1551*577a7ad3SMauro Carvalho Chehab
1552*577a7ad3SMauro Carvalho Chehab
1553*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_HALT_FW
1554*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~
1555*577a7ad3SMauro Carvalho Chehab
1556*577a7ad3SMauro Carvalho ChehabEnum: 195/0xC3
1557*577a7ad3SMauro Carvalho Chehab
1558*577a7ad3SMauro Carvalho ChehabDescription
1559*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1560*577a7ad3SMauro Carvalho Chehab
1561*577a7ad3SMauro Carvalho ChehabThe firmware is halted and no further API calls are serviced until the
1562*577a7ad3SMauro Carvalho Chehabfirmware is uploaded again.
1563*577a7ad3SMauro Carvalho Chehab
1564*577a7ad3SMauro Carvalho Chehab
1565*577a7ad3SMauro Carvalho Chehab
1566*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_GET_VERSION
1567*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~
1568*577a7ad3SMauro Carvalho Chehab
1569*577a7ad3SMauro Carvalho ChehabEnum: 196/0xC4
1570*577a7ad3SMauro Carvalho Chehab
1571*577a7ad3SMauro Carvalho ChehabDescription
1572*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1573*577a7ad3SMauro Carvalho Chehab
1574*577a7ad3SMauro Carvalho ChehabReturns the version of the encoder firmware.
1575*577a7ad3SMauro Carvalho Chehab
1576*577a7ad3SMauro Carvalho ChehabResult[0]
1577*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1578*577a7ad3SMauro Carvalho Chehab
1579*577a7ad3SMauro Carvalho ChehabVersion bitmask:
1580*577a7ad3SMauro Carvalho Chehab- Bits  0:15 build
1581*577a7ad3SMauro Carvalho Chehab- Bits 16:23 minor
1582*577a7ad3SMauro Carvalho Chehab- Bits 24:31 major
1583*577a7ad3SMauro Carvalho Chehab
1584*577a7ad3SMauro Carvalho Chehab
1585*577a7ad3SMauro Carvalho Chehab
1586*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_GOP_CLOSURE
1587*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
1588*577a7ad3SMauro Carvalho Chehab
1589*577a7ad3SMauro Carvalho ChehabEnum: 197/0xC5
1590*577a7ad3SMauro Carvalho Chehab
1591*577a7ad3SMauro Carvalho ChehabDescription
1592*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1593*577a7ad3SMauro Carvalho Chehab
1594*577a7ad3SMauro Carvalho ChehabAssigns the GOP open/close property.
1595*577a7ad3SMauro Carvalho Chehab
1596*577a7ad3SMauro Carvalho ChehabParam[0]
1597*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1598*577a7ad3SMauro Carvalho Chehab
1599*577a7ad3SMauro Carvalho Chehab- 0=Open
1600*577a7ad3SMauro Carvalho Chehab- 1=Closed
1601*577a7ad3SMauro Carvalho Chehab
1602*577a7ad3SMauro Carvalho Chehab
1603*577a7ad3SMauro Carvalho Chehab
1604*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_GET_SEQ_END
1605*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~
1606*577a7ad3SMauro Carvalho Chehab
1607*577a7ad3SMauro Carvalho ChehabEnum: 198/0xC6
1608*577a7ad3SMauro Carvalho Chehab
1609*577a7ad3SMauro Carvalho ChehabDescription
1610*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1611*577a7ad3SMauro Carvalho Chehab
1612*577a7ad3SMauro Carvalho ChehabObtains the sequence end code of the encoder's buffer. When a capture
1613*577a7ad3SMauro Carvalho Chehabis started a number of interrupts are still generated, the last of
1614*577a7ad3SMauro Carvalho Chehabwhich will have Result[0] set to 1 and Result[1] will contain the size
1615*577a7ad3SMauro Carvalho Chehabof the buffer.
1616*577a7ad3SMauro Carvalho Chehab
1617*577a7ad3SMauro Carvalho ChehabResult[0]
1618*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1619*577a7ad3SMauro Carvalho Chehab
1620*577a7ad3SMauro Carvalho ChehabState of the transfer (1 if last buffer)
1621*577a7ad3SMauro Carvalho Chehab
1622*577a7ad3SMauro Carvalho ChehabResult[1]
1623*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1624*577a7ad3SMauro Carvalho Chehab
1625*577a7ad3SMauro Carvalho ChehabIf Result[0] is 1, this contains the size of the last buffer, undefined
1626*577a7ad3SMauro Carvalho Chehabotherwise.
1627*577a7ad3SMauro Carvalho Chehab
1628*577a7ad3SMauro Carvalho Chehab
1629*577a7ad3SMauro Carvalho Chehab
1630*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_PGM_INDEX_INFO
1631*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1632*577a7ad3SMauro Carvalho Chehab
1633*577a7ad3SMauro Carvalho ChehabEnum: 199/0xC7
1634*577a7ad3SMauro Carvalho Chehab
1635*577a7ad3SMauro Carvalho ChehabDescription
1636*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1637*577a7ad3SMauro Carvalho Chehab
1638*577a7ad3SMauro Carvalho ChehabSets the Program Index Information.
1639*577a7ad3SMauro Carvalho ChehabThe information is stored as follows:
1640*577a7ad3SMauro Carvalho Chehab
1641*577a7ad3SMauro Carvalho Chehab.. code-block:: c
1642*577a7ad3SMauro Carvalho Chehab
1643*577a7ad3SMauro Carvalho Chehab	struct info {
1644*577a7ad3SMauro Carvalho Chehab		u32 length;		// Length of this frame
1645*577a7ad3SMauro Carvalho Chehab		u32 offset_low;		// Offset in the file of the
1646*577a7ad3SMauro Carvalho Chehab		u32 offset_high;	// start of this frame
1647*577a7ad3SMauro Carvalho Chehab		u32 mask1;		// Bits 0-2 are the type mask:
1648*577a7ad3SMauro Carvalho Chehab					// 1=I, 2=P, 4=B
1649*577a7ad3SMauro Carvalho Chehab					// 0=End of Program Index, other fields
1650*577a7ad3SMauro Carvalho Chehab					//   are invalid.
1651*577a7ad3SMauro Carvalho Chehab		u32 pts;		// The PTS of the frame
1652*577a7ad3SMauro Carvalho Chehab		u32 mask2;		// Bit 0 is bit 32 of the pts.
1653*577a7ad3SMauro Carvalho Chehab	};
1654*577a7ad3SMauro Carvalho Chehab	u32 table_ptr;
1655*577a7ad3SMauro Carvalho Chehab	struct info index[400];
1656*577a7ad3SMauro Carvalho Chehab
1657*577a7ad3SMauro Carvalho ChehabThe table_ptr is the encoder memory address in the table were
1658*577a7ad3SMauro Carvalho Chehab*new* entries will be written.
1659*577a7ad3SMauro Carvalho Chehab
1660*577a7ad3SMauro Carvalho Chehab.. note:: This is a ringbuffer, so the table_ptr will wraparound.
1661*577a7ad3SMauro Carvalho Chehab
1662*577a7ad3SMauro Carvalho ChehabParam[0]
1663*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1664*577a7ad3SMauro Carvalho Chehab
1665*577a7ad3SMauro Carvalho ChehabPicture Mask:
1666*577a7ad3SMauro Carvalho Chehab- 0=No index capture
1667*577a7ad3SMauro Carvalho Chehab- 1=I frames
1668*577a7ad3SMauro Carvalho Chehab- 3=I,P frames
1669*577a7ad3SMauro Carvalho Chehab- 7=I,P,B frames
1670*577a7ad3SMauro Carvalho Chehab
1671*577a7ad3SMauro Carvalho Chehab(Seems to be ignored, it always indexes I, P and B frames)
1672*577a7ad3SMauro Carvalho Chehab
1673*577a7ad3SMauro Carvalho ChehabParam[1]
1674*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1675*577a7ad3SMauro Carvalho Chehab
1676*577a7ad3SMauro Carvalho ChehabElements requested (up to 400)
1677*577a7ad3SMauro Carvalho Chehab
1678*577a7ad3SMauro Carvalho ChehabResult[0]
1679*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1680*577a7ad3SMauro Carvalho Chehab
1681*577a7ad3SMauro Carvalho ChehabOffset in the encoder memory of the start of the table.
1682*577a7ad3SMauro Carvalho Chehab
1683*577a7ad3SMauro Carvalho ChehabResult[1]
1684*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1685*577a7ad3SMauro Carvalho Chehab
1686*577a7ad3SMauro Carvalho ChehabNumber of allocated elements up to a maximum of Param[1]
1687*577a7ad3SMauro Carvalho Chehab
1688*577a7ad3SMauro Carvalho Chehab
1689*577a7ad3SMauro Carvalho Chehab
1690*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_VBI_CONFIG
1691*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
1692*577a7ad3SMauro Carvalho Chehab
1693*577a7ad3SMauro Carvalho ChehabEnum: 200/0xC8
1694*577a7ad3SMauro Carvalho Chehab
1695*577a7ad3SMauro Carvalho ChehabDescription
1696*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1697*577a7ad3SMauro Carvalho Chehab
1698*577a7ad3SMauro Carvalho ChehabConfigure VBI settings
1699*577a7ad3SMauro Carvalho Chehab
1700*577a7ad3SMauro Carvalho ChehabParam[0]
1701*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1702*577a7ad3SMauro Carvalho Chehab
1703*577a7ad3SMauro Carvalho ChehabBitmap:
1704*577a7ad3SMauro Carvalho Chehab
1705*577a7ad3SMauro Carvalho Chehab.. code-block:: none
1706*577a7ad3SMauro Carvalho Chehab
1707*577a7ad3SMauro Carvalho Chehab	    0    Mode '0' Sliced, '1' Raw
1708*577a7ad3SMauro Carvalho Chehab	    1:3  Insertion:
1709*577a7ad3SMauro Carvalho Chehab		     '000' insert in extension & user data
1710*577a7ad3SMauro Carvalho Chehab		     '001' insert in private packets
1711*577a7ad3SMauro Carvalho Chehab		     '010' separate stream and user data
1712*577a7ad3SMauro Carvalho Chehab		     '111' separate stream and private data
1713*577a7ad3SMauro Carvalho Chehab	    8:15 Stream ID (normally 0xBD)
1714*577a7ad3SMauro Carvalho Chehab
1715*577a7ad3SMauro Carvalho ChehabParam[1]
1716*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1717*577a7ad3SMauro Carvalho Chehab
1718*577a7ad3SMauro Carvalho ChehabFrames per interrupt (max 8). Only valid in raw mode.
1719*577a7ad3SMauro Carvalho Chehab
1720*577a7ad3SMauro Carvalho ChehabParam[2]
1721*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1722*577a7ad3SMauro Carvalho Chehab
1723*577a7ad3SMauro Carvalho ChehabTotal raw VBI frames. Only valid in raw mode.
1724*577a7ad3SMauro Carvalho Chehab
1725*577a7ad3SMauro Carvalho ChehabParam[3]
1726*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1727*577a7ad3SMauro Carvalho Chehab
1728*577a7ad3SMauro Carvalho ChehabStart codes
1729*577a7ad3SMauro Carvalho Chehab
1730*577a7ad3SMauro Carvalho ChehabParam[4]
1731*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1732*577a7ad3SMauro Carvalho Chehab
1733*577a7ad3SMauro Carvalho ChehabStop codes
1734*577a7ad3SMauro Carvalho Chehab
1735*577a7ad3SMauro Carvalho ChehabParam[5]
1736*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1737*577a7ad3SMauro Carvalho Chehab
1738*577a7ad3SMauro Carvalho ChehabLines per frame
1739*577a7ad3SMauro Carvalho Chehab
1740*577a7ad3SMauro Carvalho ChehabParam[6]
1741*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1742*577a7ad3SMauro Carvalho Chehab
1743*577a7ad3SMauro Carvalho ChehabByte per line
1744*577a7ad3SMauro Carvalho Chehab
1745*577a7ad3SMauro Carvalho ChehabResult[0]
1746*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1747*577a7ad3SMauro Carvalho Chehab
1748*577a7ad3SMauro Carvalho ChehabObserved frames per interrupt in raw mode only. Rage 1 to Param[1]
1749*577a7ad3SMauro Carvalho Chehab
1750*577a7ad3SMauro Carvalho ChehabResult[1]
1751*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1752*577a7ad3SMauro Carvalho Chehab
1753*577a7ad3SMauro Carvalho ChehabObserved number of frames in raw mode. Range 1 to Param[2]
1754*577a7ad3SMauro Carvalho Chehab
1755*577a7ad3SMauro Carvalho ChehabResult[2]
1756*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1757*577a7ad3SMauro Carvalho Chehab
1758*577a7ad3SMauro Carvalho ChehabMemory offset to start or raw VBI data
1759*577a7ad3SMauro Carvalho Chehab
1760*577a7ad3SMauro Carvalho Chehab
1761*577a7ad3SMauro Carvalho Chehab
1762*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_DMA_BLOCK_SIZE
1763*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1764*577a7ad3SMauro Carvalho Chehab
1765*577a7ad3SMauro Carvalho ChehabEnum: 201/0xC9
1766*577a7ad3SMauro Carvalho Chehab
1767*577a7ad3SMauro Carvalho ChehabDescription
1768*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1769*577a7ad3SMauro Carvalho Chehab
1770*577a7ad3SMauro Carvalho ChehabSet DMA transfer block size
1771*577a7ad3SMauro Carvalho Chehab
1772*577a7ad3SMauro Carvalho ChehabParam[0]
1773*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1774*577a7ad3SMauro Carvalho Chehab
1775*577a7ad3SMauro Carvalho ChehabDMA transfer block size in bytes or frames. When unit is bytes,
1776*577a7ad3SMauro Carvalho Chehabsupported block sizes are 2^7, 2^8 and 2^9 bytes.
1777*577a7ad3SMauro Carvalho Chehab
1778*577a7ad3SMauro Carvalho ChehabParam[1]
1779*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1780*577a7ad3SMauro Carvalho Chehab
1781*577a7ad3SMauro Carvalho ChehabUnit: 0=bytes, 1=frames
1782*577a7ad3SMauro Carvalho Chehab
1783*577a7ad3SMauro Carvalho Chehab
1784*577a7ad3SMauro Carvalho Chehab
1785*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_GET_PREV_DMA_INFO_MB_10
1786*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1787*577a7ad3SMauro Carvalho Chehab
1788*577a7ad3SMauro Carvalho ChehabEnum: 202/0xCA
1789*577a7ad3SMauro Carvalho Chehab
1790*577a7ad3SMauro Carvalho ChehabDescription
1791*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1792*577a7ad3SMauro Carvalho Chehab
1793*577a7ad3SMauro Carvalho ChehabReturns information on the previous DMA transfer in conjunction with
1794*577a7ad3SMauro Carvalho Chehabbit 27 of the interrupt mask. Uses mailbox 10.
1795*577a7ad3SMauro Carvalho Chehab
1796*577a7ad3SMauro Carvalho ChehabResult[0]
1797*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1798*577a7ad3SMauro Carvalho Chehab
1799*577a7ad3SMauro Carvalho ChehabType of stream
1800*577a7ad3SMauro Carvalho Chehab
1801*577a7ad3SMauro Carvalho ChehabResult[1]
1802*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1803*577a7ad3SMauro Carvalho Chehab
1804*577a7ad3SMauro Carvalho ChehabAddress Offset
1805*577a7ad3SMauro Carvalho Chehab
1806*577a7ad3SMauro Carvalho ChehabResult[2]
1807*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1808*577a7ad3SMauro Carvalho Chehab
1809*577a7ad3SMauro Carvalho ChehabMaximum size of transfer
1810*577a7ad3SMauro Carvalho Chehab
1811*577a7ad3SMauro Carvalho Chehab
1812*577a7ad3SMauro Carvalho Chehab
1813*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_GET_PREV_DMA_INFO_MB_9
1814*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1815*577a7ad3SMauro Carvalho Chehab
1816*577a7ad3SMauro Carvalho ChehabEnum: 203/0xCB
1817*577a7ad3SMauro Carvalho Chehab
1818*577a7ad3SMauro Carvalho ChehabDescription
1819*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1820*577a7ad3SMauro Carvalho Chehab
1821*577a7ad3SMauro Carvalho ChehabReturns information on the previous DMA transfer in conjunction with
1822*577a7ad3SMauro Carvalho Chehabbit 27 or 18 of the interrupt mask. Uses mailbox 9.
1823*577a7ad3SMauro Carvalho Chehab
1824*577a7ad3SMauro Carvalho ChehabResult[0]
1825*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1826*577a7ad3SMauro Carvalho Chehab
1827*577a7ad3SMauro Carvalho ChehabStatus bits:
1828*577a7ad3SMauro Carvalho Chehab- 0   read completed
1829*577a7ad3SMauro Carvalho Chehab- 1   write completed
1830*577a7ad3SMauro Carvalho Chehab- 2   DMA read error
1831*577a7ad3SMauro Carvalho Chehab- 3   DMA write error
1832*577a7ad3SMauro Carvalho Chehab- 4   Scatter-Gather array error
1833*577a7ad3SMauro Carvalho Chehab
1834*577a7ad3SMauro Carvalho ChehabResult[1]
1835*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1836*577a7ad3SMauro Carvalho Chehab
1837*577a7ad3SMauro Carvalho ChehabDMA type
1838*577a7ad3SMauro Carvalho Chehab
1839*577a7ad3SMauro Carvalho ChehabResult[2]
1840*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1841*577a7ad3SMauro Carvalho Chehab
1842*577a7ad3SMauro Carvalho ChehabPresentation Time Stamp bits 0..31
1843*577a7ad3SMauro Carvalho Chehab
1844*577a7ad3SMauro Carvalho ChehabResult[3]
1845*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
1846*577a7ad3SMauro Carvalho Chehab
1847*577a7ad3SMauro Carvalho ChehabPresentation Time Stamp bit 32
1848*577a7ad3SMauro Carvalho Chehab
1849*577a7ad3SMauro Carvalho Chehab
1850*577a7ad3SMauro Carvalho Chehab
1851*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SCHED_DMA_TO_HOST
1852*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1853*577a7ad3SMauro Carvalho Chehab
1854*577a7ad3SMauro Carvalho ChehabEnum: 204/0xCC
1855*577a7ad3SMauro Carvalho Chehab
1856*577a7ad3SMauro Carvalho ChehabDescription
1857*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1858*577a7ad3SMauro Carvalho Chehab
1859*577a7ad3SMauro Carvalho ChehabSetup DMA to host operation
1860*577a7ad3SMauro Carvalho Chehab
1861*577a7ad3SMauro Carvalho ChehabParam[0]
1862*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1863*577a7ad3SMauro Carvalho Chehab
1864*577a7ad3SMauro Carvalho ChehabMemory address of link list
1865*577a7ad3SMauro Carvalho Chehab
1866*577a7ad3SMauro Carvalho ChehabParam[1]
1867*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1868*577a7ad3SMauro Carvalho Chehab
1869*577a7ad3SMauro Carvalho ChehabLength of link list (wtf: what units ???)
1870*577a7ad3SMauro Carvalho Chehab
1871*577a7ad3SMauro Carvalho ChehabParam[2]
1872*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1873*577a7ad3SMauro Carvalho Chehab
1874*577a7ad3SMauro Carvalho ChehabDMA type (0=MPEG)
1875*577a7ad3SMauro Carvalho Chehab
1876*577a7ad3SMauro Carvalho Chehab
1877*577a7ad3SMauro Carvalho Chehab
1878*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_INITIALIZE_INPUT
1879*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1880*577a7ad3SMauro Carvalho Chehab
1881*577a7ad3SMauro Carvalho ChehabEnum: 205/0xCD
1882*577a7ad3SMauro Carvalho Chehab
1883*577a7ad3SMauro Carvalho ChehabDescription
1884*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1885*577a7ad3SMauro Carvalho Chehab
1886*577a7ad3SMauro Carvalho ChehabInitializes the video input
1887*577a7ad3SMauro Carvalho Chehab
1888*577a7ad3SMauro Carvalho Chehab
1889*577a7ad3SMauro Carvalho Chehab
1890*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_FRAME_DROP_RATE
1891*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1892*577a7ad3SMauro Carvalho Chehab
1893*577a7ad3SMauro Carvalho ChehabEnum: 208/0xD0
1894*577a7ad3SMauro Carvalho Chehab
1895*577a7ad3SMauro Carvalho ChehabDescription
1896*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1897*577a7ad3SMauro Carvalho Chehab
1898*577a7ad3SMauro Carvalho ChehabFor each frame captured, skip specified number of frames.
1899*577a7ad3SMauro Carvalho Chehab
1900*577a7ad3SMauro Carvalho ChehabParam[0]
1901*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1902*577a7ad3SMauro Carvalho Chehab
1903*577a7ad3SMauro Carvalho ChehabNumber of frames to skip
1904*577a7ad3SMauro Carvalho Chehab
1905*577a7ad3SMauro Carvalho Chehab
1906*577a7ad3SMauro Carvalho Chehab
1907*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_PAUSE_ENCODER
1908*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
1909*577a7ad3SMauro Carvalho Chehab
1910*577a7ad3SMauro Carvalho ChehabEnum: 210/0xD2
1911*577a7ad3SMauro Carvalho Chehab
1912*577a7ad3SMauro Carvalho ChehabDescription
1913*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1914*577a7ad3SMauro Carvalho Chehab
1915*577a7ad3SMauro Carvalho ChehabDuring a pause condition, all frames are dropped instead of being encoded.
1916*577a7ad3SMauro Carvalho Chehab
1917*577a7ad3SMauro Carvalho ChehabParam[0]
1918*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1919*577a7ad3SMauro Carvalho Chehab
1920*577a7ad3SMauro Carvalho Chehab- 0=Pause encoding
1921*577a7ad3SMauro Carvalho Chehab- 1=Continue encoding
1922*577a7ad3SMauro Carvalho Chehab
1923*577a7ad3SMauro Carvalho Chehab
1924*577a7ad3SMauro Carvalho Chehab
1925*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_REFRESH_INPUT
1926*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
1927*577a7ad3SMauro Carvalho Chehab
1928*577a7ad3SMauro Carvalho ChehabEnum: 211/0xD3
1929*577a7ad3SMauro Carvalho Chehab
1930*577a7ad3SMauro Carvalho ChehabDescription
1931*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1932*577a7ad3SMauro Carvalho Chehab
1933*577a7ad3SMauro Carvalho ChehabRefreshes the video input
1934*577a7ad3SMauro Carvalho Chehab
1935*577a7ad3SMauro Carvalho Chehab
1936*577a7ad3SMauro Carvalho Chehab
1937*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_COPYRIGHT
1938*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
1939*577a7ad3SMauro Carvalho Chehab
1940*577a7ad3SMauro Carvalho ChehabEnum: 212/0xD4
1941*577a7ad3SMauro Carvalho Chehab
1942*577a7ad3SMauro Carvalho ChehabDescription
1943*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1944*577a7ad3SMauro Carvalho Chehab
1945*577a7ad3SMauro Carvalho ChehabSets stream copyright property
1946*577a7ad3SMauro Carvalho Chehab
1947*577a7ad3SMauro Carvalho ChehabParam[0]
1948*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1949*577a7ad3SMauro Carvalho Chehab
1950*577a7ad3SMauro Carvalho Chehab
1951*577a7ad3SMauro Carvalho Chehab- 0=Stream is not copyrighted
1952*577a7ad3SMauro Carvalho Chehab- 1=Stream is copyrighted
1953*577a7ad3SMauro Carvalho Chehab
1954*577a7ad3SMauro Carvalho Chehab
1955*577a7ad3SMauro Carvalho Chehab
1956*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_EVENT_NOTIFICATION
1957*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1958*577a7ad3SMauro Carvalho Chehab
1959*577a7ad3SMauro Carvalho ChehabEnum: 213/0xD5
1960*577a7ad3SMauro Carvalho Chehab
1961*577a7ad3SMauro Carvalho ChehabDescription
1962*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1963*577a7ad3SMauro Carvalho Chehab
1964*577a7ad3SMauro Carvalho ChehabSetup firmware to notify the host about a particular event. Host must
1965*577a7ad3SMauro Carvalho Chehabunmask the interrupt bit.
1966*577a7ad3SMauro Carvalho Chehab
1967*577a7ad3SMauro Carvalho ChehabParam[0]
1968*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1969*577a7ad3SMauro Carvalho Chehab
1970*577a7ad3SMauro Carvalho ChehabEvent (0=refresh encoder input)
1971*577a7ad3SMauro Carvalho Chehab
1972*577a7ad3SMauro Carvalho ChehabParam[1]
1973*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1974*577a7ad3SMauro Carvalho Chehab
1975*577a7ad3SMauro Carvalho ChehabNotification 0=disabled 1=enabled
1976*577a7ad3SMauro Carvalho Chehab
1977*577a7ad3SMauro Carvalho ChehabParam[2]
1978*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1979*577a7ad3SMauro Carvalho Chehab
1980*577a7ad3SMauro Carvalho ChehabInterrupt bit
1981*577a7ad3SMauro Carvalho Chehab
1982*577a7ad3SMauro Carvalho ChehabParam[3]
1983*577a7ad3SMauro Carvalho Chehab^^^^^^^^
1984*577a7ad3SMauro Carvalho Chehab
1985*577a7ad3SMauro Carvalho ChehabMailbox slot, -1 if no mailbox required.
1986*577a7ad3SMauro Carvalho Chehab
1987*577a7ad3SMauro Carvalho Chehab
1988*577a7ad3SMauro Carvalho Chehab
1989*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_NUM_VSYNC_LINES
1990*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1991*577a7ad3SMauro Carvalho Chehab
1992*577a7ad3SMauro Carvalho ChehabEnum: 214/0xD6
1993*577a7ad3SMauro Carvalho Chehab
1994*577a7ad3SMauro Carvalho ChehabDescription
1995*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
1996*577a7ad3SMauro Carvalho Chehab
1997*577a7ad3SMauro Carvalho ChehabDepending on the analog video decoder used, this assigns the number
1998*577a7ad3SMauro Carvalho Chehabof lines for field 1 and 2.
1999*577a7ad3SMauro Carvalho Chehab
2000*577a7ad3SMauro Carvalho ChehabParam[0]
2001*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2002*577a7ad3SMauro Carvalho Chehab
2003*577a7ad3SMauro Carvalho ChehabField 1 number of lines:
2004*577a7ad3SMauro Carvalho Chehab- 0x00EF for SAA7114
2005*577a7ad3SMauro Carvalho Chehab- 0x00F0 for SAA7115
2006*577a7ad3SMauro Carvalho Chehab- 0x0105 for Micronas
2007*577a7ad3SMauro Carvalho Chehab
2008*577a7ad3SMauro Carvalho ChehabParam[1]
2009*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2010*577a7ad3SMauro Carvalho Chehab
2011*577a7ad3SMauro Carvalho ChehabField 2 number of lines:
2012*577a7ad3SMauro Carvalho Chehab- 0x00EF for SAA7114
2013*577a7ad3SMauro Carvalho Chehab- 0x00F0 for SAA7115
2014*577a7ad3SMauro Carvalho Chehab- 0x0106 for Micronas
2015*577a7ad3SMauro Carvalho Chehab
2016*577a7ad3SMauro Carvalho Chehab
2017*577a7ad3SMauro Carvalho Chehab
2018*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_PLACEHOLDER
2019*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020*577a7ad3SMauro Carvalho Chehab
2021*577a7ad3SMauro Carvalho ChehabEnum: 215/0xD7
2022*577a7ad3SMauro Carvalho Chehab
2023*577a7ad3SMauro Carvalho ChehabDescription
2024*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2025*577a7ad3SMauro Carvalho Chehab
2026*577a7ad3SMauro Carvalho ChehabProvides a mechanism of inserting custom user data in the MPEG stream.
2027*577a7ad3SMauro Carvalho Chehab
2028*577a7ad3SMauro Carvalho ChehabParam[0]
2029*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2030*577a7ad3SMauro Carvalho Chehab
2031*577a7ad3SMauro Carvalho Chehab- 0=extension & user data
2032*577a7ad3SMauro Carvalho Chehab- 1=private packet with stream ID 0xBD
2033*577a7ad3SMauro Carvalho Chehab
2034*577a7ad3SMauro Carvalho ChehabParam[1]
2035*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2036*577a7ad3SMauro Carvalho Chehab
2037*577a7ad3SMauro Carvalho ChehabRate at which to insert data, in units of frames (for private packet)
2038*577a7ad3SMauro Carvalho Chehabor GOPs (for ext. & user data)
2039*577a7ad3SMauro Carvalho Chehab
2040*577a7ad3SMauro Carvalho ChehabParam[2]
2041*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2042*577a7ad3SMauro Carvalho Chehab
2043*577a7ad3SMauro Carvalho ChehabNumber of data DWORDs (below) to insert
2044*577a7ad3SMauro Carvalho Chehab
2045*577a7ad3SMauro Carvalho ChehabParam[3]
2046*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2047*577a7ad3SMauro Carvalho Chehab
2048*577a7ad3SMauro Carvalho ChehabCustom data 0
2049*577a7ad3SMauro Carvalho Chehab
2050*577a7ad3SMauro Carvalho ChehabParam[4]
2051*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2052*577a7ad3SMauro Carvalho Chehab
2053*577a7ad3SMauro Carvalho ChehabCustom data 1
2054*577a7ad3SMauro Carvalho Chehab
2055*577a7ad3SMauro Carvalho ChehabParam[5]
2056*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2057*577a7ad3SMauro Carvalho Chehab
2058*577a7ad3SMauro Carvalho ChehabCustom data 2
2059*577a7ad3SMauro Carvalho Chehab
2060*577a7ad3SMauro Carvalho ChehabParam[6]
2061*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2062*577a7ad3SMauro Carvalho Chehab
2063*577a7ad3SMauro Carvalho ChehabCustom data 3
2064*577a7ad3SMauro Carvalho Chehab
2065*577a7ad3SMauro Carvalho ChehabParam[7]
2066*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2067*577a7ad3SMauro Carvalho Chehab
2068*577a7ad3SMauro Carvalho ChehabCustom data 4
2069*577a7ad3SMauro Carvalho Chehab
2070*577a7ad3SMauro Carvalho ChehabParam[8]
2071*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2072*577a7ad3SMauro Carvalho Chehab
2073*577a7ad3SMauro Carvalho ChehabCustom data 5
2074*577a7ad3SMauro Carvalho Chehab
2075*577a7ad3SMauro Carvalho ChehabParam[9]
2076*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2077*577a7ad3SMauro Carvalho Chehab
2078*577a7ad3SMauro Carvalho ChehabCustom data 6
2079*577a7ad3SMauro Carvalho Chehab
2080*577a7ad3SMauro Carvalho ChehabParam[10]
2081*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2082*577a7ad3SMauro Carvalho Chehab
2083*577a7ad3SMauro Carvalho ChehabCustom data 7
2084*577a7ad3SMauro Carvalho Chehab
2085*577a7ad3SMauro Carvalho ChehabParam[11]
2086*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2087*577a7ad3SMauro Carvalho Chehab
2088*577a7ad3SMauro Carvalho ChehabCustom data 8
2089*577a7ad3SMauro Carvalho Chehab
2090*577a7ad3SMauro Carvalho Chehab
2091*577a7ad3SMauro Carvalho Chehab
2092*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_MUTE_VIDEO
2093*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~
2094*577a7ad3SMauro Carvalho Chehab
2095*577a7ad3SMauro Carvalho ChehabEnum: 217/0xD9
2096*577a7ad3SMauro Carvalho Chehab
2097*577a7ad3SMauro Carvalho ChehabDescription
2098*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2099*577a7ad3SMauro Carvalho Chehab
2100*577a7ad3SMauro Carvalho ChehabVideo muting
2101*577a7ad3SMauro Carvalho Chehab
2102*577a7ad3SMauro Carvalho ChehabParam[0]
2103*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2104*577a7ad3SMauro Carvalho Chehab
2105*577a7ad3SMauro Carvalho ChehabBit usage:
2106*577a7ad3SMauro Carvalho Chehab
2107*577a7ad3SMauro Carvalho Chehab.. code-block:: none
2108*577a7ad3SMauro Carvalho Chehab
2109*577a7ad3SMauro Carvalho Chehab	 0    	'0'=video not muted
2110*577a7ad3SMauro Carvalho Chehab		'1'=video muted, creates frames with the YUV color defined below
2111*577a7ad3SMauro Carvalho Chehab	 1:7  	Unused
2112*577a7ad3SMauro Carvalho Chehab	 8:15 	V chrominance information
2113*577a7ad3SMauro Carvalho Chehab	16:23 	U chrominance information
2114*577a7ad3SMauro Carvalho Chehab	24:31 	Y luminance information
2115*577a7ad3SMauro Carvalho Chehab
2116*577a7ad3SMauro Carvalho Chehab
2117*577a7ad3SMauro Carvalho Chehab
2118*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_MUTE_AUDIO
2119*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~
2120*577a7ad3SMauro Carvalho Chehab
2121*577a7ad3SMauro Carvalho ChehabEnum: 218/0xDA
2122*577a7ad3SMauro Carvalho Chehab
2123*577a7ad3SMauro Carvalho ChehabDescription
2124*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2125*577a7ad3SMauro Carvalho Chehab
2126*577a7ad3SMauro Carvalho ChehabAudio muting
2127*577a7ad3SMauro Carvalho Chehab
2128*577a7ad3SMauro Carvalho ChehabParam[0]
2129*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2130*577a7ad3SMauro Carvalho Chehab
2131*577a7ad3SMauro Carvalho Chehab- 0=audio not muted
2132*577a7ad3SMauro Carvalho Chehab- 1=audio muted (produces silent mpeg audio stream)
2133*577a7ad3SMauro Carvalho Chehab
2134*577a7ad3SMauro Carvalho Chehab
2135*577a7ad3SMauro Carvalho Chehab
2136*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_SET_VERT_CROP_LINE
2137*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2138*577a7ad3SMauro Carvalho Chehab
2139*577a7ad3SMauro Carvalho ChehabEnum: 219/0xDB
2140*577a7ad3SMauro Carvalho Chehab
2141*577a7ad3SMauro Carvalho ChehabDescription
2142*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2143*577a7ad3SMauro Carvalho Chehab
2144*577a7ad3SMauro Carvalho ChehabSomething to do with 'Vertical Crop Line'
2145*577a7ad3SMauro Carvalho Chehab
2146*577a7ad3SMauro Carvalho ChehabParam[0]
2147*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2148*577a7ad3SMauro Carvalho Chehab
2149*577a7ad3SMauro Carvalho ChehabIf saa7114 and raw VBI capture and 60 Hz, then set to 10001.
2150*577a7ad3SMauro Carvalho ChehabElse 0.
2151*577a7ad3SMauro Carvalho Chehab
2152*577a7ad3SMauro Carvalho Chehab
2153*577a7ad3SMauro Carvalho Chehab
2154*577a7ad3SMauro Carvalho ChehabCX2341X_ENC_MISC
2155*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~
2156*577a7ad3SMauro Carvalho Chehab
2157*577a7ad3SMauro Carvalho ChehabEnum: 220/0xDC
2158*577a7ad3SMauro Carvalho Chehab
2159*577a7ad3SMauro Carvalho ChehabDescription
2160*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2161*577a7ad3SMauro Carvalho Chehab
2162*577a7ad3SMauro Carvalho ChehabMiscellaneous actions. Not known for 100% what it does. It's really a
2163*577a7ad3SMauro Carvalho Chehabsort of ioctl call. The first parameter is a command number, the second
2164*577a7ad3SMauro Carvalho Chehabthe value.
2165*577a7ad3SMauro Carvalho Chehab
2166*577a7ad3SMauro Carvalho ChehabParam[0]
2167*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2168*577a7ad3SMauro Carvalho Chehab
2169*577a7ad3SMauro Carvalho ChehabCommand number:
2170*577a7ad3SMauro Carvalho Chehab
2171*577a7ad3SMauro Carvalho Chehab.. code-block:: none
2172*577a7ad3SMauro Carvalho Chehab
2173*577a7ad3SMauro Carvalho Chehab	 1=set initial SCR value when starting encoding (works).
2174*577a7ad3SMauro Carvalho Chehab	 2=set quality mode (apparently some test setting).
2175*577a7ad3SMauro Carvalho Chehab	 3=setup advanced VIM protection handling.
2176*577a7ad3SMauro Carvalho Chehab	   Always 1 for the cx23416 and 0 for cx23415.
2177*577a7ad3SMauro Carvalho Chehab	 4=generate DVD compatible PTS timestamps
2178*577a7ad3SMauro Carvalho Chehab	 5=USB flush mode
2179*577a7ad3SMauro Carvalho Chehab	 6=something to do with the quantization matrix
2180*577a7ad3SMauro Carvalho Chehab	 7=set navigation pack insertion for DVD: adds 0xbf (private stream 2)
2181*577a7ad3SMauro Carvalho Chehab	   packets to the MPEG. The size of these packets is 2048 bytes (including
2182*577a7ad3SMauro Carvalho Chehab	   the header of 6 bytes: 0x000001bf + length). The payload is zeroed and
2183*577a7ad3SMauro Carvalho Chehab	   it is up to the application to fill them in. These packets are apparently
2184*577a7ad3SMauro Carvalho Chehab	   inserted every four frames.
2185*577a7ad3SMauro Carvalho Chehab	 8=enable scene change detection (seems to be a failure)
2186*577a7ad3SMauro Carvalho Chehab	 9=set history parameters of the video input module
2187*577a7ad3SMauro Carvalho Chehab	10=set input field order of VIM
2188*577a7ad3SMauro Carvalho Chehab	11=set quantization matrix
2189*577a7ad3SMauro Carvalho Chehab	12=reset audio interface after channel change or input switch (has no argument).
2190*577a7ad3SMauro Carvalho Chehab	   Needed for the cx2584x, not needed for the mspx4xx, but it doesn't seem to
2191*577a7ad3SMauro Carvalho Chehab	   do any harm calling it regardless.
2192*577a7ad3SMauro Carvalho Chehab	13=set audio volume delay
2193*577a7ad3SMauro Carvalho Chehab	14=set audio delay
2194*577a7ad3SMauro Carvalho Chehab
2195*577a7ad3SMauro Carvalho Chehab
2196*577a7ad3SMauro Carvalho ChehabParam[1]
2197*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2198*577a7ad3SMauro Carvalho Chehab
2199*577a7ad3SMauro Carvalho ChehabCommand value.
2200*577a7ad3SMauro Carvalho Chehab
2201*577a7ad3SMauro Carvalho ChehabDecoder firmware API description
2202*577a7ad3SMauro Carvalho Chehab--------------------------------
2203*577a7ad3SMauro Carvalho Chehab
2204*577a7ad3SMauro Carvalho Chehab.. note:: this API is part of the decoder firmware, so it's cx23415 only.
2205*577a7ad3SMauro Carvalho Chehab
2206*577a7ad3SMauro Carvalho Chehab
2207*577a7ad3SMauro Carvalho Chehab
2208*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_PING_FW
2209*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~
2210*577a7ad3SMauro Carvalho Chehab
2211*577a7ad3SMauro Carvalho ChehabEnum: 0/0x00
2212*577a7ad3SMauro Carvalho Chehab
2213*577a7ad3SMauro Carvalho ChehabDescription
2214*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2215*577a7ad3SMauro Carvalho Chehab
2216*577a7ad3SMauro Carvalho ChehabThis API call does nothing. It may be used to check if the firmware
2217*577a7ad3SMauro Carvalho Chehabis responding.
2218*577a7ad3SMauro Carvalho Chehab
2219*577a7ad3SMauro Carvalho Chehab
2220*577a7ad3SMauro Carvalho Chehab
2221*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_START_PLAYBACK
2222*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
2223*577a7ad3SMauro Carvalho Chehab
2224*577a7ad3SMauro Carvalho ChehabEnum: 1/0x01
2225*577a7ad3SMauro Carvalho Chehab
2226*577a7ad3SMauro Carvalho ChehabDescription
2227*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2228*577a7ad3SMauro Carvalho Chehab
2229*577a7ad3SMauro Carvalho ChehabBegin or resume playback.
2230*577a7ad3SMauro Carvalho Chehab
2231*577a7ad3SMauro Carvalho ChehabParam[0]
2232*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2233*577a7ad3SMauro Carvalho Chehab
2234*577a7ad3SMauro Carvalho Chehab0 based frame number in GOP to begin playback from.
2235*577a7ad3SMauro Carvalho Chehab
2236*577a7ad3SMauro Carvalho ChehabParam[1]
2237*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2238*577a7ad3SMauro Carvalho Chehab
2239*577a7ad3SMauro Carvalho ChehabSpecifies the number of muted audio frames to play before normal
2240*577a7ad3SMauro Carvalho Chehabaudio resumes. (This is not implemented in the firmware, leave at 0)
2241*577a7ad3SMauro Carvalho Chehab
2242*577a7ad3SMauro Carvalho Chehab
2243*577a7ad3SMauro Carvalho Chehab
2244*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_STOP_PLAYBACK
2245*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
2246*577a7ad3SMauro Carvalho Chehab
2247*577a7ad3SMauro Carvalho ChehabEnum: 2/0x02
2248*577a7ad3SMauro Carvalho Chehab
2249*577a7ad3SMauro Carvalho ChehabDescription
2250*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2251*577a7ad3SMauro Carvalho Chehab
2252*577a7ad3SMauro Carvalho ChehabEnds playback and clears all decoder buffers. If PTS is not zero,
2253*577a7ad3SMauro Carvalho Chehabplayback stops at specified PTS.
2254*577a7ad3SMauro Carvalho Chehab
2255*577a7ad3SMauro Carvalho ChehabParam[0]
2256*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2257*577a7ad3SMauro Carvalho Chehab
2258*577a7ad3SMauro Carvalho ChehabDisplay 0=last frame, 1=black
2259*577a7ad3SMauro Carvalho Chehab
2260*577a7ad3SMauro Carvalho Chehab.. note::
2261*577a7ad3SMauro Carvalho Chehab
2262*577a7ad3SMauro Carvalho Chehab	this takes effect immediately, so if you want to wait for a PTS,
2263*577a7ad3SMauro Carvalho Chehab	then use '0', otherwise the screen goes to black at once.
2264*577a7ad3SMauro Carvalho Chehab	You can call this later (even if there is no playback) with a 1 value
2265*577a7ad3SMauro Carvalho Chehab	to set the screen to black.
2266*577a7ad3SMauro Carvalho Chehab
2267*577a7ad3SMauro Carvalho ChehabParam[1]
2268*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2269*577a7ad3SMauro Carvalho Chehab
2270*577a7ad3SMauro Carvalho ChehabPTS low
2271*577a7ad3SMauro Carvalho Chehab
2272*577a7ad3SMauro Carvalho ChehabParam[2]
2273*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2274*577a7ad3SMauro Carvalho Chehab
2275*577a7ad3SMauro Carvalho ChehabPTS high
2276*577a7ad3SMauro Carvalho Chehab
2277*577a7ad3SMauro Carvalho Chehab
2278*577a7ad3SMauro Carvalho Chehab
2279*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_PLAYBACK_SPEED
2280*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2281*577a7ad3SMauro Carvalho Chehab
2282*577a7ad3SMauro Carvalho ChehabEnum: 3/0x03
2283*577a7ad3SMauro Carvalho Chehab
2284*577a7ad3SMauro Carvalho ChehabDescription
2285*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2286*577a7ad3SMauro Carvalho Chehab
2287*577a7ad3SMauro Carvalho ChehabPlayback stream at speed other than normal. There are two modes of
2288*577a7ad3SMauro Carvalho Chehaboperation:
2289*577a7ad3SMauro Carvalho Chehab
2290*577a7ad3SMauro Carvalho Chehab	- Smooth: host transfers entire stream and firmware drops unused
2291*577a7ad3SMauro Carvalho Chehab	  frames.
2292*577a7ad3SMauro Carvalho Chehab	- Coarse: host drops frames based on indexing as required to achieve
2293*577a7ad3SMauro Carvalho Chehab	  desired speed.
2294*577a7ad3SMauro Carvalho Chehab
2295*577a7ad3SMauro Carvalho ChehabParam[0]
2296*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2297*577a7ad3SMauro Carvalho Chehab
2298*577a7ad3SMauro Carvalho Chehab.. code-block:: none
2299*577a7ad3SMauro Carvalho Chehab
2300*577a7ad3SMauro Carvalho Chehab	Bitmap:
2301*577a7ad3SMauro Carvalho Chehab	    0:7  0 normal
2302*577a7ad3SMauro Carvalho Chehab		 1 fast only "1.5 times"
2303*577a7ad3SMauro Carvalho Chehab		 n nX fast, 1/nX slow
2304*577a7ad3SMauro Carvalho Chehab	    30   Framedrop:
2305*577a7ad3SMauro Carvalho Chehab		     '0' during 1.5 times play, every other B frame is dropped
2306*577a7ad3SMauro Carvalho Chehab		     '1' during 1.5 times play, stream is unchanged (bitrate
2307*577a7ad3SMauro Carvalho Chehab			 must not exceed 8mbps)
2308*577a7ad3SMauro Carvalho Chehab	    31   Speed:
2309*577a7ad3SMauro Carvalho Chehab		     '0' slow
2310*577a7ad3SMauro Carvalho Chehab		     '1' fast
2311*577a7ad3SMauro Carvalho Chehab
2312*577a7ad3SMauro Carvalho Chehab.. note::
2313*577a7ad3SMauro Carvalho Chehab
2314*577a7ad3SMauro Carvalho Chehab	n is limited to 2. Anything higher does not result in
2315*577a7ad3SMauro Carvalho Chehab	faster playback. Instead the host should start dropping frames.
2316*577a7ad3SMauro Carvalho Chehab
2317*577a7ad3SMauro Carvalho ChehabParam[1]
2318*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2319*577a7ad3SMauro Carvalho Chehab
2320*577a7ad3SMauro Carvalho ChehabDirection: 0=forward, 1=reverse
2321*577a7ad3SMauro Carvalho Chehab
2322*577a7ad3SMauro Carvalho Chehab.. note::
2323*577a7ad3SMauro Carvalho Chehab
2324*577a7ad3SMauro Carvalho Chehab	to make reverse playback work you have to write full GOPs in
2325*577a7ad3SMauro Carvalho Chehab	reverse order.
2326*577a7ad3SMauro Carvalho Chehab
2327*577a7ad3SMauro Carvalho ChehabParam[2]
2328*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2329*577a7ad3SMauro Carvalho Chehab
2330*577a7ad3SMauro Carvalho Chehab.. code-block:: none
2331*577a7ad3SMauro Carvalho Chehab
2332*577a7ad3SMauro Carvalho Chehab	Picture mask:
2333*577a7ad3SMauro Carvalho Chehab	    1=I frames
2334*577a7ad3SMauro Carvalho Chehab	    3=I, P frames
2335*577a7ad3SMauro Carvalho Chehab	    7=I, P, B frames
2336*577a7ad3SMauro Carvalho Chehab
2337*577a7ad3SMauro Carvalho ChehabParam[3]
2338*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2339*577a7ad3SMauro Carvalho Chehab
2340*577a7ad3SMauro Carvalho ChehabB frames per GOP (for reverse play only)
2341*577a7ad3SMauro Carvalho Chehab
2342*577a7ad3SMauro Carvalho Chehab.. note::
2343*577a7ad3SMauro Carvalho Chehab
2344*577a7ad3SMauro Carvalho Chehab	for reverse playback the Picture Mask should be set to I or I, P.
2345*577a7ad3SMauro Carvalho Chehab	Adding B frames to the mask will result in corrupt video. This field
2346*577a7ad3SMauro Carvalho Chehab	has to be set to the correct value in order to keep the timing correct.
2347*577a7ad3SMauro Carvalho Chehab
2348*577a7ad3SMauro Carvalho ChehabParam[4]
2349*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2350*577a7ad3SMauro Carvalho Chehab
2351*577a7ad3SMauro Carvalho ChehabMute audio: 0=disable, 1=enable
2352*577a7ad3SMauro Carvalho Chehab
2353*577a7ad3SMauro Carvalho ChehabParam[5]
2354*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2355*577a7ad3SMauro Carvalho Chehab
2356*577a7ad3SMauro Carvalho ChehabDisplay 0=frame, 1=field
2357*577a7ad3SMauro Carvalho Chehab
2358*577a7ad3SMauro Carvalho ChehabParam[6]
2359*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2360*577a7ad3SMauro Carvalho Chehab
2361*577a7ad3SMauro Carvalho ChehabSpecifies the number of muted audio frames to play before normal audio
2362*577a7ad3SMauro Carvalho Chehabresumes. (Not implemented in the firmware, leave at 0)
2363*577a7ad3SMauro Carvalho Chehab
2364*577a7ad3SMauro Carvalho Chehab
2365*577a7ad3SMauro Carvalho Chehab
2366*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_STEP_VIDEO
2367*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~
2368*577a7ad3SMauro Carvalho Chehab
2369*577a7ad3SMauro Carvalho ChehabEnum: 5/0x05
2370*577a7ad3SMauro Carvalho Chehab
2371*577a7ad3SMauro Carvalho ChehabDescription
2372*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2373*577a7ad3SMauro Carvalho Chehab
2374*577a7ad3SMauro Carvalho ChehabEach call to this API steps the playback to the next unit defined below
2375*577a7ad3SMauro Carvalho Chehabin the current playback direction.
2376*577a7ad3SMauro Carvalho Chehab
2377*577a7ad3SMauro Carvalho ChehabParam[0]
2378*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2379*577a7ad3SMauro Carvalho Chehab
2380*577a7ad3SMauro Carvalho Chehab0=frame, 1=top field, 2=bottom field
2381*577a7ad3SMauro Carvalho Chehab
2382*577a7ad3SMauro Carvalho Chehab
2383*577a7ad3SMauro Carvalho Chehab
2384*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_DMA_BLOCK_SIZE
2385*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2386*577a7ad3SMauro Carvalho Chehab
2387*577a7ad3SMauro Carvalho ChehabEnum: 8/0x08
2388*577a7ad3SMauro Carvalho Chehab
2389*577a7ad3SMauro Carvalho ChehabDescription
2390*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2391*577a7ad3SMauro Carvalho Chehab
2392*577a7ad3SMauro Carvalho ChehabSet DMA transfer block size. Counterpart to API 0xC9
2393*577a7ad3SMauro Carvalho Chehab
2394*577a7ad3SMauro Carvalho ChehabParam[0]
2395*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2396*577a7ad3SMauro Carvalho Chehab
2397*577a7ad3SMauro Carvalho ChehabDMA transfer block size in bytes. A different size may be specified
2398*577a7ad3SMauro Carvalho Chehabwhen issuing the DMA transfer command.
2399*577a7ad3SMauro Carvalho Chehab
2400*577a7ad3SMauro Carvalho Chehab
2401*577a7ad3SMauro Carvalho Chehab
2402*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_GET_XFER_INFO
2403*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
2404*577a7ad3SMauro Carvalho Chehab
2405*577a7ad3SMauro Carvalho ChehabEnum: 9/0x09
2406*577a7ad3SMauro Carvalho Chehab
2407*577a7ad3SMauro Carvalho ChehabDescription
2408*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2409*577a7ad3SMauro Carvalho Chehab
2410*577a7ad3SMauro Carvalho ChehabThis API call may be used to detect an end of stream condition.
2411*577a7ad3SMauro Carvalho Chehab
2412*577a7ad3SMauro Carvalho ChehabResult[0]
2413*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2414*577a7ad3SMauro Carvalho Chehab
2415*577a7ad3SMauro Carvalho ChehabStream type
2416*577a7ad3SMauro Carvalho Chehab
2417*577a7ad3SMauro Carvalho ChehabResult[1]
2418*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2419*577a7ad3SMauro Carvalho Chehab
2420*577a7ad3SMauro Carvalho ChehabAddress offset
2421*577a7ad3SMauro Carvalho Chehab
2422*577a7ad3SMauro Carvalho ChehabResult[2]
2423*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2424*577a7ad3SMauro Carvalho Chehab
2425*577a7ad3SMauro Carvalho ChehabMaximum bytes to transfer
2426*577a7ad3SMauro Carvalho Chehab
2427*577a7ad3SMauro Carvalho ChehabResult[3]
2428*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2429*577a7ad3SMauro Carvalho Chehab
2430*577a7ad3SMauro Carvalho ChehabBuffer fullness
2431*577a7ad3SMauro Carvalho Chehab
2432*577a7ad3SMauro Carvalho Chehab
2433*577a7ad3SMauro Carvalho Chehab
2434*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_GET_DMA_STATUS
2435*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
2436*577a7ad3SMauro Carvalho Chehab
2437*577a7ad3SMauro Carvalho ChehabEnum: 10/0x0A
2438*577a7ad3SMauro Carvalho Chehab
2439*577a7ad3SMauro Carvalho ChehabDescription
2440*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2441*577a7ad3SMauro Carvalho Chehab
2442*577a7ad3SMauro Carvalho ChehabStatus of the last DMA transfer
2443*577a7ad3SMauro Carvalho Chehab
2444*577a7ad3SMauro Carvalho ChehabResult[0]
2445*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2446*577a7ad3SMauro Carvalho Chehab
2447*577a7ad3SMauro Carvalho ChehabBit 1 set means transfer complete
2448*577a7ad3SMauro Carvalho ChehabBit 2 set means DMA error
2449*577a7ad3SMauro Carvalho ChehabBit 3 set means linked list error
2450*577a7ad3SMauro Carvalho Chehab
2451*577a7ad3SMauro Carvalho ChehabResult[1]
2452*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2453*577a7ad3SMauro Carvalho Chehab
2454*577a7ad3SMauro Carvalho ChehabDMA type: 0=MPEG, 1=OSD, 2=YUV
2455*577a7ad3SMauro Carvalho Chehab
2456*577a7ad3SMauro Carvalho Chehab
2457*577a7ad3SMauro Carvalho Chehab
2458*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SCHED_DMA_FROM_HOST
2459*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2460*577a7ad3SMauro Carvalho Chehab
2461*577a7ad3SMauro Carvalho ChehabEnum: 11/0x0B
2462*577a7ad3SMauro Carvalho Chehab
2463*577a7ad3SMauro Carvalho ChehabDescription
2464*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2465*577a7ad3SMauro Carvalho Chehab
2466*577a7ad3SMauro Carvalho ChehabSetup DMA from host operation. Counterpart to API 0xCC
2467*577a7ad3SMauro Carvalho Chehab
2468*577a7ad3SMauro Carvalho ChehabParam[0]
2469*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2470*577a7ad3SMauro Carvalho Chehab
2471*577a7ad3SMauro Carvalho ChehabMemory address of link list
2472*577a7ad3SMauro Carvalho Chehab
2473*577a7ad3SMauro Carvalho ChehabParam[1]
2474*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2475*577a7ad3SMauro Carvalho Chehab
2476*577a7ad3SMauro Carvalho ChehabTotal # of bytes to transfer
2477*577a7ad3SMauro Carvalho Chehab
2478*577a7ad3SMauro Carvalho ChehabParam[2]
2479*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2480*577a7ad3SMauro Carvalho Chehab
2481*577a7ad3SMauro Carvalho ChehabDMA type (0=MPEG, 1=OSD, 2=YUV)
2482*577a7ad3SMauro Carvalho Chehab
2483*577a7ad3SMauro Carvalho Chehab
2484*577a7ad3SMauro Carvalho Chehab
2485*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_PAUSE_PLAYBACK
2486*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
2487*577a7ad3SMauro Carvalho Chehab
2488*577a7ad3SMauro Carvalho ChehabEnum: 13/0x0D
2489*577a7ad3SMauro Carvalho Chehab
2490*577a7ad3SMauro Carvalho ChehabDescription
2491*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2492*577a7ad3SMauro Carvalho Chehab
2493*577a7ad3SMauro Carvalho ChehabFreeze playback immediately. In this mode, when internal buffers are
2494*577a7ad3SMauro Carvalho Chehabfull, no more data will be accepted and data request IRQs will be
2495*577a7ad3SMauro Carvalho Chehabmasked.
2496*577a7ad3SMauro Carvalho Chehab
2497*577a7ad3SMauro Carvalho ChehabParam[0]
2498*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2499*577a7ad3SMauro Carvalho Chehab
2500*577a7ad3SMauro Carvalho ChehabDisplay: 0=last frame, 1=black
2501*577a7ad3SMauro Carvalho Chehab
2502*577a7ad3SMauro Carvalho Chehab
2503*577a7ad3SMauro Carvalho Chehab
2504*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_HALT_FW
2505*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~
2506*577a7ad3SMauro Carvalho Chehab
2507*577a7ad3SMauro Carvalho ChehabEnum: 14/0x0E
2508*577a7ad3SMauro Carvalho Chehab
2509*577a7ad3SMauro Carvalho ChehabDescription
2510*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2511*577a7ad3SMauro Carvalho Chehab
2512*577a7ad3SMauro Carvalho ChehabThe firmware is halted and no further API calls are serviced until
2513*577a7ad3SMauro Carvalho Chehabthe firmware is uploaded again.
2514*577a7ad3SMauro Carvalho Chehab
2515*577a7ad3SMauro Carvalho Chehab
2516*577a7ad3SMauro Carvalho Chehab
2517*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_STANDARD
2518*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~
2519*577a7ad3SMauro Carvalho Chehab
2520*577a7ad3SMauro Carvalho ChehabEnum: 16/0x10
2521*577a7ad3SMauro Carvalho Chehab
2522*577a7ad3SMauro Carvalho ChehabDescription
2523*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2524*577a7ad3SMauro Carvalho Chehab
2525*577a7ad3SMauro Carvalho ChehabSelects display standard
2526*577a7ad3SMauro Carvalho Chehab
2527*577a7ad3SMauro Carvalho ChehabParam[0]
2528*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2529*577a7ad3SMauro Carvalho Chehab
2530*577a7ad3SMauro Carvalho Chehab0=NTSC, 1=PAL
2531*577a7ad3SMauro Carvalho Chehab
2532*577a7ad3SMauro Carvalho Chehab
2533*577a7ad3SMauro Carvalho Chehab
2534*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_GET_VERSION
2535*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~
2536*577a7ad3SMauro Carvalho Chehab
2537*577a7ad3SMauro Carvalho ChehabEnum: 17/0x11
2538*577a7ad3SMauro Carvalho Chehab
2539*577a7ad3SMauro Carvalho ChehabDescription
2540*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2541*577a7ad3SMauro Carvalho Chehab
2542*577a7ad3SMauro Carvalho ChehabReturns decoder firmware version information
2543*577a7ad3SMauro Carvalho Chehab
2544*577a7ad3SMauro Carvalho ChehabResult[0]
2545*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2546*577a7ad3SMauro Carvalho Chehab
2547*577a7ad3SMauro Carvalho ChehabVersion bitmask:
2548*577a7ad3SMauro Carvalho Chehab	- Bits  0:15 build
2549*577a7ad3SMauro Carvalho Chehab	- Bits 16:23 minor
2550*577a7ad3SMauro Carvalho Chehab	- Bits 24:31 major
2551*577a7ad3SMauro Carvalho Chehab
2552*577a7ad3SMauro Carvalho Chehab
2553*577a7ad3SMauro Carvalho Chehab
2554*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_STREAM_INPUT
2555*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2556*577a7ad3SMauro Carvalho Chehab
2557*577a7ad3SMauro Carvalho ChehabEnum: 20/0x14
2558*577a7ad3SMauro Carvalho Chehab
2559*577a7ad3SMauro Carvalho ChehabDescription
2560*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2561*577a7ad3SMauro Carvalho Chehab
2562*577a7ad3SMauro Carvalho ChehabSelect decoder stream input port
2563*577a7ad3SMauro Carvalho Chehab
2564*577a7ad3SMauro Carvalho ChehabParam[0]
2565*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2566*577a7ad3SMauro Carvalho Chehab
2567*577a7ad3SMauro Carvalho Chehab0=memory (default), 1=streaming
2568*577a7ad3SMauro Carvalho Chehab
2569*577a7ad3SMauro Carvalho Chehab
2570*577a7ad3SMauro Carvalho Chehab
2571*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_GET_TIMING_INFO
2572*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
2573*577a7ad3SMauro Carvalho Chehab
2574*577a7ad3SMauro Carvalho ChehabEnum: 21/0x15
2575*577a7ad3SMauro Carvalho Chehab
2576*577a7ad3SMauro Carvalho ChehabDescription
2577*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2578*577a7ad3SMauro Carvalho Chehab
2579*577a7ad3SMauro Carvalho ChehabReturns timing information from start of playback
2580*577a7ad3SMauro Carvalho Chehab
2581*577a7ad3SMauro Carvalho ChehabResult[0]
2582*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2583*577a7ad3SMauro Carvalho Chehab
2584*577a7ad3SMauro Carvalho ChehabFrame count by decode order
2585*577a7ad3SMauro Carvalho Chehab
2586*577a7ad3SMauro Carvalho ChehabResult[1]
2587*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2588*577a7ad3SMauro Carvalho Chehab
2589*577a7ad3SMauro Carvalho ChehabVideo PTS bits 0:31 by display order
2590*577a7ad3SMauro Carvalho Chehab
2591*577a7ad3SMauro Carvalho ChehabResult[2]
2592*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2593*577a7ad3SMauro Carvalho Chehab
2594*577a7ad3SMauro Carvalho ChehabVideo PTS bit 32 by display order
2595*577a7ad3SMauro Carvalho Chehab
2596*577a7ad3SMauro Carvalho ChehabResult[3]
2597*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2598*577a7ad3SMauro Carvalho Chehab
2599*577a7ad3SMauro Carvalho ChehabSCR bits 0:31 by display order
2600*577a7ad3SMauro Carvalho Chehab
2601*577a7ad3SMauro Carvalho ChehabResult[4]
2602*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2603*577a7ad3SMauro Carvalho Chehab
2604*577a7ad3SMauro Carvalho ChehabSCR bit 32 by display order
2605*577a7ad3SMauro Carvalho Chehab
2606*577a7ad3SMauro Carvalho Chehab
2607*577a7ad3SMauro Carvalho Chehab
2608*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_AUDIO_MODE
2609*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
2610*577a7ad3SMauro Carvalho Chehab
2611*577a7ad3SMauro Carvalho ChehabEnum: 22/0x16
2612*577a7ad3SMauro Carvalho Chehab
2613*577a7ad3SMauro Carvalho ChehabDescription
2614*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2615*577a7ad3SMauro Carvalho Chehab
2616*577a7ad3SMauro Carvalho ChehabSelect audio mode
2617*577a7ad3SMauro Carvalho Chehab
2618*577a7ad3SMauro Carvalho ChehabParam[0]
2619*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2620*577a7ad3SMauro Carvalho Chehab
2621*577a7ad3SMauro Carvalho ChehabDual mono mode action
2622*577a7ad3SMauro Carvalho Chehab	0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged
2623*577a7ad3SMauro Carvalho Chehab
2624*577a7ad3SMauro Carvalho ChehabParam[1]
2625*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2626*577a7ad3SMauro Carvalho Chehab
2627*577a7ad3SMauro Carvalho ChehabStereo mode action:
2628*577a7ad3SMauro Carvalho Chehab	0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged
2629*577a7ad3SMauro Carvalho Chehab
2630*577a7ad3SMauro Carvalho Chehab
2631*577a7ad3SMauro Carvalho Chehab
2632*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_EVENT_NOTIFICATION
2633*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2634*577a7ad3SMauro Carvalho Chehab
2635*577a7ad3SMauro Carvalho ChehabEnum: 23/0x17
2636*577a7ad3SMauro Carvalho Chehab
2637*577a7ad3SMauro Carvalho ChehabDescription
2638*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2639*577a7ad3SMauro Carvalho Chehab
2640*577a7ad3SMauro Carvalho ChehabSetup firmware to notify the host about a particular event.
2641*577a7ad3SMauro Carvalho ChehabCounterpart to API 0xD5
2642*577a7ad3SMauro Carvalho Chehab
2643*577a7ad3SMauro Carvalho ChehabParam[0]
2644*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2645*577a7ad3SMauro Carvalho Chehab
2646*577a7ad3SMauro Carvalho ChehabEvent:
2647*577a7ad3SMauro Carvalho Chehab	- 0=Audio mode change between mono, (joint) stereo and dual channel.
2648*577a7ad3SMauro Carvalho Chehab	- 3=Decoder started
2649*577a7ad3SMauro Carvalho Chehab	- 4=Unknown: goes off 10-15 times per second while decoding.
2650*577a7ad3SMauro Carvalho Chehab	- 5=Some sync event: goes off once per frame.
2651*577a7ad3SMauro Carvalho Chehab
2652*577a7ad3SMauro Carvalho ChehabParam[1]
2653*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2654*577a7ad3SMauro Carvalho Chehab
2655*577a7ad3SMauro Carvalho ChehabNotification 0=disabled, 1=enabled
2656*577a7ad3SMauro Carvalho Chehab
2657*577a7ad3SMauro Carvalho ChehabParam[2]
2658*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2659*577a7ad3SMauro Carvalho Chehab
2660*577a7ad3SMauro Carvalho ChehabInterrupt bit
2661*577a7ad3SMauro Carvalho Chehab
2662*577a7ad3SMauro Carvalho ChehabParam[3]
2663*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2664*577a7ad3SMauro Carvalho Chehab
2665*577a7ad3SMauro Carvalho ChehabMailbox slot, -1 if no mailbox required.
2666*577a7ad3SMauro Carvalho Chehab
2667*577a7ad3SMauro Carvalho Chehab
2668*577a7ad3SMauro Carvalho Chehab
2669*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_DISPLAY_BUFFERS
2670*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2671*577a7ad3SMauro Carvalho Chehab
2672*577a7ad3SMauro Carvalho ChehabEnum: 24/0x18
2673*577a7ad3SMauro Carvalho Chehab
2674*577a7ad3SMauro Carvalho ChehabDescription
2675*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2676*577a7ad3SMauro Carvalho Chehab
2677*577a7ad3SMauro Carvalho ChehabNumber of display buffers. To decode all frames in reverse playback you
2678*577a7ad3SMauro Carvalho Chehabmust use nine buffers.
2679*577a7ad3SMauro Carvalho Chehab
2680*577a7ad3SMauro Carvalho ChehabParam[0]
2681*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2682*577a7ad3SMauro Carvalho Chehab
2683*577a7ad3SMauro Carvalho Chehab0=six buffers, 1=nine buffers
2684*577a7ad3SMauro Carvalho Chehab
2685*577a7ad3SMauro Carvalho Chehab
2686*577a7ad3SMauro Carvalho Chehab
2687*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_EXTRACT_VBI
2688*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~
2689*577a7ad3SMauro Carvalho Chehab
2690*577a7ad3SMauro Carvalho ChehabEnum: 25/0x19
2691*577a7ad3SMauro Carvalho Chehab
2692*577a7ad3SMauro Carvalho ChehabDescription
2693*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2694*577a7ad3SMauro Carvalho Chehab
2695*577a7ad3SMauro Carvalho ChehabExtracts VBI data
2696*577a7ad3SMauro Carvalho Chehab
2697*577a7ad3SMauro Carvalho ChehabParam[0]
2698*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2699*577a7ad3SMauro Carvalho Chehab
2700*577a7ad3SMauro Carvalho Chehab0=extract from extension & user data, 1=extract from private packets
2701*577a7ad3SMauro Carvalho Chehab
2702*577a7ad3SMauro Carvalho ChehabResult[0]
2703*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2704*577a7ad3SMauro Carvalho Chehab
2705*577a7ad3SMauro Carvalho ChehabVBI table location
2706*577a7ad3SMauro Carvalho Chehab
2707*577a7ad3SMauro Carvalho ChehabResult[1]
2708*577a7ad3SMauro Carvalho Chehab^^^^^^^^^
2709*577a7ad3SMauro Carvalho Chehab
2710*577a7ad3SMauro Carvalho ChehabVBI table size
2711*577a7ad3SMauro Carvalho Chehab
2712*577a7ad3SMauro Carvalho Chehab
2713*577a7ad3SMauro Carvalho Chehab
2714*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_DECODER_SOURCE
2715*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2716*577a7ad3SMauro Carvalho Chehab
2717*577a7ad3SMauro Carvalho ChehabEnum: 26/0x1A
2718*577a7ad3SMauro Carvalho Chehab
2719*577a7ad3SMauro Carvalho ChehabDescription
2720*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2721*577a7ad3SMauro Carvalho Chehab
2722*577a7ad3SMauro Carvalho ChehabSelects decoder source. Ensure that the parameters passed to this
2723*577a7ad3SMauro Carvalho ChehabAPI match the encoder settings.
2724*577a7ad3SMauro Carvalho Chehab
2725*577a7ad3SMauro Carvalho ChehabParam[0]
2726*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2727*577a7ad3SMauro Carvalho Chehab
2728*577a7ad3SMauro Carvalho ChehabMode: 0=MPEG from host, 1=YUV from encoder, 2=YUV from host
2729*577a7ad3SMauro Carvalho Chehab
2730*577a7ad3SMauro Carvalho ChehabParam[1]
2731*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2732*577a7ad3SMauro Carvalho Chehab
2733*577a7ad3SMauro Carvalho ChehabYUV picture width
2734*577a7ad3SMauro Carvalho Chehab
2735*577a7ad3SMauro Carvalho ChehabParam[2]
2736*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2737*577a7ad3SMauro Carvalho Chehab
2738*577a7ad3SMauro Carvalho ChehabYUV picture height
2739*577a7ad3SMauro Carvalho Chehab
2740*577a7ad3SMauro Carvalho ChehabParam[3]
2741*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2742*577a7ad3SMauro Carvalho Chehab
2743*577a7ad3SMauro Carvalho ChehabBitmap: see Param[0] of API 0xBD
2744*577a7ad3SMauro Carvalho Chehab
2745*577a7ad3SMauro Carvalho Chehab
2746*577a7ad3SMauro Carvalho Chehab
2747*577a7ad3SMauro Carvalho ChehabCX2341X_DEC_SET_PREBUFFERING
2748*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2749*577a7ad3SMauro Carvalho Chehab
2750*577a7ad3SMauro Carvalho ChehabEnum: 30/0x1E
2751*577a7ad3SMauro Carvalho Chehab
2752*577a7ad3SMauro Carvalho ChehabDescription
2753*577a7ad3SMauro Carvalho Chehab^^^^^^^^^^^
2754*577a7ad3SMauro Carvalho Chehab
2755*577a7ad3SMauro Carvalho ChehabDecoder prebuffering, when enabled up to 128KB are buffered for
2756*577a7ad3SMauro Carvalho Chehabstreams <8mpbs or 640KB for streams >8mbps
2757*577a7ad3SMauro Carvalho Chehab
2758*577a7ad3SMauro Carvalho ChehabParam[0]
2759*577a7ad3SMauro Carvalho Chehab^^^^^^^^
2760*577a7ad3SMauro Carvalho Chehab
2761*577a7ad3SMauro Carvalho Chehab0=off, 1=on
2762*577a7ad3SMauro Carvalho Chehab
2763*577a7ad3SMauro Carvalho ChehabPVR350 Video decoder registers 0x02002800 -> 0x02002B00
2764*577a7ad3SMauro Carvalho Chehab-------------------------------------------------------
2765*577a7ad3SMauro Carvalho Chehab
2766*577a7ad3SMauro Carvalho ChehabAuthor: Ian Armstrong <ian@iarmst.demon.co.uk>
2767*577a7ad3SMauro Carvalho Chehab
2768*577a7ad3SMauro Carvalho ChehabVersion: v0.4
2769*577a7ad3SMauro Carvalho Chehab
2770*577a7ad3SMauro Carvalho ChehabDate: 12 March 2007
2771*577a7ad3SMauro Carvalho Chehab
2772*577a7ad3SMauro Carvalho Chehab
2773*577a7ad3SMauro Carvalho ChehabThis list has been worked out through trial and error. There will be mistakes
2774*577a7ad3SMauro Carvalho Chehaband omissions. Some registers have no obvious effect so it's hard to say what
2775*577a7ad3SMauro Carvalho Chehabthey do, while others interact with each other, or require a certain load
2776*577a7ad3SMauro Carvalho Chehabsequence. Horizontal filter setup is one example, with six registers working
2777*577a7ad3SMauro Carvalho Chehabin unison and requiring a certain load sequence to correctly configure. The
2778*577a7ad3SMauro Carvalho Chehabindexed colour palette is much easier to set at just two registers, but again
2779*577a7ad3SMauro Carvalho Chehabit requires a certain load sequence.
2780*577a7ad3SMauro Carvalho Chehab
2781*577a7ad3SMauro Carvalho ChehabSome registers are fussy about what they are set to. Load in a bad value & the
2782*577a7ad3SMauro Carvalho Chehabdecoder will fail. A firmware reload will often recover, but sometimes a reset
2783*577a7ad3SMauro Carvalho Chehabis required. For registers containing size information, setting them to 0 is
2784*577a7ad3SMauro Carvalho Chehabgenerally a bad idea. For other control registers i.e. 2878, you'll only find
2785*577a7ad3SMauro Carvalho Chehabout what values are bad when it hangs.
2786*577a7ad3SMauro Carvalho Chehab
2787*577a7ad3SMauro Carvalho Chehab.. code-block:: none
2788*577a7ad3SMauro Carvalho Chehab
2789*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2790*577a7ad3SMauro Carvalho Chehab	2800
2791*577a7ad3SMauro Carvalho Chehab	bit 0
2792*577a7ad3SMauro Carvalho Chehab		Decoder enable
2793*577a7ad3SMauro Carvalho Chehab		0 = disable
2794*577a7ad3SMauro Carvalho Chehab		1 = enable
2795*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2796*577a7ad3SMauro Carvalho Chehab	2804
2797*577a7ad3SMauro Carvalho Chehab	bits 0:31
2798*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y alias register 1
2799*577a7ad3SMauro Carvalho Chehab	---------------
2800*577a7ad3SMauro Carvalho Chehab	2808
2801*577a7ad3SMauro Carvalho Chehab	bits 0:31
2802*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y alias register 2
2803*577a7ad3SMauro Carvalho Chehab	---------------
2804*577a7ad3SMauro Carvalho Chehab	280C
2805*577a7ad3SMauro Carvalho Chehab	bits 0:31
2806*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y alias register 3
2807*577a7ad3SMauro Carvalho Chehab	---------------
2808*577a7ad3SMauro Carvalho Chehab	2810
2809*577a7ad3SMauro Carvalho Chehab	bits 0:31
2810*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y alias register 4
2811*577a7ad3SMauro Carvalho Chehab	---------------
2812*577a7ad3SMauro Carvalho Chehab	2814
2813*577a7ad3SMauro Carvalho Chehab	bits 0:31
2814*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y alias register 5
2815*577a7ad3SMauro Carvalho Chehab	---------------
2816*577a7ad3SMauro Carvalho Chehab	2818
2817*577a7ad3SMauro Carvalho Chehab	bits 0:31
2818*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y alias trigger
2819*577a7ad3SMauro Carvalho Chehab
2820*577a7ad3SMauro Carvalho Chehab	These six registers control the horizontal aliasing filter for the Y plane.
2821*577a7ad3SMauro Carvalho Chehab	The first five registers must all be loaded before accessing the trigger
2822*577a7ad3SMauro Carvalho Chehab	(2818), as this register actually clocks the data through for the first
2823*577a7ad3SMauro Carvalho Chehab	five.
2824*577a7ad3SMauro Carvalho Chehab
2825*577a7ad3SMauro Carvalho Chehab	To correctly program set the filter, this whole procedure must be done 16
2826*577a7ad3SMauro Carvalho Chehab	times. The actual register contents are copied from a lookup-table in the
2827*577a7ad3SMauro Carvalho Chehab	firmware which contains 4 different filter settings.
2828*577a7ad3SMauro Carvalho Chehab
2829*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2830*577a7ad3SMauro Carvalho Chehab	281C
2831*577a7ad3SMauro Carvalho Chehab	bits 0:31
2832*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV alias register 1
2833*577a7ad3SMauro Carvalho Chehab	---------------
2834*577a7ad3SMauro Carvalho Chehab	2820
2835*577a7ad3SMauro Carvalho Chehab	bits 0:31
2836*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV alias register 2
2837*577a7ad3SMauro Carvalho Chehab	---------------
2838*577a7ad3SMauro Carvalho Chehab	2824
2839*577a7ad3SMauro Carvalho Chehab	bits 0:31
2840*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV alias register 3
2841*577a7ad3SMauro Carvalho Chehab	---------------
2842*577a7ad3SMauro Carvalho Chehab	2828
2843*577a7ad3SMauro Carvalho Chehab	bits 0:31
2844*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV alias register 4
2845*577a7ad3SMauro Carvalho Chehab	---------------
2846*577a7ad3SMauro Carvalho Chehab	282C
2847*577a7ad3SMauro Carvalho Chehab	bits 0:31
2848*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV alias register 5
2849*577a7ad3SMauro Carvalho Chehab	---------------
2850*577a7ad3SMauro Carvalho Chehab	2830
2851*577a7ad3SMauro Carvalho Chehab	bits 0:31
2852*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV alias trigger
2853*577a7ad3SMauro Carvalho Chehab
2854*577a7ad3SMauro Carvalho Chehab	These six registers control the horizontal aliasing for the UV plane.
2855*577a7ad3SMauro Carvalho Chehab	Operation is the same as the Y filter, with 2830 being the trigger
2856*577a7ad3SMauro Carvalho Chehab	register.
2857*577a7ad3SMauro Carvalho Chehab
2858*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2859*577a7ad3SMauro Carvalho Chehab	2834
2860*577a7ad3SMauro Carvalho Chehab	bits 0:15
2861*577a7ad3SMauro Carvalho Chehab		Decoder Y source width in pixels
2862*577a7ad3SMauro Carvalho Chehab
2863*577a7ad3SMauro Carvalho Chehab	bits 16:31
2864*577a7ad3SMauro Carvalho Chehab		Decoder Y destination width in pixels
2865*577a7ad3SMauro Carvalho Chehab	---------------
2866*577a7ad3SMauro Carvalho Chehab	2838
2867*577a7ad3SMauro Carvalho Chehab	bits 0:15
2868*577a7ad3SMauro Carvalho Chehab		Decoder UV source width in pixels
2869*577a7ad3SMauro Carvalho Chehab
2870*577a7ad3SMauro Carvalho Chehab	bits 16:31
2871*577a7ad3SMauro Carvalho Chehab		Decoder UV destination width in pixels
2872*577a7ad3SMauro Carvalho Chehab
2873*577a7ad3SMauro Carvalho Chehab	NOTE: For both registers, the resulting image must be fully visible on
2874*577a7ad3SMauro Carvalho Chehab	screen. If the image exceeds the right edge both the source and destination
2875*577a7ad3SMauro Carvalho Chehab	size must be adjusted to reflect the visible portion. For the source width,
2876*577a7ad3SMauro Carvalho Chehab	you must take into account the scaling when calculating the new value.
2877*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2878*577a7ad3SMauro Carvalho Chehab
2879*577a7ad3SMauro Carvalho Chehab	283C
2880*577a7ad3SMauro Carvalho Chehab	bits 0:31
2881*577a7ad3SMauro Carvalho Chehab		Decoder Y horizontal scaling
2882*577a7ad3SMauro Carvalho Chehab			Normally = Reg 2854 >> 2
2883*577a7ad3SMauro Carvalho Chehab	---------------
2884*577a7ad3SMauro Carvalho Chehab	2840
2885*577a7ad3SMauro Carvalho Chehab	bits 0:31
2886*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - horizontal scaling
2887*577a7ad3SMauro Carvalho Chehab		Usually 0x00080514
2888*577a7ad3SMauro Carvalho Chehab	---------------
2889*577a7ad3SMauro Carvalho Chehab	2844
2890*577a7ad3SMauro Carvalho Chehab	bits 0:31
2891*577a7ad3SMauro Carvalho Chehab		Decoder UV horizontal scaling
2892*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2854 >> 2
2893*577a7ad3SMauro Carvalho Chehab	---------------
2894*577a7ad3SMauro Carvalho Chehab	2848
2895*577a7ad3SMauro Carvalho Chehab	bits 0:31
2896*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - horizontal scaling
2897*577a7ad3SMauro Carvalho Chehab		Usually 0x00100514
2898*577a7ad3SMauro Carvalho Chehab	---------------
2899*577a7ad3SMauro Carvalho Chehab	284C
2900*577a7ad3SMauro Carvalho Chehab	bits 0:31
2901*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - Y plane
2902*577a7ad3SMauro Carvalho Chehab		Usually 0x00200020
2903*577a7ad3SMauro Carvalho Chehab	---------------
2904*577a7ad3SMauro Carvalho Chehab	2850
2905*577a7ad3SMauro Carvalho Chehab	bits 0:31
2906*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - UV plane
2907*577a7ad3SMauro Carvalho Chehab		Usually 0x00200020
2908*577a7ad3SMauro Carvalho Chehab	---------------
2909*577a7ad3SMauro Carvalho Chehab	2854
2910*577a7ad3SMauro Carvalho Chehab	bits 0:31
2911*577a7ad3SMauro Carvalho Chehab		Decoder 'master' value for horizontal scaling
2912*577a7ad3SMauro Carvalho Chehab	---------------
2913*577a7ad3SMauro Carvalho Chehab	2858
2914*577a7ad3SMauro Carvalho Chehab	bits 0:31
2915*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
2916*577a7ad3SMauro Carvalho Chehab		Usually 0
2917*577a7ad3SMauro Carvalho Chehab	---------------
2918*577a7ad3SMauro Carvalho Chehab	285C
2919*577a7ad3SMauro Carvalho Chehab	bits 0:31
2920*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
2921*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2854 >> 1
2922*577a7ad3SMauro Carvalho Chehab	---------------
2923*577a7ad3SMauro Carvalho Chehab	2860
2924*577a7ad3SMauro Carvalho Chehab	bits 0:31
2925*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
2926*577a7ad3SMauro Carvalho Chehab		Usually 0
2927*577a7ad3SMauro Carvalho Chehab	---------------
2928*577a7ad3SMauro Carvalho Chehab	2864
2929*577a7ad3SMauro Carvalho Chehab	bits 0:31
2930*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
2931*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2854 >> 1
2932*577a7ad3SMauro Carvalho Chehab	---------------
2933*577a7ad3SMauro Carvalho Chehab	2868
2934*577a7ad3SMauro Carvalho Chehab	bits 0:31
2935*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
2936*577a7ad3SMauro Carvalho Chehab		Usually 0
2937*577a7ad3SMauro Carvalho Chehab
2938*577a7ad3SMauro Carvalho Chehab	Most of these registers either control horizontal scaling, or appear linked
2939*577a7ad3SMauro Carvalho Chehab	to it in some way. Register 2854 contains the 'master' value & the other
2940*577a7ad3SMauro Carvalho Chehab	registers can be calculated from that one. You must also remember to
2941*577a7ad3SMauro Carvalho Chehab	correctly set the divider in Reg 2874.
2942*577a7ad3SMauro Carvalho Chehab
2943*577a7ad3SMauro Carvalho Chehab	To enlarge:
2944*577a7ad3SMauro Carvalho Chehab		Reg 2854 = (source_width * 0x00200000) / destination_width
2945*577a7ad3SMauro Carvalho Chehab		Reg 2874 = No divide
2946*577a7ad3SMauro Carvalho Chehab
2947*577a7ad3SMauro Carvalho Chehab	To reduce from full size down to half size:
2948*577a7ad3SMauro Carvalho Chehab		Reg 2854 = (source_width/2 * 0x00200000) / destination width
2949*577a7ad3SMauro Carvalho Chehab		Reg 2874 = Divide by 2
2950*577a7ad3SMauro Carvalho Chehab
2951*577a7ad3SMauro Carvalho Chehab	To reduce from half size down to quarter size:
2952*577a7ad3SMauro Carvalho Chehab		Reg 2854 = (source_width/4 * 0x00200000) / destination width
2953*577a7ad3SMauro Carvalho Chehab		Reg 2874 = Divide by 4
2954*577a7ad3SMauro Carvalho Chehab
2955*577a7ad3SMauro Carvalho Chehab	The result is always rounded up.
2956*577a7ad3SMauro Carvalho Chehab
2957*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2958*577a7ad3SMauro Carvalho Chehab	286C
2959*577a7ad3SMauro Carvalho Chehab	bits 0:15
2960*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y buffer offset
2961*577a7ad3SMauro Carvalho Chehab
2962*577a7ad3SMauro Carvalho Chehab	bits 15:31
2963*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV buffer offset
2964*577a7ad3SMauro Carvalho Chehab
2965*577a7ad3SMauro Carvalho Chehab	Offset into the video image buffer. If the offset is gradually incremented,
2966*577a7ad3SMauro Carvalho Chehab	the on screen image will move left & wrap around higher up on the right.
2967*577a7ad3SMauro Carvalho Chehab
2968*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2969*577a7ad3SMauro Carvalho Chehab	2870
2970*577a7ad3SMauro Carvalho Chehab	bits 0:15
2971*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y output offset
2972*577a7ad3SMauro Carvalho Chehab
2973*577a7ad3SMauro Carvalho Chehab	bits 16:31
2974*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV output offset
2975*577a7ad3SMauro Carvalho Chehab
2976*577a7ad3SMauro Carvalho Chehab	Offsets the actual video output. Controls output alignment of the Y & UV
2977*577a7ad3SMauro Carvalho Chehab	planes. The higher the value, the greater the shift to the left. Use
2978*577a7ad3SMauro Carvalho Chehab	reg 2890 to move the image right.
2979*577a7ad3SMauro Carvalho Chehab
2980*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
2981*577a7ad3SMauro Carvalho Chehab	2874
2982*577a7ad3SMauro Carvalho Chehab	bits 0:1
2983*577a7ad3SMauro Carvalho Chehab		Decoder horizontal Y output size divider
2984*577a7ad3SMauro Carvalho Chehab		00 = No divide
2985*577a7ad3SMauro Carvalho Chehab		01 = Divide by 2
2986*577a7ad3SMauro Carvalho Chehab		10 = Divide by 3
2987*577a7ad3SMauro Carvalho Chehab
2988*577a7ad3SMauro Carvalho Chehab	bits 4:5
2989*577a7ad3SMauro Carvalho Chehab		Decoder horizontal UV output size divider
2990*577a7ad3SMauro Carvalho Chehab		00 = No divide
2991*577a7ad3SMauro Carvalho Chehab		01 = Divide by 2
2992*577a7ad3SMauro Carvalho Chehab		10 = Divide by 3
2993*577a7ad3SMauro Carvalho Chehab
2994*577a7ad3SMauro Carvalho Chehab	bit 8
2995*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
2996*577a7ad3SMauro Carvalho Chehab		0 = Normal
2997*577a7ad3SMauro Carvalho Chehab		1 = Affects video output levels
2998*577a7ad3SMauro Carvalho Chehab
2999*577a7ad3SMauro Carvalho Chehab	bit 16
3000*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
3001*577a7ad3SMauro Carvalho Chehab		0 = Normal
3002*577a7ad3SMauro Carvalho Chehab		1 = Disable horizontal filter
3003*577a7ad3SMauro Carvalho Chehab
3004*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3005*577a7ad3SMauro Carvalho Chehab	2878
3006*577a7ad3SMauro Carvalho Chehab	bit 0
3007*577a7ad3SMauro Carvalho Chehab		?? unknown
3008*577a7ad3SMauro Carvalho Chehab
3009*577a7ad3SMauro Carvalho Chehab	bit 1
3010*577a7ad3SMauro Carvalho Chehab		osd on/off
3011*577a7ad3SMauro Carvalho Chehab		0 = osd off
3012*577a7ad3SMauro Carvalho Chehab		1 = osd on
3013*577a7ad3SMauro Carvalho Chehab
3014*577a7ad3SMauro Carvalho Chehab	bit 2
3015*577a7ad3SMauro Carvalho Chehab		Decoder + osd video timing
3016*577a7ad3SMauro Carvalho Chehab		0 = NTSC
3017*577a7ad3SMauro Carvalho Chehab		1 = PAL
3018*577a7ad3SMauro Carvalho Chehab
3019*577a7ad3SMauro Carvalho Chehab	bits 3:4
3020*577a7ad3SMauro Carvalho Chehab		?? unknown
3021*577a7ad3SMauro Carvalho Chehab
3022*577a7ad3SMauro Carvalho Chehab	bit 5
3023*577a7ad3SMauro Carvalho Chehab		Decoder + osd
3024*577a7ad3SMauro Carvalho Chehab		Swaps upper & lower fields
3025*577a7ad3SMauro Carvalho Chehab
3026*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3027*577a7ad3SMauro Carvalho Chehab	287C
3028*577a7ad3SMauro Carvalho Chehab	bits 0:10
3029*577a7ad3SMauro Carvalho Chehab		Decoder & osd ?? unknown
3030*577a7ad3SMauro Carvalho Chehab		Moves entire screen horizontally. Starts at 0x005 with the screen
3031*577a7ad3SMauro Carvalho Chehab		shifted heavily to the right. Incrementing in steps of 0x004 will
3032*577a7ad3SMauro Carvalho Chehab		gradually shift the screen to the left.
3033*577a7ad3SMauro Carvalho Chehab
3034*577a7ad3SMauro Carvalho Chehab	bits 11:31
3035*577a7ad3SMauro Carvalho Chehab		?? unknown
3036*577a7ad3SMauro Carvalho Chehab
3037*577a7ad3SMauro Carvalho Chehab	Normally contents are 0x00101111 (NTSC) or 0x1010111d (PAL)
3038*577a7ad3SMauro Carvalho Chehab
3039*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3040*577a7ad3SMauro Carvalho Chehab	2880  --------    ?? unknown
3041*577a7ad3SMauro Carvalho Chehab	2884  --------    ?? unknown
3042*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3043*577a7ad3SMauro Carvalho Chehab	2888
3044*577a7ad3SMauro Carvalho Chehab	bit 0
3045*577a7ad3SMauro Carvalho Chehab		Decoder + osd ?? unknown
3046*577a7ad3SMauro Carvalho Chehab		0 = Normal
3047*577a7ad3SMauro Carvalho Chehab		1 = Misaligned fields (Correctable through 289C & 28A4)
3048*577a7ad3SMauro Carvalho Chehab
3049*577a7ad3SMauro Carvalho Chehab	bit 4
3050*577a7ad3SMauro Carvalho Chehab		?? unknown
3051*577a7ad3SMauro Carvalho Chehab
3052*577a7ad3SMauro Carvalho Chehab	bit 8
3053*577a7ad3SMauro Carvalho Chehab		?? unknown
3054*577a7ad3SMauro Carvalho Chehab
3055*577a7ad3SMauro Carvalho Chehab	Warning: Bad values will require a firmware reload to recover.
3056*577a7ad3SMauro Carvalho Chehab			Known to be bad are 0x000,0x011,0x100,0x111
3057*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3058*577a7ad3SMauro Carvalho Chehab	288C
3059*577a7ad3SMauro Carvalho Chehab	bits 0:15
3060*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3061*577a7ad3SMauro Carvalho Chehab		Appears to affect the osd position stability. The higher the value the
3062*577a7ad3SMauro Carvalho Chehab		more unstable it becomes. Decoder output remains stable.
3063*577a7ad3SMauro Carvalho Chehab
3064*577a7ad3SMauro Carvalho Chehab	bits 16:31
3065*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3066*577a7ad3SMauro Carvalho Chehab		Same as bits 0:15
3067*577a7ad3SMauro Carvalho Chehab
3068*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3069*577a7ad3SMauro Carvalho Chehab	2890
3070*577a7ad3SMauro Carvalho Chehab	bits 0:11
3071*577a7ad3SMauro Carvalho Chehab		Decoder output horizontal offset.
3072*577a7ad3SMauro Carvalho Chehab
3073*577a7ad3SMauro Carvalho Chehab	Horizontal offset moves the video image right. A small left shift is
3074*577a7ad3SMauro Carvalho Chehab	possible, but it's better to use reg 2870 for that due to its greater
3075*577a7ad3SMauro Carvalho Chehab	range.
3076*577a7ad3SMauro Carvalho Chehab
3077*577a7ad3SMauro Carvalho Chehab	NOTE: Video corruption will occur if video window is shifted off the right
3078*577a7ad3SMauro Carvalho Chehab	edge. To avoid this read the notes for 2834 & 2838.
3079*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3080*577a7ad3SMauro Carvalho Chehab	2894
3081*577a7ad3SMauro Carvalho Chehab	bits 0:23
3082*577a7ad3SMauro Carvalho Chehab		Decoder output video surround colour.
3083*577a7ad3SMauro Carvalho Chehab
3084*577a7ad3SMauro Carvalho Chehab	Contains the colour (in yuv) used to fill the screen when the video is
3085*577a7ad3SMauro Carvalho Chehab	running in a window.
3086*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3087*577a7ad3SMauro Carvalho Chehab	2898
3088*577a7ad3SMauro Carvalho Chehab	bits 0:23
3089*577a7ad3SMauro Carvalho Chehab		Decoder video window colour
3090*577a7ad3SMauro Carvalho Chehab		Contains the colour (in yuv) used to fill the video window when the
3091*577a7ad3SMauro Carvalho Chehab		video is turned off.
3092*577a7ad3SMauro Carvalho Chehab
3093*577a7ad3SMauro Carvalho Chehab	bit 24
3094*577a7ad3SMauro Carvalho Chehab		Decoder video output
3095*577a7ad3SMauro Carvalho Chehab		0 = Video on
3096*577a7ad3SMauro Carvalho Chehab		1 = Video off
3097*577a7ad3SMauro Carvalho Chehab
3098*577a7ad3SMauro Carvalho Chehab	bit 28
3099*577a7ad3SMauro Carvalho Chehab		Decoder plane order
3100*577a7ad3SMauro Carvalho Chehab		0 = Y,UV
3101*577a7ad3SMauro Carvalho Chehab		1 = UV,Y
3102*577a7ad3SMauro Carvalho Chehab
3103*577a7ad3SMauro Carvalho Chehab	bit 29
3104*577a7ad3SMauro Carvalho Chehab		Decoder second plane byte order
3105*577a7ad3SMauro Carvalho Chehab		0 = Normal (UV)
3106*577a7ad3SMauro Carvalho Chehab		1 = Swapped (VU)
3107*577a7ad3SMauro Carvalho Chehab
3108*577a7ad3SMauro Carvalho Chehab	In normal usage, the first plane is Y & the second plane is UV. Though the
3109*577a7ad3SMauro Carvalho Chehab	order of the planes can be swapped, only the byte order of the second plane
3110*577a7ad3SMauro Carvalho Chehab	can be swapped. This isn't much use for the Y plane, but can be useful for
3111*577a7ad3SMauro Carvalho Chehab	the UV plane.
3112*577a7ad3SMauro Carvalho Chehab
3113*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3114*577a7ad3SMauro Carvalho Chehab	289C
3115*577a7ad3SMauro Carvalho Chehab	bits 0:15
3116*577a7ad3SMauro Carvalho Chehab		Decoder vertical field offset 1
3117*577a7ad3SMauro Carvalho Chehab
3118*577a7ad3SMauro Carvalho Chehab	bits 16:31
3119*577a7ad3SMauro Carvalho Chehab		Decoder vertical field offset 2
3120*577a7ad3SMauro Carvalho Chehab
3121*577a7ad3SMauro Carvalho Chehab	Controls field output vertical alignment. The higher the number, the lower
3122*577a7ad3SMauro Carvalho Chehab	the image on screen. Known starting values are 0x011E0017 (NTSC) &
3123*577a7ad3SMauro Carvalho Chehab	0x01500017 (PAL)
3124*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3125*577a7ad3SMauro Carvalho Chehab	28A0
3126*577a7ad3SMauro Carvalho Chehab	bits 0:15
3127*577a7ad3SMauro Carvalho Chehab		Decoder & osd width in pixels
3128*577a7ad3SMauro Carvalho Chehab
3129*577a7ad3SMauro Carvalho Chehab	bits 16:31
3130*577a7ad3SMauro Carvalho Chehab		Decoder & osd height in pixels
3131*577a7ad3SMauro Carvalho Chehab
3132*577a7ad3SMauro Carvalho Chehab	All output from the decoder & osd are disabled beyond this area. Decoder
3133*577a7ad3SMauro Carvalho Chehab	output will simply go black outside of this region. If the osd tries to
3134*577a7ad3SMauro Carvalho Chehab	exceed this area it will become corrupt.
3135*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3136*577a7ad3SMauro Carvalho Chehab	28A4
3137*577a7ad3SMauro Carvalho Chehab	bits 0:11
3138*577a7ad3SMauro Carvalho Chehab		osd left shift.
3139*577a7ad3SMauro Carvalho Chehab
3140*577a7ad3SMauro Carvalho Chehab	Has a range of 0x770->0x7FF. With the exception of 0, any value outside of
3141*577a7ad3SMauro Carvalho Chehab	this range corrupts the osd.
3142*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3143*577a7ad3SMauro Carvalho Chehab	28A8
3144*577a7ad3SMauro Carvalho Chehab	bits 0:15
3145*577a7ad3SMauro Carvalho Chehab		osd vertical field offset 1
3146*577a7ad3SMauro Carvalho Chehab
3147*577a7ad3SMauro Carvalho Chehab	bits 16:31
3148*577a7ad3SMauro Carvalho Chehab		osd vertical field offset 2
3149*577a7ad3SMauro Carvalho Chehab
3150*577a7ad3SMauro Carvalho Chehab	Controls field output vertical alignment. The higher the number, the lower
3151*577a7ad3SMauro Carvalho Chehab	the image on screen. Known starting values are 0x011E0017 (NTSC) &
3152*577a7ad3SMauro Carvalho Chehab	0x01500017 (PAL)
3153*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3154*577a7ad3SMauro Carvalho Chehab	28AC  --------    ?? unknown
3155*577a7ad3SMauro Carvalho Chehab	|
3156*577a7ad3SMauro Carvalho Chehab	V
3157*577a7ad3SMauro Carvalho Chehab	28BC  --------    ?? unknown
3158*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3159*577a7ad3SMauro Carvalho Chehab	28C0
3160*577a7ad3SMauro Carvalho Chehab	bit 0
3161*577a7ad3SMauro Carvalho Chehab		Current output field
3162*577a7ad3SMauro Carvalho Chehab		0 = first field
3163*577a7ad3SMauro Carvalho Chehab		1 = second field
3164*577a7ad3SMauro Carvalho Chehab
3165*577a7ad3SMauro Carvalho Chehab	bits 16:31
3166*577a7ad3SMauro Carvalho Chehab		Current scanline
3167*577a7ad3SMauro Carvalho Chehab		The scanline counts from the top line of the first field
3168*577a7ad3SMauro Carvalho Chehab		through to the last line of the second field.
3169*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3170*577a7ad3SMauro Carvalho Chehab	28C4  --------    ?? unknown
3171*577a7ad3SMauro Carvalho Chehab	|
3172*577a7ad3SMauro Carvalho Chehab	V
3173*577a7ad3SMauro Carvalho Chehab	28F8  --------    ?? unknown
3174*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3175*577a7ad3SMauro Carvalho Chehab	28FC
3176*577a7ad3SMauro Carvalho Chehab	bit 0
3177*577a7ad3SMauro Carvalho Chehab		?? unknown
3178*577a7ad3SMauro Carvalho Chehab		0 = Normal
3179*577a7ad3SMauro Carvalho Chehab		1 = Breaks decoder & osd output
3180*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3181*577a7ad3SMauro Carvalho Chehab	2900
3182*577a7ad3SMauro Carvalho Chehab	bits 0:31
3183*577a7ad3SMauro Carvalho Chehab		Decoder vertical Y alias register 1
3184*577a7ad3SMauro Carvalho Chehab	---------------
3185*577a7ad3SMauro Carvalho Chehab	2904
3186*577a7ad3SMauro Carvalho Chehab	bits 0:31
3187*577a7ad3SMauro Carvalho Chehab		Decoder vertical Y alias register 2
3188*577a7ad3SMauro Carvalho Chehab	---------------
3189*577a7ad3SMauro Carvalho Chehab	2908
3190*577a7ad3SMauro Carvalho Chehab	bits 0:31
3191*577a7ad3SMauro Carvalho Chehab		Decoder vertical Y alias trigger
3192*577a7ad3SMauro Carvalho Chehab
3193*577a7ad3SMauro Carvalho Chehab	These three registers control the vertical aliasing filter for the Y plane.
3194*577a7ad3SMauro Carvalho Chehab	Operation is similar to the horizontal Y filter (2804). The only real
3195*577a7ad3SMauro Carvalho Chehab	difference is that there are only two registers to set before accessing
3196*577a7ad3SMauro Carvalho Chehab	the trigger register (2908). As for the horizontal filter, the values are
3197*577a7ad3SMauro Carvalho Chehab	taken from a lookup table in the firmware, and the procedure must be
3198*577a7ad3SMauro Carvalho Chehab	repeated 16 times to fully program the filter.
3199*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3200*577a7ad3SMauro Carvalho Chehab	290C
3201*577a7ad3SMauro Carvalho Chehab	bits 0:31
3202*577a7ad3SMauro Carvalho Chehab		Decoder vertical UV alias register 1
3203*577a7ad3SMauro Carvalho Chehab	---------------
3204*577a7ad3SMauro Carvalho Chehab	2910
3205*577a7ad3SMauro Carvalho Chehab	bits 0:31
3206*577a7ad3SMauro Carvalho Chehab		Decoder vertical UV alias register 2
3207*577a7ad3SMauro Carvalho Chehab	---------------
3208*577a7ad3SMauro Carvalho Chehab	2914
3209*577a7ad3SMauro Carvalho Chehab	bits 0:31
3210*577a7ad3SMauro Carvalho Chehab		Decoder vertical UV alias trigger
3211*577a7ad3SMauro Carvalho Chehab
3212*577a7ad3SMauro Carvalho Chehab	These three registers control the vertical aliasing filter for the UV
3213*577a7ad3SMauro Carvalho Chehab	plane. Operation is the same as the Y filter, with 2914 being the trigger.
3214*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3215*577a7ad3SMauro Carvalho Chehab	2918
3216*577a7ad3SMauro Carvalho Chehab	bits 0:15
3217*577a7ad3SMauro Carvalho Chehab		Decoder Y source height in pixels
3218*577a7ad3SMauro Carvalho Chehab
3219*577a7ad3SMauro Carvalho Chehab	bits 16:31
3220*577a7ad3SMauro Carvalho Chehab		Decoder Y destination height in pixels
3221*577a7ad3SMauro Carvalho Chehab	---------------
3222*577a7ad3SMauro Carvalho Chehab	291C
3223*577a7ad3SMauro Carvalho Chehab	bits 0:15
3224*577a7ad3SMauro Carvalho Chehab		Decoder UV source height in pixels divided by 2
3225*577a7ad3SMauro Carvalho Chehab
3226*577a7ad3SMauro Carvalho Chehab	bits 16:31
3227*577a7ad3SMauro Carvalho Chehab		Decoder UV destination height in pixels
3228*577a7ad3SMauro Carvalho Chehab
3229*577a7ad3SMauro Carvalho Chehab	NOTE: For both registers, the resulting image must be fully visible on
3230*577a7ad3SMauro Carvalho Chehab	screen. If the image exceeds the bottom edge both the source and
3231*577a7ad3SMauro Carvalho Chehab	destination size must be adjusted to reflect the visible portion. For the
3232*577a7ad3SMauro Carvalho Chehab	source height, you must take into account the scaling when calculating the
3233*577a7ad3SMauro Carvalho Chehab	new value.
3234*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3235*577a7ad3SMauro Carvalho Chehab	2920
3236*577a7ad3SMauro Carvalho Chehab	bits 0:31
3237*577a7ad3SMauro Carvalho Chehab		Decoder Y vertical scaling
3238*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2930 >> 2
3239*577a7ad3SMauro Carvalho Chehab	---------------
3240*577a7ad3SMauro Carvalho Chehab	2924
3241*577a7ad3SMauro Carvalho Chehab	bits 0:31
3242*577a7ad3SMauro Carvalho Chehab		Decoder Y vertical scaling
3243*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2920 + 0x514
3244*577a7ad3SMauro Carvalho Chehab	---------------
3245*577a7ad3SMauro Carvalho Chehab	2928
3246*577a7ad3SMauro Carvalho Chehab	bits 0:31
3247*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical scaling
3248*577a7ad3SMauro Carvalho Chehab		When enlarging = Reg 2930 >> 2
3249*577a7ad3SMauro Carvalho Chehab		When reducing = Reg 2930 >> 3
3250*577a7ad3SMauro Carvalho Chehab	---------------
3251*577a7ad3SMauro Carvalho Chehab	292C
3252*577a7ad3SMauro Carvalho Chehab	bits 0:31
3253*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical scaling
3254*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2928 + 0x514
3255*577a7ad3SMauro Carvalho Chehab	---------------
3256*577a7ad3SMauro Carvalho Chehab	2930
3257*577a7ad3SMauro Carvalho Chehab	bits 0:31
3258*577a7ad3SMauro Carvalho Chehab		Decoder 'master' value for vertical scaling
3259*577a7ad3SMauro Carvalho Chehab	---------------
3260*577a7ad3SMauro Carvalho Chehab	2934
3261*577a7ad3SMauro Carvalho Chehab	bits 0:31
3262*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - Y vertical scaling
3263*577a7ad3SMauro Carvalho Chehab	---------------
3264*577a7ad3SMauro Carvalho Chehab	2938
3265*577a7ad3SMauro Carvalho Chehab	bits 0:31
3266*577a7ad3SMauro Carvalho Chehab		Decoder Y vertical scaling
3267*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2930
3268*577a7ad3SMauro Carvalho Chehab	---------------
3269*577a7ad3SMauro Carvalho Chehab	293C
3270*577a7ad3SMauro Carvalho Chehab	bits 0:31
3271*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - Y vertical scaling
3272*577a7ad3SMauro Carvalho Chehab	---------------
3273*577a7ad3SMauro Carvalho Chehab	2940
3274*577a7ad3SMauro Carvalho Chehab	bits 0:31
3275*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical scaling
3276*577a7ad3SMauro Carvalho Chehab		When enlarging = Reg 2930 >> 1
3277*577a7ad3SMauro Carvalho Chehab		When reducing = Reg 2930
3278*577a7ad3SMauro Carvalho Chehab	---------------
3279*577a7ad3SMauro Carvalho Chehab	2944
3280*577a7ad3SMauro Carvalho Chehab	bits 0:31
3281*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - UV vertical scaling
3282*577a7ad3SMauro Carvalho Chehab	---------------
3283*577a7ad3SMauro Carvalho Chehab	2948
3284*577a7ad3SMauro Carvalho Chehab	bits 0:31
3285*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical scaling
3286*577a7ad3SMauro Carvalho Chehab		Normally = Reg 2940
3287*577a7ad3SMauro Carvalho Chehab	---------------
3288*577a7ad3SMauro Carvalho Chehab	294C
3289*577a7ad3SMauro Carvalho Chehab	bits 0:31
3290*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown - UV vertical scaling
3291*577a7ad3SMauro Carvalho Chehab
3292*577a7ad3SMauro Carvalho Chehab	Most of these registers either control vertical scaling, or appear linked
3293*577a7ad3SMauro Carvalho Chehab	to it in some way. Register 2930 contains the 'master' value & all other
3294*577a7ad3SMauro Carvalho Chehab	registers can be calculated from that one. You must also remember to
3295*577a7ad3SMauro Carvalho Chehab	correctly set the divider in Reg 296C
3296*577a7ad3SMauro Carvalho Chehab
3297*577a7ad3SMauro Carvalho Chehab	To enlarge:
3298*577a7ad3SMauro Carvalho Chehab		Reg 2930 = (source_height * 0x00200000) / destination_height
3299*577a7ad3SMauro Carvalho Chehab		Reg 296C = No divide
3300*577a7ad3SMauro Carvalho Chehab
3301*577a7ad3SMauro Carvalho Chehab	To reduce from full size down to half size:
3302*577a7ad3SMauro Carvalho Chehab		Reg 2930 = (source_height/2 * 0x00200000) / destination height
3303*577a7ad3SMauro Carvalho Chehab		Reg 296C = Divide by 2
3304*577a7ad3SMauro Carvalho Chehab
3305*577a7ad3SMauro Carvalho Chehab	To reduce from half down to quarter.
3306*577a7ad3SMauro Carvalho Chehab		Reg 2930 = (source_height/4 * 0x00200000) / destination height
3307*577a7ad3SMauro Carvalho Chehab		Reg 296C = Divide by 4
3308*577a7ad3SMauro Carvalho Chehab
3309*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3310*577a7ad3SMauro Carvalho Chehab	2950
3311*577a7ad3SMauro Carvalho Chehab	bits 0:15
3312*577a7ad3SMauro Carvalho Chehab		Decoder Y line index into display buffer, first field
3313*577a7ad3SMauro Carvalho Chehab
3314*577a7ad3SMauro Carvalho Chehab	bits 16:31
3315*577a7ad3SMauro Carvalho Chehab		Decoder Y vertical line skip, first field
3316*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3317*577a7ad3SMauro Carvalho Chehab	2954
3318*577a7ad3SMauro Carvalho Chehab	bits 0:15
3319*577a7ad3SMauro Carvalho Chehab		Decoder Y line index into display buffer, second field
3320*577a7ad3SMauro Carvalho Chehab
3321*577a7ad3SMauro Carvalho Chehab	bits 16:31
3322*577a7ad3SMauro Carvalho Chehab		Decoder Y vertical line skip, second field
3323*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3324*577a7ad3SMauro Carvalho Chehab	2958
3325*577a7ad3SMauro Carvalho Chehab	bits 0:15
3326*577a7ad3SMauro Carvalho Chehab		Decoder UV line index into display buffer, first field
3327*577a7ad3SMauro Carvalho Chehab
3328*577a7ad3SMauro Carvalho Chehab	bits 16:31
3329*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical line skip, first field
3330*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3331*577a7ad3SMauro Carvalho Chehab	295C
3332*577a7ad3SMauro Carvalho Chehab	bits 0:15
3333*577a7ad3SMauro Carvalho Chehab		Decoder UV line index into display buffer, second field
3334*577a7ad3SMauro Carvalho Chehab
3335*577a7ad3SMauro Carvalho Chehab	bits 16:31
3336*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical line skip, second field
3337*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3338*577a7ad3SMauro Carvalho Chehab	2960
3339*577a7ad3SMauro Carvalho Chehab	bits 0:15
3340*577a7ad3SMauro Carvalho Chehab		Decoder destination height minus 1
3341*577a7ad3SMauro Carvalho Chehab
3342*577a7ad3SMauro Carvalho Chehab	bits 16:31
3343*577a7ad3SMauro Carvalho Chehab		Decoder destination height divided by 2
3344*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3345*577a7ad3SMauro Carvalho Chehab	2964
3346*577a7ad3SMauro Carvalho Chehab	bits 0:15
3347*577a7ad3SMauro Carvalho Chehab		Decoder Y vertical offset, second field
3348*577a7ad3SMauro Carvalho Chehab
3349*577a7ad3SMauro Carvalho Chehab	bits 16:31
3350*577a7ad3SMauro Carvalho Chehab		Decoder Y vertical offset, first field
3351*577a7ad3SMauro Carvalho Chehab
3352*577a7ad3SMauro Carvalho Chehab	These two registers shift the Y plane up. The higher the number, the
3353*577a7ad3SMauro Carvalho Chehab	greater the shift.
3354*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3355*577a7ad3SMauro Carvalho Chehab	2968
3356*577a7ad3SMauro Carvalho Chehab	bits 0:15
3357*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical offset, second field
3358*577a7ad3SMauro Carvalho Chehab
3359*577a7ad3SMauro Carvalho Chehab	bits 16:31
3360*577a7ad3SMauro Carvalho Chehab		Decoder UV vertical offset, first field
3361*577a7ad3SMauro Carvalho Chehab
3362*577a7ad3SMauro Carvalho Chehab	These two registers shift the UV plane up. The higher the number, the
3363*577a7ad3SMauro Carvalho Chehab	greater the shift.
3364*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3365*577a7ad3SMauro Carvalho Chehab	296C
3366*577a7ad3SMauro Carvalho Chehab	bits 0:1
3367*577a7ad3SMauro Carvalho Chehab		Decoder vertical Y output size divider
3368*577a7ad3SMauro Carvalho Chehab		00 = No divide
3369*577a7ad3SMauro Carvalho Chehab		01 = Divide by 2
3370*577a7ad3SMauro Carvalho Chehab		10 = Divide by 4
3371*577a7ad3SMauro Carvalho Chehab
3372*577a7ad3SMauro Carvalho Chehab	bits 8:9
3373*577a7ad3SMauro Carvalho Chehab		Decoder vertical UV output size divider
3374*577a7ad3SMauro Carvalho Chehab		00 = No divide
3375*577a7ad3SMauro Carvalho Chehab		01 = Divide by 2
3376*577a7ad3SMauro Carvalho Chehab		10 = Divide by 4
3377*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3378*577a7ad3SMauro Carvalho Chehab	2970
3379*577a7ad3SMauro Carvalho Chehab	bit 0
3380*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
3381*577a7ad3SMauro Carvalho Chehab		0 = Normal
3382*577a7ad3SMauro Carvalho Chehab		1 = Affect video output levels
3383*577a7ad3SMauro Carvalho Chehab
3384*577a7ad3SMauro Carvalho Chehab	bit 16
3385*577a7ad3SMauro Carvalho Chehab		Decoder ?? unknown
3386*577a7ad3SMauro Carvalho Chehab		0 = Normal
3387*577a7ad3SMauro Carvalho Chehab		1 = Disable vertical filter
3388*577a7ad3SMauro Carvalho Chehab
3389*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3390*577a7ad3SMauro Carvalho Chehab	2974  --------   ?? unknown
3391*577a7ad3SMauro Carvalho Chehab	|
3392*577a7ad3SMauro Carvalho Chehab	V
3393*577a7ad3SMauro Carvalho Chehab	29EF  --------   ?? unknown
3394*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3395*577a7ad3SMauro Carvalho Chehab	2A00
3396*577a7ad3SMauro Carvalho Chehab	bits 0:2
3397*577a7ad3SMauro Carvalho Chehab		osd colour mode
3398*577a7ad3SMauro Carvalho Chehab		000 = 8 bit indexed
3399*577a7ad3SMauro Carvalho Chehab		001 = 16 bit (565)
3400*577a7ad3SMauro Carvalho Chehab		010 = 15 bit (555)
3401*577a7ad3SMauro Carvalho Chehab		011 = 12 bit (444)
3402*577a7ad3SMauro Carvalho Chehab		100 = 32 bit (8888)
3403*577a7ad3SMauro Carvalho Chehab
3404*577a7ad3SMauro Carvalho Chehab	bits 4:5
3405*577a7ad3SMauro Carvalho Chehab		osd display bpp
3406*577a7ad3SMauro Carvalho Chehab		01 = 8 bit
3407*577a7ad3SMauro Carvalho Chehab		10 = 16 bit
3408*577a7ad3SMauro Carvalho Chehab		11 = 32 bit
3409*577a7ad3SMauro Carvalho Chehab
3410*577a7ad3SMauro Carvalho Chehab	bit 8
3411*577a7ad3SMauro Carvalho Chehab		osd global alpha
3412*577a7ad3SMauro Carvalho Chehab		0 = Off
3413*577a7ad3SMauro Carvalho Chehab		1 = On
3414*577a7ad3SMauro Carvalho Chehab
3415*577a7ad3SMauro Carvalho Chehab	bit 9
3416*577a7ad3SMauro Carvalho Chehab		osd local alpha
3417*577a7ad3SMauro Carvalho Chehab		0 = Off
3418*577a7ad3SMauro Carvalho Chehab		1 = On
3419*577a7ad3SMauro Carvalho Chehab
3420*577a7ad3SMauro Carvalho Chehab	bit 10
3421*577a7ad3SMauro Carvalho Chehab		osd colour key
3422*577a7ad3SMauro Carvalho Chehab		0 = Off
3423*577a7ad3SMauro Carvalho Chehab		1 = On
3424*577a7ad3SMauro Carvalho Chehab
3425*577a7ad3SMauro Carvalho Chehab	bit 11
3426*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3427*577a7ad3SMauro Carvalho Chehab		Must be 1
3428*577a7ad3SMauro Carvalho Chehab
3429*577a7ad3SMauro Carvalho Chehab	bit 13
3430*577a7ad3SMauro Carvalho Chehab		osd colour space
3431*577a7ad3SMauro Carvalho Chehab		0 = ARGB
3432*577a7ad3SMauro Carvalho Chehab		1 = AYVU
3433*577a7ad3SMauro Carvalho Chehab
3434*577a7ad3SMauro Carvalho Chehab	bits 16:31
3435*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3436*577a7ad3SMauro Carvalho Chehab		Must be 0x001B (some kind of buffer pointer ?)
3437*577a7ad3SMauro Carvalho Chehab
3438*577a7ad3SMauro Carvalho Chehab	When the bits-per-pixel is set to 8, the colour mode is ignored and
3439*577a7ad3SMauro Carvalho Chehab	assumed to be 8 bit indexed. For 16 & 32 bits-per-pixel the colour depth
3440*577a7ad3SMauro Carvalho Chehab	is honoured, and when using a colour depth that requires fewer bytes than
3441*577a7ad3SMauro Carvalho Chehab	allocated the extra bytes are used as padding. So for a 32 bpp with 8 bit
3442*577a7ad3SMauro Carvalho Chehab	index colour, there are 3 padding bytes per pixel. It's also possible to
3443*577a7ad3SMauro Carvalho Chehab	select 16bpp with a 32 bit colour mode. This results in the pixel width
3444*577a7ad3SMauro Carvalho Chehab	being doubled, but the color key will not work as expected in this mode.
3445*577a7ad3SMauro Carvalho Chehab
3446*577a7ad3SMauro Carvalho Chehab	Colour key is as it suggests. You designate a colour which will become
3447*577a7ad3SMauro Carvalho Chehab	completely transparent. When using 565, 555 or 444 colour modes, the
3448*577a7ad3SMauro Carvalho Chehab	colour key is always 16 bits wide. The colour to key on is set in Reg 2A18.
3449*577a7ad3SMauro Carvalho Chehab
3450*577a7ad3SMauro Carvalho Chehab	Local alpha works differently depending on the colour mode. For 32bpp & 8
3451*577a7ad3SMauro Carvalho Chehab	bit indexed, local alpha is a per-pixel 256 step transparency, with 0 being
3452*577a7ad3SMauro Carvalho Chehab	transparent and 255 being solid. For the 16bpp modes 555 & 444, the unused
3453*577a7ad3SMauro Carvalho Chehab	bit(s) act as a simple transparency switch, with 0 being solid & 1 being
3454*577a7ad3SMauro Carvalho Chehab	fully transparent. There is no local alpha support for 16bit 565.
3455*577a7ad3SMauro Carvalho Chehab
3456*577a7ad3SMauro Carvalho Chehab	Global alpha is a 256 step transparency that applies to the entire osd,
3457*577a7ad3SMauro Carvalho Chehab	with 0 being transparent & 255 being solid.
3458*577a7ad3SMauro Carvalho Chehab
3459*577a7ad3SMauro Carvalho Chehab	It's possible to combine colour key, local alpha & global alpha.
3460*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3461*577a7ad3SMauro Carvalho Chehab	2A04
3462*577a7ad3SMauro Carvalho Chehab	bits 0:15
3463*577a7ad3SMauro Carvalho Chehab		osd x coord for left edge
3464*577a7ad3SMauro Carvalho Chehab
3465*577a7ad3SMauro Carvalho Chehab	bits 16:31
3466*577a7ad3SMauro Carvalho Chehab		osd y coord for top edge
3467*577a7ad3SMauro Carvalho Chehab	---------------
3468*577a7ad3SMauro Carvalho Chehab	2A08
3469*577a7ad3SMauro Carvalho Chehab	bits 0:15
3470*577a7ad3SMauro Carvalho Chehab		osd x coord for right edge
3471*577a7ad3SMauro Carvalho Chehab
3472*577a7ad3SMauro Carvalho Chehab	bits 16:31
3473*577a7ad3SMauro Carvalho Chehab		osd y coord for bottom edge
3474*577a7ad3SMauro Carvalho Chehab
3475*577a7ad3SMauro Carvalho Chehab	For both registers, (0,0) = top left corner of the display area. These
3476*577a7ad3SMauro Carvalho Chehab	registers do not control the osd size, only where it's positioned & how
3477*577a7ad3SMauro Carvalho Chehab	much is visible. The visible osd area cannot exceed the right edge of the
3478*577a7ad3SMauro Carvalho Chehab	display, otherwise the osd will become corrupt. See reg 2A10 for
3479*577a7ad3SMauro Carvalho Chehab	setting osd width.
3480*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3481*577a7ad3SMauro Carvalho Chehab	2A0C
3482*577a7ad3SMauro Carvalho Chehab	bits 0:31
3483*577a7ad3SMauro Carvalho Chehab		osd buffer index
3484*577a7ad3SMauro Carvalho Chehab
3485*577a7ad3SMauro Carvalho Chehab	An index into the osd buffer. Slowly incrementing this moves the osd left,
3486*577a7ad3SMauro Carvalho Chehab	wrapping around onto the right edge
3487*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3488*577a7ad3SMauro Carvalho Chehab	2A10
3489*577a7ad3SMauro Carvalho Chehab	bits 0:11
3490*577a7ad3SMauro Carvalho Chehab		osd buffer 32 bit word width
3491*577a7ad3SMauro Carvalho Chehab
3492*577a7ad3SMauro Carvalho Chehab	Contains the width of the osd measured in 32 bit words. This means that all
3493*577a7ad3SMauro Carvalho Chehab	colour modes are restricted to a byte width which is divisible by 4.
3494*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3495*577a7ad3SMauro Carvalho Chehab	2A14
3496*577a7ad3SMauro Carvalho Chehab	bits 0:15
3497*577a7ad3SMauro Carvalho Chehab		osd height in pixels
3498*577a7ad3SMauro Carvalho Chehab
3499*577a7ad3SMauro Carvalho Chehab	bits 16:32
3500*577a7ad3SMauro Carvalho Chehab		osd line index into buffer
3501*577a7ad3SMauro Carvalho Chehab		osd will start displaying from this line.
3502*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3503*577a7ad3SMauro Carvalho Chehab	2A18
3504*577a7ad3SMauro Carvalho Chehab	bits 0:31
3505*577a7ad3SMauro Carvalho Chehab		osd colour key
3506*577a7ad3SMauro Carvalho Chehab
3507*577a7ad3SMauro Carvalho Chehab	Contains the colour value which will be transparent.
3508*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3509*577a7ad3SMauro Carvalho Chehab	2A1C
3510*577a7ad3SMauro Carvalho Chehab	bits 0:7
3511*577a7ad3SMauro Carvalho Chehab		osd global alpha
3512*577a7ad3SMauro Carvalho Chehab
3513*577a7ad3SMauro Carvalho Chehab	Contains the global alpha value (equiv ivtvfbctl --alpha XX)
3514*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3515*577a7ad3SMauro Carvalho Chehab	2A20  --------    ?? unknown
3516*577a7ad3SMauro Carvalho Chehab	|
3517*577a7ad3SMauro Carvalho Chehab	V
3518*577a7ad3SMauro Carvalho Chehab	2A2C  --------    ?? unknown
3519*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3520*577a7ad3SMauro Carvalho Chehab	2A30
3521*577a7ad3SMauro Carvalho Chehab	bits 0:7
3522*577a7ad3SMauro Carvalho Chehab		osd colour to change in indexed palette
3523*577a7ad3SMauro Carvalho Chehab	---------------
3524*577a7ad3SMauro Carvalho Chehab	2A34
3525*577a7ad3SMauro Carvalho Chehab	bits 0:31
3526*577a7ad3SMauro Carvalho Chehab		osd colour for indexed palette
3527*577a7ad3SMauro Carvalho Chehab
3528*577a7ad3SMauro Carvalho Chehab	To set the new palette, first load the index of the colour to change into
3529*577a7ad3SMauro Carvalho Chehab	2A30, then load the new colour into 2A34. The full palette is 256 colours,
3530*577a7ad3SMauro Carvalho Chehab	so the index range is 0x00-0xFF
3531*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3532*577a7ad3SMauro Carvalho Chehab	2A38  --------    ?? unknown
3533*577a7ad3SMauro Carvalho Chehab	2A3C  --------    ?? unknown
3534*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3535*577a7ad3SMauro Carvalho Chehab	2A40
3536*577a7ad3SMauro Carvalho Chehab	bits 0:31
3537*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3538*577a7ad3SMauro Carvalho Chehab
3539*577a7ad3SMauro Carvalho Chehab	Affects overall brightness, wrapping around to black
3540*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3541*577a7ad3SMauro Carvalho Chehab	2A44
3542*577a7ad3SMauro Carvalho Chehab	bits 0:31
3543*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3544*577a7ad3SMauro Carvalho Chehab
3545*577a7ad3SMauro Carvalho Chehab	Green tint
3546*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3547*577a7ad3SMauro Carvalho Chehab	2A48
3548*577a7ad3SMauro Carvalho Chehab	bits 0:31
3549*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3550*577a7ad3SMauro Carvalho Chehab
3551*577a7ad3SMauro Carvalho Chehab	Red tint
3552*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3553*577a7ad3SMauro Carvalho Chehab	2A4C
3554*577a7ad3SMauro Carvalho Chehab	bits 0:31
3555*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3556*577a7ad3SMauro Carvalho Chehab
3557*577a7ad3SMauro Carvalho Chehab	Affects overall brightness, wrapping around to black
3558*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3559*577a7ad3SMauro Carvalho Chehab	2A50
3560*577a7ad3SMauro Carvalho Chehab	bits 0:31
3561*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3562*577a7ad3SMauro Carvalho Chehab
3563*577a7ad3SMauro Carvalho Chehab	Colour shift
3564*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3565*577a7ad3SMauro Carvalho Chehab	2A54
3566*577a7ad3SMauro Carvalho Chehab	bits 0:31
3567*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3568*577a7ad3SMauro Carvalho Chehab
3569*577a7ad3SMauro Carvalho Chehab	Colour shift
3570*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3571*577a7ad3SMauro Carvalho Chehab	2A58  --------    ?? unknown
3572*577a7ad3SMauro Carvalho Chehab	|
3573*577a7ad3SMauro Carvalho Chehab	V
3574*577a7ad3SMauro Carvalho Chehab	2AFC  --------    ?? unknown
3575*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3576*577a7ad3SMauro Carvalho Chehab	2B00
3577*577a7ad3SMauro Carvalho Chehab	bit 0
3578*577a7ad3SMauro Carvalho Chehab		osd filter control
3579*577a7ad3SMauro Carvalho Chehab		0 = filter off
3580*577a7ad3SMauro Carvalho Chehab		1 = filter on
3581*577a7ad3SMauro Carvalho Chehab
3582*577a7ad3SMauro Carvalho Chehab	bits 1:4
3583*577a7ad3SMauro Carvalho Chehab		osd ?? unknown
3584*577a7ad3SMauro Carvalho Chehab
3585*577a7ad3SMauro Carvalho Chehab	--------------------------------------------------------------------------------
3586*577a7ad3SMauro Carvalho Chehab
3587*577a7ad3SMauro Carvalho ChehabThe cx231xx DMA engine
3588*577a7ad3SMauro Carvalho Chehab----------------------
3589*577a7ad3SMauro Carvalho Chehab
3590*577a7ad3SMauro Carvalho Chehab
3591*577a7ad3SMauro Carvalho ChehabThis page describes the structures and procedures used by the cx2341x DMA
3592*577a7ad3SMauro Carvalho Chehabengine.
3593*577a7ad3SMauro Carvalho Chehab
3594*577a7ad3SMauro Carvalho ChehabIntroduction
3595*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~
3596*577a7ad3SMauro Carvalho Chehab
3597*577a7ad3SMauro Carvalho ChehabThe cx2341x PCI interface is busmaster capable. This means it has a DMA
3598*577a7ad3SMauro Carvalho Chehabengine to efficiently transfer large volumes of data between the card and main
3599*577a7ad3SMauro Carvalho Chehabmemory without requiring help from a CPU. Like most hardware, it must operate
3600*577a7ad3SMauro Carvalho Chehabon contiguous physical memory. This is difficult to come by in large quantities
3601*577a7ad3SMauro Carvalho Chehabon virtual memory machines.
3602*577a7ad3SMauro Carvalho Chehab
3603*577a7ad3SMauro Carvalho ChehabTherefore, it also supports a technique called "scatter-gather". The card can
3604*577a7ad3SMauro Carvalho Chehabtransfer multiple buffers in one operation. Instead of allocating one large
3605*577a7ad3SMauro Carvalho Chehabcontiguous buffer, the driver can allocate several smaller buffers.
3606*577a7ad3SMauro Carvalho Chehab
3607*577a7ad3SMauro Carvalho ChehabIn practice, I've seen the average transfer to be roughly 80K, but transfers
3608*577a7ad3SMauro Carvalho Chehababove 128K were not uncommon, particularly at startup. The 128K figure is
3609*577a7ad3SMauro Carvalho Chehabimportant, because that is the largest block that the kernel can normally
3610*577a7ad3SMauro Carvalho Chehaballocate. Even still, 128K blocks are hard to come by, so the driver writer is
3611*577a7ad3SMauro Carvalho Chehaburged to choose a smaller block size and learn the scatter-gather technique.
3612*577a7ad3SMauro Carvalho Chehab
3613*577a7ad3SMauro Carvalho ChehabMailbox #10 is reserved for DMA transfer information.
3614*577a7ad3SMauro Carvalho Chehab
3615*577a7ad3SMauro Carvalho ChehabNote: the hardware expects little-endian data ('intel format').
3616*577a7ad3SMauro Carvalho Chehab
3617*577a7ad3SMauro Carvalho ChehabFlow
3618*577a7ad3SMauro Carvalho Chehab~~~~
3619*577a7ad3SMauro Carvalho Chehab
3620*577a7ad3SMauro Carvalho ChehabThis section describes, in general, the order of events when handling DMA
3621*577a7ad3SMauro Carvalho Chehabtransfers. Detailed information follows this section.
3622*577a7ad3SMauro Carvalho Chehab
3623*577a7ad3SMauro Carvalho Chehab- The card raises the Encoder interrupt.
3624*577a7ad3SMauro Carvalho Chehab- The driver reads the transfer type, offset and size from Mailbox #10.
3625*577a7ad3SMauro Carvalho Chehab- The driver constructs the scatter-gather array from enough free dma buffers
3626*577a7ad3SMauro Carvalho Chehab  to cover the size.
3627*577a7ad3SMauro Carvalho Chehab- The driver schedules the DMA transfer via the ScheduleDMAtoHost API call.
3628*577a7ad3SMauro Carvalho Chehab- The card raises the DMA Complete interrupt.
3629*577a7ad3SMauro Carvalho Chehab- The driver checks the DMA status register for any errors.
3630*577a7ad3SMauro Carvalho Chehab- The driver post-processes the newly transferred buffers.
3631*577a7ad3SMauro Carvalho Chehab
3632*577a7ad3SMauro Carvalho ChehabNOTE! It is possible that the Encoder and DMA Complete interrupts get raised
3633*577a7ad3SMauro Carvalho Chehabsimultaneously. (End of the last, start of the next, etc.)
3634*577a7ad3SMauro Carvalho Chehab
3635*577a7ad3SMauro Carvalho ChehabMailbox #10
3636*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~
3637*577a7ad3SMauro Carvalho Chehab
3638*577a7ad3SMauro Carvalho ChehabThe Flags, Command, Return Value and Timeout fields are ignored.
3639*577a7ad3SMauro Carvalho Chehab
3640*577a7ad3SMauro Carvalho Chehab- Name:       Mailbox #10
3641*577a7ad3SMauro Carvalho Chehab- Results[0]: Type: 0: MPEG.
3642*577a7ad3SMauro Carvalho Chehab- Results[1]: Offset: The position relative to the card's memory space.
3643*577a7ad3SMauro Carvalho Chehab- Results[2]: Size: The exact number of bytes to transfer.
3644*577a7ad3SMauro Carvalho Chehab
3645*577a7ad3SMauro Carvalho ChehabMy speculation is that since the StartCapture API has a capture type of "RAW"
3646*577a7ad3SMauro Carvalho Chehabavailable, that the type field will have other values that correspond to YUV
3647*577a7ad3SMauro Carvalho Chehaband PCM data.
3648*577a7ad3SMauro Carvalho Chehab
3649*577a7ad3SMauro Carvalho ChehabScatter-Gather Array
3650*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
3651*577a7ad3SMauro Carvalho Chehab
3652*577a7ad3SMauro Carvalho ChehabThe scatter-gather array is a contiguously allocated block of memory that
3653*577a7ad3SMauro Carvalho Chehabtells the card the source and destination of each data-block to transfer.
3654*577a7ad3SMauro Carvalho ChehabCard "addresses" are derived from the offset supplied by Mailbox #10. Host
3655*577a7ad3SMauro Carvalho Chehabaddresses are the physical memory location of the target DMA buffer.
3656*577a7ad3SMauro Carvalho Chehab
3657*577a7ad3SMauro Carvalho ChehabEach S-G array element is a struct of three 32-bit words. The first word is
3658*577a7ad3SMauro Carvalho Chehabthe source address, the second is the destination address. Both take up the
3659*577a7ad3SMauro Carvalho Chehabentire 32 bits. The lowest 18 bits of the third word is the transfer byte
3660*577a7ad3SMauro Carvalho Chehabcount. The high-bit of the third word is the "last" flag. The last-flag tells
3661*577a7ad3SMauro Carvalho Chehabthe card to raise the DMA_DONE interrupt. From hard personal experience, if
3662*577a7ad3SMauro Carvalho Chehabyou forget to set this bit, the card will still "work" but the stream will
3663*577a7ad3SMauro Carvalho Chehabmost likely get corrupted.
3664*577a7ad3SMauro Carvalho Chehab
3665*577a7ad3SMauro Carvalho ChehabThe transfer count must be a multiple of 256. Therefore, the driver will need
3666*577a7ad3SMauro Carvalho Chehabto track how much data in the target buffer is valid and deal with it
3667*577a7ad3SMauro Carvalho Chehabaccordingly.
3668*577a7ad3SMauro Carvalho Chehab
3669*577a7ad3SMauro Carvalho ChehabArray Element:
3670*577a7ad3SMauro Carvalho Chehab
3671*577a7ad3SMauro Carvalho Chehab- 32-bit Source Address
3672*577a7ad3SMauro Carvalho Chehab- 32-bit Destination Address
3673*577a7ad3SMauro Carvalho Chehab- 14-bit reserved (high bit is the last flag)
3674*577a7ad3SMauro Carvalho Chehab- 18-bit byte count
3675*577a7ad3SMauro Carvalho Chehab
3676*577a7ad3SMauro Carvalho ChehabDMA Transfer Status
3677*577a7ad3SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~
3678*577a7ad3SMauro Carvalho Chehab
3679*577a7ad3SMauro Carvalho ChehabRegister 0x0004 holds the DMA Transfer Status:
3680*577a7ad3SMauro Carvalho Chehab
3681*577a7ad3SMauro Carvalho Chehab- bit 0:   read completed
3682*577a7ad3SMauro Carvalho Chehab- bit 1:   write completed
3683*577a7ad3SMauro Carvalho Chehab- bit 2:   DMA read error
3684*577a7ad3SMauro Carvalho Chehab- bit 3:   DMA write error
3685*577a7ad3SMauro Carvalho Chehab- bit 4:   Scatter-Gather array error
3686