diff mbox series

[v4,1/3] dt-bindings: usb: mtk-xhci: add a property for Gen1 isoc-in transfer issue

Message ID 20231227060316.8539-1-chunfeng.yun@mediatek.com
State Superseded
Headers show
Series [v4,1/3] dt-bindings: usb: mtk-xhci: add a property for Gen1 isoc-in transfer issue | expand

Commit Message

Chunfeng Yun (云春峰) Dec. 27, 2023, 6:03 a.m. UTC
For Gen1 isoc-in endpoint on controller before about SSUSB IPM v1.6.0, it
still send out unexpected ACK after receiving a short packet in burst
transfer, this will cause an exception on connected device, specially for
a 4k camera.
Add a quirk property "rx-fifo-depth" to work around this hardware issue,
prefer to use 3k bytes;
The side-effect is that may cause performance drop about 10%, including
bulk transfer.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v4: change rx-fifo size in bytes
v3: add fifo depth unit, change the value range from 0-3 to 1-4
v2: change 'mediatek,rxfifo-depth' to 'rx-fifo-depth'
---
 .../devicetree/bindings/usb/mediatek,mtk-xhci.yaml    | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Sergey Shtylyov Dec. 27, 2023, 9:19 a.m. UTC | #1
On 12/27/23 9:03 AM, Chunfeng Yun wrote:

> For Gen1 isoc-in endpoint on controller before about SSUSB IPM v1.6.0, it
> still send out unexpected ACK after receiving a short packet in burst
> transfer, this will cause an exception on connected device, specially for
> a 4k camera.
> Add a quirk property "rx-fifo-depth" to work around this hardware issue,
> prefer to use 3k bytes;
> The side-effect is that may cause performance drop about 10%, including

   That it may cause?

> bulk transfer.
> 
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> ---
> v4: change rx-fifo size in bytes
> v3: add fifo depth unit, change the value range from 0-3 to 1-4
> v2: change 'mediatek,rxfifo-depth' to 'rx-fifo-depth'
> ---
>  .../devicetree/bindings/usb/mediatek,mtk-xhci.yaml    | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> index e9644e333d78..9f621f2209df 100644
> --- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> @@ -124,6 +124,17 @@ properties:
>        defined in the xHCI spec on MTK's controller.
>      default: 5000
>  
> +  rx-fifo-depth:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      It is a quirk used to work around Gen1 isoc-in endpoint transfer issue
> +      that still send out unexpected ACK after device finish the burst transfer

   Finishes.

> +      with a short packet and cause an exception, specially on a 4K camera
> +      device, it happens on controller before about IPM v1.6.0; the side-effect
> +      is that may cause performance drop about 10%, include bulk transfer,

   That it may cause? And including?

[...]

MBR, Sergey
Mathias Nyman Dec. 28, 2023, 10:44 a.m. UTC | #2
Hi

On 27.12.2023 8.03, Chunfeng Yun wrote:
> For Gen1 isoc-in endpoint on controller before about SSUSB IPM v1.6.0, it
> still send out unexpected ACK after receiving a short packet in burst
> transfer, this will cause an exception on connected device, specially for
> a 4k camera.
> Add a quirk property "rx-fifo-depth" to work around this hardware issue,
> prefer to use 3k bytes;
> The side-effect is that may cause performance drop about 10%, including
> bulk transfer.

Is it be possible to detect those Mediatek xHC versions that need this
workaround in the xhci-mtk driver directly?

This way we could avoid passing a new "rx-fifo-depth" property to it.

