summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
authorAapo Tahkola <aet@rasterburn.org>2007-05-08 18:56:54 +0300
committerAapo Tahkola <aet@rasterburn.org>2007-05-08 18:56:54 +0300
commitc9e95038bfd436f41cae82f6eda08f303be12699 (patch)
tree5ccbeaa5c191108f08def316ea01365d015de485 /linux
parentbca17c8e30b907ef3cb904d097483b311afca4cd (diff)
downloadmediapointer-dvb-s2-c9e95038bfd436f41cae82f6eda08f303be12699.tar.gz
mediapointer-dvb-s2-c9e95038bfd436f41cae82f6eda08f303be12699.tar.bz2
m920x: second endpoint needs to be changed to alternate setting as well
From: Aapo Tahkola <aet@rasterburn.org> Spotted by Jeremy Nysen. Signed-off-by: Aapo Tahkola <aet@rasterburn.org>
Diffstat (limited to 'linux')
-rw-r--r--linux/drivers/media/dvb/dvb-usb/m920x.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/linux/drivers/media/dvb/dvb-usb/m920x.c b/linux/drivers/media/dvb/dvb-usb/m920x.c
index 3d14ba4af..a5735fbb0 100644
--- a/linux/drivers/media/dvb/dvb-usb/m920x.c
+++ b/linux/drivers/media/dvb/dvb-usb/m920x.c
@@ -104,6 +104,20 @@ static int m920x_init(struct dvb_usb_device *d, struct m920x_inits *rc_seq)
return ret;
}
+static int m920x_init_ep(struct usb_interface *intf)
+{
+ struct usb_device *udev = interface_to_usbdev(intf);
+ struct usb_host_interface *alt;
+
+ if ((alt = usb_altnum_to_altsetting(intf, 1)) == NULL) {
+ deb("No alt found!\n");
+ return -ENODEV;
+ }
+
+ return usb_set_interface(udev, alt->desc.bInterfaceNumber,
+ alt->desc.bAlternateSetting);
+}
+
static int m920x_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
{
struct m920x_state *m = d->priv;
@@ -577,8 +591,7 @@ static struct dvb_usb_device_properties dposh_properties;
static int m920x_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
- struct dvb_usb_device *d;
- struct usb_host_interface *alt;
+ struct dvb_usb_device *d = NULL;
int ret;
struct m920x_inits *rc_init_seq = NULL;
int bInterfaceNumber = intf->cur_altsetting->desc.bInterfaceNumber;
@@ -623,23 +636,13 @@ static int m920x_probe(struct usb_interface *intf,
* tvwalkertwin_properties already configured both
* tuners, so there is nothing for us to do here
*/
-
- return -ENODEV;
}
found:
- alt = usb_altnum_to_altsetting(intf, 1);
- if (alt == NULL) {
- deb("No alt found!\n");
- return -ENODEV;
- }
-
- ret = usb_set_interface(d->udev, alt->desc.bInterfaceNumber,
- alt->desc.bAlternateSetting);
- if (ret < 0)
+ if ((ret = m920x_init_ep(intf)) < 0)
return ret;
- if ((ret = m920x_init(d, rc_init_seq)) != 0)
+ if (d && (ret = m920x_init(d, rc_init_seq)) != 0)
return ret;
return ret;