1. 03 8月, 2010 8 次提交
    • J
      V4L/DVB: IR/mceusb: more streamlining of device init · 22b0766b
      Jarod Wilson 提交于
      Spent a while last night getting device initialization packet captures
      under Windows for all generations of devices. There are a few places
      where we were doing things differently, and few things we were doing
      that we don't need to do, particularly on gen3 hardware, and I *think*
      one of those things is what was locking up my pinnacle hw from time to
      time -- at least, its been perfectly well behaved every time its been
      plugged in since making this change.
      
      First up, we're adding a bit more to the gen1 init routine here. Its
      not absolutely necessary, the hardware works the same both with and
      without it, but I'd like to be consistent w/Windows here.
      
      Second, DEVICE_RESET is never called when initializing either of my
      gen3 devices, its only called for gen1 and gen2. The bits in the gen3
      init after removing that, are safe (and interesting) to run on all
      hardware, so there's no more gen3-specific init done, there's instead
      a generic mceusb_get_parameters() that is run for all hardware.
      
      Third, the gen3 flag isn't needed. We only care if hardware is gen3
      during probe, so I've dropped that from the device flags struct.
      
      Successfully tested on all three generations of mceusb hardware.
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      22b0766b
    • M
      V4L/DVB: IR/mceusb: remove unused vars from gen1 init · ca17a4f0
      Mauro Carvalho Chehab 提交于
      Prior init unification/simplification patch made these unused, forgot
      to remove them, so this silences:
      
      drivers/media/IR/mceusb.c: In function ‘mceusb_gen1_init’:
      drivers/media/IR/mceusb.c:769: warning: unused variable ‘partial’
      drivers/media/IR/mceusb.c:768: warning: unused variable ‘i’
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      ca17a4f0
    • J
      V4L/DVB: IR/mceusb: unify and simplify different gen device init · b48592e4
      Jarod Wilson 提交于
      Started out as an effort to try to tackle the last remaining issue I'm
      having with this damned pinnacle device getting wedged the first time
      its plugged in after an indeterminate length of not being plugged in.
      Didn't get that solved yet, but did streamline the init code a bit more
      and remove some superfluous gunk. Nukes a completely unneeded call to
      usb_device_init() and several lines of overly complex crap in the gen1
      device init path.
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      b48592e4
    • J
      V4L/DVB: IR/mceusb: add tx callback functions and wire up · e23fb964
      Jarod Wilson 提交于
      mchehab: merged with IR/mceusb: userspace buffer copy moved out of driver
      
          Userspace buffer copy moved out of driver and into lirc bridge driver
      
      [mchehab@redhat.com: merged the patch to avoid compilation errors with allyesconfig ]
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      e23fb964
    • J
      V4L/DVB: IR/mceusb: kill pinnacle-device-specific nonsense · d732a72d
      Jarod Wilson 提交于
      I have pinnacle hardware now. None of this pinnacle-specific crap is at
      all necessary (in fact, some of it needed to be removed to actually make
      it work). The only thing unique about this device is that it often
      transfers inbound data w/a header of 0x90, meaning 16 bytes of IR data
      following it, so I had to make adjustments for that, and now its working
      perfectly fine.
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      d732a72d
    • J
      V4L/DVB: IR/mceusb: misc cleanups and init fixes · 657290b6
      Jarod Wilson 提交于
      The first-gen mceusb device init code, while mostly functional, had a few
      issues in it. This patch does the following:
      
      1) removes use of magic numbers
      2) eliminates mapping of memory from stack
      3) makes debug spew translator functional
      
      Additionally, this clean-up revealed that we cannot read the proper default
      tx blaster bitmask from the device, we do actually have to initialize it
      ourselves, which requires use of a somewhat gross list-based mask inversion
      check.
      
      This patch also removes the entirely unnecessary use of struct ir_input_state.
      
      Also supersedes two earlier patches that also touched on first-gen
      cleanup, but were partially botched. This one actually compiles, works,
      etc., I swear. ;)
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      657290b6
    • J
      V4L/DVB: IR/mceusb: use the proper ir-core device unregister function · bd3881b1
      Jarod Wilson 提交于
      Was using input_unregister_device directly, instead of using
      ir_input_unregister, which tears down a bunch of other things in
      addition to eventually calling input_unregister_device.
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      bd3881b1
    • J
      V4L/DVB: IR: add mceusb IR receiver driver · 66e89522
      Jarod Wilson 提交于
      This is a new driver for the Windows Media Center Edition/eHome
      Infrared Remote transceiver devices. Its a port of the current
      lirc_mceusb driver to ir-core, and currently lacks transmit support,
      but will grow it back soon enough... This driver also differs from
      lirc_mceusb in that it borrows heavily from a simplified IR buffer
      decode routine found in Jon Smirl's earlier ir-mceusb port.
      
      This driver has been tested on the original first-generation MCE IR
      device with the MS vendor ID, as well as a current-generation device
      with a Topseed vendor ID. Every receiver supported by lirc_mceusb
      should work equally well. Testing was done primarily with RC6 MCE
      remotes, but also briefly with a Hauppauge RC5 remote, and all works
      as expected.
      
      v2: fix call to ir_raw_event_handle so repeats work as they should.
      Signed-off-by: NJarod Wilson <jarod@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      66e89522