Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1237304

Re: [PATCH v9 4/5] xhci: mediatek: support MTK xHCI host controller

From Daniel Thompson <daniel.thompson@linaro.org>
Newsgroups linux.kernel
Subject Re: [PATCH v9 4/5] xhci: mediatek: support MTK xHCI host controller
Date 2015-10-01 13:50 +0200
Message-ID <qeKx4-2WG-7@gated-at.bofh.it> (permalink)
References <qdTsJ-2of-1@gated-at.bofh.it> <qdTsJ-2of-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On 29/09/15 04:01, Chunfeng Yun wrote:
> There some vendor quirks for MTK xhci host controller:
> 1. It defines some extra SW scheduling parameters for HW
>    to minimize the scheduling effort for synchronous and
>    interrupt endpoints. The parameters are put into reseved
>    DWs of slot context and endpoint context.
> 2. Its IMODI unit for Interrupter Moderation register is
>    8 times as much as that defined in xHCI spec.
> 3. Its TDS in  Normal TRB defines a number of packets that
>    remains to be transferred for a TD after processing all
>    Max packets in all previous TRBs.
>
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>

I've done some basic soak tests, both with a directly attached USB3 HDD 
and, given the extra code to manage isochronous xfer, also with a hub, 
disc and two audio interfaces.

Tested-by: Daniel Thompson <daniel.thompson@linaro.org>


> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
> index 57f40a1..243f696 100644
> --- a/drivers/usb/host/xhci-ring.c
> +++ b/drivers/usb/host/xhci-ring.c
> @@ -68,6 +68,7 @@
>   #include <linux/slab.h>
>   #include "xhci.h"
>   #include "xhci-trace.h"
> +#include "xhci-mtk.h"
>
>   /*
>    * Returns zero if the TRB isn't in this segment, otherwise it returns the DMA
> @@ -3044,18 +3045,27 @@ static u32 xhci_td_remainder(struct xhci_hcd *xhci, int transferred,
>   			      struct urb *urb, unsigned int num_trbs_left)
>   {
>   	u32 maxp, total_packet_count;
> +	u32 skip_current_trb = 0;

A bit of a nitpick but why do we need skip_current_trb? Testing 
(xhci->quirks & XHCI_MTK_HOST) twice would make what the code does, and 
why, more obvious.

Anyhow with that looked at, and the caveat that I'm not much of USB 
expert, you're welcome to add my Reviewed-by: to v10.

>
> -	if (xhci->hci_version < 0x100)
> -		return ((td_total_len - transferred) >> 10);
> -
> -	maxp = GET_MAX_PACKET(usb_endpoint_maxp(&urb->ep->desc));
> -	total_packet_count = DIV_ROUND_UP(td_total_len, maxp);
> +	if (xhci->hci_version < 0x100) {
> +		/* for MTK xHCI, TD size doesn't include this TRB */
> +		if (xhci->quirks & XHCI_MTK_HOST)
> +			skip_current_trb = 1;
> +		else
> +			return ((td_total_len - transferred) >> 10);
> +	}
>
>   	/* One TRB with a zero-length data packet. */
>   	if (num_trbs_left == 0 || (transferred == 0 && trb_buff_len == 0) ||
>   	    trb_buff_len == td_total_len)
>   		return 0;
>
> +	if (skip_current_trb)
> +		trb_buff_len = 0;
> +
> +	maxp = GET_MAX_PACKET(usb_endpoint_maxp(&urb->ep->desc));
> +	total_packet_count = DIV_ROUND_UP(td_total_len, maxp);
> +
>   	/* Queueing functions don't count the current TRB into transferred */
>   	return (total_packet_count - ((transferred + trb_buff_len) / maxp));
>   }


Daniel.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH v9 0/5] Mediatek xHCI support Chunfeng Yun <chunfeng.yun@mediatek.com> - 2015-09-29 05:10 +0200
  [PATCH v9 5/5] arm64: dts: mediatek: add xHCI & usb phy for mt8173 Chunfeng Yun <chunfeng.yun@mediatek.com> - 2015-09-29 05:10 +0200
  [PATCH v9 1/5] dt-bindings: Add usb3.0 phy binding for MT65xx SoCs Chunfeng Yun <chunfeng.yun@mediatek.com> - 2015-09-29 05:10 +0200
    Re: [PATCH v9 1/5] dt-bindings: Add usb3.0 phy binding for MT65xx  SoCs Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> - 2015-09-29 16:50 +0200
  [PATCH v9 3/5] phy: add usb3.0 phy driver for mt65xx SoCs Chunfeng Yun <chunfeng.yun@mediatek.com> - 2015-09-29 05:10 +0200
  [PATCH v9 2/5] dt-bindings: Add a binding for Mediatek xHCI host controller Chunfeng Yun <chunfeng.yun@mediatek.com> - 2015-09-29 05:10 +0200
    Re: [PATCH v9 2/5] dt-bindings: Add a binding for Mediatek xHCI host  controller Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> - 2015-09-29 16:50 +0200
  Re: [PATCH v9 4/5] xhci: mediatek: support MTK xHCI host controller Daniel Thompson <daniel.thompson@linaro.org> - 2015-10-01 13:50 +0200

csiph-web