aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/siano/smsusb.c
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@linuxtv.org>2008-06-13 23:43:26 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-20 06:21:09 -0400
commitf17407a85db3b86526d54e65698348873a6df617 (patch)
treeed1271461dc9faa88bcadf58a57fcc16b1adebf7 /drivers/media/dvb/siano/smsusb.c
parent55ad310c2f21281f50fa040b7765a4a1151bd420 (diff)
V4L/DVB (8277): sms1xxx: update latest siano drop to 1.2.17
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/siano/smsusb.c')
-rw-r--r--drivers/media/dvb/siano/smsusb.c48
1 files changed, 33 insertions, 15 deletions
diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c
index 1677f859150..f719b72424d 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
400void smsusb_disconnect(struct usb_interface *intf) 418void smsusb_disconnect(struct usb_interface *intf)