All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Mark Lord <kernel@teksavvy.com>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	linux-input@vger.kernel.org, linux-media@vger.kernel.org
Subject: Extending rc-core/userspace to handle bigger scancodes - Was: Re: 2.6.36/2.6.37: broken compatibility with userspace input-utils ?
Date: Tue, 25 Jan 2011 12:42:57 -0200	[thread overview]
Message-ID: <4D3EE171.4020605@redhat.com> (raw)
In-Reply-To: <20110125065217.GE7850@core.coreip.homeip.net>

Em 25-01-2011 04:52, Dmitry Torokhov escreveu:
> On Mon, Jan 24, 2011 at 09:31:17PM -0800, Dmitry Torokhov wrote:
>> On Tue, Jan 25, 2011 at 12:07:29AM -0500, Mark Lord wrote:
>>> On 11-01-25 12:04 AM, Mark Lord wrote:
>>>> On 11-01-24 11:55 PM, Dmitry Torokhov wrote:
>>>>> On Mon, Jan 24, 2011 at 11:37:06PM -0500, Mark Lord wrote:
>>>> ..
>>>>>> This results in (map->size==10) for 2.6.36+ (wrong),
>>>>>> and a much larger map->size for 2.6.35 and earlier.
>>>>>>
>>>>>> So perhaps EVIOCGKEYCODE has changed?
>>>>>>
>>>>>
>>>>> So the utility expects that all devices have flat scancode space and
>>>>> driver might have changed so it does not recognize scancode 10 as valid
>>>>> scancode anymore.
>>>>>
>>>>> The options are:
>>>>>
>>>>> 1. Convert to EVIOCGKEYCODE2
>>>>> 2. Ignore errors from EVIOCGKEYCODE and go through all 65536 iterations.
>>>>
>>>> or 3. Revert/fix the in-kernel regression.
>>>>
>>>> The EVIOCGKEYCODE ioctl is supposed to return KEY_RESERVED for unmapped
>>>> (but value) keycodes, and only return -EINVAL when the keycode itself
>>>> is out of range.
>>>>
>>>> That's how it worked in all kernels prior to 2.6.36,
>>>> and now it is broken.  It now returns -EINVAL for any unmapped keycode,
>>>> even though keycodes higher than that still have mappings.
>>>>
>>>> This is a bug, a regression, and breaks userspace.
>>>> I haven't identified *where* in the kernel the breakage happened,
>>>> though.. that code confuses me.  :)
>>>
>>> Note that this device DOES have "flat scancode space",
>>> and the kernel is now incorrectly signalling an error (-EINVAL)
>>> in response to a perfectly valid query of a VALID (and mappable)
>>> keycode on the remote control
>>>
>>> The code really is a valid button, it just doesn't have a default mapping
>>> set by the kernel (I can set a mapping for that code from userspace and it works).
>>>
>>
>> OK, in this case let's ping Mauro - I think he done the adjustments to
>> IR keymap hanlding.
>>
>> Thanks.
>>
> 
> BTW, could you please try the following patch (it assumes that
> EVIOCGVERSION in input.c is alreday relaxed).

Dmitry,

Thanks for your patch. I used part of his logic to improve the ir-keytable 
tool at v4l-utils:
	http://git.linuxtv.org/v4l-utils.git

The ir-keytable is a tool that just handles Remote Controller input devices,
and do it well, allowing all sorts of operations related to it, and using the
sysfs /sys/class/rc stuff to help its operation. Without any arguments, it
lists the existing RC devices. Arguments are there to allow enabling/disabling
RC protocols, reading/writing/cleaning keycode tables and to test if the
remote is generating events (EV_MSC/EV_KEY/EV_REP/EV_SYN).

Now, it will be using V2 for reads and keycode cleanups, but will still use
V1 for writes, as, currently with 32 bits scancodes, there's no gain to use
V2 for it. Also, changing the tool to use more bits will require to rewrite
part of the code.

Also, writing a rc-core code that can work with an arbitrary large scancode
is still on our TODO list.

I'm not entirely sure how to extend the scancode size, as there are a
few options:
	1) Core would always work internally with 32 bytes (1024 bits). Some
logic will be required to accept entries with .len < 32;
	2) Drivers will define the code lengtht, and core will use it,
returning -EINVAL if userspace uses a len grater than used internally by
the core. In this case, we'll need a sysfs node to tell userspace what's
the maximum allowed size;
	3) Drivers will define the max number of bits, and core will use it,
truncating the number to the max size if userspace tries to write more bits 
than the internal representation;
	4) Drivers will define the max number of bits, and core will use it,
returning an error if the number is bigger than the max scancode that can be
represented internally.

I think that (2) is the best way for doing it, but I'm not yet entirely sure.
So, it is good to hear some comments about that.

