Em 14-03-2012 21:28, Rui Salvaterra escreveu:
> 2012/3/14 Ezequiel García <elezegar...@gmail.com>:
>> Hi,
>>
>> 2012/3/14 Rui Salvaterra <rsalvate...@gmail.com>:
>>>
>>> Hi, Ezequiel. Thanks a lot for your reply.
>>> I'm attaching a copy of my full dmesg, its a bit hard to spot exactly
>>> where all modules are loaded (since the boot sequence became
>>> asynchronous).
>>
>> Indeed.
>>
>>>
>>>
>>> Sure, no problem at all. I booted with em28xx disable_ir=1 and got the
>>> same result. Additionally:
>>>
>>> rui@wilykat:~$ lsmod | grep ir
>>> ir_lirc_codec          12901  0
>>> lirc_dev               19204  1 ir_lirc_codec
>>> ir_mce_kbd_decoder     12724  0
>>> ir_sanyo_decoder       12513  0
>>> ir_sony_decoder        12510  0
>>> ir_jvc_decoder         12507  0
>>> ir_rc6_decoder         12507  0
>>> ir_rc5_decoder         12507  0
>>> ir_nec_decoder         12507  0
>>> rc_core                26373  9
>>> ir_lirc_codec,ir_mce_kbd_decoder,ir_sanyo_decoder,ir_sony_decoder,ir_jvc_decoder,ir_rc6_decoder,em28xx,ir_rc5_decoder,ir_nec_decoder
>>> rui@wilykat:~$
>>
>> Mmmm...
>> Are you completely sure that em28xx driver is triggering the load of
>> the ir related modules?
> 
> I'm positive, the LIRC modules aren't loaded at all if I boot with the
> webcam disconnected. As soon as I plug it into an USB port, em28xx and
> LIRC are loaded.
> 
>> Perhaps you could disable the module (blacklist, or compile out the
>> module, or erase em28xx.ko to make sure)
>> so you can see that effectively em28xx doesn't load and the rest of
>> the modules doesn't load either,
>> do you follow my line of reasoning?
> 
> Ok, I did some more testing, here's what I found out. If I blacklist
> em28xx, no modules are loaded. Afterwards, I allowed em28xx to load
> and appended
> 
> blacklist rc_core
> blacklist ir_lirc_codec
> blacklist lirc_dev
> blacklist ir_mce_kbd_decoder
> blacklist ir_sanyo_decoder
> blacklist ir_sony_decoder
> blacklist ir_jvc_decoder
> blacklist ir_rc6_decoder
> blacklist ir_rc5_decoder
> blacklist ir_nec_decoder
> 
> to /etc/modprobe.d/blacklist.conf (basically blacklisted all LIRC
> stuff), but it also didn't work. And I still have em28xx disable_ir=1.

The em28xx module requires IR support from rc_core, as most em28xx devices
support it. It can be compiled without IR support, but, as the em28xx-input
is not on a separate module, and it contains some calls to rc_core functions
like rc_register_device, modprobe will load rc_core, and rc_core will load
the decoders, including lirc_dev.

Those modules are small and won't be running if all you have are the webcams.
The optimization to not load those modules is not big, so nobody had time
yet to do it.

Anyway, if you want to fix it, there are two possible approaches:

1) change rc_core to not load the IR decoders at load time, postponing it
   to load only if a RC_DRIVER_IR_RAW device is registered via 
rc_register_device.
  
A patch for it shouldn't be hard. All you need to do is to move ir_raw_init()
to rc_register_device() and add a logic there to call it for the first
raw device.

With such patch, rc_core module will still be loaded.

2) change em28xx-input.c to be a separate module, called only when a device
has IR. It will need to have a logic similar to em28xx-dvb and em28xx-alsa
modules.

It is not hard to write such patch, as most of the logic is already there,
but it is not as trivial as approach (1).

It probably makes sense for both approaches (1) and (2), as not all boards
support "raw" devices. In the case of em28xx, there's no device using "raw"
mode, as the em28xx chips provide a hardware IR decoder. So, up to now, we
didn't find any em28xx device requiring a software decoder for IR.

If you want to write patches for the above, they'll be welcome.

I hope that helps.

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

Reply via email to