linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/2] dvb_usb_v2 Allow d->props.bInterfaceNumber to set the correct  interface.
@ 2012-06-13 22:26 Malcolm Priestley
  2012-06-13 22:55 ` Antti Palosaari
  0 siblings, 1 reply; 2+ messages in thread
From: Malcolm Priestley @ 2012-06-13 22:26 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media

Although the interface could be set in identify state, ideally it should be done in
the probe.

Allow d->props.bInterfaceNumber try to set the correct interface rather than return error.


Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
---
 drivers/media/dvb/dvb-usb/dvb_usb_init.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_init.c b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
index c16a28a..b2eb8ac 100644
--- a/drivers/media/dvb/dvb-usb/dvb_usb_init.c
+++ b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
@@ -391,8 +391,15 @@ int dvb_usbv2_probe(struct usb_interface *intf,
 
 	if (d->intf->cur_altsetting->desc.bInterfaceNumber !=
 			d->props.bInterfaceNumber) {
-		ret = -ENODEV;
-		goto err_kfree;
+		usb_reset_configuration(d->udev);
+
+		ret = usb_set_interface(d->udev,
+			d->intf->cur_altsetting->desc.bInterfaceNumber,
+				d->props.bInterfaceNumber);
+		if (ret < 0) {
+			ret = -ENODEV;
+			goto err_kfree;
+		}
 	}
 
 	mutex_init(&d->usb_mutex);
-- 
1.7.10









^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 2/2] dvb_usb_v2 Allow d->props.bInterfaceNumber to set the correct  interface.
  2012-06-13 22:26 [PATCH 2/2] dvb_usb_v2 Allow d->props.bInterfaceNumber to set the correct interface Malcolm Priestley
@ 2012-06-13 22:55 ` Antti Palosaari
  0 siblings, 0 replies; 2+ messages in thread
From: Antti Palosaari @ 2012-06-13 22:55 UTC (permalink / raw)
  To: Malcolm Priestley; +Cc: linux-media

On 06/14/2012 01:26 AM, Malcolm Priestley wrote:
> Although the interface could be set in identify state, ideally it should be done in
> the probe.
>
> Allow d->props.bInterfaceNumber try to set the correct interface rather than return error.
>
>
> Signed-off-by: Malcolm Priestley<tvboxspy@gmail.com>
> ---
>   drivers/media/dvb/dvb-usb/dvb_usb_init.c |   11 +++++++++--
>   1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_init.c b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
> index c16a28a..b2eb8ac 100644
> --- a/drivers/media/dvb/dvb-usb/dvb_usb_init.c
> +++ b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
> @@ -391,8 +391,15 @@ int dvb_usbv2_probe(struct usb_interface *intf,
>
>   	if (d->intf->cur_altsetting->desc.bInterfaceNumber !=
>   			d->props.bInterfaceNumber) {
> -		ret = -ENODEV;
> -		goto err_kfree;
> +		usb_reset_configuration(d->udev);
> +
> +		ret = usb_set_interface(d->udev,
> +			d->intf->cur_altsetting->desc.bInterfaceNumber,
> +				d->props.bInterfaceNumber);

I suspect it is wrong, as is changes alternate setting (to the 
bInterfaceNumber given as a property) whilst interface seems to be same 
what I understand. You are confusing with alternate setting and 
interface, right?

http://ftp.au.debian.org/linux-mandocs/2.6.12.6/usb_set_interface.html

After my explanation, are you really sure that this is correct?

USB device could have multiple interfaces. And each interface could have 
multiple alternate settings.

For the DVB device point of view those means generally that if we have 
multiple interfaces those are one for remote and one for DVB. And if we 
have multiple alternate settings inside DVB interface it is selecting 
for USB stream settings (BULK vs. ISOC, different ISOC profiles). That 
kind of alternate setting change belongs to streaming control callback 
of driver.

But I like the idea of switching to correct interface. But I doubt it is 
not possible, as USB core claims interfaces. And my opinion is that 
interface should be added as a USB match flag, instead of that kind 
driver checks.

> +		if (ret<  0) {
> +			ret = -ENODEV;
> +			goto err_kfree;
> +		}
>   	}
>
>   	mutex_init(&d->usb_mutex);

regards
Antti
-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-06-13 22:55 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-13 22:26 [PATCH 2/2] dvb_usb_v2 Allow d->props.bInterfaceNumber to set the correct interface Malcolm Priestley
2012-06-13 22:55 ` Antti Palosaari

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).