diff options
| -rw-r--r-- | drivers/staging/line6/driver.c | 203 | ||||
| -rw-r--r-- | drivers/staging/line6/driver.h | 4 | ||||
| -rw-r--r-- | drivers/staging/line6/pcm.c | 38 | ||||
| -rw-r--r-- | drivers/staging/line6/toneport.c | 42 |
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 | ||
| 100 | static bool toneport_has_led(short product) | 100 | static 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 | } |
