Grab a few more little IR fixes and document commits

Signed-off-by: Jarod Wilson <jarod@redhat.com>
This commit is contained in:
Jarod Wilson 2010-10-11 16:49:13 -04:00
parent 870acad08e
commit 167ee12e60
3 changed files with 529 additions and 0 deletions

View File

@ -1,3 +1,59 @@
This patch rolls up the following commits pending merge in the v4l-dvb tree:
commit 7ce3b9f7bdb40837e15af89bb9d623c207ac9586
Author: Jarod Wilson <jarod@redhat.com>
Date: Sat Oct 9 14:17:03 2010 -0400
lirc_dev: fixup error messages w/missing newlines
Signed-off-by: Jarod Wilson <jarod@redhat.com>
commit d1af871dadaf58580490431a335ea122a9b00d92
Author: Jarod Wilson <jarod@redhat.com>
Date: Sat Oct 9 14:07:06 2010 -0400
lirc: wire up .compat_ioctl to main ioctl handler
As pointed out (and tested) by Joris van Rantwijk, we do actually need
to wire up .compat_ioctl for 32-bit lirc userspace to work with 64-bit
lirc kernelspace. Do it. And add a check to make sure we get a valid
irctl in the ioctl handler.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
commit 8dea589f4dc51b0363555a53fee128965a0548d4
Author: Jarod Wilson <jarod@redhat.com>
Date: Fri Oct 8 16:24:21 2010 -0400
IR/lirc: further ioctl portability fixups
From: Joris van Rantwijk <jorispubl@xs4all.nl>
----8<----
I tested lirc_serial and found that it works fine.
Except the LIRC ioctls do not work in my 64-bit-kernel/32-bit-user
setup. I added compat_ioctl entries in the drivers to fix this.
While doing so, I noticed inconsistencies in the argument type of
the LIRC ioctls. All ioctls are declared in lirc.h as having argument
type __u32, however there are a few places where the driver calls
get_user/put_user with an unsigned long argument.
The patch below changes lirc_dev and lirc_serial to use __u32 for all
ioctl arguments, and adds compat_ioctl entries.
It should probably also be done in the other low-level drivers,
but I don't have hardware to test those.
----8<----
I've dropped the .compat_ioctl addition from Joris' original patch,
as I swear the non-compat definition should now work for both 32-bit
and 64-bit userspace. Technically, I think we still need/want a
Signed-off-by: from Joris here. Joris? (And sorry for the lengthy delay
in getting a reply to you).
Signed-off-by: Jarod Wilson <jarod@redhat.com>
---
drivers/media/IR/ir-lirc-codec.c | 13 +++++++----
drivers/media/IR/lirc_dev.c | 36 ++++++++++++++++++++----------
drivers/staging/lirc/lirc_igorplugusb.c | 2 +-

View File