Thanks
Mathias
AngeloGioacchino Del Regno Jan. 2, 2024, 9:31 a.m. UTC | #3
Il 27/12/23 07:03, Chunfeng Yun ha scritto:
> For Gen1 isoc-in endpoint on controller before about SSUSB IPM v1.6.0, it
> still send out unexpected ACK after receiving a short packet in burst
> transfer, this will cause an exception on connected device, specially for
> a 4k camera.
> Add a quirk property "rx-fifo-depth" to work around this hardware issue,
> prefer to use 3k bytes;
> The side-effect is that may cause performance drop about 10%, including
> bulk transfer.
> 
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Krzysztof Kozlowski Jan. 2, 2024, 9:03 p.m. UTC | #4
On 27/12/2023 07:03, Chunfeng Yun wrote:
> For Gen1 isoc-in endpoint on controller before about SSUSB IPM v1.6.0, it
> still send out unexpected ACK after receiving a short packet in burst
> transfer, this will cause an exception on connected device, specially for
> a 4k camera.
> Add a quirk property "rx-fifo-depth" to work around this hardware issue,
> prefer to use 3k bytes;
> The side-effect is that may cause performance drop about 10%, including
> bulk transfer.
> 
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> ---
> v4: change rx-fifo size in bytes

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Best regards,
Krzysztof
Chunfeng Yun (云春峰) Jan. 4, 2024, 6:12 a.m. UTC | #5
On Thu, 2023-12-28 at 12:44 +0200, Mathias Nyman wrote:
>  	 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>  Hi
> 
> On 27.12.2023 8.03, Chunfeng Yun wrote:
> > For Gen1 isoc-in endpoint on controller before about SSUSB IPM
> v1.6.0, it
> > still send out unexpected ACK after receiving a short packet in
> burst
> > transfer, this will cause an exception on connected device,
> specially for
> > a 4k camera.
> > Add a quirk property "rx-fifo-depth" to work around this hardware
> issue,
> > prefer to use 3k bytes;
> > The side-effect is that may cause performance drop about 10%,
> including
> > bulk transfer.
> 
> Is it be possible to detect those Mediatek xHC versions that need
> this
> workaround in the xhci-mtk driver directly?
the version info is saved in IPPC register, when support dual-role
mode, xhci-mtk driver can't access these register which are controlled
by dual-role controller mtu3 driver;
another reason is that some cases, e.g. connected a on-board fixed mass
storage device, do not use 4K camera, it's better to use the default
rx-fifo-depth;

Thanks
> 
> This way we could avoid passing a new "rx-fifo-depth" property to it.
> 
> Thanks
> Mathias
> 
>
Chunfeng Yun (云春峰) Jan. 4, 2024, 7:24 a.m. UTC | #6
On Wed, 2023-12-27 at 12:19 +0300, Sergey Shtylyov wrote:
>  	 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>  On 12/27/23 9:03 AM, Chunfeng Yun wrote:
> 
> > For Gen1 isoc-in endpoint on controller before about SSUSB IPM
> v1.6.0, it
> > still send out unexpected ACK after receiving a short packet in
> burst
> > transfer, this will cause an exception on connected device,
> specially for
> > a 4k camera.
> > Add a quirk property "rx-fifo-depth" to work around this hardware
> issue,
> > prefer to use 3k bytes;
> > The side-effect is that may cause performance drop about 10%,
> including
> 
>    That it may cause?
> 
> > bulk transfer.
> > 
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> > v4: change rx-fifo size in bytes
> > v3: add fifo depth unit, change the value range from 0-3 to 1-4
> > v2: change 'mediatek,rxfifo-depth' to 'rx-fifo-depth'
> > ---
> >  .../devicetree/bindings/usb/mediatek,mtk-xhci.yaml    | 11
> +++++++++++
> >  1 file changed, 11 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-
> xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-
> xhci.yaml
> > index e9644e333d78..9f621f2209df 100644
> > --- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> > +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> > @@ -124,6 +124,17 @@ properties:
> >        defined in the xHCI spec on MTK's controller.
> >      default: 5000
> >  
> > +  rx-fifo-depth:
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    description:
> > +      It is a quirk used to work around Gen1 isoc-in endpoint
> transfer issue
> > +      that still send out unexpected ACK after device finish the
> burst transfer
> 
>    Finishes.
> 
> > +      with a short packet and cause an exception, specially on a
> 4K camera
> > +      device, it happens on controller before about IPM v1.6.0;
> the side-effect
> > +      is that may cause performance drop about 10%, include bulk
> transfer,
> 
>    That it may cause? And including?
Ok, I'll fix these typos, 

Reply again, previous one contains HTML part;

Thanks
> 


> [...]
> 
> MBR, Sergey
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
index e9644e333d78..9f621f2209df 100644
--- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
+++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
@@ -124,6 +124,17 @@  properties:
       defined in the xHCI spec on MTK's controller.
     default: 5000
 
+  rx-fifo-depth:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      It is a quirk used to work around Gen1 isoc-in endpoint transfer issue
+      that still send out unexpected ACK after device finish the burst transfer
+      with a short packet and cause an exception, specially on a 4K camera
+      device, it happens on controller before about IPM v1.6.0; the side-effect
+      is that may cause performance drop about 10%, include bulk transfer,
+      prefer to use 3k here. The size is in bytes.
+    enum: [1024, 2048, 3072, 4096]
+
   # the following properties are only used for case 1
   wakeup-source:
     description: enable USB remote wakeup, see power/wakeup-source.txt