Re: [RFC/PATCH 4/4] usb: Introduce DesignWare USB3 DRD Driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Felipe Balbi <balbi@...> writes:

< big snip >

> +static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
> +		const struct usb_endpoint_descriptor *desc)
> +{
> +	struct dwc3		*dwc = dep->dwc;
> +	u32			reg;
> +	int			ret = -ENOMEM;
> +
> +	if (!(dep->flags & DWC3_EP_ENABLED)) {
> +		ret = dwc3_gadget_start_config(dwc, dep);
> +		if (ret)
> +			goto err0;
> +	}
> +
> +	ret = dwc3_gadget_set_ep_config(dwc, dep, desc);
> +	if (ret)
> +		return ret;

Hi Felipe,

If I'm reading this right, you call dwc3_gadget_start_config() for every
endpoint that gets enabled. Is that correct? If so, this is wrong. The
DEPSTARTCFG should only be done once before configuring _all_ of the non-EP0
endpoints. This will probably not matter when using the virtual platform,
since I don't think they implement the model to this level of detail, but in
the real hardware it will cause problems.

See section 9.1.5 "Initialization on SetConfiguration or SetInterface Request"
in the databook for the correct way to do this.

-- 
Paul


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux