aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/line6/driver.c203
-rw-r--r--drivers/staging/line6/driver.h4
-rw-r--r--drivers/staging/line6/pcm.c38
-rw-r--r--drivers/staging/line6/toneport.c42
4 files changed, 144 insertions, 143 deletions
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
index c090b2bb1729..81d5a27421cb 100644
--- a/drivers/staging/line6/driver.c
+++ b/drivers/staging/line6/driver.c
@@ -363,23 +363,23 @@ static void line6_data_received(struct urb *urb)
363 line6->message_length = done; 363 line6->message_length = done;
364 line6_midi_receive(line6, line6->buffer_message, done); 364 line6_midi_receive(line6, line6->buffer_message, done);
365 365
366 switch (le16_to_cpu(line6->usbdev->descriptor.idProduct)) { 366 switch (line6->type) {
367 case LINE6_DEVID_BASSPODXT: 367 case LINE6_BASSPODXT:
368 case LINE6_DEVID_BASSPODXTLIVE: 368 case LINE6_BASSPODXTLIVE:
369 case LINE6_DEVID_BASSPODXTPRO: 369 case LINE6_BASSPODXTPRO:
370 case LINE6_DEVID_PODXT: 370 case LINE6_PODXT:
371 case LINE6_DEVID_PODXTPRO: 371 case LINE6_PODXTPRO:
372 case LINE6_DEVID_POCKETPOD: 372 case LINE6_POCKETPOD:
373 line6_pod_process_message((struct usb_line6_pod *) 373 line6_pod_process_message((struct usb_line6_pod *)
374 line6); 374 line6);
375 break; 375 break;
376 376
377 case LINE6_DEVID_PODHD300: 377 case LINE6_PODHD300:
378 case LINE6_DEVID_PODHD400: 378 case LINE6_PODHD400:
379 case LINE6_DEVID_PODHD500: 379 case LINE6_PODHD500:
380 break; /* let userspace handle MIDI */ 380 break; /* let userspace handle MIDI */
381 381
382 case LINE6_DEVID_PODXTLIVE: 382 case LINE6_PODXTLIVE:
383 switch (line6->interface_number) { 383 switch (line6->interface_number) {
384 case PODXTLIVE_INTERFACE_POD: 384 case PODXTLIVE_INTERFACE_POD:
385 line6_pod_process_message((struct usb_line6_pod 385 line6_pod_process_message((struct usb_line6_pod
@@ -399,7 +399,7 @@ static void line6_data_received(struct urb *urb)
399 } 399 }
400 break; 400 break;
401 401
402 case LINE6_DEVID_VARIAX: 402 case LINE6_VARIAX:
403 line6_variax_process_message((struct usb_line6_variax *) 403 line6_variax_process_message((struct usb_line6_variax *)
404 line6); 404 line6);
405 break; 405 break;
@@ -629,7 +629,6 @@ static int line6_probe(struct usb_interface *interface,
629 struct usb_line6 *line6; 629 struct usb_line6 *line6;
630 const struct line6_properties *properties; 630 const struct line6_properties *properties;
631 int interface_number, alternate = 0; 631 int interface_number, alternate = 0;
632 int product;
633 int size = 0; 632 int size = 0;
634 int ep_read = 0, ep_write = 0; 633 int ep_read = 0, ep_write = 0;
635 int ret; 634 int ret;
@@ -651,19 +650,18 @@ static int line6_probe(struct usb_interface *interface,
651 /* initialize device info: */ 650 /* initialize device info: */
652 properties = &line6_properties_table[devtype]; 651 properties = &line6_properties_table[devtype];
653 dev_info(&interface->dev, "Line6 %s found\n", properties->name); 652 dev_info(&interface->dev, "Line6 %s found\n", properties->name);
654 product = le16_to_cpu(usbdev->descriptor.idProduct);
655 653
656 /* query interface number */ 654 /* query interface number */
657 interface_number = interface->cur_altsetting->desc.bInterfaceNumber; 655 interface_number = interface->cur_altsetting->desc.bInterfaceNumber;
658 656
659 switch (product) { 657 switch (devtype) {
660 case LINE6_DEVID_BASSPODXTLIVE: 658 case LINE6_BASSPODXTLIVE:
661 case LINE6_DEVID_PODXTLIVE: 659 case LINE6_PODXTLIVE:
662 case LINE6_DEVID_VARIAX: 660 case LINE6_VARIAX:
663 alternate = 1; 661 alternate = 1;
664 break; 662 break;
665 663
666 case LINE6_DEVID_POCKETPOD: 664 case LINE6_POCKETPOD:
667 switch (interface_number) { 665 switch (interface_number) {
668 case 0: 666 case 0:
669 return -ENODEV; /* this interface has no endpoints */ 667 return -ENODEV; /* this interface has no endpoints */
@@ -675,7 +673,7 @@ static int line6_probe(struct usb_interface *interface,
675 } 673 }
676 break; 674 break;
677 675
678 case LINE6_DEVID_PODHD500: 676 case LINE6_PODHD500:
679 switch (interface_number) { 677 switch (interface_number) {
680 case 0: 678 case 0:
681 alternate = 1; 679 alternate = 1;
@@ -688,25 +686,25 @@ static int line6_probe(struct usb_interface *interface,
688 } 686 }
689 break; 687 break;
690 688
691 case LINE6_DEVID_BASSPODXT: 689 case LINE6_BASSPODXT:
692 case LINE6_DEVID_BASSPODXTPRO: 690 case LINE6_BASSPODXTPRO:
693 case LINE6_DEVID_PODXT: 691 case LINE6_PODXT:
694 case LINE6_DEVID_PODXTPRO: 692 case LINE6_PODXTPRO:
695 case LINE6_DEVID_PODHD300: 693 case LINE6_PODHD300:
696 case LINE6_DEVID_PODHD400: 694 case LINE6_PODHD400:
697 alternate = 5; 695 alternate = 5;
698 break; 696 break;
699 697
700 case LINE6_DEVID_GUITARPORT: 698 case LINE6_GUITARPORT:
701 case LINE6_DEVID_PODSTUDIO_GX: 699 case LINE6_PODSTUDIO_GX:
702 case LINE6_DEVID_PODSTUDIO_UX1: 700 case LINE6_PODSTUDIO_UX1:
703 case LINE6_DEVID_TONEPORT_GX: 701 case LINE6_TONEPORT_GX:
704 case LINE6_DEVID_TONEPORT_UX1: 702 case LINE6_TONEPORT_UX1:
705 alternate = 2; /* 1..4 seem to be ok */ 703 alternate = 2; /* 1..4 seem to be ok */
706 break; 704 break;
707 705
708 case LINE6_DEVID_TONEPORT_UX2: 706 case LINE6_TONEPORT_UX2:
709 case LINE6_DEVID_PODSTUDIO_UX2: 707 case LINE6_PODSTUDIO_UX2:
710 switch (interface_number) { 708 switch (interface_number) {
711 case 0: 709 case 0:
712 /* defaults to 44.1kHz, 16-bit */ 710 /* defaults to 44.1kHz, 16-bit */
@@ -735,49 +733,49 @@ static int line6_probe(struct usb_interface *interface,
735 goto err_put; 733 goto err_put;
736 } 734 }
737 735
738 /* initialize device data based on product id: */ 736 /* initialize device data based on device: */
739 switch (product) { 737 switch (devtype) {
740 case LINE6_DEVID_BASSPODXT: 738 case LINE6_BASSPODXT:
741 case LINE6_DEVID_BASSPODXTLIVE: 739 case LINE6_BASSPODXTLIVE:
742 case LINE6_DEVID_BASSPODXTPRO: 740 case LINE6_BASSPODXTPRO:
743 case LINE6_DEVID_PODXT: 741 case LINE6_PODXT:
744 case LINE6_DEVID_PODXTPRO: 742 case LINE6_PODXTPRO:
745 size = sizeof(struct usb_line6_pod); 743 size = sizeof(struct usb_line6_pod);
746 ep_read = 0x84; 744 ep_read = 0x84;
747 ep_write = 0x03; 745 ep_write = 0x03;
748 break; 746 break;
749 747
750 case LINE6_DEVID_PODHD300: 748 case LINE6_PODHD300:
751 case LINE6_DEVID_PODHD400: 749 case LINE6_PODHD400:
752 size = sizeof(struct usb_line6_podhd); 750 size = sizeof(struct usb_line6_podhd);
753 ep_read = 0x84; 751 ep_read = 0x84;
754 ep_write = 0x03; 752 ep_write = 0x03;
755 break; 753 break;
756 754
757 case LINE6_DEVID_PODHD500: 755 case LINE6_PODHD500:
758 size = sizeof(struct usb_line6_podhd); 756 size = sizeof(struct usb_line6_podhd);
759 ep_read = 0x81; 757 ep_read = 0x81;
760 ep_write = 0x01; 758 ep_write = 0x01;
761 break; 759 break;
762 760
763 case LINE6_DEVID_POCKETPOD: 761 case LINE6_POCKETPOD:
764 size = sizeof(struct usb_line6_pod); 762 size = sizeof(struct usb_line6_pod);
765 ep_read = 0x82; 763 ep_read = 0x82;
766 ep_write = 0x02; 764 ep_write = 0x02;
767 break; 765 break;
768 766
769 case LINE6_DEVID_PODSTUDIO_GX: 767 case LINE6_PODSTUDIO_GX:
770 case LINE6_DEVID_PODSTUDIO_UX1: 768 case LINE6_PODSTUDIO_UX1:
771 case LINE6_DEVID_PODSTUDIO_UX2: 769 case LINE6_PODSTUDIO_UX2:
772 case LINE6_DEVID_TONEPORT_GX: 770 case LINE6_TONEPORT_GX:
773 case LINE6_DEVID_TONEPORT_UX1: 771 case LINE6_TONEPORT_UX1:
774 case LINE6_DEVID_TONEPORT_UX2: 772 case LINE6_TONEPORT_UX2:
775 case LINE6_DEVID_GUITARPORT: 773 case LINE6_GUITARPORT:
776 size = sizeof(struct usb_line6_toneport); 774 size = sizeof(struct usb_line6_toneport);
777 /* these don't have a control channel */ 775 /* these don't have a control channel */
778 break; 776 break;
779 777
780 case LINE6_DEVID_PODXTLIVE: 778 case LINE6_PODXTLIVE:
781 switch (interface_number) { 779 switch (interface_number) {
782 case PODXTLIVE_INTERFACE_POD: 780 case PODXTLIVE_INTERFACE_POD:
783 size = sizeof(struct usb_line6_pod); 781 size = sizeof(struct usb_line6_pod);
@@ -797,7 +795,7 @@ static int line6_probe(struct usb_interface *interface,
797 } 795 }
798 break; 796 break;
799 797
800 case LINE6_DEVID_VARIAX: 798 case LINE6_VARIAX:
801 size = sizeof(struct usb_line6_variax); 799 size = sizeof(struct usb_line6_variax);
802 ep_read = 0x82; 800 ep_read = 0x82;
803 ep_write = 0x01; 801 ep_write = 0x01;
@@ -829,7 +827,7 @@ static int line6_probe(struct usb_interface *interface,
829 line6->ifcdev = &interface->dev; 827 line6->ifcdev = &interface->dev;
830 line6->ep_control_read = ep_read; 828 line6->ep_control_read = ep_read;
831 line6->ep_control_write = ep_write; 829 line6->ep_control_write = ep_write;
832 line6->product = product; 830 line6->type = devtype;
833 831
834 /* get data from endpoint descriptor (see usb_maxpacket): */ 832 /* get data from endpoint descriptor (see usb_maxpacket): */
835 { 833 {
@@ -885,25 +883,25 @@ static int line6_probe(struct usb_interface *interface,
885 } 883 }
886 } 884 }
887 885
888 /* initialize device data based on product id: */ 886 /* initialize device data based on device: */
889 switch (product) { 887 switch (devtype) {
890 case LINE6_DEVID_BASSPODXT: 888 case LINE6_BASSPODXT:
891 case LINE6_DEVID_BASSPODXTLIVE: 889 case LINE6_BASSPODXTLIVE:
892 case LINE6_DEVID_BASSPODXTPRO: 890 case LINE6_BASSPODXTPRO:
893 case LINE6_DEVID_POCKETPOD: 891 case LINE6_POCKETPOD:
894 case LINE6_DEVID_PODXT: 892 case LINE6_PODXT:
895 case LINE6_DEVID_PODXTPRO: 893 case LINE6_PODXTPRO:
896 ret = line6_pod_init(interface, (struct usb_line6_pod *)line6); 894 ret = line6_pod_init(interface, (struct usb_line6_pod *)line6);
897 break; 895 break;
898 896
899 case LINE6_DEVID_PODHD300: 897 case LINE6_PODHD300:
900 case LINE6_DEVID_PODHD400: 898 case LINE6_PODHD400:
901 case LINE6_DEVID_PODHD500: 899 case LINE6_PODHD500:
902 ret = line6_podhd_init(interface, 900 ret = line6_podhd_init(interface,
903 (struct usb_line6_podhd *)line6); 901 (struct usb_line6_podhd *)line6);
904 break; 902 break;
905 903
906 case LINE6_DEVID_PODXTLIVE: 904 case LINE6_PODXTLIVE:
907 switch (interface_number) { 905 switch (interface_number) {
908 case PODXTLIVE_INTERFACE_POD: 906 case PODXTLIVE_INTERFACE_POD:
909 ret = 907 ret =
@@ -926,19 +924,19 @@ static int line6_probe(struct usb_interface *interface,
926 924
927 break; 925 break;
928 926
929 case LINE6_DEVID_VARIAX: 927 case LINE6_VARIAX:
930 ret = 928 ret =
931 line6_variax_init(interface, 929 line6_variax_init(interface,
932 (struct usb_line6_variax *)line6); 930 (struct usb_line6_variax *)line6);
933 break; 931 break;
934 932
935 case LINE6_DEVID_PODSTUDIO_GX: 933 case LINE6_PODSTUDIO_GX:
936 case LINE6_DEVID_PODSTUDIO_UX1: 934 case LINE6_PODSTUDIO_UX1:
937 case LINE6_DEVID_PODSTUDIO_UX2: 935 case LINE6_PODSTUDIO_UX2:
938 case LINE6_DEVID_TONEPORT_GX: 936 case LINE6_TONEPORT_GX:
939 case LINE6_DEVID_TONEPORT_UX1: 937 case LINE6_TONEPORT_UX1:
940 case LINE6_DEVID_TONEPORT_UX2: 938 case LINE6_TONEPORT_UX2:
941 case LINE6_DEVID_GUITARPORT: 939 case LINE6_GUITARPORT:
942 ret = 940 ret =
943 line6_toneport_init(interface, 941 line6_toneport_init(interface,
944 (struct usb_line6_toneport *)line6); 942 (struct usb_line6_toneport *)line6);
@@ -1004,23 +1002,23 @@ static void line6_disconnect(struct usb_interface *interface)
1004 dev_err(line6->ifcdev, 1002 dev_err(line6->ifcdev,
1005 "driver bug: inconsistent usb device\n"); 1003 "driver bug: inconsistent usb device\n");
1006 1004
1007 switch (le16_to_cpu(line6->usbdev->descriptor.idProduct)) { 1005 switch (line6->type) {
1008 case LINE6_DEVID_BASSPODXT: 1006 case LINE6_BASSPODXT:
1009 case LINE6_DEVID_BASSPODXTLIVE: 1007 case LINE6_BASSPODXTLIVE:
1010 case LINE6_DEVID_BASSPODXTPRO: 1008 case LINE6_BASSPODXTPRO:
1011 case LINE6_DEVID_POCKETPOD: 1009 case LINE6_POCKETPOD:
1012 case LINE6_DEVID_PODXT: 1010 case LINE6_PODXT:
1013 case LINE6_DEVID_PODXTPRO: 1011 case LINE6_PODXTPRO:
1014 line6_pod_disconnect(interface); 1012 line6_pod_disconnect(interface);
1015 break; 1013 break;
1016 1014
1017 case LINE6_DEVID_PODHD300: 1015 case LINE6_PODHD300:
1018 case LINE6_DEVID_PODHD400: 1016 case LINE6_PODHD400:
1019 case LINE6_DEVID_PODHD500: 1017 case LINE6_PODHD500:
1020 line6_podhd_disconnect(interface); 1018 line6_podhd_disconnect(interface);
1021 break; 1019 break;
1022 1020
1023 case LINE6_DEVID_PODXTLIVE: 1021 case LINE6_PODXTLIVE:
1024 switch (interface_number) { 1022 switch (interface_number) {
1025 case PODXTLIVE_INTERFACE_POD: 1023 case PODXTLIVE_INTERFACE_POD:
1026 line6_pod_disconnect(interface); 1024 line6_pod_disconnect(interface);
@@ -1033,17 +1031,17 @@ static void line6_disconnect(struct usb_interface *interface)
1033 1031
1034 break; 1032 break;
1035 1033
1036 case LINE6_DEVID_VARIAX: 1034 case LINE6_VARIAX:
1037 line6_variax_disconnect(interface); 1035 line6_variax_disconnect(interface);
1038 break; 1036 break;
1039 1037
1040 case LINE6_DEVID_PODSTUDIO_GX: 1038 case LINE6_PODSTUDIO_GX:
1041 case LINE6_DEVID_PODSTUDIO_UX1: 1039 case LINE6_PODSTUDIO_UX1:
1042 case LINE6_DEVID_PODSTUDIO_UX2: 1040 case LINE6_PODSTUDIO_UX2:
1043 case LINE6_DEVID_TONEPORT_GX: 1041 case LINE6_TONEPORT_GX:
1044 case LINE6_DEVID_TONEPORT_UX1: 1042 case LINE6_TONEPORT_UX1:
1045 case LINE6_DEVID_TONEPORT_UX2: 1043 case LINE6_TONEPORT_UX2:
1046 case LINE6_DEVID_GUITARPORT: 1044 case LINE6_GUITARPORT:
1047 line6_toneport_disconnect(interface); 1045 line6_toneport_disconnect(interface);
1048 break; 1046 break;
1049 1047
@@ -1107,15 +1105,18 @@ static int line6_reset_resume(struct usb_interface *interface)
1107{ 1105{
1108 struct usb_line6 *line6 = usb_get_intfdata(interface); 1106 struct usb_line6 *line6 = usb_get_intfdata(interface);
1109 1107
1110 switch (le16_to_cpu(line6->usbdev->descriptor.idProduct)) { 1108 switch (line6->type) {
1111 case LINE6_DEVID_PODSTUDIO_GX: 1109 case LINE6_PODSTUDIO_GX:
1112 case LINE6_DEVID_PODSTUDIO_UX1: 1110 case LINE6_PODSTUDIO_UX1:
1113 case LINE6_DEVID_PODSTUDIO_UX2: 1111 case LINE6_PODSTUDIO_UX2:
1114 case LINE6_DEVID_TONEPORT_GX: 1112 case LINE6_TONEPORT_GX:
1115 case LINE6_DEVID_TONEPORT_UX1: 1113 case LINE6_TONEPORT_UX1:
1116 case LINE6_DEVID_TONEPORT_UX2: 1114 case LINE6_TONEPORT_UX2:
1117 case LINE6_DEVID_GUITARPORT: 1115 case LINE6_GUITARPORT:
1118 line6_toneport_reset_resume((struct usb_line6_toneport *)line6); 1116 line6_toneport_reset_resume((struct usb_line6_toneport *)line6);
1117
1118 default:
1119 break;
1119 } 1120 }
1120 1121
1121 return line6_resume(interface); 1122 return line6_resume(interface);
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
index 8fb4a9c073b2..c5367951a22c 100644
--- a/drivers/staging/line6/driver.h
+++ b/drivers/staging/line6/driver.h
@@ -126,9 +126,9 @@ struct usb_line6 {
126 struct usb_device *usbdev; 126 struct usb_device *usbdev;
127 127
128 /** 128 /**
129 Product id. 129 Device type.
130 */ 130 */
131 int product; 131 enum line6_device_type type;
132 132
133 /** 133 /**
134 Properties. 134 Properties.
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
index 076c87b689d0..86c7bcba7ad6 100644
--- a/drivers/staging/line6/pcm.c
+++ b/drivers/staging/line6/pcm.c
@@ -427,37 +427,37 @@ int line6_init_pcm(struct usb_line6 *line6,
427 if (!(line6->properties->capabilities & LINE6_BIT_PCM)) 427 if (!(line6->properties->capabilities & LINE6_BIT_PCM))
428 return 0; /* skip PCM initialization and report success */ 428 return 0; /* skip PCM initialization and report success */
429 429
430 /* initialize PCM subsystem based on product id: */ 430 /* initialize PCM subsystem based on device: */
431 switch (line6->product) { 431 switch (line6->type) {
432 case LINE6_DEVID_BASSPODXT: 432 case LINE6_BASSPODXT:
433 case LINE6_DEVID_BASSPODXTLIVE: 433 case LINE6_BASSPODXTLIVE:
434 case LINE6_DEVID_BASSPODXTPRO: 434 case LINE6_BASSPODXTPRO:
435 case LINE6_DEVID_PODXT: 435 case LINE6_PODXT:
436 case LINE6_DEVID_PODXTLIVE: 436 case LINE6_PODXTLIVE:
437 case LINE6_DEVID_PODXTPRO: 437 case LINE6_PODXTPRO:
438 case LINE6_DEVID_PODHD300: 438 case LINE6_PODHD300:
439 case LINE6_DEVID_PODHD400: 439 case LINE6_PODHD400:
440 ep_read = 0x82; 440 ep_read = 0x82;
441 ep_write = 0x01; 441 ep_write = 0x01;
442 break; 442 break;
443 443
444 case LINE6_DEVID_PODHD500: 444 case LINE6_PODHD500:
445 ep_read = 0x86; 445 ep_read = 0x86;
446 ep_write = 0x02; 446 ep_write = 0x02;
447 break; 447 break;
448 448
449 case LINE6_DEVID_POCKETPOD: 449 case LINE6_POCKETPOD:
450 ep_read = 0x82; 450 ep_read = 0x82;
451 ep_write = 0x02; 451 ep_write = 0x02;
452 break; 452 break;
453 453
454 case LINE6_DEVID_GUITARPORT: 454 case LINE6_GUITARPORT:
455 case LINE6_DEVID_PODSTUDIO_GX: 455 case LINE6_PODSTUDIO_GX:
456 case LINE6_DEVID_PODSTUDIO_UX1: 456 case LINE6_PODSTUDIO_UX1:
457 case LINE6_DEVID_PODSTUDIO_UX2: 457 case LINE6_PODSTUDIO_UX2:
458 case LINE6_DEVID_TONEPORT_GX: 458 case LINE6_TONEPORT_GX:
459 case LINE6_DEVID_TONEPORT_UX1: 459 case LINE6_TONEPORT_UX1:
460 case LINE6_DEVID_TONEPORT_UX2: 460 case LINE6_TONEPORT_UX2:
461 ep_read = 0x82; 461 ep_read = 0x82;
462 ep_write = 0x01; 462 ep_write = 0x01;
463 break; 463 break;
diff --git a/drivers/staging/line6/toneport.c b/drivers/staging/line6/toneport.c
index 660dc3f2aa61..9e5cee18b542 100644
--- a/drivers/staging/line6/toneport.c
+++ b/drivers/staging/line6/toneport.c
@@ -97,11 +97,11 @@ static const struct {
97 {"Inst & Mic", 0x0901} 97 {"Inst & Mic", 0x0901}
98}; 98};
99 99
100static bool toneport_has_led(short product) 100static bool toneport_has_led(enum line6_device_type type)
101{ 101{
102 return 102 return
103 (product == LINE6_DEVID_GUITARPORT) || 103 (type == LINE6_GUITARPORT) ||
104 (product == LINE6_DEVID_TONEPORT_GX); 104 (type == LINE6_TONEPORT_GX);
105 /* add your device here if you are missing support for the LEDs */ 105 /* add your device here if you are missing support for the LEDs */
106} 106}
107 107
@@ -310,7 +310,6 @@ static void toneport_setup(struct usb_line6_toneport *toneport)
310 int ticks; 310 int ticks;
311 struct usb_line6 *line6 = &toneport->line6; 311 struct usb_line6 *line6 = &toneport->line6;
312 struct usb_device *usbdev = line6->usbdev; 312 struct usb_device *usbdev = line6->usbdev;
313 u16 idProduct = le16_to_cpu(usbdev->descriptor.idProduct);
314 313
315 /* sync time on device with host: */ 314 /* sync time on device with host: */
316 ticks = (int)get_seconds(); 315 ticks = (int)get_seconds();
@@ -320,17 +319,19 @@ static void toneport_setup(struct usb_line6_toneport *toneport)
320 toneport_send_cmd(usbdev, 0x0301, 0x0000); 319 toneport_send_cmd(usbdev, 0x0301, 0x0000);
321 320
322 /* initialize source select: */ 321 /* initialize source select: */
323 switch (le16_to_cpu(usbdev->descriptor.idProduct)) { 322 switch (line6->type) {
324 case LINE6_DEVID_TONEPORT_UX1: 323 case LINE6_TONEPORT_UX1:
325 case LINE6_DEVID_TONEPORT_UX2: 324 case LINE6_TONEPORT_UX2:
326 case LINE6_DEVID_PODSTUDIO_UX1: 325 case LINE6_PODSTUDIO_UX1:
327 case LINE6_DEVID_PODSTUDIO_UX2: 326 case LINE6_PODSTUDIO_UX2:
328 toneport_send_cmd(usbdev, 327 toneport_send_cmd(usbdev,
329 toneport_source_info[toneport->source].code, 328 toneport_source_info[toneport->source].code,
330 0x0000); 329 0x0000);
330 default:
331 break;
331 } 332 }
332 333
333 if (toneport_has_led(idProduct)) 334 if (toneport_has_led(line6->type))
334 toneport_update_led(&usbdev->dev); 335 toneport_update_led(&usbdev->dev);
335} 336}
336 337
@@ -342,8 +343,6 @@ static int toneport_try_init(struct usb_interface *interface,
342{ 343{
343 int err; 344 int err;
344 struct usb_line6 *line6 = &toneport->line6; 345 struct usb_line6 *line6 = &toneport->line6;
345 struct usb_device *usbdev = line6->usbdev;
346 u16 idProduct = le16_to_cpu(usbdev->descriptor.idProduct);
347 346
348 if ((interface == NULL) || (toneport == NULL)) 347 if ((interface == NULL) || (toneport == NULL))
349 return -ENODEV; 348 return -ENODEV;
@@ -366,17 +365,20 @@ static int toneport_try_init(struct usb_interface *interface,
366 return err; 365 return err;
367 366
368 /* register source select control: */ 367 /* register source select control: */
369 switch (le16_to_cpu(usbdev->descriptor.idProduct)) { 368 switch (line6->type) {
370 case LINE6_DEVID_TONEPORT_UX1: 369 case LINE6_TONEPORT_UX1:
371 case LINE6_DEVID_TONEPORT_UX2: 370 case LINE6_TONEPORT_UX2:
372 case LINE6_DEVID_PODSTUDIO_UX1: 371 case LINE6_PODSTUDIO_UX1:
373 case LINE6_DEVID_PODSTUDIO_UX2: 372 case LINE6_PODSTUDIO_UX2:
374 err = 373 err =
375 snd_ctl_add(line6->card, 374 snd_ctl_add(line6->card,
376 snd_ctl_new1(&toneport_control_source, 375 snd_ctl_new1(&toneport_control_source,
377 line6->line6pcm)); 376 line6->line6pcm));
378 if (err < 0) 377 if (err < 0)
379 return err; 378 return err;
379
380 default:
381 break;
380 } 382 }
381 383
382 /* register audio system: */ 384 /* register audio system: */
@@ -387,7 +389,7 @@ static int toneport_try_init(struct usb_interface *interface,
387 line6_read_serial_number(line6, &toneport->serial_number); 389 line6_read_serial_number(line6, &toneport->serial_number);
388 line6_read_data(line6, 0x80c2, &toneport->firmware_version, 1); 390 line6_read_data(line6, 0x80c2, &toneport->firmware_version, 1);
389 391
390 if (toneport_has_led(idProduct)) { 392 if (toneport_has_led(line6->type)) {
391 CHECK_RETURN(device_create_file 393 CHECK_RETURN(device_create_file
392 (&interface->dev, &dev_attr_led_red)); 394 (&interface->dev, &dev_attr_led_red));
393 CHECK_RETURN(device_create_file 395 CHECK_RETURN(device_create_file
@@ -434,7 +436,6 @@ void line6_toneport_disconnect(struct usb_interface *interface)
434{ 436{
435 struct usb_line6_toneport *toneport; 437 struct usb_line6_toneport *toneport;
436 struct snd_line6_pcm *line6pcm; 438 struct snd_line6_pcm *line6pcm;
437 u16 idProduct;
438 439
439 if (interface == NULL) 440 if (interface == NULL)
440 return; 441 return;
@@ -444,9 +445,8 @@ void line6_toneport_disconnect(struct usb_interface *interface)
444 return; 445 return;
445 446
446 del_timer_sync(&toneport->timer); 447 del_timer_sync(&toneport->timer);
447 idProduct = le16_to_cpu(toneport->line6.usbdev->descriptor.idProduct);
448 448
449 if (toneport_has_led(idProduct)) { 449 if (toneport_has_led(toneport->line6.type)) {
450 device_remove_file(&interface->dev, &dev_attr_led_red); 450 device_remove_file(&interface->dev, &dev_attr_led_red);
451 device_remove_file(&interface->dev, &dev_attr_led_green); 451 device_remove_file(&interface->dev, &dev_attr_led_green);
452 } 452 }