aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/siano/smsusb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/siano/smsusb.c')
-rw-r--r--drivers/media/dvb/siano/smsusb.c73
1 files changed, 65 insertions, 8 deletions
diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c
index 5d7ca3417719..71c65f544c07 100644
--- a/drivers/media/dvb/siano/smsusb.c
+++ b/drivers/media/dvb/siano/smsusb.c
@@ -27,6 +27,10 @@
27#include "smscoreapi.h" 27#include "smscoreapi.h"
28#include "sms-cards.h" 28#include "sms-cards.h"
29 29
30static int sms_dbg;
31module_param_named(debug, sms_dbg, int, 0644);
32MODULE_PARM_DESC(debug, "set debug level (info=1, adv=2 (or-able))");
33
30#define USB1_BUFFER_SIZE 0x1000 34#define USB1_BUFFER_SIZE 0x1000
31#define USB2_BUFFER_SIZE 0x4000 35#define USB2_BUFFER_SIZE 0x4000
32 36
@@ -424,6 +428,7 @@ static int smsusb_probe(struct usb_interface *intf,
424 428
425 rc = smsusb_init_device(intf, id->driver_info); 429 rc = smsusb_init_device(intf, id->driver_info);
426 sms_info("rc %d", rc); 430 sms_info("rc %d", rc);
431 sms_board_load_modules(id->driver_info);
427 return rc; 432 return rc;
428} 433}
429 434
@@ -436,7 +441,7 @@ static int smsusb_suspend(struct usb_interface *intf, pm_message_t msg)
436{ 441{
437 struct smsusb_device_t *dev = 442 struct smsusb_device_t *dev =
438 (struct smsusb_device_t *)usb_get_intfdata(intf); 443 (struct smsusb_device_t *)usb_get_intfdata(intf);
439 printk(KERN_INFO "%s Entering status %d.\n", __func__, msg.event); 444 printk(KERN_INFO "%s: Entering status %d.\n", __func__, msg.event);
440 smsusb_stop_streaming(dev); 445 smsusb_stop_streaming(dev);
441 return 0; 446 return 0;
442} 447}
@@ -448,7 +453,7 @@ static int smsusb_resume(struct usb_interface *intf)
448 (struct smsusb_device_t *)usb_get_intfdata(intf); 453 (struct smsusb_device_t *)usb_get_intfdata(intf);
449 struct usb_device *udev = interface_to_usbdev(intf); 454 struct usb_device *udev = interface_to_usbdev(intf);
450 455
451 printk(KERN_INFO "%s Entering.\n", __func__); 456 printk(KERN_INFO "%s: Entering.\n", __func__);
452 usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x81)); 457 usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x81));
453 usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x02)); 458 usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x02));
454 459
@@ -463,9 +468,8 @@ static int smsusb_resume(struct usb_interface *intf)
463 intf->cur_altsetting->desc. 468 intf->cur_altsetting->desc.
464 bInterfaceNumber, 0); 469 bInterfaceNumber, 0);
465 if (rc < 0) { 470 if (rc < 0) {
466 printk(KERN_INFO 471 printk(KERN_INFO "%s usb_set_interface failed, "
467 "%s usb_set_interface failed, rc %d\n", 472 "rc %d\n", __func__, rc);
468 __func__, rc);
469 return rc; 473 return rc;
470 } 474 }
471 } 475 }
@@ -474,8 +478,55 @@ static int smsusb_resume(struct usb_interface *intf)
474 return 0; 478 return 0;
475} 479}
476 480
481struct usb_device_id smsusb_id_table[] = {
482#ifdef CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS
483 { USB_DEVICE(0x187f, 0x0010),
484 .driver_info = SMS1XXX_BOARD_SIANO_STELLAR },
485 { USB_DEVICE(0x187f, 0x0100),
486 .driver_info = SMS1XXX_BOARD_SIANO_STELLAR },
487 { USB_DEVICE(0x187f, 0x0200),
488 .driver_info = SMS1XXX_BOARD_SIANO_NOVA_A },
489 { USB_DEVICE(0x187f, 0x0201),
490 .driver_info = SMS1XXX_BOARD_SIANO_NOVA_B },
491 { USB_DEVICE(0x187f, 0x0300),
492 .driver_info = SMS1XXX_BOARD_SIANO_VEGA },
493#endif
494 { USB_DEVICE(0x2040, 0x1700),
495 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_CATAMOUNT },
496 { USB_DEVICE(0x2040, 0x1800),
497 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_OKEMO_A },
498 { USB_DEVICE(0x2040, 0x1801),
499 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_OKEMO_B },
500 { USB_DEVICE(0x2040, 0x2000),
501 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD },
502 { USB_DEVICE(0x2040, 0x2009),
503 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2 },
504 { USB_DEVICE(0x2040, 0x200a),
505 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD },
506 { USB_DEVICE(0x2040, 0x2010),
507 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD },
508 { USB_DEVICE(0x2040, 0x2011),
509 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD },
510 { USB_DEVICE(0x2040, 0x2019),
511 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD },
512 { USB_DEVICE(0x2040, 0x5500),
513 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
514 { USB_DEVICE(0x2040, 0x5510),
515 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
516 { USB_DEVICE(0x2040, 0x5520),
517 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
518 { USB_DEVICE(0x2040, 0x5530),
519 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
520 { USB_DEVICE(0x2040, 0x5580),
521 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
522 { USB_DEVICE(0x2040, 0x5590),
523 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
524 { } /* Terminating entry */
525};
526MODULE_DEVICE_TABLE(usb, smsusb_id_table);
527
477static struct usb_driver smsusb_driver = { 528static struct usb_driver smsusb_driver = {
478 .name = "sms1xxx", 529 .name = "smsusb",
479 .probe = smsusb_probe, 530 .probe = smsusb_probe,
480 .disconnect = smsusb_disconnect, 531 .disconnect = smsusb_disconnect,
481 .id_table = smsusb_id_table, 532 .id_table = smsusb_id_table,
@@ -484,7 +535,7 @@ static struct usb_driver smsusb_driver = {
484 .resume = smsusb_resume, 535 .resume = smsusb_resume,
485}; 536};
486 537
487int smsusb_register(void) 538int smsusb_module_init(void)
488{ 539{
489 int rc = usb_register(&smsusb_driver); 540 int rc = usb_register(&smsusb_driver);
490 if (rc) 541 if (rc)
@@ -495,10 +546,16 @@ int smsusb_register(void)
495 return rc; 546 return rc;
496} 547}
497 548
498void smsusb_unregister(void) 549void smsusb_module_exit(void)
499{ 550{
500 sms_debug(""); 551 sms_debug("");
501 /* Regular USB Cleanup */ 552 /* Regular USB Cleanup */
502 usb_deregister(&smsusb_driver); 553 usb_deregister(&smsusb_driver);
503} 554}
504 555
556module_init(smsusb_module_init);
557module_exit(smsusb_module_exit);
558
559MODULE_DESCRIPTION("Driver for the Siano SMS1XXX USB dongle");
560MODULE_AUTHOR("Siano Mobile Silicon, INC. (uris@siano-ms.com)");
561MODULE_LICENSE("GPL");