Skip to content

Commit

Permalink
V4L/DVB (5693): M920x: second endpoint also needs to be changed to al…
Browse files Browse the repository at this point in the history
…t setting

Spotted by Jeremy Nysen.

Signed-off-by: Aapo Tahkola <aet@rasterburn.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Aapo Tahkola authored and Mauro Carvalho Chehab committed Jul 18, 2007
1 parent 47f8df0 commit 55bbe5e
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions drivers/media/dvb/dvb-usb/m920x.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 55bbe5e

Please sign in to comment.