On Mon, 2009-12-07 at 03:23 +0200, Igor M. Liplianin wrote:
> On 6 декабря 2009 23:40:54 Andy Walls wrote:
> > On Sun, 2009-11-22 at 03:03 +0200, Igor M. Liplianin wrote:
> > > On 21 ноября 2009 22:41:42 Andy Walls wrote:
> > > > > Matthias Fechner schrieb:
> > > > > > I bought some days ago a Tevii S470 DVB-S2 (PCI-E) card and got it
> > > > > > running with the driver from:
> > > > > > http://mercurial.intuxication.org/hg/s2-liplianin
> > > > > >
> > > > > > But I was not successfull in got the IR receiver working.
> > > > > > It seems that it is not supported yet by the driver.
> > > > > >
> > > > > > Is there maybe some code available to get the IR receiver with
> > > > > > evdev running?
> > > >
> > > > If the card is using the built in IR controller in the CX23885, then
> > > > you'll have to wait until I port my CX23888 IR controller changes to
> > > > work with the IR controller in the CX23885.  That should be somewhat
> > > > straightforward, but will take time.  Then we'll still need you to
> > > > experiment with a patch.
> > >
> > > It's cx23885 definitely.
> > > Remote uses NEC codes.
> > > In any case I can test.
> >
> > On Mon, 2009-11-23, Igor M. Liplianin wrote:
> > > Receiver connected to cx23885 IR_RX(pin 106). It is not difficult to
> > > track.
> >
> > Igor,
> Hi Andy,
> 
> >
> > As I make patches for test, perhaps you can help answer some questions
> > which will save some experimentation:
> >
> >
> > 1. Does the remote for the TeVii S470 use the same codes as
> >
> > linux/drivers/media/common/ir-keymaps.c : ir_codes_tevii_nec[]
> That is correct table for cx88 based TeVii card with the same remote.
> I believe there is no difference for cx23885.
> 
> >
> > or some other remote code table we have in the kernel?
> >
> >
> > 2. Does the remote for the TeVii S470, like other TeVii remotes, use a
> > standard NEC address of 0x00 (so that Addr'Addr is 0xff00) ?  Or does it
> > use another address?
> Again like in cx88, the address is standard.
> 
> >
> >
> > 3. When you traced board wiring from the IR receiver to the IR_RX pin on
> > the CX23885, did you notice any external components that might modify
> > the signal?  For example, a capacitor that integrates carrier bursts
> > into baseband pulses.
> Yet again I believe there is no capacitors.
> Very same scheme like in cx88 variants for TeVii and others.


Igor and Matthias,

Please try the changes that I have for the TeVii S470 that are here:

        http://linuxtv.org/hg/~awalls/cx23885-ir

You will want to modprobe the driver modules like this to get debugging
information:

        # modprobe cx25840 ir_debug=2
        # modprobe cx23885 ir_input_debug=1

With that debugging you will get output something like this in dmesg or
your logs when you press a button on the remote (this is RC-5 using a
CX23888 chip not NEC using a CX23885 chip):

cx23885[0]/888-ir: IRQ Status:  tsr rsr             rby
cx23885[0]/888-ir: IRQ Enables:     rse rte roe
cx23885[0]/888-ir: IRQ Status:  tsr rsr             rby
cx23885[0]/888-ir: IRQ Enables:     rse rte roe
cx23885[0]/888-ir: IRQ Status:  tsr rsr             rby
cx23885[0]/888-ir: IRQ Enables:     rse rte roe
cx23885[0]/888-ir: IRQ Status:  tsr rsr             rby
cx23885[0]/888-ir: IRQ Enables:     rse rte roe
cx23885[0]/888-ir: IRQ Status:  tsr rsr             rby
cx23885[0]/888-ir: IRQ Enables:     rse rte roe
cx23885[0]/888-ir: IRQ Status:  tsr     rto            
cx23885[0]/888-ir: IRQ Enables:     rse rte roe
cx23885[0]/888-ir: rx read:     817000 ns  mark
cx23885[0]/888-ir: rx read:     838926 ns  space
cx23885[0]/888-ir: rx read:    1572259 ns  mark
cx23885[0]/888-ir: rx read:    1705296 ns  space
[...]
cx23885[0]/888-ir: rx read:     838037 ns  space
cx23885[0]/888-ir: rx read:     746333 ns  mark
cx23885[0]/888-ir: rx read:    1705741 ns  space
cx23885[0]/888-ir: rx read:    1619370 ns  mark
cx23885[0]/888-ir: rx read: end of rx

NEC would actually have this sort of timing:

8257296 ns  mark
4206185 ns  space
 482926 ns  mark
 545296 ns  space
 481296 ns  mark
1572259 ns  space
 481148 ns  mark
 546333 ns  space
[...]
 433593 ns  mark
1618333 ns  space
 454481 ns  mark
end of rx

8255519 ns  mark
2130926 ns  space
 480556 ns  mark
end of rx


The NEC decoder will also log the decoded 32 bits it receives and
separate out the address and the command bits.


If you do not see good or many NEC timing measurments in the logs, the
first thing to try is to change lines 533-534 of
linux/drivers/media/cx23885/cx23885-input.c:

               params.modulation = true;
               params.invert_level = false;

If you see no timing measurements or few timing measurements, change the
"modulation" to "false".  If the chip is expecting carrier pulses and an
external circuit or capacitor is smoothing carrier bursts into baseband
pulses, then the hardware won't make measurements properly.

If you see inverted mark and space inverted when "modulation" is set to
"false", then set "invert_level" to "true".

Those are the two things I had to really guess at.


BTW, I'm not accessing the CX23885 AV Core registers across the I2C bus
in a very conservative way.  If you notice some performance problem with
an occasionally missed pulse measurement, then I know there is room for
improvement by being smarter about I2C bus transactions.

Good Luck.

Regards,
Andy

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to