Re: [PATCH] cx23885: Add IR Rx support for HVR-1270 boards

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> wrote:

>Em 09-06-2011 01:12, Dark Shadow escreveu:
>> On Wed, Jun 8, 2011 at 9:27 PM, Dark Shadow
><shadowofdarkness@xxxxxxxxx> wrote:
>>> On Wed, Jun 8, 2011 at 9:17 PM, Dark Shadow
><shadowofdarkness@xxxxxxxxx> wrote:
>>>> On Wed, Jun 8, 2011 at 8:31 PM, Dark Shadow
><shadowofdarkness@xxxxxxxxx> wrote:
>>>>> On Wed, Jun 8, 2011 at 7:34 PM, Andy Walls
><awalls@xxxxxxxxxxxxxxxx> wrote:
>>>>>> Dark Shadow <shadowofdarkness@xxxxxxxxx> wrote:
>>>>>>
>>>>>>> On Wed, Jun 8, 2011 at 6:24 PM, Andy Walls
><awalls@xxxxxxxxxxxxxxxx>
>>>>>>> wrote:
>>>>>>>> On Wed, 2011-06-08 at 13:18 -0600, Dark Shadow wrote:
>>>>>>>>> On Wed, Jun 8, 2011 at 4:19 AM, Andy Walls
><awalls@xxxxxxxxxxxxxxxx>
>>>>>>> wrote:
>>>>>>>>>> Dark Shadow <shadowofdarkness@xxxxxxxxx> wrote:
>>>>>>>>>>
>>>>>>>>>>> I have a capture card that was sold as a Hauppauge HVR-1250
>>>>>>> (according
>>>>>>>>>>> to the box) that I am trying to use but I am having trouble
>>>>>>> getting
>>>>>>>>>>> all it's features at once. When I leave it auto detected by
>the
>>>>>>> module
>>>>>>>>>>> I have working TV in MythTV even though it thinks it is a
>1270 but
>>>>>>> IR
>>>>>>>>>>> isn't setup.
>>>>>>>>>>>
>>>>>>>>>>> dmesg outputs
>>>>>>>>>>> #modprobe cx23885 enable_885_ir=1
>>>>>>>>>>> [    7.592714] cx23885 driver version 0.0.2 loaded
>>>>>>>>>>> [    7.592748] cx23885 0000:07:00.0: PCI INT A -> GSI 17
>(level,
>>>>>>> low)
>>>>>>>>>>> -> IRQ 17
>>>>>>>>>>> [    7.592926] CORE cx23885[0]: subsystem: 0070:2211, board:
>>>>>>> Hauppauge
>>>>>>>>>>> WinTV-HVR1270 [card=18,autodetected]
>>>>>>>>>>> [    7.728163] IR JVC protocol handler initialized
>>>>>>>>>>> [    7.738971] tveeprom 0-0050: Hauppauge model 22111, rev
>C2F5,
>>>>>>>>>>> serial# 6429897
>>>>>>>>>>> [    7.738974] tveeprom 0-0050: MAC address is
>00:0d:fe:62:1c:c9
>>>>>>>>>>> [    7.738975] tveeprom 0-0050: tuner model is NXP 18271C2
>(idx
>>>>>>> 155,
>>>>>>>>>>> type 54)
>>>>>>>>>>> [    7.738977] tveeprom 0-0050: TV standards NTSC(M)
>ATSC/DVB
>>>>>>> Digital
>>>>>>>>>>> (eeprom 0x88)
>>>>>>>>>>> [    7.738979] tveeprom 0-0050: audio processor is CX23888
>(idx
>>>>>>> 40)
>>>>>>>>>>> [    7.738980] tveeprom 0-0050: decoder processor is CX23888
>(idx
>>>>>>> 34)
>>>>>>>>>>> [    7.738982] tveeprom 0-0050: has no radio, has IR
>receiver, has
>>>>>>> no
>>>>>>>>>>> IR transmitter
>>>>>>>>>>> [    7.738983] cx23885[0]: hauppauge eeprom: model=22111
>>>>>>>>>>> [    7.738985] cx23885_dvb_register() allocating 1
>frontend(s)
>>>>>>>>>>> [    7.738991] cx23885[0]: cx23885 based dvb card
>>>>>>>>>>> [    7.961122] IR Sony protocol handler initialized
>>>>>>>>>>> [    7.977301] tda18271 1-0060: creating new instance
>>>>>>>>>>> [    7.979325] TDA18271HD/C2 detected @ 1-0060
>>>>>>>>>>> [    8.209663] DVB: registering new adapter (cx23885[0])
>>>>>>>>>>> [    8.209668] DVB: registering adapter 0 frontend 0 (LG
>>>>>>> Electronics
>>>>>>>>>>> LGDT3305 VSB/QAM Frontend)...
>>>>>>>>>>> [    8.210095] cx23885_dev_checkrevision() Hardware revision
>=
>>>>>>> 0xd0
>>>>>>>>>>> [    8.210101] cx23885[0]/0: found at 0000:07:00.0, rev: 4,
>irq:
>>>>>>> 17,
>>>>>>>>>>> latency: 0, mmio: 0xf7c00000
>>>>>>>>>>> [    8.210109] cx23885 0000:07:00.0: setting latency timer
>to 64
>>>>>>>>>>> [    8.210186] cx23885 0000:07:00.0: irq 49 for MSI/MSI-X
>>>>>>>>
>>>>>>>>>>> #ir-keytable -a /etc/rc_maps.cfg
>>>>>>>>>>> Old keytable cleared
>>>>>>>>>>> Wrote 136 keycode(s) to driver
>>>>>>>>>>> Protocols changed to RC-5
>>>>>>>>
>>>>>>>>>>> I have heard this should show up as a normal keyboard to the
>>>>>>> system
>>>>>>>>>>> but no button presses cause anything to happen to the system
>and
>>>>>>>>>>> trying lirc with devinput (with devinput lircd.conf) and
>then
>>>>>>> opening
>>>>>>>>>>> irw doesn't show any button presses either
>>>>>>>>
>>>>>>>>
>>>>>>>>>> Don't force your card to a 1250, if the driver detects it is
>a
>>>>>>> 1270
>>>>>>>>> with a CX23888 chip.  No need to use the enable_885_ir
>parameter
>>>>>>> with
>>>>>>>>> a CX23888 chip, either.  It only applies for two board models
>with
>>>>>>>>> actual CX23885 chips.
>>>>>>>>>>
>>>>>>>>>> Use of IR with the CX23888 chip should be realtively trouble
>free,
>>>>>>>>> *if* the 1270's IR has been enabled in the driver code.  It
>likely
>>>>>>> has
>>>>>>>>> not been.  I don't have the source code in front of me at the
>moment
>>>>>>>>> to check.
>>>>>>>>>>
>>>>>>>>>> It shouldn't be hard for anyone to patch a few files in the
>>>>>>> cx23885
>>>>>>>>> driver to add it.  Patches are welcome...
>>>>>>>>>>
>>>>>>>>
>>>>>>>>> Under auto detect without the enable_885_ir there is no
>difference
>>>>>>> so
>>>>>>>>> I can only hope someone will add support for it.
>>>>>>>>
>>>>>>>> I wasn't kidding when I said the patch is sholdn't be hard for
>>>>>>> anyone.
>>>>>>>> It is really, really simple cut-and-paste job.  In fact here is
>an
>>>>>>>> *untested* patch.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Andy
>>>>>>>>
>>>>>>>> cx23885: Add IR Rx support for HVR-1270 boards
>>>>>>>>
>>>>>>>> Signed-off-by: Andy Walls <awalls@xxxxxxxxxxxxxxxx>
>>>>>>>>
>>>>>>>>
>>>>>>>> diff --git a/drivers/media/video/cx23885/cx23885-cards.c
>>>>>>> b/drivers/media/video/cx23885/cx23885-cards.c
>>>>>>>> index ea88722..5635588 100644
>>>>>>>> --- a/drivers/media/video/cx23885/cx23885-cards.c
>>>>>>>> +++ b/drivers/media/video/cx23885/cx23885-cards.c
>>>>>>>> @@ -1097,12 +1097,19 @@ int cx23885_ir_init(struct cx23885_dev
>*dev)
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1800:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1200:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1400:
>>>>>>>> -       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1275:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1255:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1210:
>>>>>>>>                /* FIXME: Implement me */
>>>>>>>>                break;
>>>>>>>> +       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>> +               ret = cx23888_ir_probe(dev);
>>>>>>>> +               if (ret)
>>>>>>>> +                       break;
>>>>>>>> +               dev->sd_ir = cx23885_find_hw(dev,
>CX23885_HW_888_IR);
>>>>>>>> +               v4l2_subdev_call(dev->sd_cx25840, core,
>>>>>>> s_io_pin_config,
>>>>>>>> +                                ir_rx_pin_cfg_count,
>ir_rx_pin_cfg);
>>>>>>>> +               break;
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1850:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1290:
>>>>>>>>                ret = cx23888_ir_probe(dev);
>>>>>>>> @@ -1156,6 +1163,7 @@ int cx23885_ir_init(struct cx23885_dev
>*dev)
>>>>>>>>  void cx23885_ir_fini(struct cx23885_dev *dev)
>>>>>>>>  {
>>>>>>>>        switch (dev->board) {
>>>>>>>> +       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1850:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1290:
>>>>>>>>                cx23885_irq_remove(dev, PCI_MSK_IR);
>>>>>>>> @@ -1199,6 +1207,7 @@ int netup_jtag_io(void *device, int tms,
>int
>>>>>>> tdi, int read_tdo)
>>>>>>>>  void cx23885_ir_pci_int_enable(struct cx23885_dev *dev)
>>>>>>>>  {
>>>>>>>>        switch (dev->board) {
>>>>>>>> +       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1850:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1290:
>>>>>>>>                if (dev->sd_ir)
>>>>>>>> @@ -1357,6 +1366,7 @@ void cx23885_card_setup(struct
>cx23885_dev
>>>>>>> *dev)
>>>>>>>>        case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
>>>>>>>>        case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
>>>>>>>>        case CX23885_BOARD_COMPRO_VIDEOMATE_E800:
>>>>>>>> +       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1850:
>>>>>>>>        case CX23885_BOARD_MYGICA_X8506:
>>>>>>>>        case CX23885_BOARD_MAGICPRO_PROHDTVE2:
>>>>>>>> diff --git a/drivers/media/video/cx23885/cx23885-input.c
>>>>>>> b/drivers/media/video/cx23885/cx23885-input.c
>>>>>>>> index e97cafd..bc28d2c 100644
>>>>>>>> --- a/drivers/media/video/cx23885/cx23885-input.c
>>>>>>>> +++ b/drivers/media/video/cx23885/cx23885-input.c
>>>>>>>> @@ -82,6 +82,7 @@ void cx23885_input_rx_work_handler(struct
>>>>>>> cx23885_dev *dev, u32 events)
>>>>>>>>                return;
>>>>>>>>
>>>>>>>>        switch (dev->board) {
>>>>>>>> +       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1850:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1290:
>>>>>>>>        case CX23885_BOARD_TEVII_S470:
>>>>>>>> @@ -133,6 +134,7 @@ static int cx23885_input_ir_start(struct
>>>>>>> cx23885_dev *dev)
>>>>>>>>
>>>>>>>>        v4l2_subdev_call(dev->sd_ir, ir, rx_g_parameters,
>&params);
>>>>>>>>        switch (dev->board) {
>>>>>>>> +       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1850:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1290:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1250:
>>>>>>>> @@ -257,6 +259,7 @@ int cx23885_input_init(struct cx23885_dev
>*dev)
>>>>>>>>                return -ENODEV;
>>>>>>>>
>>>>>>>>        switch (dev->board) {
>>>>>>>> +       case CX23885_BOARD_HAUPPAUGE_HVR1270:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1850:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1290:
>>>>>>>>        case CX23885_BOARD_HAUPPAUGE_HVR1250:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> Thank you I just tested those changes and they work (in getting
>the IR
>>>>>>> to work to the same level as forcing the card model and not
>cause
>>>>>>> problems for the video)
>>>>>>>
>>>>>>> I still can't use the remote any more then forcing the card
>model but
>>>>>>> I have a guess on that. According to everything I have read the
>>>>>>> ir-kbd-i2c module is needed but it never auto loads on my system
>so I
>>>>>>> am thinking it is just not updated to know about this card and
>may
>>>>>>> only need the same type of changes as the cx23885 module. (I am
>>>>>>> guessing since I can't even program a Hello World) Is there any
>chance
>>>>>>> you would be able to see if any easy changes could be done to
>it.
>>>>>>
>>>>>> You don't need ir-kbd-i2c for this ir unit.  If you don't have
>the right keymap loaded, the remote won't work though.
>>>>>>
>>>>>> The cx23885 module has a parameter called ir_888_debug (or
>something similar).  Set it to a value of around 7 or so.  The cx23885
>module will log pulse and space measurments to dmesg or
>var/log/messages.  That way you can at least verify pulses are being
>processed.
>>>>>>
>>>>>> If pulses are not being processed, check that the cable is firmly
>plugged into the card and that you have fresh batteries in the remote.
>>>>>>
>>>>>> I don't have a 1270 of my own, so I can't help too much.
>>>>>>
>>>>>> Andy
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> I have been unable to get any debug output but on two occasions I
>got
>>>>> the down arrow to work on the XBMC menu but both times were
>followed
>>>>> by the system locking up and I can't reproduce it anymore.
>>>>>
>>>>> Do I need the parameter to enable ir or not? I have tried it both
>ways.
>>>>>
>>>>
>>>> After a couple more 1 button freezes the computer. I had one
>occasion
>>>> that for about 20 seconds the remote was working perfect
>(play/pause,
>>>> arrows, volume) then it just stopped working for no reason (but
>>>> luckily didn't crash the computer) This was with no module
>parameters.
>>>>
>>>> So it can work but is extremely flaky.
>>>>
>>>
>>> I noticed something I missed from the debug parameter, when I press
>>> the first button after loading the module this error gets printed to
>>> the syslog
>>>
>>> do_IRQ: 3.185 No irq handler for vector (irq -1)
>>>
>>> I have reproduced it a few times to match up to the first button
>press
>>> but not after.
>>>
>> 
>> OK I have it working now after Googling for a bit I found a fix for
>> that error I had to add the kernel option "pci=nomsi" to grub. Now it
>> works.
>> I just hope that didn't cause any problems with other hardware since
>> during bootup it causes MSI-X to fail which I Googled to figure out
>> what that is and my guess is it could cause problems for other
>> hardware that needs it.
>> 
>> Now to figure out why some buttons don't seem to be in the keymap.
>> Like the OK button But that will be a different message.
>> 
>> 
>> Thank you again for your patch you have no idea how grateful I am.
>
>As the patch seems were tested, I'll apply it on my tree.
>
>Thanks!
>Mauro

That's fine.

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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux