diff mbox series

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

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

Commit Message

Chunfeng Yun (云春峰) Dec. 20, 2023, 2:58 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>
---
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   | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Krzysztof Kozlowski Dec. 20, 2023, 7:38 a.m. UTC | #1
On 20/12/2023 03:58, 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>
> ---
> 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   | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> index e9644e333d78..9478b7031796 100644
> --- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> @@ -124,6 +124,18 @@ 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 3 here. The unit is 1K bytes.

NAK. Read comments on previous submission.

Best regards,
Krzysztof
AngeloGioacchino Del Regno Dec. 20, 2023, 10:40 a.m. UTC | #2
Il 20/12/23 08:38, Krzysztof Kozlowski ha scritto:
> On 20/12/2023 03:58, 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>
>> ---
>> 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   | 12 ++++++++++++
>>   1 file changed, 12 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
>> index e9644e333d78..9478b7031796 100644
>> --- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
>> +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
>> @@ -124,6 +124,18 @@ 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 3 here. The unit is 1K bytes.
> 
> NAK. Read comments on previous submission.
> 
> Best regards,
> Krzysztof
> 

Chunfeng, I think the discussion was not clear for you, so I will try to give
you a different explanation: this should be expressed in bytes, so 1000, or 1024,
2048, 4096, etc, and not 1/2/3/4/5/n.

The driver shall then validate and map your bytes number to hardware register
value and subsequently write to the registers.

Cheers,
Angleo
Chunfeng Yun (云春峰) Dec. 27, 2023, 2:03 a.m. UTC | #3
On Wed, 2023-12-20 at 08:38 +0100, Krzysztof Kozlowski wrote:
>  	 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>  On 20/12/2023 03:58, 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>
> > ---
> > 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   | 12
> ++++++++++++
> >  1 file changed, 12 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-
> xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-
> xhci.yaml
> > index e9644e333d78..9478b7031796 100644
> > --- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> > +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> > @@ -124,6 +124,18 @@ 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 3 here. The unit is 1K bytes.
> 
> NAK. Read comments on previous submission.
Ok, will do it today

Thanks a lot

> 
> Best regards,
> Krzysztof
>
Chunfeng Yun (云春峰) Dec. 27, 2023, 2:08 a.m. UTC | #4
On Wed, 2023-12-20 at 11:40 +0100, AngeloGioacchino Del Regno wrote:
> Il 20/12/23 08:38, Krzysztof Kozlowski ha scritto:
> > On 20/12/2023 03:58, 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>
> > > ---
> > > 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   | 12
> > > ++++++++++++
> > >   1 file changed, 12 insertions(+)
> > > 
> > > diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-
> > > xhci.yaml b/Documentation/devicetree/bindings/usb/mediatek,mtk-
> > > xhci.yaml
> > > index e9644e333d78..9478b7031796 100644
> > > --- a/Documentation/devicetree/bindings/usb/mediatek,mtk-
> > > xhci.yaml
> > > +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-
> > > xhci.yaml
> > > @@ -124,6 +124,18 @@ 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 3 here. The unit is 1K bytes.
> > 
> > NAK. Read comments on previous submission.
> > 
> > Best regards,
> > Krzysztof
> > 
> 
> Chunfeng, I think the discussion was not clear for you, so I will try
> to give
> you a different explanation: this should be expressed in bytes, so
> 1000, or 1024,
> 2048, 4096, etc, and not 1/2/3/4/5/n.
> 
> The driver shall then validate and map your bytes number to hardware
> register
> value and subsequently write to the registers.
Got it, I left out Krzysztof's comments when sent v3 series,

Thanks a lot

> 
> Cheers,
> Angleo
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..9478b7031796 100644
--- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
+++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
@@ -124,6 +124,18 @@  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 3 here. The unit is 1K bytes.
+    minimum: 1
+    maximum: 4
+
   # the following properties are only used for case 1
   wakeup-source:
     description: enable USB remote wakeup, see power/wakeup-source.txt