mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			602 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Diff
		
	
	
			
		
		
	
	
			602 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Diff
		
	
	
| --- linux-4.9.37/drivers/usb/dwc3/ep0.c	2017-07-12 16:42:41.000000000 +0300
 | |
| +++ linux-4.9.y/drivers/usb/dwc3/ep0.c	2021-06-07 13:01:34.000000000 +0300
 | |
| @@ -39,22 +39,6 @@
 | |
|  static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
 | |
|  		struct dwc3_ep *dep, struct dwc3_request *req);
 | |
|  
 | |
| -static const char *dwc3_ep0_state_string(enum dwc3_ep0_state state)
 | |
| -{
 | |
| -	switch (state) {
 | |
| -	case EP0_UNCONNECTED:
 | |
| -		return "Unconnected";
 | |
| -	case EP0_SETUP_PHASE:
 | |
| -		return "Setup Phase";
 | |
| -	case EP0_DATA_PHASE:
 | |
| -		return "Data Phase";
 | |
| -	case EP0_STATUS_PHASE:
 | |
| -		return "Status Phase";
 | |
| -	default:
 | |
| -		return "UNKNOWN";
 | |
| -	}
 | |
| -}
 | |
| -
 | |
|  static void dwc3_ep0_prepare_one_trb(struct dwc3 *dwc, u8 epnum,
 | |
|  		dma_addr_t buf_dma, u32 len, u32 type, bool chain)
 | |
|  {
 | |
| @@ -92,21 +76,16 @@
 | |
|  	int				ret;
 | |
|  
 | |
|  	dep = dwc->eps[epnum];
 | |
| -	if (dep->flags & DWC3_EP_BUSY) {
 | |
| -		dwc3_trace(trace_dwc3_ep0, "%s still busy", dep->name);
 | |
| +	if (dep->flags & DWC3_EP_BUSY)
 | |
|  		return 0;
 | |
| -	}
 | |
|  
 | |
|  	memset(¶ms, 0, sizeof(params));
 | |
|  	params.param0 = upper_32_bits(dwc->ep0_trb_addr);
 | |
|  	params.param1 = lower_32_bits(dwc->ep0_trb_addr);
 | |
|  
 | |
|  	ret = dwc3_send_gadget_ep_cmd(dep, DWC3_DEPCMD_STARTTRANSFER, ¶ms);
 | |
| -	if (ret < 0) {
 | |
| -		dwc3_trace(trace_dwc3_ep0, "%s STARTTRANSFER failed",
 | |
| -				dep->name);
 | |
| +	if (ret < 0)
 | |
|  		return ret;
 | |
| -	}
 | |
|  
 | |
|  	dep->flags |= DWC3_EP_BUSY;
 | |
|  	dep->resource_index = dwc3_gadget_ep_get_transfer_index(dep);
 | |
| @@ -166,9 +145,6 @@
 | |
|  
 | |
|  		if (dwc->ep0state == EP0_STATUS_PHASE)
 | |
|  			__dwc3_ep0_do_control_status(dwc, dwc->eps[direction]);
 | |
| -		else
 | |
| -			dwc3_trace(trace_dwc3_ep0,
 | |
| -					"too early for delayed status");
 | |
|  
 | |
|  		return 0;
 | |
|  	}
 | |
| @@ -232,9 +208,8 @@
 | |
|  
 | |
|  	spin_lock_irqsave(&dwc->lock, flags);
 | |
|  	if (!dep->endpoint.desc) {
 | |
| -		dwc3_trace(trace_dwc3_ep0,
 | |
| -				"trying to queue request %p to disabled %s",
 | |
| -				request, dep->name);
 | |
| +		dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n",
 | |
| +				dep->name);
 | |
|  		ret = -ESHUTDOWN;
 | |
|  		goto out;
 | |
|  	}
 | |
| @@ -245,11 +220,6 @@
 | |
|  		goto out;
 | |
|  	}
 | |
|  
 | |
| -	dwc3_trace(trace_dwc3_ep0,
 | |
| -			"queueing request %p to %s length %d state '%s'",
 | |
| -			request, dep->name, request->length,
 | |
| -			dwc3_ep0_state_string(dwc->ep0state));
 | |
| -
 | |
|  	ret = __dwc3_gadget_ep0_queue(dep, req);
 | |
|  
 | |
|  out:
 | |
| @@ -317,6 +287,24 @@
 | |
|  	WARN_ON(ret < 0);
 | |
|  }
 | |
|  
 | |
| +static u32 dwc3_usbep_to_dwc3ep(struct dwc3 *dwc, u32 num)
 | |
| +{
 | |
| +	u32 res = 0;
 | |
| +	int i = 0;
 | |
| +
 | |
| +	if (!dwc)
 | |
| +		return 0;
 | |
| +
 | |
| +	for (i = 0; i < dwc->num_in_eps + dwc->num_out_eps; i++) {
 | |
| +		if (dwc->dwceps_map_to_usbeps[i] == num) {
 | |
| +			res = i;
 | |
| +			break;
 | |
| +		}
 | |
| +	}
 | |
| +
 | |
| +	return res;
 | |
| +}
 | |
| +
 | |
|  static struct dwc3_ep *dwc3_wIndex_to_dep(struct dwc3 *dwc, __le16 wIndex_le)
 | |
|  {
 | |
|  	struct dwc3_ep		*dep;
 | |
| @@ -327,6 +315,9 @@
 | |
|  	if ((windex & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
 | |
|  		epnum |= 1;
 | |
|  
 | |
| +	if (dwc->eps_new_init)
 | |
| +		epnum = dwc3_usbep_to_dwc3ep(dwc, epnum);
 | |
| +
 | |
|  	dep = dwc->eps[epnum];
 | |
|  	if (dep->flags & DWC3_EP_ENABLED)
 | |
|  		return dep;
 | |
| @@ -399,126 +390,203 @@
 | |
|  	return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req);
 | |
|  }
 | |
|  
 | |
| -static int dwc3_ep0_handle_feature(struct dwc3 *dwc,
 | |
| +static int dwc3_ep0_handle_u1(struct dwc3 *dwc, enum usb_device_state state,
 | |
| +		int set)
 | |
| +{
 | |
| +	u32 reg;
 | |
| +
 | |
| +	if (state != USB_STATE_CONFIGURED)
 | |
| +		return -EINVAL;
 | |
| +	if ((dwc->speed != DWC3_DSTS_SUPERSPEED) &&
 | |
| +			(dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS))
 | |
| +		return -EINVAL;
 | |
| +
 | |
| +	if (dwc->dis_initiate_u1)
 | |
| +		return -EINVAL;
 | |
| +
 | |
| +	reg = dwc3_readl(dwc->regs, DWC3_DCTL);
 | |
| +	if (set)
 | |
| +		reg |= DWC3_DCTL_INITU1ENA;
 | |
| +	else
 | |
| +		reg &= ~DWC3_DCTL_INITU1ENA;
 | |
| +	dwc3_writel(dwc->regs, DWC3_DCTL, reg);
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +static int dwc3_ep0_handle_u2(struct dwc3 *dwc, enum usb_device_state state,
 | |
| +		int set)
 | |
| +{
 | |
| +	u32 reg;
 | |
| +
 | |
| +
 | |
| +	if (state != USB_STATE_CONFIGURED)
 | |
| +		return -EINVAL;
 | |
| +	if ((dwc->speed != DWC3_DSTS_SUPERSPEED) &&
 | |
| +			(dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS))
 | |
| +		return -EINVAL;
 | |
| +
 | |
| +	if (dwc->dis_initiate_u2)
 | |
| +		return -EINVAL;
 | |
| +
 | |
| +	reg = dwc3_readl(dwc->regs, DWC3_DCTL);
 | |
| +	if (set)
 | |
| +		reg |= DWC3_DCTL_INITU2ENA;
 | |
| +	else
 | |
| +		reg &= ~DWC3_DCTL_INITU2ENA;
 | |
| +	dwc3_writel(dwc->regs, DWC3_DCTL, reg);
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +static int dwc3_ep0_handle_test(struct dwc3 *dwc, enum usb_device_state state,
 | |
| +		u32 wIndex, int set)
 | |
| +{
 | |
| +	if ((wIndex & 0xff) != 0)
 | |
| +		return -EINVAL;
 | |
| +	if (!set)
 | |
| +		return -EINVAL;
 | |
| +
 | |
| +	switch (wIndex >> 8) {
 | |
| +	case TEST_J:
 | |
| +	case TEST_K:
 | |
| +	case TEST_SE0_NAK:
 | |
| +	case TEST_PACKET:
 | |
| +	case TEST_FORCE_EN:
 | |
| +		dwc->test_mode_nr = wIndex >> 8;
 | |
| +		dwc->test_mode = true;
 | |
| +		break;
 | |
| +	default:
 | |
| +		return -EINVAL;
 | |
| +	}
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +static int dwc3_ep0_handle_device(struct dwc3 *dwc,
 | |
|  		struct usb_ctrlrequest *ctrl, int set)
 | |
|  {
 | |
| -	struct dwc3_ep		*dep;
 | |
| -	u32			recip;
 | |
| +	enum usb_device_state	state;
 | |
|  	u32			wValue;
 | |
|  	u32			wIndex;
 | |
| -	u32			reg;
 | |
| -	int			ret;
 | |
| -	enum usb_device_state	state;
 | |
| +	int			ret = 0;
 | |
|  
 | |
|  	wValue = le16_to_cpu(ctrl->wValue);
 | |
|  	wIndex = le16_to_cpu(ctrl->wIndex);
 | |
| -	recip = ctrl->bRequestType & USB_RECIP_MASK;
 | |
|  	state = dwc->gadget.state;
 | |
|  
 | |
| -	switch (recip) {
 | |
| -	case USB_RECIP_DEVICE:
 | |
| +	switch (wValue) {
 | |
| +	case USB_DEVICE_REMOTE_WAKEUP:
 | |
| +		break;
 | |
| +	/*
 | |
| +	 * 9.4.1 says only only for SS, in AddressState only for
 | |
| +	 * default control pipe
 | |
| +	 */
 | |
| +	case USB_DEVICE_U1_ENABLE:
 | |
| +		ret = dwc3_ep0_handle_u1(dwc, state, set);
 | |
| +		break;
 | |
| +	case USB_DEVICE_U2_ENABLE:
 | |
| +		ret = dwc3_ep0_handle_u2(dwc, state, set);
 | |
| +		break;
 | |
| +	case USB_DEVICE_LTM_ENABLE:
 | |
| +		ret = -EINVAL;
 | |
| +		break;
 | |
| +	case USB_DEVICE_TEST_MODE:
 | |
| +		ret = dwc3_ep0_handle_test(dwc, state, wIndex, set);
 | |
| +		break;
 | |
| +	default:
 | |
| +		ret = -EINVAL;
 | |
| +	}
 | |
|  
 | |
| -		switch (wValue) {
 | |
| -		case USB_DEVICE_REMOTE_WAKEUP:
 | |
| -			break;
 | |
| -		/*
 | |
| -		 * 9.4.1 says only only for SS, in AddressState only for
 | |
| -		 * default control pipe
 | |
| -		 */
 | |
| -		case USB_DEVICE_U1_ENABLE:
 | |
| -			if (state != USB_STATE_CONFIGURED)
 | |
| -				return -EINVAL;
 | |
| -			if ((dwc->speed != DWC3_DSTS_SUPERSPEED) &&
 | |
| -			    (dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS))
 | |
| -				return -EINVAL;
 | |
| +	return ret;
 | |
| +}
 | |
|  
 | |
| -			reg = dwc3_readl(dwc->regs, DWC3_DCTL);
 | |
| -			if (set)
 | |
| -				reg |= DWC3_DCTL_INITU1ENA;
 | |
| -			else
 | |
| -				reg &= ~DWC3_DCTL_INITU1ENA;
 | |
| -			dwc3_writel(dwc->regs, DWC3_DCTL, reg);
 | |
| -			break;
 | |
| +static int dwc3_ep0_handle_intf(struct dwc3 *dwc,
 | |
| +		struct usb_ctrlrequest *ctrl, int set)
 | |
| +{
 | |
| +	enum usb_device_state	state;
 | |
| +	u32			wValue;
 | |
| +	u32			wIndex;
 | |
| +	int			ret = 0;
 | |
|  
 | |
| -		case USB_DEVICE_U2_ENABLE:
 | |
| -			if (state != USB_STATE_CONFIGURED)
 | |
| -				return -EINVAL;
 | |
| -			if ((dwc->speed != DWC3_DSTS_SUPERSPEED) &&
 | |
| -			    (dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS))
 | |
| -				return -EINVAL;
 | |
| +	wValue = le16_to_cpu(ctrl->wValue);
 | |
| +	wIndex = le16_to_cpu(ctrl->wIndex);
 | |
| +	state = dwc->gadget.state;
 | |
|  
 | |
| -			reg = dwc3_readl(dwc->regs, DWC3_DCTL);
 | |
| -			if (set)
 | |
| -				reg |= DWC3_DCTL_INITU2ENA;
 | |
| -			else
 | |
| -				reg &= ~DWC3_DCTL_INITU2ENA;
 | |
| -			dwc3_writel(dwc->regs, DWC3_DCTL, reg);
 | |
| -			break;
 | |
| +	switch (wValue) {
 | |
| +	case USB_INTRF_FUNC_SUSPEND:
 | |
| +		if (wIndex & USB_INTRF_FUNC_SUSPEND_LP)
 | |
| +			/* XXX enable Low power suspend */
 | |
| +			;
 | |
| +		if (wIndex & USB_INTRF_FUNC_SUSPEND_RW)
 | |
| +			/* XXX enable remote wakeup */
 | |
| +			;
 | |
| +		break;
 | |
| +	default:
 | |
| +		ret = -EINVAL;
 | |
| +	}
 | |
| +
 | |
| +	return ret;
 | |
| +}
 | |
| +
 | |
| +static int dwc3_ep0_handle_endpoint(struct dwc3 *dwc,
 | |
| +		struct usb_ctrlrequest *ctrl, int set)
 | |
| +{
 | |
| +	struct dwc3_ep		*dep;
 | |
| +	enum usb_device_state	state;
 | |
| +	u32			wValue;
 | |
| +	u32			wIndex;
 | |
| +	int			ret;
 | |
|  
 | |
| -		case USB_DEVICE_LTM_ENABLE:
 | |
| +	wValue = le16_to_cpu(ctrl->wValue);
 | |
| +	wIndex = le16_to_cpu(ctrl->wIndex);
 | |
| +	state = dwc->gadget.state;
 | |
| +
 | |
| +	switch (wValue) {
 | |
| +	case USB_ENDPOINT_HALT:
 | |
| +		dep = dwc3_wIndex_to_dep(dwc, ctrl->wIndex);
 | |
| +		if (!dep)
 | |
|  			return -EINVAL;
 | |
|  
 | |
| -		case USB_DEVICE_TEST_MODE:
 | |
| -			if ((wIndex & 0xff) != 0)
 | |
| -				return -EINVAL;
 | |
| -			if (!set)
 | |
| -				return -EINVAL;
 | |
| -
 | |
| -			switch (wIndex >> 8) {
 | |
| -			case TEST_J:
 | |
| -			case TEST_K:
 | |
| -			case TEST_SE0_NAK:
 | |
| -			case TEST_PACKET:
 | |
| -			case TEST_FORCE_EN:
 | |
| -				dwc->test_mode_nr = wIndex >> 8;
 | |
| -				dwc->test_mode = true;
 | |
| -				break;
 | |
| -			default:
 | |
| -				return -EINVAL;
 | |
| -			}
 | |
| +		if (set == 0 && (dep->flags & DWC3_EP_WEDGE))
 | |
|  			break;
 | |
| -		default:
 | |
| +
 | |
| +		ret = __dwc3_gadget_ep_set_halt(dep, set, true);
 | |
| +		if (ret)
 | |
|  			return -EINVAL;
 | |
| -		}
 | |
|  		break;
 | |
| +	default:
 | |
| +		return -EINVAL;
 | |
| +	}
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +static int dwc3_ep0_handle_feature(struct dwc3 *dwc,
 | |
| +		struct usb_ctrlrequest *ctrl, int set)
 | |
| +{
 | |
| +	u32			recip;
 | |
| +	int			ret;
 | |
| +	enum usb_device_state	state;
 | |
| +
 | |
| +	recip = ctrl->bRequestType & USB_RECIP_MASK;
 | |
| +	state = dwc->gadget.state;
 | |
|  
 | |
| +	switch (recip) {
 | |
| +	case USB_RECIP_DEVICE:
 | |
| +		ret = dwc3_ep0_handle_device(dwc, ctrl, set);
 | |
| +		break;
 | |
|  	case USB_RECIP_INTERFACE:
 | |
| -		switch (wValue) {
 | |
| -		case USB_INTRF_FUNC_SUSPEND:
 | |
| -			if (wIndex & USB_INTRF_FUNC_SUSPEND_LP)
 | |
| -				/* XXX enable Low power suspend */
 | |
| -				;
 | |
| -			if (wIndex & USB_INTRF_FUNC_SUSPEND_RW)
 | |
| -				/* XXX enable remote wakeup */
 | |
| -				;
 | |
| -			break;
 | |
| -		default:
 | |
| -			return -EINVAL;
 | |
| -		}
 | |
| +		ret = dwc3_ep0_handle_intf(dwc, ctrl, set);
 | |
|  		break;
 | |
| -
 | |
|  	case USB_RECIP_ENDPOINT:
 | |
| -		switch (wValue) {
 | |
| -		case USB_ENDPOINT_HALT:
 | |
| -			dep = dwc3_wIndex_to_dep(dwc, ctrl->wIndex);
 | |
| -			if (!dep)
 | |
| -				return -EINVAL;
 | |
| -			if (set == 0 && (dep->flags & DWC3_EP_WEDGE))
 | |
| -				break;
 | |
| -			ret = __dwc3_gadget_ep_set_halt(dep, set, true);
 | |
| -			if (ret)
 | |
| -				return -EINVAL;
 | |
| -			break;
 | |
| -		default:
 | |
| -			return -EINVAL;
 | |
| -		}
 | |
| +		ret = dwc3_ep0_handle_endpoint(dwc, ctrl, set);
 | |
|  		break;
 | |
| -
 | |
|  	default:
 | |
| -		return -EINVAL;
 | |
| +		ret = -EINVAL;
 | |
|  	}
 | |
|  
 | |
| -	return 0;
 | |
| +	return ret;
 | |
|  }
 | |
|  
 | |
|  static int dwc3_ep0_set_address(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl)
 | |
| @@ -529,13 +597,12 @@
 | |
|  
 | |
|  	addr = le16_to_cpu(ctrl->wValue);
 | |
|  	if (addr > 127) {
 | |
| -		dwc3_trace(trace_dwc3_ep0, "invalid device address %d", addr);
 | |
| +		dev_err(dwc->dev, "invalid device address %d\n", addr);
 | |
|  		return -EINVAL;
 | |
|  	}
 | |
|  
 | |
|  	if (state == USB_STATE_CONFIGURED) {
 | |
| -		dwc3_trace(trace_dwc3_ep0,
 | |
| -				"trying to set address when configured");
 | |
| +		dev_err(dwc->dev, "can't SetAddress() from Configured State\n");
 | |
|  		return -EINVAL;
 | |
|  	}
 | |
|  
 | |
| @@ -595,7 +662,15 @@
 | |
|  			 * nothing is pending from application.
 | |
|  			 */
 | |
|  			reg = dwc3_readl(dwc->regs, DWC3_DCTL);
 | |
| -			reg |= (DWC3_DCTL_ACCEPTU1ENA | DWC3_DCTL_ACCEPTU2ENA);
 | |
| +			if (dwc->dis_initiate_u1)
 | |
| +				reg &= (~DWC3_DCTL_ACCEPTU1ENA);
 | |
| +			else
 | |
| +				reg |= DWC3_DCTL_ACCEPTU1ENA;
 | |
| +
 | |
| +			if (dwc->dis_initiate_u2)
 | |
| +				reg &= (~DWC3_DCTL_ACCEPTU2ENA);
 | |
| +			else
 | |
| +				reg |= DWC3_DCTL_ACCEPTU2ENA;
 | |
|  			dwc3_writel(dwc->regs, DWC3_DCTL, reg);
 | |
|  		}
 | |
|  		break;
 | |
| @@ -720,35 +795,27 @@
 | |
|  
 | |
|  	switch (ctrl->bRequest) {
 | |
|  	case USB_REQ_GET_STATUS:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "USB_REQ_GET_STATUS");
 | |
|  		ret = dwc3_ep0_handle_status(dwc, ctrl);
 | |
|  		break;
 | |
|  	case USB_REQ_CLEAR_FEATURE:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "USB_REQ_CLEAR_FEATURE");
 | |
|  		ret = dwc3_ep0_handle_feature(dwc, ctrl, 0);
 | |
|  		break;
 | |
|  	case USB_REQ_SET_FEATURE:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_FEATURE");
 | |
|  		ret = dwc3_ep0_handle_feature(dwc, ctrl, 1);
 | |
|  		break;
 | |
|  	case USB_REQ_SET_ADDRESS:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_ADDRESS");
 | |
|  		ret = dwc3_ep0_set_address(dwc, ctrl);
 | |
|  		break;
 | |
|  	case USB_REQ_SET_CONFIGURATION:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_CONFIGURATION");
 | |
|  		ret = dwc3_ep0_set_config(dwc, ctrl);
 | |
|  		break;
 | |
|  	case USB_REQ_SET_SEL:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_SEL");
 | |
|  		ret = dwc3_ep0_set_sel(dwc, ctrl);
 | |
|  		break;
 | |
|  	case USB_REQ_SET_ISOCH_DELAY:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_ISOCH_DELAY");
 | |
|  		ret = dwc3_ep0_set_isoch_delay(dwc, ctrl);
 | |
|  		break;
 | |
|  	default:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Forwarding to gadget driver");
 | |
|  		ret = dwc3_ep0_delegate_req(dwc, ctrl);
 | |
|  		break;
 | |
|  	}
 | |
| @@ -824,9 +891,6 @@
 | |
|  	status = DWC3_TRB_SIZE_TRBSTS(trb->size);
 | |
|  	if (status == DWC3_TRBSTS_SETUP_PENDING) {
 | |
|  		dwc->setup_packet_pending = true;
 | |
| -
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Setup Pending received");
 | |
| -
 | |
|  		if (r)
 | |
|  			dwc3_gadget_giveback(ep0, r, -ECONNRESET);
 | |
|  
 | |
| @@ -916,7 +980,7 @@
 | |
|  
 | |
|  		ret = dwc3_gadget_set_test_mode(dwc, dwc->test_mode_nr);
 | |
|  		if (ret < 0) {
 | |
| -			dwc3_trace(trace_dwc3_ep0, "Invalid Test #%d",
 | |
| +			dev_err(dwc->dev, "invalid test #%d\n",
 | |
|  					dwc->test_mode_nr);
 | |
|  			dwc3_ep0_stall_and_restart(dwc);
 | |
|  			return;
 | |
| @@ -924,10 +988,8 @@
 | |
|  	}
 | |
|  
 | |
|  	status = DWC3_TRB_SIZE_TRBSTS(trb->size);
 | |
| -	if (status == DWC3_TRBSTS_SETUP_PENDING) {
 | |
| +	if (status == DWC3_TRBSTS_SETUP_PENDING)
 | |
|  		dwc->setup_packet_pending = true;
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Setup Pending received");
 | |
| -	}
 | |
|  
 | |
|  	dwc->ep0state = EP0_SETUP_PHASE;
 | |
|  	dwc3_ep0_out_start(dwc);
 | |
| @@ -944,17 +1006,14 @@
 | |
|  
 | |
|  	switch (dwc->ep0state) {
 | |
|  	case EP0_SETUP_PHASE:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Setup Phase");
 | |
|  		dwc3_ep0_inspect_setup(dwc, event);
 | |
|  		break;
 | |
|  
 | |
|  	case EP0_DATA_PHASE:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Data Phase");
 | |
|  		dwc3_ep0_complete_data(dwc, event);
 | |
|  		break;
 | |
|  
 | |
|  	case EP0_STATUS_PHASE:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Status Phase");
 | |
|  		dwc3_ep0_complete_status(dwc, event);
 | |
|  		break;
 | |
|  	default:
 | |
| @@ -981,10 +1040,8 @@
 | |
|  
 | |
|  		ret = usb_gadget_map_request(&dwc->gadget, &req->request,
 | |
|  				dep->number);
 | |
| -		if (ret) {
 | |
| -			dwc3_trace(trace_dwc3_ep0, "failed to map request");
 | |
| +		if (ret)
 | |
|  			return;
 | |
| -		}
 | |
|  
 | |
|  		maxpacket = dep->endpoint.maxpacket;
 | |
|  
 | |
| @@ -1010,10 +1067,8 @@
 | |
|  	} else {
 | |
|  		ret = usb_gadget_map_request(&dwc->gadget, &req->request,
 | |
|  				dep->number);
 | |
| -		if (ret) {
 | |
| -			dwc3_trace(trace_dwc3_ep0, "failed to map request");
 | |
| +		if (ret)
 | |
|  			return;
 | |
| -		}
 | |
|  
 | |
|  		dwc3_ep0_prepare_one_trb(dwc, dep->number, req->request.dma,
 | |
|  				req->request.length, DWC3_TRBCTL_CONTROL_DATA,
 | |
| @@ -1073,8 +1128,6 @@
 | |
|  {
 | |
|  	switch (event->status) {
 | |
|  	case DEPEVT_STATUS_CONTROL_DATA:
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Control Data");
 | |
| -
 | |
|  		/*
 | |
|  		 * We already have a DATA transfer in the controller's cache,
 | |
|  		 * if we receive a XferNotReady(DATA) we will ignore it, unless
 | |
| @@ -1087,8 +1140,7 @@
 | |
|  		if (dwc->ep0_expect_in != event->endpoint_number) {
 | |
|  			struct dwc3_ep	*dep = dwc->eps[dwc->ep0_expect_in];
 | |
|  
 | |
| -			dwc3_trace(trace_dwc3_ep0,
 | |
| -					"Wrong direction for Data phase");
 | |
| +			dev_err(dwc->dev, "unexpected direction for Data Phase\n");
 | |
|  			dwc3_ep0_end_control_data(dwc, dep);
 | |
|  			dwc3_ep0_stall_and_restart(dwc);
 | |
|  			return;
 | |
| @@ -1100,13 +1152,10 @@
 | |
|  		if (dwc->ep0_next_event != DWC3_EP0_NRDY_STATUS)
 | |
|  			return;
 | |
|  
 | |
| -		dwc3_trace(trace_dwc3_ep0, "Control Status");
 | |
| -
 | |
|  		dwc->ep0state = EP0_STATUS_PHASE;
 | |
|  
 | |
|  		if (dwc->delayed_status) {
 | |
|  			WARN_ON_ONCE(event->endpoint_number != 1);
 | |
| -			dwc3_trace(trace_dwc3_ep0, "Delayed Status");
 | |
|  			return;
 | |
|  		}
 | |
|  
 | |
| @@ -1117,10 +1166,6 @@
 | |
|  void dwc3_ep0_interrupt(struct dwc3 *dwc,
 | |
|  		const struct dwc3_event_depevt *event)
 | |
|  {
 | |
| -	dwc3_trace(trace_dwc3_ep0, "%s: state '%s'",
 | |
| -			dwc3_ep_event_string(event),
 | |
| -			dwc3_ep0_state_string(dwc->ep0state));
 | |
| -
 | |
|  	switch (event->endpoint_event) {
 | |
|  	case DWC3_DEPEVT_XFERCOMPLETE:
 | |
|  		dwc3_ep0_xfer_complete(dwc, event);
 |