1The cx88 driver 2=============== 3 4Author: Gerd Hoffmann 5 6This is a v4l2 device driver for the cx2388x chip. 7 8 9Current status 10-------------- 11 12video 13 - Works. 14 - Overlay isn't supported. 15 16audio 17 - Works. The TV standard detection is made by the driver, as the 18 hardware has bugs to auto-detect. 19 - audio data dma (i.e. recording without loopback cable to the 20 sound card) is supported via cx88-alsa. 21 22vbi 23 - Works. 24 25 26How to add support for new cards 27-------------------------------- 28 29The driver needs some config info for the TV cards. This stuff is in 30cx88-cards.c. If the driver doesn't work well you likely need a new 31entry for your card in that file. Check the kernel log (using dmesg) 32to see whenever the driver knows your card or not. There is a line 33like this one: 34 35.. code-block:: none 36 37 cx8800[0]: subsystem: 0070:3400, board: Hauppauge WinTV \ 38 34xxx models [card=1,autodetected] 39 40If your card is listed as "board: UNKNOWN/GENERIC" it is unknown to 41the driver. What to do then? 42 431) Try upgrading to the latest snapshot, maybe it has been added 44 meanwhile. 452) You can try to create a new entry yourself, have a look at 46 cx88-cards.c. If that worked, mail me your changes as unified 47 diff ("diff -u"). 483) Or you can mail me the config information. We need at least the 49 following information to add the card: 50 51 - the PCI Subsystem ID ("0070:3400" from the line above, 52 "lspci -v" output is fine too). 53 - the tuner type used by the card. You can try to find one by 54 trial-and-error using the tuner=<n> insmod option. If you 55 know which one the card has you can also have a look at the 56 list in CARDLIST.tuner 57 58Documentation missing at the cx88 datasheet 59------------------------------------------- 60 61MO_OUTPUT_FORMAT (0x310164) 62 63.. code-block:: none 64 65 Previous default from DScaler: 0x1c1f0008 66 Digit 8: 31-28 67 28: PREVREMOD = 1 68 69 Digit 7: 27-24 (0xc = 12 = b1100 ) 70 27: COMBALT = 1 71 26: PAL_INV_PHASE 72 (DScaler apparently set this to 1, resulted in sucky picture) 73 74 Digits 6,5: 23-16 75 25-16: COMB_RANGE = 0x1f [default] (9 bits -> max 512) 76 77 Digit 4: 15-12 78 15: DISIFX = 0 79 14: INVCBF = 0 80 13: DISADAPT = 0 81 12: NARROWADAPT = 0 82 83 Digit 3: 11-8 84 11: FORCE2H 85 10: FORCEREMD 86 9: NCHROMAEN 87 8: NREMODEN 88 89 Digit 2: 7-4 90 7-6: YCORE 91 5-4: CCORE 92 93 Digit 1: 3-0 94 3: RANGE = 1 95 2: HACTEXT 96 1: HSFMT 97 980x47 is the sync byte for MPEG-2 transport stream packets. 99Datasheet incorrectly states to use 47 decimal. 188 is the length. 100All DVB compliant frontends output packets with this start code. 101 102Hauppauge WinTV cx88 IR information 103----------------------------------- 104 105The controls for the mux are GPIO [0,1] for source, and GPIO 2 for muting. 106 107====== ======== ================================================= 108GPIO0 GPIO1 109====== ======== ================================================= 110 0 0 TV Audio 111 1 0 FM radio 112 0 1 Line-In 113 1 1 Mono tuner bypass or CD passthru (tuner specific) 114====== ======== ================================================= 115 116GPIO 16(I believe) is tied to the IR port (if present). 117 118 119From the data sheet: 120 121- Register 24'h20004 PCI Interrupt Status 122 123 - bit [18] IR_SMP_INT Set when 32 input samples have been collected over 124 - gpio[16] pin into GP_SAMPLE register. 125 126What's missing from the data sheet: 127 128- Setup 4KHz sampling rate (roughly 2x oversampled; good enough for our RC5 129 compat remote) 130- set register 0x35C050 to 0xa80a80 131- enable sampling 132- set register 0x35C054 to 0x5 133- enable the IRQ bit 18 in the interrupt mask register (and 134 provide for a handler) 135 136GP_SAMPLE register is at 0x35C058 137 138Bits are then right shifted into the GP_SAMPLE register at the specified 139rate; you get an interrupt when a full DWORD is received. 140You need to recover the actual RC5 bits out of the (oversampled) IR sensor 141bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An 142actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment. 143 144I'm pretty sure when no IR signal is present the receiver is always in a 145marking state(1); but stray light, etc can cause intermittent noise values 146as well. Remember, this is a free running sample of the IR receiver state 147over time, so don't assume any sample starts at any particular place. 148 149Additional info 150~~~~~~~~~~~~~~~ 151 152This data sheet (google search) seems to have a lovely description of the 153RC5 basics: 154http://www.atmel.com/dyn/resources/prod_documents/doc2817.pdf 155 156This document has more data: 157http://www.nenya.be/beor/electronics/rc5.htm 158 159This document has a how to decode a bi-phase data stream: 160http://www.ee.washington.edu/circuit_archive/text/ir_decode.txt 161 162This document has still more info: 163http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htm 164