All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Frank Schäfer" <fschaefer.oss@googlemail.com>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: "Rui Salvaterra" <rsalvaterra@gmail.com>,
	"Ezequiel García" <elezegarcia@gmail.com>,
	linux-media@vger.kernel.org
Subject: Re: eMPIA EM2710 Webcam (em28xx) and LIRC
Date: Thu, 15 Mar 2012 13:34:04 +0100	[thread overview]
Message-ID: <4F61E1BC.1020807@googlemail.com> (raw)
In-Reply-To: <4F61C79E.6090603@redhat.com>

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@gmail.com>:
>>> Hi,
>>>
>>> 2012/3/14 Rui Salvaterra <rsalvaterra@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
>

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


  reply	other threads:[~2012-03-15 12:34 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-14 11:28 eMPIA EM2710 Webcam (em28xx) and LIRC Rui Salvaterra
2012-03-14 17:42 ` Ezequiel García
2012-03-14 18:47   ` Rui Salvaterra
2012-03-14 19:47     ` Ezequiel García
2012-03-15  0:28       ` Rui Salvaterra
2012-03-15  3:03         ` Ezequiel García
2012-03-15 10:42         ` Mauro Carvalho Chehab
2012-03-15 12:34           ` Frank Schäfer [this message]
2012-03-15 13:05             ` Mauro Carvalho Chehab
2012-03-16 22:18               ` Move em27xx/em28xx webcams to a gspca subdriver ? Frank Schäfer
2012-03-21 18:01                 ` Frank Schäfer
2012-03-21 20:39                   ` Mauro Carvalho Chehab
2012-03-15 13:10           ` eMPIA EM2710 Webcam (em28xx) and LIRC Rui Salvaterra
2012-03-15 14:39             ` Mauro Carvalho Chehab
2012-03-15 17:15               ` Ezequiel García
2012-03-15 17:37                 ` Mauro Carvalho Chehab
2012-03-16  9:08                   ` Rui Salvaterra

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=4F61E1BC.1020807@googlemail.com \
    --to=fschaefer.oss@googlemail.com \
    --cc=elezegarcia@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.com \
    --cc=rsalvaterra@gmail.com \
    /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.