aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/ep0.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/dwc3/ep0.c')
-rw-r--r--drivers/usb/dwc3/ep0.c46
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