[U-Boot] [PATCH 13/14] usb: xhci: Set 'Error Count' to 0 for isoch endpoints

Stefan Roese sr at denx.de
Fri Sep 22 05:12:24 UTC 2017


On 18.09.2017 15:40, Bin Meng wrote:
> Per xHCI spec, 'Error Count' should be set to 0 for isoch endpoints.
> 
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> ---
> 
>   drivers/usb/host/xhci.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index dfb188d..93737b0 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -511,6 +511,7 @@ static int xhci_set_configuration(struct usb_device *udev)
>   	unsigned int mult;
>   	unsigned int max_burst;
>   	unsigned int avg_trb_len;
> +	unsigned int err_count = 0;
>   
>   	out_ctx = virt_dev->out_ctx;
>   	in_ctx = virt_dev->in_ctx;
> @@ -588,9 +589,12 @@ static int xhci_set_configuration(struct usb_device *udev)
>   			cpu_to_le32(MAX_PACKET
>   			(get_unaligned(&endpt_desc->wMaxPacketSize)));
>   
> +		/* Allow 3 retries for everything but isoc, set CErr = 3 */
> +		if (!usb_endpoint_xfer_isoc(endpt_desc))
> +			err_count = 3;
>   		ep_ctx[ep_index]->ep_info2 |=
>   			cpu_to_le32(MAX_BURST(max_burst) |
> -			((3 & ERROR_COUNT_MASK) << ERROR_COUNT_SHIFT));
> +			ERROR_COUNT(err_count));
>   
>   		trb_64 = (uintptr_t)
>   				virt_dev->eps[ep_index].ring->enqueue;
> 

Reviewed-by: Stefan Roese <sr at denx.de>
Tested-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan


More information about the U-Boot mailing list