diff options
author | Aapo Tahkola <aet@rasterburn.org> | 2007-05-08 18:56:54 +0300 |
---|---|---|
committer | Aapo Tahkola <aet@rasterburn.org> | 2007-05-08 18:56:54 +0300 |
commit | c9e95038bfd436f41cae82f6eda08f303be12699 (patch) | |
tree | 5ccbeaa5c191108f08def316ea01365d015de485 /linux | |
parent | bca17c8e30b907ef3cb904d097483b311afca4cd (diff) | |
download | mediapointer-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.c | 31 |
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; |