Cheers,
Mauro

  reply	other threads:[~2011-01-25 14:43 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-23 17:03 2.6.36/2.6.37: broken compatibility with userspace input-utils ? Mark Lord
2011-01-24 17:54 ` Dmitry Torokhov
2011-01-25  0:32   ` Mark Lord
2011-01-25  0:55     ` Dmitry Torokhov
2011-01-25  4:13       ` Mark Lord
2011-01-25  4:20         ` Dmitry Torokhov
2011-01-25  4:37           ` Mark Lord
2011-01-25  4:43             ` Mark Lord
2011-01-25  4:55             ` Dmitry Torokhov
2011-01-25  5:04               ` Mark Lord
2011-01-25  5:07                 ` Mark Lord
2011-01-25  5:15                   ` Mark Lord
2011-01-25  5:31                   ` Dmitry Torokhov
2011-01-25  6:52                     ` Dmitry Torokhov
2011-01-25 14:42                       ` Mauro Carvalho Chehab [this message]
2011-01-25 16:55                         ` Extending rc-core/userspace to handle bigger scancodes - Was: " Dmitry Torokhov
2011-01-26  9:44                           ` Mauro Carvalho Chehab
2011-01-25 11:42                     ` Mauro Carvalho Chehab
2011-01-25 14:32                       ` Mark Lord
2011-01-25 16:48                       ` Dmitry Torokhov
2011-01-25 20:09                         ` Linus Torvalds
2011-01-25 20:54                           ` Dmitry Torokhov
2011-01-25 21:01                             ` Dmitry Torokhov
2011-01-25 21:20                               ` Linus Torvalds
2011-01-25 21:20                                 ` Linus Torvalds
2011-01-25 21:50                                 ` Dmitry Torokhov
2011-01-25 22:00                             ` Mauro Carvalho Chehab
2011-01-25 22:22                               ` Mark Lord
2011-01-25 23:29                                 ` Dmitry Torokhov
2011-01-26  2:00                                   ` Dmitry Torokhov
2011-01-26 11:26                                     ` Mauro Carvalho Chehab
2011-01-26 13:08                                       ` Gerd Hoffmann
2011-01-26 14:18                                         ` Mauro Carvalho Chehab
2011-01-26 14:52                                           ` Gerd Hoffmann
2011-01-26 16:46                                           ` Dmitry Torokhov
2011-01-26 16:51                                           ` Dmitry Torokhov
2011-01-26 17:29                                             ` Mauro Carvalho Chehab
2011-01-26 18:24                                               ` Dmitry Torokhov
2011-01-26 19:16                                                 ` Gerd Hoffmann
2011-01-26 19:28                                                   ` Mark Lord
2011-01-26 20:09                                                     ` Gerd Hoffmann
2011-01-26 19:28                                                   ` Mauro Carvalho Chehab
2011-01-26 19:32                                                   ` Dmitry Torokhov
2011-01-26 20:07                                                     ` Gerd Hoffmann
2011-01-26 19:27                                                 ` Mark Lord
2011-01-26 14:58                                       ` Mark Lord
2011-01-26 17:41                                         ` Mauro Carvalho Chehab
2011-01-26 17:59                                           ` Dmitry Torokhov
2011-01-26 19:30                                             ` Mark Lord
2011-01-26 15:05                                     ` Mark Lord
2011-01-26 16:44                                       ` Dmitry Torokhov
2011-01-26 19:31                                         ` Mark Lord
2011-01-26 19:38                                           ` Dmitry Torokhov
2011-01-26 17:32                                       ` Mauro Carvalho Chehab
2011-01-26 19:33                                         ` Mark Lord
2011-01-26 19:41                                           ` Dmitry Torokhov
2011-01-26 19:47                                             ` Mark Lord
2011-01-26 19:50                                               ` Dmitry Torokhov
2011-01-26 21:41                                                 ` Mark Lord
2011-01-26 21:49                                                   ` Mark Lord
2011-01-26 22:07                                                     ` Dmitry Torokhov
2011-01-26 22:04                                                   ` Dmitry Torokhov
2011-01-27  1:01                                       ` Mark Lord
2011-01-27  1:07                                         ` Mark Lord
2011-01-27  2:12                                           ` Dmitry Torokhov
2011-01-27  3:18                                             ` Mark Lord
2011-01-27  6:38                                               ` Dmitry Torokhov
2011-01-27 10:30                                                 ` Mauro Carvalho Chehab
2011-01-27 15:00                                                   ` Mark Lord
2011-01-27 17:21                                                   ` Dmitry Torokhov
2011-01-27 18:58                                                     ` Mauro Carvalho Chehab
2011-01-28  9:39                                                       ` Dmitry Torokhov
2011-01-28 11:55                                                         ` Mauro Carvalho Chehab
2011-01-28 16:40                                                           ` Dmitry Torokhov
2011-01-28 17:01                                                             ` Mauro Carvalho Chehab
2011-01-28 17:33                                                               ` Dmitry Torokhov
2011-01-28 18:15                                                                 ` Mauro Carvalho Chehab
2011-01-28 18:34                                                                   ` Dmitry Torokhov
2011-01-28 20:53                                                                     ` Mark Lord
2011-01-27 14:54                                                 ` Mark Lord
2011-01-27 16:39                                               ` Dmitry Torokhov
2011-01-27 18:12                                                 ` Mark Lord
2011-01-27 19:53                                                   ` Dmitry Torokhov
2011-01-28 16:42                                                     ` Dmitry Torokhov
2011-01-28 20:55                                                       ` Mark Lord
2011-01-28 21:03                                                         ` Mark Lord
2011-01-28 21:09                                                           ` Dmitry Torokhov
2011-01-25 22:25                               ` Linus Torvalds
2011-01-25  5:29                 ` Dmitry Torokhov
2011-01-25 14:28                   ` Mark Lord
2011-02-02 14:31 ` Chase Douglas
2011-02-02 16:58   ` Dmitry Torokhov
2011-02-02 20:00     ` Chase Douglas
2011-02-02 21:54       ` Mark Lord
2011-02-02 22:04         ` Dmitry Torokhov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D3EE171.4020605@redhat.com \
    --to=mchehab@redhat.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=kernel@teksavvy.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.