media: docs: split development info from cx88.rst
This file contains both admin and development stuff. Split on two, as they're usually read by different audiences. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
481025598f
commit
51df01acc1
|
@ -0,0 +1,113 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
The cx88 driver
|
||||
===============
|
||||
|
||||
Author: Gerd Hoffmann
|
||||
|
||||
Documentation missing at the cx88 datasheet
|
||||
-------------------------------------------
|
||||
|
||||
MO_OUTPUT_FORMAT (0x310164)
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Previous default from DScaler: 0x1c1f0008
|
||||
Digit 8: 31-28
|
||||
28: PREVREMOD = 1
|
||||
|
||||
Digit 7: 27-24 (0xc = 12 = b1100 )
|
||||
27: COMBALT = 1
|
||||
26: PAL_INV_PHASE
|
||||
(DScaler apparently set this to 1, resulted in sucky picture)
|
||||
|
||||
Digits 6,5: 23-16
|
||||
25-16: COMB_RANGE = 0x1f [default] (9 bits -> max 512)
|
||||
|
||||
Digit 4: 15-12
|
||||
15: DISIFX = 0
|
||||
14: INVCBF = 0
|
||||
13: DISADAPT = 0
|
||||
12: NARROWADAPT = 0
|
||||
|
||||
Digit 3: 11-8
|
||||
11: FORCE2H
|
||||
10: FORCEREMD
|
||||
9: NCHROMAEN
|
||||
8: NREMODEN
|
||||
|
||||
Digit 2: 7-4
|
||||
7-6: YCORE
|
||||
5-4: CCORE
|
||||
|
||||
Digit 1: 3-0
|
||||
3: RANGE = 1
|
||||
2: HACTEXT
|
||||
1: HSFMT
|
||||
|
||||
0x47 is the sync byte for MPEG-2 transport stream packets.
|
||||
Datasheet incorrectly states to use 47 decimal. 188 is the length.
|
||||
All DVB compliant frontends output packets with this start code.
|
||||
|
||||
Hauppauge WinTV cx88 IR information
|
||||
-----------------------------------
|
||||
|
||||
The controls for the mux are GPIO [0,1] for source, and GPIO 2 for muting.
|
||||
|
||||
====== ======== =================================================
|
||||
GPIO0 GPIO1
|
||||
====== ======== =================================================
|
||||
0 0 TV Audio
|
||||
1 0 FM radio
|
||||
0 1 Line-In
|
||||
1 1 Mono tuner bypass or CD passthru (tuner specific)
|
||||
====== ======== =================================================
|
||||
|
||||
GPIO 16(I believe) is tied to the IR port (if present).
|
||||
|
||||
|
||||
From the data sheet:
|
||||
|
||||
- Register 24'h20004 PCI Interrupt Status
|
||||
|
||||
- bit [18] IR_SMP_INT Set when 32 input samples have been collected over
|
||||
- gpio[16] pin into GP_SAMPLE register.
|
||||
|
||||
What's missing from the data sheet:
|
||||
|
||||
- Setup 4KHz sampling rate (roughly 2x oversampled; good enough for our RC5
|
||||
compat remote)
|
||||
- set register 0x35C050 to 0xa80a80
|
||||
- enable sampling
|
||||
- set register 0x35C054 to 0x5
|
||||
- enable the IRQ bit 18 in the interrupt mask register (and
|
||||
provide for a handler)
|
||||
|
||||
GP_SAMPLE register is at 0x35C058
|
||||
|
||||
Bits are then right shifted into the GP_SAMPLE register at the specified
|
||||
rate; you get an interrupt when a full DWORD is received.
|
||||
You need to recover the actual RC5 bits out of the (oversampled) IR sensor
|
||||
bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An
|
||||
actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment.
|
||||
|
||||
I'm pretty sure when no IR signal is present the receiver is always in a
|
||||
marking state(1); but stray light, etc can cause intermittent noise values
|
||||
as well. Remember, this is a free running sample of the IR receiver state
|
||||
over time, so don't assume any sample starts at any particular place.
|
||||
|
||||
Additional info
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
This data sheet (google search) seems to have a lovely description of the
|
||||
RC5 basics:
|
||||
http://www.atmel.com/dyn/resources/prod_documents/doc2817.pdf
|
||||
|
||||
This document has more data:
|
||||
http://www.nenya.be/beor/electronics/rc5.htm
|
||||
|
||||
This document has a how to decode a bi-phase data stream:
|
||||
http://www.ee.washington.edu/circuit_archive/text/ir_decode.txt
|
||||
|
||||
This document has still more info:
|
||||
http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htm
|
|
@ -56,110 +56,3 @@ the driver. What to do then?
|
|||
trial-and-error using the tuner=<n> insmod option. If you
|
||||
know which one the card has you can also have a look at the
|
||||
list in CARDLIST.tuner
|
||||
|
||||
Documentation missing at the cx88 datasheet
|
||||
-------------------------------------------
|
||||
|
||||
MO_OUTPUT_FORMAT (0x310164)
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Previous default from DScaler: 0x1c1f0008
|
||||
Digit 8: 31-28
|
||||
28: PREVREMOD = 1
|
||||
|
||||
Digit 7: 27-24 (0xc = 12 = b1100 )
|
||||
27: COMBALT = 1
|
||||
26: PAL_INV_PHASE
|
||||
(DScaler apparently set this to 1, resulted in sucky picture)
|
||||
|
||||
Digits 6,5: 23-16
|
||||
25-16: COMB_RANGE = 0x1f [default] (9 bits -> max 512)
|
||||
|
||||
Digit 4: 15-12
|
||||
15: DISIFX = 0
|
||||
14: INVCBF = 0
|
||||
13: DISADAPT = 0
|
||||
12: NARROWADAPT = 0
|
||||
|
||||
Digit 3: 11-8
|
||||
11: FORCE2H
|
||||
10: FORCEREMD
|
||||
9: NCHROMAEN
|
||||
8: NREMODEN
|
||||
|
||||
Digit 2: 7-4
|
||||
7-6: YCORE
|
||||
5-4: CCORE
|
||||
|
||||
Digit 1: 3-0
|
||||
3: RANGE = 1
|
||||
2: HACTEXT
|
||||
1: HSFMT
|
||||
|
||||
0x47 is the sync byte for MPEG-2 transport stream packets.
|
||||
Datasheet incorrectly states to use 47 decimal. 188 is the length.
|
||||
All DVB compliant frontends output packets with this start code.
|
||||
|
||||
Hauppauge WinTV cx88 IR information
|
||||
-----------------------------------
|
||||
|
||||
The controls for the mux are GPIO [0,1] for source, and GPIO 2 for muting.
|
||||
|
||||
====== ======== =================================================
|
||||
GPIO0 GPIO1
|
||||
====== ======== =================================================
|
||||
0 0 TV Audio
|
||||
1 0 FM radio
|
||||
0 1 Line-In
|
||||
1 1 Mono tuner bypass or CD passthru (tuner specific)
|
||||
====== ======== =================================================
|
||||
|
||||
GPIO 16(I believe) is tied to the IR port (if present).
|
||||
|
||||
|
||||
From the data sheet:
|
||||
|
||||
- Register 24'h20004 PCI Interrupt Status
|
||||
|
||||
- bit [18] IR_SMP_INT Set when 32 input samples have been collected over
|
||||
- gpio[16] pin into GP_SAMPLE register.
|
||||
|
||||
What's missing from the data sheet:
|
||||
|
||||
- Setup 4KHz sampling rate (roughly 2x oversampled; good enough for our RC5
|
||||
compat remote)
|
||||
- set register 0x35C050 to 0xa80a80
|
||||
- enable sampling
|
||||
- set register 0x35C054 to 0x5
|
||||
- enable the IRQ bit 18 in the interrupt mask register (and
|
||||
provide for a handler)
|
||||
|
||||
GP_SAMPLE register is at 0x35C058
|
||||
|
||||
Bits are then right shifted into the GP_SAMPLE register at the specified
|
||||
rate; you get an interrupt when a full DWORD is received.
|
||||
You need to recover the actual RC5 bits out of the (oversampled) IR sensor
|
||||
bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An
|
||||
actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment.
|
||||
|
||||
I'm pretty sure when no IR signal is present the receiver is always in a
|
||||
marking state(1); but stray light, etc can cause intermittent noise values
|
||||
as well. Remember, this is a free running sample of the IR receiver state
|
||||
over time, so don't assume any sample starts at any particular place.
|
||||
|
||||
Additional info
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
This data sheet (google search) seems to have a lovely description of the
|
||||
RC5 basics:
|
||||
http://www.atmel.com/dyn/resources/prod_documents/doc2817.pdf
|
||||
|
||||
This document has more data:
|
||||
http://www.nenya.be/beor/electronics/rc5.htm
|
||||
|
||||
This document has a how to decode a bi-phase data stream:
|
||||
http://www.ee.washington.edu/circuit_archive/text/ir_decode.txt
|
||||
|
||||
This document has still more info:
|
||||
http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htm
|
||||
|
|
|
@ -68,6 +68,7 @@ For more details see the file COPYING in the source distribution of Linux.
|
|||
|
||||
bttv-devel
|
||||
cpia2_devel
|
||||
cx88-devel
|
||||
vimc-devel
|
||||
|
||||
meye-uapi
|
||||
|
|
Loading…
Reference in New Issue