@ -1,3 +1,216 @@
This patch rolls up the following v4l-dvb upstream commits:
commit 9b44ed200f1584f029da82e60e1f284d1d8de3da
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:26 2010 -0300
V4L/DVB: IR: Port ene driver to new IR subsystem and enable it
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 46192437f6d17c49f37bef73c97a14f2ed278db0
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:25 2010 -0300
V4L/DVB: STAGING: remove lirc_ene0100 driver
Add latest unported version of this driver to media/IR.
Next patch will port it to ir core.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit abf84383ecadc8ada1963f9976e887c6f0b1bad9
Author: Joe Perches <joe@perches.com>
Date: Mon Jul 12 17:50:03 2010 -0300
V4L/DVB: drivers/media: Remove unnecessary casts of private_data
Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Jarod Wilson <jarod@redhat.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 26699e3cf2ce4938112ddf60e084feaf4ce435b5
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:20 2010 -0300
V4L/DVB: IR: NECX: support repeat
This adds support for repeat detecting for NECX variant
Tested with uneversal remote
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 7f01033b288bb86d4f9d2885966d2c255f3659c1
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:19 2010 -0300
V4L/DVB: IR: nec decoder: fix repeat
Repeat space is 4 units, not 8.
Current code would never trigger a repeat.
However that isn't true for NECX, so repeat there
must be handled differently.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 54f7413aa4ce44d18c7f9744e37ff64c4668daa6
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:18 2010 -0300
V4L/DVB: IR: JVC: make repeat work
Currently, jvc decoder will attempt misdetect next press as a repeat
of last keypress, therefore second keypress isn't detected.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 951c6835be77d1baf619f7960c2beb22eea36947
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:24 2010 -0300
V4L/DVB: IR: report unknown scancodes the in-kernel decoders found
This way it is possible to use evtest to create keymap for unknown remote.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 3879b56940f84f3b90fb77ad5860083930be4bac
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:23 2010 -0300
V4L/DVB: IR: extend interfaces to support more device settings
LIRC: add new IOCTL that enables learning mode (wide band receiver)
Still missing features: carrier report & timeout reports.
Will need to pack these into ir_raw_event
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 2f5fb55510cf309cd749f1af85e26274f9e360ab
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:22 2010 -0300
V4L/DVB: IR: add helper function for hardware with small o/b buffer
Some ir input devices have small buffer, and interrupt the host
each time it is full (or half full)
Add a helper that automaticly handles timeouts, and also
automaticly merges samples of same time (space-space)
Such samples might be placed by hardware because size of
sample in the buffer is small (a byte for example).
Also remove constness from ir_dev_props, because it now contains timeout
settings that driver might want to change
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Acked-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 0f3f74ce40f25e80e3733e5d5293251568b03d83
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:21 2010 -0300
V4L/DVB: IR: Allow not to compile keymaps in
Currently, ir device registration fails if keymap requested by driver is not found.
Fix that by always compiling in the empty keymap, and using it as a failback.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Acked-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit daad37e3a9e0b9366da8eecb3e64bd47ac831938
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:17 2010 -0300
V4L/DVB: IR: replace workqueue with kthread
It is perfectly possible to have ir_raw_event_work
running concurently on two cpus, thus we must protect
it from that situation.
This stems from the fact that if hardware sends short packets of samples
we might end up queueing the work item more times that nessesary.
Such job isn't well suited for a workqueue, so use a kernel thread.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 7c4be7bab7bb06974d649835cac66b5df984047f
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:16 2010 -0300
V4L/DVB: IR: replace spinlock with mutex
Some handlers (lirc for example) allocates memory on initialization,
doing so in atomic context is cumbersome.
Fixes warning about sleeping function in atomic context.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 211ed16e58b2fdf0335e47546b252398b47e7790
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:15 2010 -0300
V4L/DVB: IR: minor fixes
* lirc: Don't propagate reset event to userspace
* lirc: Remove strange logic from lirc that would make first sample always be pulse
* Make TO_US macro actualy print what it should.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit d8ffb6454250115ca0636d8481030466c1e3fdec
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Sat Jul 31 11:59:14 2010 -0300
V4L/DVB: IR: Kconfig fixes
Move IR drives below separate menu.
This allows to disable them.
Also correct a typo.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 5af935cc96a291f90799bf6a2587d87329a91699
Author: Mauro Carvalho Chehab <mchehab@redhat.com>
Date: Sun Aug 1 08:02:35 2010 -0300
V4L/DVB: dib0700: break keytable into NEC and RC-5 variants
Instead of having one big keytable with 2 protocols inside, break it
into two separate tables, being one for NEC and another for RC-5 variants,
and properly identify what variant should be used at the boards entries.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 50b9d21ae2ac1b85be46f1ee5aa1b5e588622361
Author: Jarod Wilson <jarod@redhat.com>
Date: Fri Aug 27 18:21:14 2010 -0300
V4L/DVB: mceusb: add two new ASUS device IDs
Reported in lirc sf.net tracker and on lirc mailing list
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff -Naurp linux-2.6.35/drivers/media/IR/ene_ir.c linux-2.6.35.new/drivers/media/IR/ene_ir.c
--- linux-2.6.35/drivers/media/IR/ene_ir.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.35.new/drivers/media/IR/ene_ir.c 2010-09-09 23:21:49.000000000 -0400

View File

