On 10/06/2015 08:05 PM, Russell King - ARM Linux wrote:
On Mon, Sep 07, 2015 at 03:44:35PM +0200, Hans Verkuil wrote:
From: Kamil Debski kamil@wypas.org
Add handling of remote control events coming from the HDMI CEC bus. This patch includes a new keymap that maps values found in the CEC messages to the keys pressed and released. Also, a new protocol has been added to the core.
Signed-off-by: Kamil Debski kamil@wypas.org Signed-off-by: Hans Verkuil hans.verkuil@cisco.com
(Added Mauro)
Hmm, how is rc-cec supposed to be loaded?
Is CONFIG_RC_MAP enabled in your config? Ran 'depmod -a'? (Sorry, I'm sure you've done that, just checking...)
It's optional as I understand it, since you could configure the keytable from userspace instead of using this module.
For the record (just tried it), it does load fine on my setup.
BTW, I am still on the fence whether using the kernel RC subsystem is the right thing to do. There are a number of CEC RC commands that use extra parameters that cannot be mapped to the RC API, so you still need to handle those manually.
I know Mauro would like to see this integration, but I am wondering whether it really makes sense.
What is your opinion on this?
Perhaps I should split it off into a separate patch and keep it out from the initial pull request once we're ready for that.
Regards,
Hans
At boot, I see:
[ 16.577704] IR keymap rc-cec not found [ 16.586675] Registered IR keymap rc-empty [ 16.591668] input: RC for dw_hdmi as /devices/soc0/soc/120000.hdmi/rc/rc1/input3 [ 16.597769] rc1: RC for dw_hdmi as /devices/soc0/soc/120000.hdmi/rc/rc1
Yet the rc-cec is a module in the filesystem, but it doesn't seem to be loaded automatically - even after the system has booted, the module hasn't been loaded.
It looks like it _should_ be loaded, but this plainly isn't working:
map = seek_rc_map(name);
#ifdef MODULE if (!map) { int rc = request_module("%s", name); if (rc < 0) { printk(KERN_ERR "Couldn't load IR keymap %s\n", name); return NULL; } msleep(20); /* Give some time for IR to register */
map = seek_rc_map(name); }
#endif if (!map) { printk(KERN_ERR "IR keymap %s not found\n", name); return NULL; }
Any ideas?