Re: eMPIA EM2710 Webcam (em28xx) and LIRC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 15.03.2012 11:42, schrieb Mauro Carvalho Chehab:
> Em 14-03-2012 21:28, Rui Salvaterra escreveu:
>> 2012/3/14 Ezequiel García <elezegarcia@xxxxxxxxx>:
>>> Hi,
>>>
>>> 2012/3/14 Rui Salvaterra <rsalvaterra@xxxxxxxxx>:
>>>> 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
>

I would like to bring up the question, if it wouldn't make sense to move
support for the em27xx/28xx webcams to a separate gspca-subdriver.

I'm currently working on adding support for the VAD Laplace webcam
(em2765 + OV2640) (http://linuxtv.org/wiki/index.php/VAD_Laplace).
Lots of modifications to the em28xx driver would be necessary to support
this device because of some significant differences:
- supports only bulk transfers
- uses proprietary I2C-writes
- em25xx-eeprom
- ov2640 sensor

Lots of changes concerning the USB-interface probing, button handling,
video controls, frame processing and more would be necessary, too.

For reverse engineering purposes, I decided to write a gspca subdriver
for this device (will send a patch for testing/discussion soon).

I have no strong opinion about this, but I somehow feel that the em28xx
driver gets bloated more and more...

Regards,
Frank Schäfer

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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux