Those documents don't really describe the driver API. Instead, they contain development-specific information. Yet, as the main index file describes the content of it as: "how specific kernel subsystems work from the point of view of a kernel developer" It seems to be the better fit. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
		
			
				
	
	
		
			114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. 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
 |