diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2007-08-21 15:40:36 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-10-12 17:55:19 -0400 |
commit | eb23105462304fd35571fd0cab1de7aec79a9ec5 (patch) | |
tree | 3579e74b3f1a6e68d42de01c122d206447454d4b /drivers/usb/host/u132-hcd.c | |
parent | b0d9efba3ec53468984aecef8eeaf079089f2e5a (diff) |
USB: add urb->unlinked field
This patch (as970) adds a new urb->unlinked field, which is used to
store the status of unlinked URBs since we can't use urb->status for
that purpose any more. To help simplify the HCDs, usbcore will check
urb->unlinked before calling the completion handler; if the value is
set it will automatically override the status reported by the HCD.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: David Brownell <david-b@pacbell.net>
CC: Olav Kongas <ok@artecdesign.ee>
CC: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
CC: Tony Olech <tony.olech@elandigitalsystems.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/u132-hcd.c')
-rw-r--r-- | drivers/usb/host/u132-hcd.c | 124 |
1 files changed, 62 insertions, 62 deletions
diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c index 1381275d448f..db800a434b83 100644 --- a/drivers/usb/host/u132-hcd.c +++ b/drivers/usb/host/u132-hcd.c | |||
@@ -645,12 +645,12 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf, | |||
645 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 645 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
646 | return; | 646 | return; |
647 | } else if (u132->going > 0) { | 647 | } else if (u132->going > 0) { |
648 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 648 | dev_err(&u132->platform_dev->dev, "device is being removed " |
649 | "%p status=%d\n", urb, urb->status); | 649 | "urb=%p\n", urb); |
650 | up(&u132->scheduler_lock); | 650 | up(&u132->scheduler_lock); |
651 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 651 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
652 | return; | 652 | return; |
653 | } else if (urb->status == -EINPROGRESS) { | 653 | } else if (!urb->unlinked) { |
654 | struct u132_ring *ring = endp->ring; | 654 | struct u132_ring *ring = endp->ring; |
655 | u8 *u = urb->transfer_buffer + urb->actual_length; | 655 | u8 *u = urb->transfer_buffer + urb->actual_length; |
656 | u8 *b = buf; | 656 | u8 *b = buf; |
@@ -716,8 +716,8 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf, | |||
716 | return; | 716 | return; |
717 | } | 717 | } |
718 | } else { | 718 | } else { |
719 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 719 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
720 | "s=%d\n", urb, urb->status); | 720 | "unlinked=%d\n", urb, urb->unlinked); |
721 | up(&u132->scheduler_lock); | 721 | up(&u132->scheduler_lock); |
722 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 722 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
723 | return; | 723 | return; |
@@ -744,12 +744,12 @@ static void u132_hcd_bulk_output_sent(void *data, struct urb *urb, u8 *buf, | |||
744 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 744 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
745 | return; | 745 | return; |
746 | } else if (u132->going > 0) { | 746 | } else if (u132->going > 0) { |
747 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 747 | dev_err(&u132->platform_dev->dev, "device is being removed " |
748 | "%p status=%d\n", urb, urb->status); | 748 | "urb=%p\n", urb); |
749 | up(&u132->scheduler_lock); | 749 | up(&u132->scheduler_lock); |
750 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 750 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
751 | return; | 751 | return; |
752 | } else if (urb->status == -EINPROGRESS) { | 752 | } else if (!urb->unlinked) { |
753 | struct u132_ring *ring = endp->ring; | 753 | struct u132_ring *ring = endp->ring; |
754 | urb->actual_length += len; | 754 | urb->actual_length += len; |
755 | endp->toggle_bits = toggle_bits; | 755 | endp->toggle_bits = toggle_bits; |
@@ -768,8 +768,8 @@ static void u132_hcd_bulk_output_sent(void *data, struct urb *urb, u8 *buf, | |||
768 | return; | 768 | return; |
769 | } | 769 | } |
770 | } else { | 770 | } else { |
771 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 771 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
772 | "s=%d\n", urb, urb->status); | 772 | "unlinked=%d\n", urb, urb->unlinked); |
773 | up(&u132->scheduler_lock); | 773 | up(&u132->scheduler_lock); |
774 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 774 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
775 | return; | 775 | return; |
@@ -797,12 +797,12 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf, | |||
797 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 797 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
798 | return; | 798 | return; |
799 | } else if (u132->going > 0) { | 799 | } else if (u132->going > 0) { |
800 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 800 | dev_err(&u132->platform_dev->dev, "device is being removed " |
801 | "%p status=%d\n", urb, urb->status); | 801 | "urb=%p\n", urb); |
802 | up(&u132->scheduler_lock); | 802 | up(&u132->scheduler_lock); |
803 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 803 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
804 | return; | 804 | return; |
805 | } else if (urb->status == -EINPROGRESS) { | 805 | } else if (!urb->unlinked) { |
806 | struct u132_ring *ring = endp->ring; | 806 | struct u132_ring *ring = endp->ring; |
807 | u8 *u = urb->transfer_buffer + urb->actual_length; | 807 | u8 *u = urb->transfer_buffer + urb->actual_length; |
808 | u8 *b = buf; | 808 | u8 *b = buf; |
@@ -871,8 +871,8 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf, | |||
871 | return; | 871 | return; |
872 | } | 872 | } |
873 | } else { | 873 | } else { |
874 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 874 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
875 | "s=%d\n", urb, urb->status); | 875 | "unlinked=%d\n", urb, urb->unlinked); |
876 | up(&u132->scheduler_lock); | 876 | up(&u132->scheduler_lock); |
877 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 877 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
878 | return; | 878 | return; |
@@ -898,18 +898,18 @@ static void u132_hcd_configure_empty_sent(void *data, struct urb *urb, u8 *buf, | |||
898 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 898 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
899 | return; | 899 | return; |
900 | } else if (u132->going > 0) { | 900 | } else if (u132->going > 0) { |
901 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 901 | dev_err(&u132->platform_dev->dev, "device is being removed " |
902 | "%p status=%d\n", urb, urb->status); | 902 | "urb=%p\n", urb); |
903 | up(&u132->scheduler_lock); | 903 | up(&u132->scheduler_lock); |
904 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 904 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
905 | return; | 905 | return; |
906 | } else if (urb->status == -EINPROGRESS) { | 906 | } else if (!urb->unlinked) { |
907 | up(&u132->scheduler_lock); | 907 | up(&u132->scheduler_lock); |
908 | u132_hcd_giveback_urb(u132, endp, urb, 0); | 908 | u132_hcd_giveback_urb(u132, endp, urb, 0); |
909 | return; | 909 | return; |
910 | } else { | 910 | } else { |
911 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 911 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
912 | "s=%d\n", urb, urb->status); | 912 | "unlinked=%d\n", urb, urb->unlinked); |
913 | up(&u132->scheduler_lock); | 913 | up(&u132->scheduler_lock); |
914 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 914 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
915 | return; | 915 | return; |
@@ -936,12 +936,12 @@ static void u132_hcd_configure_input_recv(void *data, struct urb *urb, u8 *buf, | |||
936 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 936 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
937 | return; | 937 | return; |
938 | } else if (u132->going > 0) { | 938 | } else if (u132->going > 0) { |
939 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 939 | dev_err(&u132->platform_dev->dev, "device is being removed " |
940 | "%p status=%d\n", urb, urb->status); | 940 | "urb=%p\n", urb); |
941 | up(&u132->scheduler_lock); | 941 | up(&u132->scheduler_lock); |
942 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 942 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
943 | return; | 943 | return; |
944 | } else if (urb->status == -EINPROGRESS) { | 944 | } else if (!urb->unlinked) { |
945 | struct u132_ring *ring = endp->ring; | 945 | struct u132_ring *ring = endp->ring; |
946 | u8 *u = urb->transfer_buffer; | 946 | u8 *u = urb->transfer_buffer; |
947 | u8 *b = buf; | 947 | u8 *b = buf; |
@@ -980,8 +980,8 @@ static void u132_hcd_configure_input_recv(void *data, struct urb *urb, u8 *buf, | |||
980 | return; | 980 | return; |
981 | } | 981 | } |
982 | } else { | 982 | } else { |
983 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 983 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
984 | "s=%d\n", urb, urb->status); | 984 | "unlinked=%d\n", urb, urb->unlinked); |
985 | up(&u132->scheduler_lock); | 985 | up(&u132->scheduler_lock); |
986 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 986 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
987 | return; | 987 | return; |
@@ -1007,18 +1007,18 @@ static void u132_hcd_configure_empty_recv(void *data, struct urb *urb, u8 *buf, | |||
1007 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 1007 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
1008 | return; | 1008 | return; |
1009 | } else if (u132->going > 0) { | 1009 | } else if (u132->going > 0) { |
1010 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 1010 | dev_err(&u132->platform_dev->dev, "device is being removed " |
1011 | "%p status=%d\n", urb, urb->status); | 1011 | "urb=%p\n", urb); |
1012 | up(&u132->scheduler_lock); | 1012 | up(&u132->scheduler_lock); |
1013 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 1013 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
1014 | return; | 1014 | return; |
1015 | } else if (urb->status == -EINPROGRESS) { | 1015 | } else if (!urb->unlinked) { |
1016 | up(&u132->scheduler_lock); | 1016 | up(&u132->scheduler_lock); |
1017 | u132_hcd_giveback_urb(u132, endp, urb, 0); | 1017 | u132_hcd_giveback_urb(u132, endp, urb, 0); |
1018 | return; | 1018 | return; |
1019 | } else { | 1019 | } else { |
1020 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 1020 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
1021 | "s=%d\n", urb, urb->status); | 1021 | "unlinked=%d\n", urb, urb->unlinked); |
1022 | up(&u132->scheduler_lock); | 1022 | up(&u132->scheduler_lock); |
1023 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 1023 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
1024 | return; | 1024 | return; |
@@ -1045,12 +1045,12 @@ static void u132_hcd_configure_setup_sent(void *data, struct urb *urb, u8 *buf, | |||
1045 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 1045 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
1046 | return; | 1046 | return; |
1047 | } else if (u132->going > 0) { | 1047 | } else if (u132->going > 0) { |
1048 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 1048 | dev_err(&u132->platform_dev->dev, "device is being removed " |
1049 | "%p status=%d\n", urb, urb->status); | 1049 | "urb=%p\n", urb); |
1050 | up(&u132->scheduler_lock); | 1050 | up(&u132->scheduler_lock); |
1051 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 1051 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
1052 | return; | 1052 | return; |
1053 | } else if (urb->status == -EINPROGRESS) { | 1053 | } else if (!urb->unlinked) { |
1054 | if (usb_pipein(urb->pipe)) { | 1054 | if (usb_pipein(urb->pipe)) { |
1055 | int retval; | 1055 | int retval; |
1056 | struct u132_ring *ring = endp->ring; | 1056 | struct u132_ring *ring = endp->ring; |
@@ -1077,8 +1077,8 @@ static void u132_hcd_configure_setup_sent(void *data, struct urb *urb, u8 *buf, | |||
1077 | return; | 1077 | return; |
1078 | } | 1078 | } |
1079 | } else { | 1079 | } else { |
1080 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 1080 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
1081 | "s=%d\n", urb, urb->status); | 1081 | "unlinked=%d\n", urb, urb->unlinked); |
1082 | up(&u132->scheduler_lock); | 1082 | up(&u132->scheduler_lock); |
1083 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 1083 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
1084 | return; | 1084 | return; |
@@ -1106,20 +1106,20 @@ static void u132_hcd_enumeration_empty_recv(void *data, struct urb *urb, | |||
1106 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 1106 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
1107 | return; | 1107 | return; |
1108 | } else if (u132->going > 0) { | 1108 | } else if (u132->going > 0) { |
1109 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 1109 | dev_err(&u132->platform_dev->dev, "device is being removed " |
1110 | "%p status=%d\n", urb, urb->status); | 1110 | "urb=%p\n", urb); |
1111 | up(&u132->scheduler_lock); | 1111 | up(&u132->scheduler_lock); |
1112 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 1112 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
1113 | return; | 1113 | return; |
1114 | } else if (urb->status == -EINPROGRESS) { | 1114 | } else if (!urb->unlinked) { |
1115 | u132->addr[0].address = 0; | 1115 | u132->addr[0].address = 0; |
1116 | endp->usb_addr = udev->usb_addr; | 1116 | endp->usb_addr = udev->usb_addr; |
1117 | up(&u132->scheduler_lock); | 1117 | up(&u132->scheduler_lock); |
1118 | u132_hcd_giveback_urb(u132, endp, urb, 0); | 1118 | u132_hcd_giveback_urb(u132, endp, urb, 0); |
1119 | return; | 1119 | return; |
1120 | } else { | 1120 | } else { |
1121 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 1121 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
1122 | "s=%d\n", urb, urb->status); | 1122 | "unlinked=%d\n", urb, urb->unlinked); |
1123 | up(&u132->scheduler_lock); | 1123 | up(&u132->scheduler_lock); |
1124 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 1124 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
1125 | return; | 1125 | return; |
@@ -1145,12 +1145,12 @@ static void u132_hcd_enumeration_address_sent(void *data, struct urb *urb, | |||
1145 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 1145 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
1146 | return; | 1146 | return; |
1147 | } else if (u132->going > 0) { | 1147 | } else if (u132->going > 0) { |
1148 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 1148 | dev_err(&u132->platform_dev->dev, "device is being removed " |
1149 | "%p status=%d\n", urb, urb->status); | 1149 | "urb=%p\n", urb); |
1150 | up(&u132->scheduler_lock); | 1150 | up(&u132->scheduler_lock); |
1151 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 1151 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
1152 | return; | 1152 | return; |
1153 | } else if (urb->status == -EINPROGRESS) { | 1153 | } else if (!urb->unlinked) { |
1154 | int retval; | 1154 | int retval; |
1155 | struct u132_ring *ring = endp->ring; | 1155 | struct u132_ring *ring = endp->ring; |
1156 | up(&u132->scheduler_lock); | 1156 | up(&u132->scheduler_lock); |
@@ -1162,8 +1162,8 @@ static void u132_hcd_enumeration_address_sent(void *data, struct urb *urb, | |||
1162 | u132_hcd_giveback_urb(u132, endp, urb, retval); | 1162 | u132_hcd_giveback_urb(u132, endp, urb, retval); |
1163 | return; | 1163 | return; |
1164 | } else { | 1164 | } else { |
1165 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 1165 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
1166 | "s=%d\n", urb, urb->status); | 1166 | "unlinked=%d\n", urb, urb->unlinked); |
1167 | up(&u132->scheduler_lock); | 1167 | up(&u132->scheduler_lock); |
1168 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 1168 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
1169 | return; | 1169 | return; |
@@ -1189,18 +1189,18 @@ static void u132_hcd_initial_empty_sent(void *data, struct urb *urb, u8 *buf, | |||
1189 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 1189 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
1190 | return; | 1190 | return; |
1191 | } else if (u132->going > 0) { | 1191 | } else if (u132->going > 0) { |
1192 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 1192 | dev_err(&u132->platform_dev->dev, "device is being removed " |
1193 | "%p status=%d\n", urb, urb->status); | 1193 | "urb=%p\n", urb); |
1194 | up(&u132->scheduler_lock); | 1194 | up(&u132->scheduler_lock); |
1195 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 1195 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
1196 | return; | 1196 | return; |
1197 | } else if (urb->status == -EINPROGRESS) { | 1197 | } else if (!urb->unlinked) { |
1198 | up(&u132->scheduler_lock); | 1198 | up(&u132->scheduler_lock); |
1199 | u132_hcd_giveback_urb(u132, endp, urb, 0); | 1199 | u132_hcd_giveback_urb(u132, endp, urb, 0); |
1200 | return; | 1200 | return; |
1201 | } else { | 1201 | } else { |
1202 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 1202 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
1203 | "s=%d\n", urb, urb->status); | 1203 | "unlinked=%d\n", urb, urb->unlinked); |
1204 | up(&u132->scheduler_lock); | 1204 | up(&u132->scheduler_lock); |
1205 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 1205 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
1206 | return; | 1206 | return; |
@@ -1227,12 +1227,12 @@ static void u132_hcd_initial_input_recv(void *data, struct urb *urb, u8 *buf, | |||
1227 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 1227 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
1228 | return; | 1228 | return; |
1229 | } else if (u132->going > 0) { | 1229 | } else if (u132->going > 0) { |
1230 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 1230 | dev_err(&u132->platform_dev->dev, "device is being removed " |
1231 | "%p status=%d\n", urb, urb->status); | 1231 | "urb=%p\n", urb); |
1232 | up(&u132->scheduler_lock); | 1232 | up(&u132->scheduler_lock); |
1233 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 1233 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
1234 | return; | 1234 | return; |
1235 | } else if (urb->status == -EINPROGRESS) { | 1235 | } else if (!urb->unlinked) { |
1236 | int retval; | 1236 | int retval; |
1237 | struct u132_ring *ring = endp->ring; | 1237 | struct u132_ring *ring = endp->ring; |
1238 | u8 *u = urb->transfer_buffer; | 1238 | u8 *u = urb->transfer_buffer; |
@@ -1251,8 +1251,8 @@ static void u132_hcd_initial_input_recv(void *data, struct urb *urb, u8 *buf, | |||
1251 | u132_hcd_giveback_urb(u132, endp, urb, retval); | 1251 | u132_hcd_giveback_urb(u132, endp, urb, retval); |
1252 | return; | 1252 | return; |
1253 | } else { | 1253 | } else { |
1254 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 1254 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
1255 | "s=%d\n", urb, urb->status); | 1255 | "unlinked=%d\n", urb, urb->unlinked); |
1256 | up(&u132->scheduler_lock); | 1256 | up(&u132->scheduler_lock); |
1257 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 1257 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
1258 | return; | 1258 | return; |
@@ -1279,12 +1279,12 @@ static void u132_hcd_initial_setup_sent(void *data, struct urb *urb, u8 *buf, | |||
1279 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); | 1279 | u132_hcd_giveback_urb(u132, endp, urb, -EINTR); |
1280 | return; | 1280 | return; |
1281 | } else if (u132->going > 0) { | 1281 | } else if (u132->going > 0) { |
1282 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 1282 | dev_err(&u132->platform_dev->dev, "device is being removed " |
1283 | "%p status=%d\n", urb, urb->status); | 1283 | "urb=%p\n", urb); |
1284 | up(&u132->scheduler_lock); | 1284 | up(&u132->scheduler_lock); |
1285 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); | 1285 | u132_hcd_giveback_urb(u132, endp, urb, -ENODEV); |
1286 | return; | 1286 | return; |
1287 | } else if (urb->status == -EINPROGRESS) { | 1287 | } else if (!urb->unlinked) { |
1288 | int retval; | 1288 | int retval; |
1289 | struct u132_ring *ring = endp->ring; | 1289 | struct u132_ring *ring = endp->ring; |
1290 | up(&u132->scheduler_lock); | 1290 | up(&u132->scheduler_lock); |
@@ -1296,8 +1296,8 @@ static void u132_hcd_initial_setup_sent(void *data, struct urb *urb, u8 *buf, | |||
1296 | u132_hcd_giveback_urb(u132, endp, urb, retval); | 1296 | u132_hcd_giveback_urb(u132, endp, urb, retval); |
1297 | return; | 1297 | return; |
1298 | } else { | 1298 | } else { |
1299 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p statu" | 1299 | dev_err(&u132->platform_dev->dev, "CALLBACK called urb=%p " |
1300 | "s=%d\n", urb, urb->status); | 1300 | "unlinked=%d\n", urb, urb->unlinked); |
1301 | up(&u132->scheduler_lock); | 1301 | up(&u132->scheduler_lock); |
1302 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); | 1302 | u132_hcd_giveback_urb(u132, endp, urb, urb->status); |
1303 | return; | 1303 | return; |
@@ -2279,8 +2279,8 @@ static int u132_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, | |||
2279 | , u132->going); | 2279 | , u132->going); |
2280 | return -ENODEV; | 2280 | return -ENODEV; |
2281 | } else if (u132->going > 0) { | 2281 | } else if (u132->going > 0) { |
2282 | dev_err(&u132->platform_dev->dev, "device is being removed urb=" | 2282 | dev_err(&u132->platform_dev->dev, "device is being removed " |
2283 | "%p status=%d\n", urb, urb->status); | 2283 | "urb=%p\n", urb); |
2284 | return -ESHUTDOWN; | 2284 | return -ESHUTDOWN; |
2285 | } else { | 2285 | } else { |
2286 | u8 usb_addr = usb_pipedevice(urb->pipe); | 2286 | u8 usb_addr = usb_pipedevice(urb->pipe); |