diff options
Diffstat (limited to 'drivers/usb/dwc3/ep0.c')
-rw-r--r-- | drivers/usb/dwc3/ep0.c | 46 |
1 files changed, 10 insertions, 36 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index 15b62a5aaff8..2b22ea7263d8 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c | |||
@@ -49,10 +49,8 @@ static int dwc3_ep0_start_trans(struct dwc3 *dwc, u8 epnum, dma_addr_t buf_dma, | |||
49 | int ret; | 49 | int ret; |
50 | 50 | ||
51 | dep = dwc->eps[epnum]; | 51 | dep = dwc->eps[epnum]; |
52 | if (dep->flags & DWC3_EP_BUSY) { | 52 | if (dep->flags & DWC3_EP_BUSY) |
53 | dwc3_trace(trace_dwc3_ep0, "%s still busy", dep->name); | ||
54 | return 0; | 53 | return 0; |
55 | } | ||
56 | 54 | ||
57 | trb = &dwc->ep0_trb[dep->trb_enqueue]; | 55 | trb = &dwc->ep0_trb[dep->trb_enqueue]; |
58 | 56 | ||
@@ -144,9 +142,6 @@ static int __dwc3_gadget_ep0_queue(struct dwc3_ep *dep, | |||
144 | 142 | ||
145 | if (dwc->ep0state == EP0_STATUS_PHASE) | 143 | if (dwc->ep0state == EP0_STATUS_PHASE) |
146 | __dwc3_ep0_do_control_status(dwc, dwc->eps[direction]); | 144 | __dwc3_ep0_do_control_status(dwc, dwc->eps[direction]); |
147 | else | ||
148 | dwc3_trace(trace_dwc3_ep0, | ||
149 | "too early for delayed status"); | ||
150 | 145 | ||
151 | return 0; | 146 | return 0; |
152 | } | 147 | } |
@@ -210,9 +205,8 @@ int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request, | |||
210 | 205 | ||
211 | spin_lock_irqsave(&dwc->lock, flags); | 206 | spin_lock_irqsave(&dwc->lock, flags); |
212 | if (!dep->endpoint.desc) { | 207 | if (!dep->endpoint.desc) { |
213 | dwc3_trace(trace_dwc3_ep0, | 208 | dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n", |
214 | "trying to queue request %p to disabled %s", | 209 | dep->name); |
215 | request, dep->name); | ||
216 | ret = -ESHUTDOWN; | 210 | ret = -ESHUTDOWN; |
217 | goto out; | 211 | goto out; |
218 | } | 212 | } |
@@ -574,13 +568,12 @@ static int dwc3_ep0_set_address(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) | |||
574 | 568 | ||
575 | addr = le16_to_cpu(ctrl->wValue); | 569 | addr = le16_to_cpu(ctrl->wValue); |
576 | if (addr > 127) { | 570 | if (addr > 127) { |
577 | dwc3_trace(trace_dwc3_ep0, "invalid device address %d", addr); | 571 | dev_err(dwc->dev, "invalid device address %d\n", addr); |
578 | return -EINVAL; | 572 | return -EINVAL; |
579 | } | 573 | } |
580 | 574 | ||
581 | if (state == USB_STATE_CONFIGURED) { | 575 | if (state == USB_STATE_CONFIGURED) { |
582 | dwc3_trace(trace_dwc3_ep0, | 576 | dev_err(dwc->dev, "can't SetAddress() from Configured State\n"); |
583 | "trying to set address when configured"); | ||
584 | return -EINVAL; | 577 | return -EINVAL; |
585 | } | 578 | } |
586 | 579 | ||
@@ -765,35 +758,27 @@ static int dwc3_ep0_std_request(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) | |||
765 | 758 | ||
766 | switch (ctrl->bRequest) { | 759 | switch (ctrl->bRequest) { |
767 | case USB_REQ_GET_STATUS: | 760 | case USB_REQ_GET_STATUS: |
768 | dwc3_trace(trace_dwc3_ep0, "USB_REQ_GET_STATUS"); | ||
769 | ret = dwc3_ep0_handle_status(dwc, ctrl); | 761 | ret = dwc3_ep0_handle_status(dwc, ctrl); |
770 | break; | 762 | break; |
771 | case USB_REQ_CLEAR_FEATURE: | 763 | case USB_REQ_CLEAR_FEATURE: |
772 | dwc3_trace(trace_dwc3_ep0, "USB_REQ_CLEAR_FEATURE"); | ||
773 | ret = dwc3_ep0_handle_feature(dwc, ctrl, 0); | 764 | ret = dwc3_ep0_handle_feature(dwc, ctrl, 0); |
774 | break; | 765 | break; |
775 | case USB_REQ_SET_FEATURE: | 766 | case USB_REQ_SET_FEATURE: |
776 | dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_FEATURE"); | ||
777 | ret = dwc3_ep0_handle_feature(dwc, ctrl, 1); | 767 | ret = dwc3_ep0_handle_feature(dwc, ctrl, 1); |
778 | break; | 768 | break; |
779 | case USB_REQ_SET_ADDRESS: | 769 | case USB_REQ_SET_ADDRESS: |
780 | dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_ADDRESS"); | ||
781 | ret = dwc3_ep0_set_address(dwc, ctrl); | 770 | ret = dwc3_ep0_set_address(dwc, ctrl); |
782 | break; | 771 | break; |
783 | case USB_REQ_SET_CONFIGURATION: | 772 | case USB_REQ_SET_CONFIGURATION: |
784 | dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_CONFIGURATION"); | ||
785 | ret = dwc3_ep0_set_config(dwc, ctrl); | 773 | ret = dwc3_ep0_set_config(dwc, ctrl); |
786 | break; | 774 | break; |
787 | case USB_REQ_SET_SEL: | 775 | case USB_REQ_SET_SEL: |
788 | dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_SEL"); | ||
789 | ret = dwc3_ep0_set_sel(dwc, ctrl); | 776 | ret = dwc3_ep0_set_sel(dwc, ctrl); |
790 | break; | 777 | break; |
791 | case USB_REQ_SET_ISOCH_DELAY: | 778 | case USB_REQ_SET_ISOCH_DELAY: |
792 | dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_ISOCH_DELAY"); | ||
793 | ret = dwc3_ep0_set_isoch_delay(dwc, ctrl); | 779 | ret = dwc3_ep0_set_isoch_delay(dwc, ctrl); |
794 | break; | 780 | break; |
795 | default: | 781 | default: |
796 | dwc3_trace(trace_dwc3_ep0, "Forwarding to gadget driver"); | ||
797 | ret = dwc3_ep0_delegate_req(dwc, ctrl); | 782 | ret = dwc3_ep0_delegate_req(dwc, ctrl); |
798 | break; | 783 | break; |
799 | } | 784 | } |
@@ -869,9 +854,6 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc, | |||
869 | status = DWC3_TRB_SIZE_TRBSTS(trb->size); | 854 | status = DWC3_TRB_SIZE_TRBSTS(trb->size); |
870 | if (status == DWC3_TRBSTS_SETUP_PENDING) { | 855 | if (status == DWC3_TRBSTS_SETUP_PENDING) { |
871 | dwc->setup_packet_pending = true; | 856 | dwc->setup_packet_pending = true; |
872 | |||
873 | dwc3_trace(trace_dwc3_ep0, "Setup Pending received"); | ||
874 | |||
875 | if (r) | 857 | if (r) |
876 | dwc3_gadget_giveback(ep0, r, -ECONNRESET); | 858 | dwc3_gadget_giveback(ep0, r, -ECONNRESET); |
877 | 859 | ||
@@ -961,7 +943,7 @@ static void dwc3_ep0_complete_status(struct dwc3 *dwc, | |||
961 | 943 | ||
962 | ret = dwc3_gadget_set_test_mode(dwc, dwc->test_mode_nr); | 944 | ret = dwc3_gadget_set_test_mode(dwc, dwc->test_mode_nr); |
963 | if (ret < 0) { | 945 | if (ret < 0) { |
964 | dwc3_trace(trace_dwc3_ep0, "Invalid Test #%d", | 946 | dev_err(dwc->dev, "invalid test #%d\n", |
965 | dwc->test_mode_nr); | 947 | dwc->test_mode_nr); |
966 | dwc3_ep0_stall_and_restart(dwc); | 948 | dwc3_ep0_stall_and_restart(dwc); |
967 | return; | 949 | return; |
@@ -969,10 +951,8 @@ static void dwc3_ep0_complete_status(struct dwc3 *dwc, | |||
969 | } | 951 | } |
970 | 952 | ||
971 | status = DWC3_TRB_SIZE_TRBSTS(trb->size); | 953 | status = DWC3_TRB_SIZE_TRBSTS(trb->size); |
972 | if (status == DWC3_TRBSTS_SETUP_PENDING) { | 954 | if (status == DWC3_TRBSTS_SETUP_PENDING) |
973 | dwc->setup_packet_pending = true; | 955 | dwc->setup_packet_pending = true; |
974 | dwc3_trace(trace_dwc3_ep0, "Setup Pending received"); | ||
975 | } | ||
976 | 956 | ||
977 | dwc->ep0state = EP0_SETUP_PHASE; | 957 | dwc->ep0state = EP0_SETUP_PHASE; |
978 | dwc3_ep0_out_start(dwc); | 958 | dwc3_ep0_out_start(dwc); |
@@ -1022,10 +1002,8 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc, | |||
1022 | 1002 | ||
1023 | ret = usb_gadget_map_request(&dwc->gadget, &req->request, | 1003 | ret = usb_gadget_map_request(&dwc->gadget, &req->request, |
1024 | dep->number); | 1004 | dep->number); |
1025 | if (ret) { | 1005 | if (ret) |
1026 | dwc3_trace(trace_dwc3_ep0, "failed to map request"); | ||
1027 | return; | 1006 | return; |
1028 | } | ||
1029 | 1007 | ||
1030 | maxpacket = dep->endpoint.maxpacket; | 1008 | maxpacket = dep->endpoint.maxpacket; |
1031 | 1009 | ||
@@ -1050,10 +1028,8 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc, | |||
1050 | } else { | 1028 | } else { |
1051 | ret = usb_gadget_map_request(&dwc->gadget, &req->request, | 1029 | ret = usb_gadget_map_request(&dwc->gadget, &req->request, |
1052 | dep->number); | 1030 | dep->number); |
1053 | if (ret) { | 1031 | if (ret) |
1054 | dwc3_trace(trace_dwc3_ep0, "failed to map request"); | ||
1055 | return; | 1032 | return; |
1056 | } | ||
1057 | 1033 | ||
1058 | ret = dwc3_ep0_start_trans(dwc, dep->number, req->request.dma, | 1034 | ret = dwc3_ep0_start_trans(dwc, dep->number, req->request.dma, |
1059 | req->request.length, DWC3_TRBCTL_CONTROL_DATA, | 1035 | req->request.length, DWC3_TRBCTL_CONTROL_DATA, |
@@ -1123,8 +1099,7 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc, | |||
1123 | if (dwc->ep0_expect_in != event->endpoint_number) { | 1099 | if (dwc->ep0_expect_in != event->endpoint_number) { |
1124 | struct dwc3_ep *dep = dwc->eps[dwc->ep0_expect_in]; | 1100 | struct dwc3_ep *dep = dwc->eps[dwc->ep0_expect_in]; |
1125 | 1101 | ||
1126 | dwc3_trace(trace_dwc3_ep0, | 1102 | dev_err(dwc->dev, "unexpected direction for Data Phase\n"); |
1127 | "Wrong direction for Data phase"); | ||
1128 | dwc3_ep0_end_control_data(dwc, dep); | 1103 | dwc3_ep0_end_control_data(dwc, dep); |
1129 | dwc3_ep0_stall_and_restart(dwc); | 1104 | dwc3_ep0_stall_and_restart(dwc); |
1130 | return; | 1105 | return; |
@@ -1140,7 +1115,6 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc, | |||
1140 | 1115 | ||
1141 | if (dwc->delayed_status) { | 1116 | if (dwc->delayed_status) { |
1142 | WARN_ON_ONCE(event->endpoint_number != 1); | 1117 | WARN_ON_ONCE(event->endpoint_number != 1); |
1143 | dwc3_trace(trace_dwc3_ep0, "Delayed Status"); | ||
1144 | return; | 1118 | return; |
1145 | } | 1119 | } |
1146 | 1120 | ||