From: Antti Palosaari <crope@iki.fi>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Malcolm Priestley <tvboxspy@gmail.com>,
Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [PATCH] lmedm04 2.06 conversion to dvb-usb-v2 version 2
Date: Tue, 07 Aug 2012 22:22:27 +0300 [thread overview]
Message-ID: <50216AF3.90009@iki.fi> (raw)
In-Reply-To: <502168A2.6020503@redhat.com>
On 08/07/2012 10:12 PM, Mauro Carvalho Chehab wrote:
> Em 07-08-2012 13:28, Antti Palosaari escreveu:
>> On 08/06/2012 11:21 PM, Malcolm Priestley wrote:
>>> Conversion of lmedm04 to dvb-usb-v2
>>>
>>> Functional changes m88rs2000 tuner now uses all callbacks.
>>> TODO migrate other tuners to the callbacks.
>>>
>>> This patch is applied on top of [BUG] Re: dvb_usb_lmedm04 crash Kernel (rs2000)
>>> http://patchwork.linuxtv.org/patch/13584/
>>>
>>>
>>> Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
>>
>> Could you try to make this driver more generic?
>>
>> You use some internals of dvb-usb directly and most likely those are without a reason.
>> For example data streaming, lme2510_kill_urb() kills directly urbs allocated
>> and submitted by dvb-usb. Guess that driver is broken just after someone changes
>> dvb-usb streaming code.
>
> Yeah, it is better to replace it by the dvb-usb-v2 solution (usb_clear_halt),
> as some special treatment there might be needed due to suspend/resume.
>
>> lme2510_usb_talk() could be replaced by generic dvb_usbv2_generic_rw().
>>
>> What is function of lme2510_int_read() ? I see you use own low level URB routines for here too.
>> It starts "polling", reads remote, tuner, demod, etc, and updates state. You would better to
>> implement I2C-adapter correctly and then start Kernel work-queue, which reads same information
>> using I2C-adapter. Or you could even abuse remote controller polling function provided by dvb-usb.
>
> While I don't know any technical details about this device, this looks
> similar to what dib0700_core does.
>
> Instead of polling IR, with is expensive, it sets an special endpoint
> to receive IR data, and sends an URB request. That URB request will
> be pending until someone kicks the IR. If nothing is pressed, no URB
> is received. This is a way better than polling, as no traffic
> happens while a key is not pressed.
>
>>From what I saw at the driver, the mpeg stream is at endpoint 0x08, and
> it uses bulk transfer; for IR data, it uses endpoint 0x0a, and interrupt
> URB.
>
> So, this extra control is needed. It may make sense to move part of this
> code to the dvb-usb-v2 core (the part that starts/stops the URB handling),
> in order to properly handle device suspend/resume, as, depending on the
> suspend level, you might need to stop it, restarting at resume.
>
> The payload handling should be driver-specific, of course.
>
> So, in summary, that seems to be OK, for the current dvb-usb-v2 core,
> requiring further changes for suspend/resume to work properly.
>
>>
>> lme2510_get_stream_config() enables pid-filter again over the dvb-usb, but I can live with it because there is no dynamic configuration for that. Anyhow, is that really needed?
>>
>> I can live with the pid-filter "abuse", but killing stream URBs on behalf of DVB-USB is something I don't like to see. If you have very good explanation and I cannot fix DVB USB to meet it I could consider that kind of hack. And it should be documented clearly adding necessary comments to code.
>>
>> Re-implementing that driver to use 100% DVB-USB services will reduce around 50% of code or more.
>
> The thing that bother me at the code is the implementation of a device-specific
> set_voltage() callback. This should be part of dvb-usb-v2 core, and, during
> suspend, it makes sense to set voltage to OFF, returning it to its original
> state during resume.
>
> Regards,
> Mauro
I think it is better to merge that now as is and try to improve those
later. It does support suspend/resume currently (as callbacks are not
defined at all). Also I have some upcoming patches for suspend/resume
power-management. Due to that suspend/resume is not even worth to
implement that driver until those are merged. Tested using LME2510C +
M88RS2000 device.
Acked-by: Antti Palosaari <crope@iki.fi>
Tested-by: Antti Palosaari <crope@iki.fi>
regards
Antti
--
http://palosaari.fi/
prev parent reply other threads:[~2012-08-07 19:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-06 20:21 [PATCH] lmedm04 2.06 conversion to dvb-usb-v2 version 2 Malcolm Priestley
2012-08-07 16:28 ` Antti Palosaari
2012-08-07 19:12 ` Mauro Carvalho Chehab
2012-08-07 19:22 ` Antti Palosaari [this message]
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=50216AF3.90009@iki.fi \
--to=crope@iki.fi \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@redhat.com \
--cc=tvboxspy@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).