@ -1,3 +1,218 @@
This patch rolls up the following upstream v4l-dvb tree commits:
commit 48f1bba604f1a5a312368bad822d2c03198a3ec3
Author: Jarod Wilson <jarod@redhat.com>
Date: Fri Sep 17 18:12:31 2010 -0300
V4L/DVB: IR/lirc_dev: check for valid irctl in unregister path
Prompted by Red Hat bugzilla #633023
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit e156b731596795714f1428c4ec00fe9f5468e083
Author: Jarod Wilson <jarod@redhat.com>
Date: Wed Sep 15 00:28:41 2010 -0300
V4L/DVB: IR/imon: set up mce-only devices w/mce keytable
Currently, they get set up with the pad keytable, which they can't
actually use at all. Also add another variant of volume scancodes from
another 0xffdc device, and properly set up the 0x9e 0xffdc device as an
iMON VFD w/MCE proto IR.
Based on data and a prior patch from Anders Eriksson on the lirc list.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 08d23a4d7bf43cd7246f6546ddeab8c25d5d4e45
Author: Jarod Wilson <jarod@redhat.com>
Date: Wed Sep 15 15:56:03 2010 -0300
V4L/DVB: IR/imon: protect ictx's kc and last_keycode w/spinlock
Lest we get our keycodes wrong... Thus far, in practice, I've not found
it to actually matter, but its one of the issues raised in
https://bugzilla.kernel.org/show_bug.cgi?id=16351 that wasn't addressed
by converting to using native IR keydown/up functions.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 4d2acb4e7a23d47b8792bce34cf874da24193ce2
Author: David Härdeman <david@hardeman.nu>
Date: Wed Sep 15 15:42:07 2010 -0300
V4L/DVB: imon: split mouse events to a separate input dev
This is a stab at separating the mouse (and front panel/knob) events
out to a separate input device. This is necessary in preparation for
the next patch which makes the rc-core input dev opaque to rc
drivers.
I can't verify the correctness of the patch beyond the fact that it
compiles without warnings. The driver has resisted most of my
attempts at understanding it properly...for example, the double calls
to le64_to_cpu() and be64_to_cpu() which are applied in
imon_incoming_packet() and imon_panel_key_lookup() would amount
to a bswab64() call, irregardless of the cpu endianness, and I think
the code wouldn't have worked on a big-endian machine...
- Minor alterations to apply with minimal core IR changes
- Use timer for imon keys too, since its entirely possible for the
receiver to miss release codes (either by way of another key being
pressed while the first is held or by the remote pointing away from
the recevier when the key is release. yes, I know, its ugly).
- Bump driver version number, since this is a fairly significant change
(for the much much better).
Tested successfully w/an imon knob receiver.
Signed-off-by: David Härdeman <david@hardeman.nu>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 04c9c7d7135d0504638e02603dafa714e8d58945
Author: Jarod Wilson <jarod@redhat.com>
Date: Wed Sep 15 15:31:12 2010 -0300
V4L/DVB: IR: export ir_keyup so imon driver can use it directly
The imon driver currently reimplements its own version of ir_keyup
(along with key release timer functionality also already present in the
core IR code). A follow-up imon patch will make use of ir_keyup and the
IR stack's key release code.
Trivial extraction from David Härdeman's pending rc-core merge and
device interface abstraction patchset to facilitate merging a patch
based on his imon input dev split patch ahead of the larger churn, which
is slated for post-2.6.37-rc1 (after Dmitry's large keycode patches are
merged in mainline).
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Also includes the following patches pending v4l-dvb merge:
commit 4032fc38fc2839871acd03a42d8d85ef1a43e2ff
Author: Jarod Wilson <jarod@redhat.com>
Date: Fri Oct 8 15:23:56 2010 -0400
IR/Kconfig: sort hardware entries alphabetically
Signed-off-by: Jarod Wilson <jarod@redhat.com>
commit fc6507cb31f7f91d451726c89df7b59c566f62b8
Author: Jarod Wilson <jarod@redhat.com>
Date: Fri Oct 8 15:16:23 2010 -0400
nuvoton-cir: add proper rx fifo overrun handling
Per discussion with Andy Walls on irc, rx fifo overruns are not all that
uncommon on a busy system, and the initial posting of the nuvoton-cir
driver doesn't handle them well enough. With this addition, we'll drain
the hw fifo, attempt to process any ir pulse trains completed with that
flush, then we'll issue a hw rx fifo clear and reset the raw ir sample
kfifo and start over collecting raw ir data.
Also slightly refactors the cir interrupt enabling so that we always get
consistent flags set and only have to modify them in one place, should
they need to be altered.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
commit 6728577395dac7238f3900096ab7236b95e8516f
Author: Jarod Wilson <jarod@redhat.com>
Date: Thu Oct 7 16:50:34 2010 -0400
IR: add driver for Nuvoton w836x7hg integrated CIR
This is a new ir-core pnp driver for the Nuvoton w836x7hg integrated CIR
function. The chip is found on at least the ASRock ION 330HT boxes and
apparently, on a number of Intel DP55-series motherboards:
http://www.asrock.com/nettop/overview.asp?Model=ION%20330HT
http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17685&lang=eng
This driver was made possible by a hardware donation from Nuvoton, along
with sample code (in the form of an lirc driver) and datasheet, so huge
thanks to them for supporting this effort. Note that this driver
constitutes a massive rewrite, porting from the lirc interfaces to the
ir-core interfaces, and restructuring the driver to look more like Maxim
Levitsky's ene_ir driver (as well as generally making it look more like
kernel code).
There's some work left to be done on this driver, to fully support the
range of functionality possible, but receive and IR power-on/wake are
both functional (may require setting wake key under another OS atm). The
hardware I've got (one of the ASRock boxes) only supports RX, so TX is
completely untested as of yet. Certain RX parameters, like sample
resolution and RX IRQ sample length trigger level could possibly stand
to be made tweakable via modparams or sysfs nodes, but the current
values work well enough for me w/an MCE RC6A remote.
The original lirc driver carried support for the Windows MCE IR
keyboard/mouse device, which I plan to add back generically, in a way
that should be usable by any raw IR receiver (or at least by this driver
and the mceusb driver).
Suspend and resume have also been tested, the power button on my remote
can be used to wake the machine, and CIR functionality resumes just
fine. Module unload/reload has also been tested, though not extensively
or repetitively. Also tested to work with the lirc bridge plugin for
userspace decoding.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
commit 3551d7d1ab34408eb6ae228d200243723c151db0
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Mon Sep 6 18:26:10 2010 -0300
V4L/DVB: IR: extend MCE keymap
These keys are found on remote bundled with
Toshiba Qosmio F50-10q.
Found and tested by, Sami R <maesesami@gmail.com>
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Acked-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit e081b5aead012579740501220624cafc35f22510
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Mon Sep 6 18:26:09 2010 -0300
V4L/DVB: IR: fix keys beeing stuck down forever
The logic in ir_timer_keyup was inverted.
In case that values aren't equal,
the meaning of the time_is_after_eq_jiffies(ir->keyup_jiffies) is that
ir->keyup_jiffies is after the the jiffies or equally that
that jiffies are before the the ir->keyup_jiffies which is
exactly the situation we want to avoid (that the timeout is in the future)
Confusing Eh?
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Acked-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
commit 30e18408adbdd840756fea541245b833dc764196
Author: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Mon Sep 6 18:26:08 2010 -0300
V4L/DVB: IR: fix duty cycle capability
Due to typo lirc bridge enabled wrong capability.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Acked-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
drivers/media/IR/Kconfig | 27 +-
drivers/media/IR/Makefile | 1 +
drivers/media/IR/imon.c | 583 +++++++++++--------
@ -1038,6 +1253,16 @@ index 7961d59..59510cd 100644
/**
* ir_timer_keyup() - generates a keyup event after a timeout
@@ -319,7 +319,7 @@ static void ir_timer_keyup(unsigned long cookie)
* a keyup event might follow immediately after the keydown.
*/
spin_lock_irqsave(&ir->keylock, flags);
- if (time_is_after_eq_jiffies(ir->keyup_jiffies))
+ if (time_is_before_eq_jiffies(ir->keyup_jiffies))
ir_keyup(ir);
spin_unlock_irqrestore(&ir->keylock, flags);
}
diff --git a/drivers/media/IR/nuvoton-cir.c b/drivers/media/IR/nuvoton-cir.c
new file mode 100644
index 0000000..fdb280e
@ -2707,3 +2932,38 @@ index eb7fddf..4dd43d4 100644
u32 ir_g_keycode_from_table(struct input_dev *input_dev, u32 scancode);
/* From ir-raw-event.c */
diff --git a/drivers/media/IR/keymaps/rc-rc6-mce.c b/drivers/media/IR/keymaps/rc-rc6-mce.c
index 64264f7..39557ad 100644
--- a/drivers/media/IR/keymaps/rc-rc6-mce.c
+++ b/drivers/media/IR/keymaps/rc-rc6-mce.c
@@ -19,6 +19,7 @@ static struct ir_scancode rc6_mce[] = {
{ 0x800f0416, KEY_PLAY },
{ 0x800f0418, KEY_PAUSE },
+ { 0x800f046e, KEY_PLAYPAUSE },
{ 0x800f0419, KEY_STOP },
{ 0x800f0417, KEY_RECORD },
@@ -37,6 +38,8 @@ static struct ir_scancode rc6_mce[] = {
{ 0x800f0411, KEY_VOLUMEDOWN },
{ 0x800f0412, KEY_CHANNELUP },
{ 0x800f0413, KEY_CHANNELDOWN },
+ { 0x800f043a, KEY_BRIGHTNESSUP },
+ { 0x800f0480, KEY_BRIGHTNESSDOWN },
{ 0x800f0401, KEY_NUMERIC_1 },
{ 0x800f0402, KEY_NUMERIC_2 },
diff --git a/drivers/media/IR/ir-lirc-codec.c b/drivers/media/IR/ir-lirc-codec.c
index 77b5946..e63f757 100644
--- a/drivers/media/IR/ir-lirc-codec.c
+++ b/drivers/media/IR/ir-lirc-codec.c
@@ -267,7 +267,7 @@ static int ir_lirc_register(struct input_dev *input_dev)
features |= LIRC_CAN_SET_SEND_CARRIER;
if (ir_dev->props->s_tx_duty_cycle)
- features |= LIRC_CAN_SET_REC_DUTY_CYCLE;
+ features |= LIRC_CAN_SET_SEND_DUTY_CYCLE;
}
if (ir_dev->props->s_rx_carrier_range)