diff options
Diffstat (limited to 'drivers/media/dvb/siano/smsusb.c')
-rw-r--r-- | drivers/media/dvb/siano/smsusb.c | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c index 1677f8591508..f719b72424d1 100644 --- a/drivers/media/dvb/siano/smsusb.c +++ b/drivers/media/dvb/siano/smsusb.c | |||
@@ -301,21 +301,32 @@ int smsusb_init_device(struct usb_interface *intf) | |||
301 | usb_set_intfdata(intf, dev); | 301 | usb_set_intfdata(intf, dev); |
302 | dev->udev = interface_to_usbdev(intf); | 302 | dev->udev = interface_to_usbdev(intf); |
303 | 303 | ||
304 | switch (dev->udev->descriptor.idProduct) | 304 | switch (dev->udev->descriptor.idProduct) { |
305 | { | 305 | case 0x100: |
306 | case 0x100: | 306 | dev->buffer_size = USB1_BUFFER_SIZE; |
307 | dev->buffer_size = USB1_BUFFER_SIZE; | 307 | |
308 | 308 | params.setmode_handler = smsusb1_setmode; | |
309 | params.setmode_handler = smsusb1_setmode; | 309 | params.detectmode_handler = smsusb1_detectmode; |
310 | params.detectmode_handler = smsusb1_detectmode; | 310 | params.device_type = SMS_STELLAR; |
311 | break; | 311 | printk(KERN_INFO "%s stellar device found\n", __func__ ); |
312 | break; | ||
313 | default: | ||
314 | if (dev->udev->descriptor.idProduct == 0x200) { | ||
315 | params.device_type = SMS_NOVA_A0; | ||
316 | printk(KERN_INFO "%s nova A0 found\n", __FUNCTION__ ); | ||
317 | } else if (dev->udev->descriptor.idProduct == 0x201) { | ||
318 | params.device_type = SMS_NOVA_B0; | ||
319 | printk(KERN_INFO "%s nova B0 found\n", __FUNCTION__); | ||
320 | } else { | ||
321 | params.device_type = SMS_VEGA; | ||
322 | printk(KERN_INFO "%s Vega found\n", __FUNCTION__); | ||
323 | } | ||
312 | 324 | ||
313 | default: | 325 | dev->buffer_size = USB2_BUFFER_SIZE; |
314 | dev->buffer_size = USB2_BUFFER_SIZE; | 326 | dev->response_alignment = dev->udev->ep_in[1]->desc.wMaxPacketSize - sizeof(SmsMsgHdr_ST); |
315 | dev->response_alignment = dev->udev->ep_in[1]->desc.wMaxPacketSize - sizeof(SmsMsgHdr_ST); | ||
316 | 327 | ||
317 | params.flags |= SMS_DEVICE_FAMILY2; | 328 | params.flags |= SMS_DEVICE_FAMILY2; |
318 | break; | 329 | break; |
319 | } | 330 | } |
320 | 331 | ||
321 | params.device = &dev->udev->dev; | 332 | params.device = &dev->udev->dev; |
@@ -341,6 +352,7 @@ int smsusb_init_device(struct usb_interface *intf) | |||
341 | usb_init_urb(&dev->surbs[i].urb); | 352 | usb_init_urb(&dev->surbs[i].urb); |
342 | } | 353 | } |
343 | 354 | ||
355 | printk(KERN_INFO "%s smsusb_start_streaming(...).\n", __func__); | ||
344 | rc = smsusb_start_streaming(dev); | 356 | rc = smsusb_start_streaming(dev); |
345 | if (rc < 0) | 357 | if (rc < 0) |
346 | { | 358 | { |
@@ -368,6 +380,9 @@ int smsusb_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
368 | char devpath[32]; | 380 | char devpath[32]; |
369 | int i, rc; | 381 | int i, rc; |
370 | 382 | ||
383 | rc = usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x81)); | ||
384 | rc = usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x02)); | ||
385 | |||
371 | if (intf->num_altsetting > 0) | 386 | if (intf->num_altsetting > 0) |
372 | { | 387 | { |
373 | rc = usb_set_interface(udev, intf->cur_altsetting->desc.bInterfaceNumber, 0); | 388 | rc = usb_set_interface(udev, intf->cur_altsetting->desc.bInterfaceNumber, 0); |
@@ -390,11 +405,14 @@ int smsusb_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
390 | 405 | ||
391 | if (intf->cur_altsetting->desc.bInterfaceNumber == 1) | 406 | if (intf->cur_altsetting->desc.bInterfaceNumber == 1) |
392 | { | 407 | { |
393 | snprintf(devpath, 32, "%d:%s", udev->bus->busnum, udev->devpath); | 408 | snprintf(devpath, sizeof(devpath), "usb\\%d-%s", udev->bus->busnum, udev->devpath); |
409 | printk(KERN_INFO "stellar device was found.\n"); | ||
394 | return smsusb1_load_firmware(udev, smscore_registry_getmode(devpath)); | 410 | return smsusb1_load_firmware(udev, smscore_registry_getmode(devpath)); |
395 | } | 411 | } |
396 | 412 | ||
397 | return smsusb_init_device(intf); | 413 | rc = smsusb_init_device(intf); |
414 | printk(KERN_INFO "%s rc %d\n", __FUNCTION__, rc); | ||
415 | return rc; | ||
398 | } | 416 | } |
399 | 417 | ||
400 | void smsusb_disconnect(struct usb_interface *intf) | 418 | void smsusb_disconnect(struct usb_interface *intf) |