RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Yinbo Zhu


-Original Message-
From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com] 
Sent: Monday, December 11, 2017 4:52 PM
To: Yinbo Zhu <yinbo@nxp.com>; Greg Kroah-Hartman 
<gre...@linuxfoundation.org>
Cc: Mathias Nyman <mathias.ny...@intel.com>; open list:DESIGNWARE USB3 DRD IP 
DRIVER <linux-...@vger.kernel.org>; open list:DESIGNWARE USB3 DRD IP DRIVER 
<linux-o...@vger.kernel.org>; open list <linux-kernel@vger.kernel.org>; Xiaobo 
Xie <xiaobo@nxp.com>; Jerry Huang <jerry.hu...@nxp.com>; Ran Wang 
<ran.wan...@nxp.com>
Subject: RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611


>>Hi,

>>(please break your lines at 80-characters)

>>Yinbo Zhu <yinbo@nxp.com> writes:
I had check it. Every line is less than 80-characters.
>>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
>>> 5cb3f6795b0b..071e7cea8cbb 100644
>>> --- a/drivers/usb/dwc3/core.c
>>> +++ b/drivers/usb/dwc3/core.c
>>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3
>>> *dwc)
>>>  
>>> dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>> "snps,quirk_reverse_in_out");
>
>>This was generated on vendor tree. This quirk doesn't exist in dwc3. 
>>Also,
>  >update your tree and review MAINTAINERS file. It has been almost 2 
> years since I left TI :-)
>
>>--
>>Balbi
>
> Hi Balbi,
>
> The quirk that I had add it in dwc3. Your meaning is that I can't use 
> quirk to enable or disable the erratum, isn't it? The tree is 
> git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git, I had 
> updated it.

>-*- mode: grep; default-directory: "~/workspace/linux/" -*- Grep started at 
>Mon Dec 11 10:50:47

>git --no-pager grep --color -nH -e quirk_reverse_in_out

>Grep finished with no matches found at Mon Dec 11 10:50:48

>--
>balbi
Hi Balbi,

You can't find the quirk that it is normal. There's no one in the previous code.
 The quirk that I added to control the new erratum 
Please you note.

Thanks.
Yinbo.


RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Yinbo Zhu


-Original Message-
From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com] 
Sent: Monday, December 11, 2017 4:52 PM
To: Yinbo Zhu ; Greg Kroah-Hartman 

Cc: Mathias Nyman ; open list:DESIGNWARE USB3 DRD IP 
DRIVER ; open list:DESIGNWARE USB3 DRD IP DRIVER 
; open list ; Xiaobo 
Xie ; Jerry Huang ; Ran Wang 

Subject: RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611


>>Hi,

>>(please break your lines at 80-characters)

>>Yinbo Zhu  writes:
I had check it. Every line is less than 80-characters.
>>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
>>> 5cb3f6795b0b..071e7cea8cbb 100644
>>> --- a/drivers/usb/dwc3/core.c
>>> +++ b/drivers/usb/dwc3/core.c
>>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3
>>> *dwc)
>>>  
>>> dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>> "snps,quirk_reverse_in_out");
>
>>This was generated on vendor tree. This quirk doesn't exist in dwc3. 
>>Also,
>  >update your tree and review MAINTAINERS file. It has been almost 2 
> years since I left TI :-)
>
>>--
>>Balbi
>
> Hi Balbi,
>
> The quirk that I had add it in dwc3. Your meaning is that I can't use 
> quirk to enable or disable the erratum, isn't it? The tree is 
> git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git, I had 
> updated it.

>-*- mode: grep; default-directory: "~/workspace/linux/" -*- Grep started at 
>Mon Dec 11 10:50:47

>git --no-pager grep --color -nH -e quirk_reverse_in_out

>Grep finished with no matches found at Mon Dec 11 10:50:48

>--
>balbi
Hi Balbi,

You can't find the quirk that it is normal. There's no one in the previous code.
 The quirk that I added to control the new erratum 
Please you note.

Thanks.
Yinbo.


RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Felipe Balbi

Hi,

(please break your lines at 80-characters)

Yinbo Zhu  writes:
>>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
>>> 5cb3f6795b0b..071e7cea8cbb 100644
>>> --- a/drivers/usb/dwc3/core.c
>>> +++ b/drivers/usb/dwc3/core.c
>>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 
>>> *dwc)
>>>  
>>> dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>> "snps,quirk_reverse_in_out");
>
>>This was generated on vendor tree. This quirk doesn't exist in dwc3. Also,
>  >update your tree and review MAINTAINERS file. It has been almost 2 years 
> since I left TI :-)
>
>>--
>>Balbi
>
> Hi Balbi,
>
> The quirk that I had add it in dwc3. Your meaning is that I can't use
> quirk to enable or disable the erratum, isn't it? The tree is
> git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git, I had
> updated it.

-*- mode: grep; default-directory: "~/workspace/linux/" -*-
Grep started at Mon Dec 11 10:50:47

git --no-pager grep --color -nH -e quirk_reverse_in_out

Grep finished with no matches found at Mon Dec 11 10:50:48

-- 
balbi


signature.asc
Description: PGP signature


RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Felipe Balbi

Hi,

(please break your lines at 80-characters)

Yinbo Zhu  writes:
>>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
>>> 5cb3f6795b0b..071e7cea8cbb 100644
>>> --- a/drivers/usb/dwc3/core.c
>>> +++ b/drivers/usb/dwc3/core.c
>>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 
>>> *dwc)
>>>  
>>> dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>> "snps,quirk_reverse_in_out");
>
>>This was generated on vendor tree. This quirk doesn't exist in dwc3. Also,
>  >update your tree and review MAINTAINERS file. It has been almost 2 years 
> since I left TI :-)
>
>>--
>>Balbi
>
> Hi Balbi,
>
> The quirk that I had add it in dwc3. Your meaning is that I can't use
> quirk to enable or disable the erratum, isn't it? The tree is
> git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git, I had
> updated it.

-*- mode: grep; default-directory: "~/workspace/linux/" -*-
Grep started at Mon Dec 11 10:50:47

git --no-pager grep --color -nH -e quirk_reverse_in_out

Grep finished with no matches found at Mon Dec 11 10:50:48

-- 
balbi


signature.asc
Description: PGP signature


RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Yinbo Zhu


-Original Message-
From: Greg Kroah-Hartman [mailto:gre...@linuxfoundation.org] 
Sent: Friday, December 08, 2017 6:21 PM
To: Yinbo Zhu <yinbo@nxp.com>
Cc: Felipe Balbi <ba...@ti.com>; Mathias Nyman <mathias.ny...@intel.com>; open 
list:DESIGNWARE USB3 DRD IP DRIVER <linux-...@vger.kernel.org>; open 
list:DESIGNWARE USB3 DRD IP DRIVER <linux-o...@vger.kernel.org>; open list 
<linux-kernel@vger.kernel.org>; Xiaobo Xie <xiaobo@nxp.com>; Jerry Huang 
<jerry.hu...@nxp.com>; Ran Wang <ran.wan...@nxp.com>
Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> From: "yinbo.zhu" <yinbo@nxp.com>
> 
> Description: This is a occasional problem where the software

>No need for a "Description:" word.  That's just assumed here, right?

> issues an End Transfer command while a USB transfer is in progress, 
> resulting in the TxFIFO  being flushed when the lower layer is waiting 
> for data,causing the super speed (SS) transmit to get blocked.
> If the End Transfer command is issued on an IN endpoint to flush out 
> the pending transfers when the same IN endpoint is doing transfers on 
> the USB, then depending upon the timing of the End Transfer (and the 
> resulting internal FIFO flush),the lower layer (U3PTL/U3MAC) could get 
> stuck waiting for data indefinitely. This blocks the transmission path 
> on the SS, and no DP/ACK/ERDY/DEVNOTIF packets can be sent from the 
> device.
> Impact: If this issue happens and the transmission gets blocked, then 
> the USB host aborts and resets/re-enumerates the device.
> This unblocks the transmitt engine and the device functions normally.
> 
> Workaround: Software must wait for all existing TRBs to complete 
> before issuing End transfer command.
> 
> Configs Affected:
> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
> LX2160-2120-2080A-R1.

What are these Configs?  That doesn't seem to match up with anything that is in 
the kernel tree that I can see.

> 
> Signed-off-by: yinbo.zhu <yinbo@nxp.com>
> ---
>  drivers/usb/dwc3/core.c  |  3 +++
>  drivers/usb/dwc3/core.h  |  3 +++
>  drivers/usb/dwc3/host.c  |  3 +++
>  drivers/usb/host/xhci-plat.c |  4 
>  drivers/usb/host/xhci.c  | 24 ++--
>  drivers/usb/host/xhci.h  |  1 +
>  6 files changed, 32 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
> 5cb3f6795b0b..071e7cea8cbb 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 
> *dwc)
>  
>   dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>   "snps,quirk_reverse_in_out");
> + dwc->quirk_stop_transfer_in_block = device_property_read_bool(dev,
> + "snps,quirk_stop_transfer_in_block");

>Have you documented this new DT value somewhere?
I had add some description in drivers/usb/dwc3/core.h.
Is it okay?
"  + * @quirk_stop_transfer_in_block: prevent block transmission from being
   + *interrupted."
> +
>   dwc->needs_fifo_resize = of_property_read_bool(node, 
> "tx-fifo-resize");
>  
>   dwc->configure_gfladj =
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 
> 6c530cbedf49..b2425799ecb6 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -900,6 +900,8 @@ struct dwc3_scratchpad_array {
>   *   3   - Reserved
>   * @disable_devinit_u1u2_quirk: disable device-initiated U1/U2 request.
>   * @quirk_reverse_in_out: prevent tx fifo reverse the data direction.
> + * @quirk_stop_transfer_in_block: prevent block transmission from being
> + *interrupted.
>   * @imod_interval: set the interrupt moderation interval in 250ns
>   * increments or 0 to disable.
>   */
> @@ -1063,6 +1065,7 @@ struct dwc3 {
>   unsignedtx_de_emphasis:2;
>   unsigneddisable_devinit_u1u2_quirk:1;
>   unsignedquirk_reverse_in_out:1;
> + unsignedquirk_stop_transfer_in_block:1;
>  
>   u16 imod_interval;
>  };
> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c index 
> 2cd48633d3fa..a9ccbf1b9871 100644
> --- a/drivers/usb/dwc3/host.c
> +++ b/drivers/usb/dwc3/host.c
> @@ -110,6 +110,9 @@ int dwc3_host_init(struct dwc3 *dwc)
>   if (dwc->quirk_reverse_in_out)
>   props[prop_idx++].name = "qu

RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Yinbo Zhu


-Original Message-
From: Greg Kroah-Hartman [mailto:gre...@linuxfoundation.org] 
Sent: Friday, December 08, 2017 6:21 PM
To: Yinbo Zhu 
Cc: Felipe Balbi ; Mathias Nyman ; open 
list:DESIGNWARE USB3 DRD IP DRIVER ; open 
list:DESIGNWARE USB3 DRD IP DRIVER ; open list 
; Xiaobo Xie ; Jerry Huang 
; Ran Wang 
Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> From: "yinbo.zhu" 
> 
> Description: This is a occasional problem where the software

>No need for a "Description:" word.  That's just assumed here, right?

> issues an End Transfer command while a USB transfer is in progress, 
> resulting in the TxFIFO  being flushed when the lower layer is waiting 
> for data,causing the super speed (SS) transmit to get blocked.
> If the End Transfer command is issued on an IN endpoint to flush out 
> the pending transfers when the same IN endpoint is doing transfers on 
> the USB, then depending upon the timing of the End Transfer (and the 
> resulting internal FIFO flush),the lower layer (U3PTL/U3MAC) could get 
> stuck waiting for data indefinitely. This blocks the transmission path 
> on the SS, and no DP/ACK/ERDY/DEVNOTIF packets can be sent from the 
> device.
> Impact: If this issue happens and the transmission gets blocked, then 
> the USB host aborts and resets/re-enumerates the device.
> This unblocks the transmitt engine and the device functions normally.
> 
> Workaround: Software must wait for all existing TRBs to complete 
> before issuing End transfer command.
> 
> Configs Affected:
> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
> LX2160-2120-2080A-R1.

What are these Configs?  That doesn't seem to match up with anything that is in 
the kernel tree that I can see.

> 
> Signed-off-by: yinbo.zhu 
> ---
>  drivers/usb/dwc3/core.c  |  3 +++
>  drivers/usb/dwc3/core.h  |  3 +++
>  drivers/usb/dwc3/host.c  |  3 +++
>  drivers/usb/host/xhci-plat.c |  4 
>  drivers/usb/host/xhci.c  | 24 ++--
>  drivers/usb/host/xhci.h  |  1 +
>  6 files changed, 32 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
> 5cb3f6795b0b..071e7cea8cbb 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 
> *dwc)
>  
>   dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>   "snps,quirk_reverse_in_out");
> + dwc->quirk_stop_transfer_in_block = device_property_read_bool(dev,
> + "snps,quirk_stop_transfer_in_block");

>Have you documented this new DT value somewhere?
I had add some description in drivers/usb/dwc3/core.h.
Is it okay?
"  + * @quirk_stop_transfer_in_block: prevent block transmission from being
   + *interrupted."
> +
>   dwc->needs_fifo_resize = of_property_read_bool(node, 
> "tx-fifo-resize");
>  
>   dwc->configure_gfladj =
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 
> 6c530cbedf49..b2425799ecb6 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -900,6 +900,8 @@ struct dwc3_scratchpad_array {
>   *   3   - Reserved
>   * @disable_devinit_u1u2_quirk: disable device-initiated U1/U2 request.
>   * @quirk_reverse_in_out: prevent tx fifo reverse the data direction.
> + * @quirk_stop_transfer_in_block: prevent block transmission from being
> + *interrupted.
>   * @imod_interval: set the interrupt moderation interval in 250ns
>   * increments or 0 to disable.
>   */
> @@ -1063,6 +1065,7 @@ struct dwc3 {
>   unsignedtx_de_emphasis:2;
>   unsigneddisable_devinit_u1u2_quirk:1;
>   unsignedquirk_reverse_in_out:1;
> + unsignedquirk_stop_transfer_in_block:1;
>  
>   u16 imod_interval;
>  };
> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c index 
> 2cd48633d3fa..a9ccbf1b9871 100644
> --- a/drivers/usb/dwc3/host.c
> +++ b/drivers/usb/dwc3/host.c
> @@ -110,6 +110,9 @@ int dwc3_host_init(struct dwc3 *dwc)
>   if (dwc->quirk_reverse_in_out)
>   props[prop_idx++].name = "quirk-reverse-in-out";
>  
> + if (dwc->quirk_stop_transfer_in_block)
> + props[prop_idx++].name = "quirk-stop-transfer-in-block";
> +
>   if (dwc->usb3_lpm_capable)
>   props[prop_idx++].name = "usb3-lpm-capable";
>

RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Yinbo Zhu


-Original Message-
From: Greg Kroah-Hartman [mailto:gre...@linuxfoundation.org] 
Sent: Monday, December 11, 2017 3:35 PM
To: Yinbo Zhu <yinbo@nxp.com>
Cc: Felipe Balbi <felipe.ba...@linux.intel.com>; Mathias Nyman 
<mathias.ny...@intel.com>; open list:DESIGNWARE USB3 DRD IP DRIVER 
<linux-...@vger.kernel.org>; open list:DESIGNWARE USB3 DRD IP DRIVER 
<linux-o...@vger.kernel.org>; open list <linux-kernel@vger.kernel.org>; Xiaobo 
Xie <xiaobo@nxp.com>; Jerry Huang <jerry.hu...@nxp.com>; Ran Wang 
<ran.wan...@nxp.com>
Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

On Mon, Dec 11, 2017 at 03:15:37AM +, Yinbo Zhu wrote:
> 
> 
> -Original Message-
> From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com]
> Sent: Friday, December 08, 2017 6:44 PM
> To: Greg Kroah-Hartman <gre...@linuxfoundation.org>; Yinbo Zhu 
> <yinbo@nxp.com>
> Cc: Mathias Nyman <mathias.ny...@intel.com>; open list:DESIGNWARE USB3 
> DRD IP DRIVER <linux-...@vger.kernel.org>; open list:DESIGNWARE USB3 
> DRD IP DRIVER <linux-o...@vger.kernel.org>; open list 
> <linux-kernel@vger.kernel.org>; Xiaobo Xie <xiaobo....@nxp.com>; Jerry 
> Huang <jerry.hu...@nxp.com>; Ran Wang <ran.wan...@nxp.com>
> Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum 
> A-009611
> 
> 
> >Hi,
> 
> >Greg Kroah-Hartman <gre...@linuxfoundation.org> writes:
> > On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> >> From: "yinbo.zhu" <yinbo@nxp.com>
> >> 
> >> Description: This is a occasional problem where the software
> >
> > No need for a "Description:" word.  That's just assumed here, right?
> 
> I will remove "Description:" thanks.
> >> issues an End Transfer command while a USB transfer is in progress, 
> >> resulting in the TxFIFO  being flushed when the lower layer is 
> >> waiting for data,causing the super speed (SS) transmit to get blocked.
> >> If the End Transfer command is issued on an IN endpoint to flush 
> >> out the pending transfers when the same IN endpoint is doing 
> >> transfers on the USB, then depending upon the timing of the End 
> >> Transfer (and the resulting internal FIFO flush),the lower layer 
> >> (U3PTL/U3MAC) could get stuck waiting for data indefinitely. This 
> >> blocks the transmission path on the SS, and no DP/ACK/ERDY/DEVNOTIF 
> >> packets can be sent from the device.
> >> Impact: If this issue happens and the transmission gets blocked, 
> >> then the USB host aborts and resets/re-enumerates the device.
> >> This unblocks the transmitt engine and the device functions normally.
> >> 
> >> Workaround: Software must wait for all existing TRBs to complete 
> >> before issuing End transfer command.
> >> 
> >> Configs Affected:
> >> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
> >> LX2160-2120-2080A-R1.
> >
> > What are these Configs?  That doesn't seem to match up with anything 
> > that is in the kernel tree that I can see.
> 
> These configs is soc information, I don't enable it on these platform dts.
> Although the erratum issue can't be reproduced.  

>I do not understand what this means, please explain it a bit better.

>thanks,

>greg k-h

Maybe I have a problem with your words, Your meaning is that you want to ask me 
why I didn't add an attribute in the device tree to match kernel for every 
platform, right?


RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-11 Thread Yinbo Zhu


-Original Message-
From: Greg Kroah-Hartman [mailto:gre...@linuxfoundation.org] 
Sent: Monday, December 11, 2017 3:35 PM
To: Yinbo Zhu 
Cc: Felipe Balbi ; Mathias Nyman 
; open list:DESIGNWARE USB3 DRD IP DRIVER 
; open list:DESIGNWARE USB3 DRD IP DRIVER 
; open list ; Xiaobo 
Xie ; Jerry Huang ; Ran Wang 

Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

On Mon, Dec 11, 2017 at 03:15:37AM +, Yinbo Zhu wrote:
> 
> 
> -Original Message-
> From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com]
> Sent: Friday, December 08, 2017 6:44 PM
> To: Greg Kroah-Hartman ; Yinbo Zhu 
> 
> Cc: Mathias Nyman ; open list:DESIGNWARE USB3 
> DRD IP DRIVER ; open list:DESIGNWARE USB3 
> DRD IP DRIVER ; open list 
> ; Xiaobo Xie ; Jerry 
> Huang ; Ran Wang 
> Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum 
> A-009611
> 
> 
> >Hi,
> 
> >Greg Kroah-Hartman  writes:
> > On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> >> From: "yinbo.zhu" 
> >> 
> >> Description: This is a occasional problem where the software
> >
> > No need for a "Description:" word.  That's just assumed here, right?
> 
> I will remove "Description:" thanks.
> >> issues an End Transfer command while a USB transfer is in progress, 
> >> resulting in the TxFIFO  being flushed when the lower layer is 
> >> waiting for data,causing the super speed (SS) transmit to get blocked.
> >> If the End Transfer command is issued on an IN endpoint to flush 
> >> out the pending transfers when the same IN endpoint is doing 
> >> transfers on the USB, then depending upon the timing of the End 
> >> Transfer (and the resulting internal FIFO flush),the lower layer 
> >> (U3PTL/U3MAC) could get stuck waiting for data indefinitely. This 
> >> blocks the transmission path on the SS, and no DP/ACK/ERDY/DEVNOTIF 
> >> packets can be sent from the device.
> >> Impact: If this issue happens and the transmission gets blocked, 
> >> then the USB host aborts and resets/re-enumerates the device.
> >> This unblocks the transmitt engine and the device functions normally.
> >> 
> >> Workaround: Software must wait for all existing TRBs to complete 
> >> before issuing End transfer command.
> >> 
> >> Configs Affected:
> >> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
> >> LX2160-2120-2080A-R1.
> >
> > What are these Configs?  That doesn't seem to match up with anything 
> > that is in the kernel tree that I can see.
> 
> These configs is soc information, I don't enable it on these platform dts.
> Although the erratum issue can't be reproduced.  

>I do not understand what this means, please explain it a bit better.

>thanks,

>greg k-h

Maybe I have a problem with your words, Your meaning is that you want to ask me 
why I didn't add an attribute in the device tree to match kernel for every 
platform, right?


Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-10 Thread Greg Kroah-Hartman
On Mon, Dec 11, 2017 at 03:15:37AM +, Yinbo Zhu wrote:
> 
> 
> -Original Message-
> From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com] 
> Sent: Friday, December 08, 2017 6:44 PM
> To: Greg Kroah-Hartman <gre...@linuxfoundation.org>; Yinbo Zhu 
> <yinbo@nxp.com>
> Cc: Mathias Nyman <mathias.ny...@intel.com>; open list:DESIGNWARE USB3 DRD IP 
> DRIVER <linux-...@vger.kernel.org>; open list:DESIGNWARE USB3 DRD IP DRIVER 
> <linux-o...@vger.kernel.org>; open list <linux-kernel@vger.kernel.org>; 
> Xiaobo Xie <xiaobo@nxp.com>; Jerry Huang <jerry.hu...@nxp.com>; Ran Wang 
> <ran.wan...@nxp.com>
> Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611
> 
> 
> >Hi,
> 
> >Greg Kroah-Hartman <gre...@linuxfoundation.org> writes:
> > On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> >> From: "yinbo.zhu" <yinbo@nxp.com>
> >> 
> >> Description: This is a occasional problem where the software
> >
> > No need for a "Description:" word.  That's just assumed here, right?
> 
> I will remove "Description:" thanks.
> >> issues an End Transfer command while a USB transfer is in progress, 
> >> resulting in the TxFIFO  being flushed when the lower layer is 
> >> waiting for data,causing the super speed (SS) transmit to get blocked.
> >> If the End Transfer command is issued on an IN endpoint to flush out 
> >> the pending transfers when the same IN endpoint is doing transfers on 
> >> the USB, then depending upon the timing of the End Transfer (and the 
> >> resulting internal FIFO flush),the lower layer (U3PTL/U3MAC) could 
> >> get stuck waiting for data indefinitely. This blocks the transmission 
> >> path on the SS, and no DP/ACK/ERDY/DEVNOTIF packets can be sent from 
> >> the device.
> >> Impact: If this issue happens and the transmission gets blocked, then 
> >> the USB host aborts and resets/re-enumerates the device.
> >> This unblocks the transmitt engine and the device functions normally.
> >> 
> >> Workaround: Software must wait for all existing TRBs to complete 
> >> before issuing End transfer command.
> >> 
> >> Configs Affected:
> >> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
> >> LX2160-2120-2080A-R1.
> >
> > What are these Configs?  That doesn't seem to match up with anything 
> > that is in the kernel tree that I can see.
> 
> These configs is soc information, I don't enable it on these platform dts.
> Although the erratum issue can't be reproduced.  

I do not understand what this means, please explain it a bit better.

thanks,

greg k-h


Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-10 Thread Greg Kroah-Hartman
On Mon, Dec 11, 2017 at 03:15:37AM +, Yinbo Zhu wrote:
> 
> 
> -Original Message-
> From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com] 
> Sent: Friday, December 08, 2017 6:44 PM
> To: Greg Kroah-Hartman ; Yinbo Zhu 
> 
> Cc: Mathias Nyman ; open list:DESIGNWARE USB3 DRD IP 
> DRIVER ; open list:DESIGNWARE USB3 DRD IP DRIVER 
> ; open list ; 
> Xiaobo Xie ; Jerry Huang ; Ran Wang 
> 
> Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611
> 
> 
> >Hi,
> 
> >Greg Kroah-Hartman  writes:
> > On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> >> From: "yinbo.zhu" 
> >> 
> >> Description: This is a occasional problem where the software
> >
> > No need for a "Description:" word.  That's just assumed here, right?
> 
> I will remove "Description:" thanks.
> >> issues an End Transfer command while a USB transfer is in progress, 
> >> resulting in the TxFIFO  being flushed when the lower layer is 
> >> waiting for data,causing the super speed (SS) transmit to get blocked.
> >> If the End Transfer command is issued on an IN endpoint to flush out 
> >> the pending transfers when the same IN endpoint is doing transfers on 
> >> the USB, then depending upon the timing of the End Transfer (and the 
> >> resulting internal FIFO flush),the lower layer (U3PTL/U3MAC) could 
> >> get stuck waiting for data indefinitely. This blocks the transmission 
> >> path on the SS, and no DP/ACK/ERDY/DEVNOTIF packets can be sent from 
> >> the device.
> >> Impact: If this issue happens and the transmission gets blocked, then 
> >> the USB host aborts and resets/re-enumerates the device.
> >> This unblocks the transmitt engine and the device functions normally.
> >> 
> >> Workaround: Software must wait for all existing TRBs to complete 
> >> before issuing End transfer command.
> >> 
> >> Configs Affected:
> >> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
> >> LX2160-2120-2080A-R1.
> >
> > What are these Configs?  That doesn't seem to match up with anything 
> > that is in the kernel tree that I can see.
> 
> These configs is soc information, I don't enable it on these platform dts.
> Although the erratum issue can't be reproduced.  

I do not understand what this means, please explain it a bit better.

thanks,

greg k-h


RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-10 Thread Yinbo Zhu


-Original Message-
From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com] 
Sent: Friday, December 08, 2017 6:44 PM
To: Greg Kroah-Hartman <gre...@linuxfoundation.org>; Yinbo Zhu 
<yinbo@nxp.com>
Cc: Mathias Nyman <mathias.ny...@intel.com>; open list:DESIGNWARE USB3 DRD IP 
DRIVER <linux-...@vger.kernel.org>; open list:DESIGNWARE USB3 DRD IP DRIVER 
<linux-o...@vger.kernel.org>; open list <linux-kernel@vger.kernel.org>; Xiaobo 
Xie <xiaobo@nxp.com>; Jerry Huang <jerry.hu...@nxp.com>; Ran Wang 
<ran.wan...@nxp.com>
Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611


>Hi,

>Greg Kroah-Hartman <gre...@linuxfoundation.org> writes:
> On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
>> From: "yinbo.zhu" <yinbo@nxp.com>
>> 
>> Description: This is a occasional problem where the software
>
> No need for a "Description:" word.  That's just assumed here, right?

I will remove "Description:" thanks.
>> issues an End Transfer command while a USB transfer is in progress, 
>> resulting in the TxFIFO  being flushed when the lower layer is 
>> waiting for data,causing the super speed (SS) transmit to get blocked.
>> If the End Transfer command is issued on an IN endpoint to flush out 
>> the pending transfers when the same IN endpoint is doing transfers on 
>> the USB, then depending upon the timing of the End Transfer (and the 
>> resulting internal FIFO flush),the lower layer (U3PTL/U3MAC) could 
>> get stuck waiting for data indefinitely. This blocks the transmission 
>> path on the SS, and no DP/ACK/ERDY/DEVNOTIF packets can be sent from 
>> the device.
>> Impact: If this issue happens and the transmission gets blocked, then 
>> the USB host aborts and resets/re-enumerates the device.
>> This unblocks the transmitt engine and the device functions normally.
>> 
>> Workaround: Software must wait for all existing TRBs to complete 
>> before issuing End transfer command.
>> 
>> Configs Affected:
>> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
>> LX2160-2120-2080A-R1.
>
> What are these Configs?  That doesn't seem to match up with anything 
> that is in the kernel tree that I can see.

These configs is soc information, I don't enable it on these platform dts.
Although the erratum issue can't be reproduced.  
>> 
>> Signed-off-by: yinbo.zhu <yinbo@nxp.com>
>> ---
>>  drivers/usb/dwc3/core.c  |  3 +++
>>  drivers/usb/dwc3/core.h  |  3 +++
>>  drivers/usb/dwc3/host.c  |  3 +++
>>  drivers/usb/host/xhci-plat.c |  4 
>>  drivers/usb/host/xhci.c  | 24 ++--
>>  drivers/usb/host/xhci.h  |  1 +
>>  6 files changed, 32 insertions(+), 6 deletions(-)
>> 
>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
>> 5cb3f6795b0b..071e7cea8cbb 100644
>> --- a/drivers/usb/dwc3/core.c
>> +++ b/drivers/usb/dwc3/core.c
>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 
>> *dwc)
>>  
>>  dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>  "snps,quirk_reverse_in_out");

>This was generated on vendor tree. This quirk doesn't exist in dwc3. Also,
 >update your tree and review MAINTAINERS file. It has been almost 2 years 
 >since I left TI :-)

>--
>Balbi

Hi Balbi,

The quirk that I had add it in dwc3. Your meaning is that I can't use quirk to 
enable or disable the erratum, isn't it? The tree is 
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git, I had updated it.

Thanks.
Yinbo



RE: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-10 Thread Yinbo Zhu


-Original Message-
From: Felipe Balbi [mailto:felipe.ba...@linux.intel.com] 
Sent: Friday, December 08, 2017 6:44 PM
To: Greg Kroah-Hartman ; Yinbo Zhu 

Cc: Mathias Nyman ; open list:DESIGNWARE USB3 DRD IP 
DRIVER ; open list:DESIGNWARE USB3 DRD IP DRIVER 
; open list ; Xiaobo 
Xie ; Jerry Huang ; Ran Wang 

Subject: Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611


>Hi,

>Greg Kroah-Hartman  writes:
> On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
>> From: "yinbo.zhu" 
>> 
>> Description: This is a occasional problem where the software
>
> No need for a "Description:" word.  That's just assumed here, right?

I will remove "Description:" thanks.
>> issues an End Transfer command while a USB transfer is in progress, 
>> resulting in the TxFIFO  being flushed when the lower layer is 
>> waiting for data,causing the super speed (SS) transmit to get blocked.
>> If the End Transfer command is issued on an IN endpoint to flush out 
>> the pending transfers when the same IN endpoint is doing transfers on 
>> the USB, then depending upon the timing of the End Transfer (and the 
>> resulting internal FIFO flush),the lower layer (U3PTL/U3MAC) could 
>> get stuck waiting for data indefinitely. This blocks the transmission 
>> path on the SS, and no DP/ACK/ERDY/DEVNOTIF packets can be sent from 
>> the device.
>> Impact: If this issue happens and the transmission gets blocked, then 
>> the USB host aborts and resets/re-enumerates the device.
>> This unblocks the transmitt engine and the device functions normally.
>> 
>> Workaround: Software must wait for all existing TRBs to complete 
>> before issuing End transfer command.
>> 
>> Configs Affected:
>> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1, 
>> LX2160-2120-2080A-R1.
>
> What are these Configs?  That doesn't seem to match up with anything 
> that is in the kernel tree that I can see.

These configs is soc information, I don't enable it on these platform dts.
Although the erratum issue can't be reproduced.  
>> 
>> Signed-off-by: yinbo.zhu 
>> ---
>>  drivers/usb/dwc3/core.c  |  3 +++
>>  drivers/usb/dwc3/core.h  |  3 +++
>>  drivers/usb/dwc3/host.c  |  3 +++
>>  drivers/usb/host/xhci-plat.c |  4 
>>  drivers/usb/host/xhci.c  | 24 ++--
>>  drivers/usb/host/xhci.h  |  1 +
>>  6 files changed, 32 insertions(+), 6 deletions(-)
>> 
>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 
>> 5cb3f6795b0b..071e7cea8cbb 100644
>> --- a/drivers/usb/dwc3/core.c
>> +++ b/drivers/usb/dwc3/core.c
>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 
>> *dwc)
>>  
>>  dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>  "snps,quirk_reverse_in_out");

>This was generated on vendor tree. This quirk doesn't exist in dwc3. Also,
 >update your tree and review MAINTAINERS file. It has been almost 2 years 
 >since I left TI :-)

>--
>Balbi

Hi Balbi,

The quirk that I had add it in dwc3. Your meaning is that I can't use quirk to 
enable or disable the erratum, isn't it? The tree is 
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git, I had updated it.

Thanks.
Yinbo



Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-08 Thread Felipe Balbi

Hi,

Greg Kroah-Hartman  writes:
> On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
>> From: "yinbo.zhu" 
>> 
>> Description: This is a occasional problem where the software
>
> No need for a "Description:" word.  That's just assumed here, right?
>
>> issues an End Transfer command while a USB transfer is in progress,
>> resulting in the TxFIFO  being flushed when the lower layer is waiting
>> for data,causing the super speed (SS) transmit to get blocked.
>> If the End Transfer command is issued on an IN endpoint to
>> flush out the pending transfers when the same IN endpoint
>> is doing transfers on the USB, then depending upon the timing
>> of the End Transfer (and the resulting internal FIFO flush),the
>> lower layer (U3PTL/U3MAC) could get stuck waiting for data
>> indefinitely. This blocks the transmission path on the SS, and no
>> DP/ACK/ERDY/DEVNOTIF packets can be sent from the device.
>> Impact: If this issue happens and the transmission gets blocked,
>> then the USB host aborts and resets/re-enumerates the device.
>> This unblocks the transmitt engine and the device functions normally.
>> 
>> Workaround: Software must wait for all existing TRBs to complete before
>> issuing End transfer command.
>> 
>> Configs Affected:
>> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1,
>> LX2160-2120-2080A-R1.
>
> What are these Configs?  That doesn't seem to match up with anything
> that is in the kernel tree that I can see.
>
>> 
>> Signed-off-by: yinbo.zhu 
>> ---
>>  drivers/usb/dwc3/core.c  |  3 +++
>>  drivers/usb/dwc3/core.h  |  3 +++
>>  drivers/usb/dwc3/host.c  |  3 +++
>>  drivers/usb/host/xhci-plat.c |  4 
>>  drivers/usb/host/xhci.c  | 24 ++--
>>  drivers/usb/host/xhci.h  |  1 +
>>  6 files changed, 32 insertions(+), 6 deletions(-)
>> 
>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>> index 5cb3f6795b0b..071e7cea8cbb 100644
>> --- a/drivers/usb/dwc3/core.c
>> +++ b/drivers/usb/dwc3/core.c
>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
>>  
>>  dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>  "snps,quirk_reverse_in_out");

This was generated on vendor tree. This quirk doesn't exist in
dwc3. Also, update your tree and review MAINTAINERS file. It has been
almost 2 years since I left TI :-)

-- 
balbi


signature.asc
Description: PGP signature


Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-08 Thread Felipe Balbi

Hi,

Greg Kroah-Hartman  writes:
> On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
>> From: "yinbo.zhu" 
>> 
>> Description: This is a occasional problem where the software
>
> No need for a "Description:" word.  That's just assumed here, right?
>
>> issues an End Transfer command while a USB transfer is in progress,
>> resulting in the TxFIFO  being flushed when the lower layer is waiting
>> for data,causing the super speed (SS) transmit to get blocked.
>> If the End Transfer command is issued on an IN endpoint to
>> flush out the pending transfers when the same IN endpoint
>> is doing transfers on the USB, then depending upon the timing
>> of the End Transfer (and the resulting internal FIFO flush),the
>> lower layer (U3PTL/U3MAC) could get stuck waiting for data
>> indefinitely. This blocks the transmission path on the SS, and no
>> DP/ACK/ERDY/DEVNOTIF packets can be sent from the device.
>> Impact: If this issue happens and the transmission gets blocked,
>> then the USB host aborts and resets/re-enumerates the device.
>> This unblocks the transmitt engine and the device functions normally.
>> 
>> Workaround: Software must wait for all existing TRBs to complete before
>> issuing End transfer command.
>> 
>> Configs Affected:
>> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1,
>> LX2160-2120-2080A-R1.
>
> What are these Configs?  That doesn't seem to match up with anything
> that is in the kernel tree that I can see.
>
>> 
>> Signed-off-by: yinbo.zhu 
>> ---
>>  drivers/usb/dwc3/core.c  |  3 +++
>>  drivers/usb/dwc3/core.h  |  3 +++
>>  drivers/usb/dwc3/host.c  |  3 +++
>>  drivers/usb/host/xhci-plat.c |  4 
>>  drivers/usb/host/xhci.c  | 24 ++--
>>  drivers/usb/host/xhci.h  |  1 +
>>  6 files changed, 32 insertions(+), 6 deletions(-)
>> 
>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>> index 5cb3f6795b0b..071e7cea8cbb 100644
>> --- a/drivers/usb/dwc3/core.c
>> +++ b/drivers/usb/dwc3/core.c
>> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
>>  
>>  dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>>  "snps,quirk_reverse_in_out");

This was generated on vendor tree. This quirk doesn't exist in
dwc3. Also, update your tree and review MAINTAINERS file. It has been
almost 2 years since I left TI :-)

-- 
balbi


signature.asc
Description: PGP signature


Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-08 Thread Greg Kroah-Hartman
On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> From: "yinbo.zhu" 
> 
> Description: This is a occasional problem where the software

No need for a "Description:" word.  That's just assumed here, right?

> issues an End Transfer command while a USB transfer is in progress,
> resulting in the TxFIFO  being flushed when the lower layer is waiting
> for data,causing the super speed (SS) transmit to get blocked.
> If the End Transfer command is issued on an IN endpoint to
> flush out the pending transfers when the same IN endpoint
> is doing transfers on the USB, then depending upon the timing
> of the End Transfer (and the resulting internal FIFO flush),the
> lower layer (U3PTL/U3MAC) could get stuck waiting for data
> indefinitely. This blocks the transmission path on the SS, and no
> DP/ACK/ERDY/DEVNOTIF packets can be sent from the device.
> Impact: If this issue happens and the transmission gets blocked,
> then the USB host aborts and resets/re-enumerates the device.
> This unblocks the transmitt engine and the device functions normally.
> 
> Workaround: Software must wait for all existing TRBs to complete before
> issuing End transfer command.
> 
> Configs Affected:
> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1,
> LX2160-2120-2080A-R1.

What are these Configs?  That doesn't seem to match up with anything
that is in the kernel tree that I can see.

> 
> Signed-off-by: yinbo.zhu 
> ---
>  drivers/usb/dwc3/core.c  |  3 +++
>  drivers/usb/dwc3/core.h  |  3 +++
>  drivers/usb/dwc3/host.c  |  3 +++
>  drivers/usb/host/xhci-plat.c |  4 
>  drivers/usb/host/xhci.c  | 24 ++--
>  drivers/usb/host/xhci.h  |  1 +
>  6 files changed, 32 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 5cb3f6795b0b..071e7cea8cbb 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
>  
>   dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>   "snps,quirk_reverse_in_out");
> + dwc->quirk_stop_transfer_in_block = device_property_read_bool(dev,
> + "snps,quirk_stop_transfer_in_block");

Have you documented this new DT value somewhere?

> +
>   dwc->needs_fifo_resize = of_property_read_bool(node, "tx-fifo-resize");
>  
>   dwc->configure_gfladj =
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index 6c530cbedf49..b2425799ecb6 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -900,6 +900,8 @@ struct dwc3_scratchpad_array {
>   *   3   - Reserved
>   * @disable_devinit_u1u2_quirk: disable device-initiated U1/U2 request.
>   * @quirk_reverse_in_out: prevent tx fifo reverse the data direction.
> + * @quirk_stop_transfer_in_block: prevent block transmission from being
> + *interrupted.
>   * @imod_interval: set the interrupt moderation interval in 250ns
>   * increments or 0 to disable.
>   */
> @@ -1063,6 +1065,7 @@ struct dwc3 {
>   unsignedtx_de_emphasis:2;
>   unsigneddisable_devinit_u1u2_quirk:1;
>   unsignedquirk_reverse_in_out:1;
> + unsignedquirk_stop_transfer_in_block:1;
>  
>   u16 imod_interval;
>  };
> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
> index 2cd48633d3fa..a9ccbf1b9871 100644
> --- a/drivers/usb/dwc3/host.c
> +++ b/drivers/usb/dwc3/host.c
> @@ -110,6 +110,9 @@ int dwc3_host_init(struct dwc3 *dwc)
>   if (dwc->quirk_reverse_in_out)
>   props[prop_idx++].name = "quirk-reverse-in-out";
>  
> + if (dwc->quirk_stop_transfer_in_block)
> + props[prop_idx++].name = "quirk-stop-transfer-in-block";
> +
>   if (dwc->usb3_lpm_capable)
>   props[prop_idx++].name = "usb3-lpm-capable";
>  
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index d1c1e882e6d7..5721d4ece625 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -272,6 +272,10 @@ static int xhci_plat_probe(struct platform_device *pdev)
>   if (device_property_read_bool(>dev, "quirk-reverse-in-out"))
>   xhci->quirks |= XHCI_REVERSE_IN_OUT;
>  
> + if (device_property_read_bool(>dev,
> + "quirk-stop-transfer-in-block"))
> + xhci->quirks |= XHCI_STOP_TRANSFER_IN_BLOCK;
> +
>   if (device_property_read_bool(>dev, "quirk-broken-port-ped"))
>   xhci->quirks |= XHCI_BROKEN_PORT_PED;
>  
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index 21dd1d98508f..925c8d171c0b 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -1515,13 +1515,25 @@ static int xhci_urb_dequeue(struct usb_hcd *hcd, 
> struct 

Re: [PATCH v2] usb: host: Implement workaround for Erratum A-009611

2017-12-08 Thread Greg Kroah-Hartman
On Fri, Dec 08, 2017 at 05:49:41PM +0800, yinbo@nxp.com wrote:
> From: "yinbo.zhu" 
> 
> Description: This is a occasional problem where the software

No need for a "Description:" word.  That's just assumed here, right?

> issues an End Transfer command while a USB transfer is in progress,
> resulting in the TxFIFO  being flushed when the lower layer is waiting
> for data,causing the super speed (SS) transmit to get blocked.
> If the End Transfer command is issued on an IN endpoint to
> flush out the pending transfers when the same IN endpoint
> is doing transfers on the USB, then depending upon the timing
> of the End Transfer (and the resulting internal FIFO flush),the
> lower layer (U3PTL/U3MAC) could get stuck waiting for data
> indefinitely. This blocks the transmission path on the SS, and no
> DP/ACK/ERDY/DEVNOTIF packets can be sent from the device.
> Impact: If this issue happens and the transmission gets blocked,
> then the USB host aborts and resets/re-enumerates the device.
> This unblocks the transmitt engine and the device functions normally.
> 
> Workaround: Software must wait for all existing TRBs to complete before
> issuing End transfer command.
> 
> Configs Affected:
> LS1088-48A-R1.0, LS2081A-R1.1, LS2088-48A-R1.0, LS2088-48A-R1.1,
> LX2160-2120-2080A-R1.

What are these Configs?  That doesn't seem to match up with anything
that is in the kernel tree that I can see.

> 
> Signed-off-by: yinbo.zhu 
> ---
>  drivers/usb/dwc3/core.c  |  3 +++
>  drivers/usb/dwc3/core.h  |  3 +++
>  drivers/usb/dwc3/host.c  |  3 +++
>  drivers/usb/host/xhci-plat.c |  4 
>  drivers/usb/host/xhci.c  | 24 ++--
>  drivers/usb/host/xhci.h  |  1 +
>  6 files changed, 32 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 5cb3f6795b0b..071e7cea8cbb 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1106,6 +1106,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
>  
>   dwc->quirk_reverse_in_out = device_property_read_bool(dev,
>   "snps,quirk_reverse_in_out");
> + dwc->quirk_stop_transfer_in_block = device_property_read_bool(dev,
> + "snps,quirk_stop_transfer_in_block");

Have you documented this new DT value somewhere?

> +
>   dwc->needs_fifo_resize = of_property_read_bool(node, "tx-fifo-resize");
>  
>   dwc->configure_gfladj =
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index 6c530cbedf49..b2425799ecb6 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -900,6 +900,8 @@ struct dwc3_scratchpad_array {
>   *   3   - Reserved
>   * @disable_devinit_u1u2_quirk: disable device-initiated U1/U2 request.
>   * @quirk_reverse_in_out: prevent tx fifo reverse the data direction.
> + * @quirk_stop_transfer_in_block: prevent block transmission from being
> + *interrupted.
>   * @imod_interval: set the interrupt moderation interval in 250ns
>   * increments or 0 to disable.
>   */
> @@ -1063,6 +1065,7 @@ struct dwc3 {
>   unsignedtx_de_emphasis:2;
>   unsigneddisable_devinit_u1u2_quirk:1;
>   unsignedquirk_reverse_in_out:1;
> + unsignedquirk_stop_transfer_in_block:1;
>  
>   u16 imod_interval;
>  };
> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
> index 2cd48633d3fa..a9ccbf1b9871 100644
> --- a/drivers/usb/dwc3/host.c
> +++ b/drivers/usb/dwc3/host.c
> @@ -110,6 +110,9 @@ int dwc3_host_init(struct dwc3 *dwc)
>   if (dwc->quirk_reverse_in_out)
>   props[prop_idx++].name = "quirk-reverse-in-out";
>  
> + if (dwc->quirk_stop_transfer_in_block)
> + props[prop_idx++].name = "quirk-stop-transfer-in-block";
> +
>   if (dwc->usb3_lpm_capable)
>   props[prop_idx++].name = "usb3-lpm-capable";
>  
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index d1c1e882e6d7..5721d4ece625 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -272,6 +272,10 @@ static int xhci_plat_probe(struct platform_device *pdev)
>   if (device_property_read_bool(>dev, "quirk-reverse-in-out"))
>   xhci->quirks |= XHCI_REVERSE_IN_OUT;
>  
> + if (device_property_read_bool(>dev,
> + "quirk-stop-transfer-in-block"))
> + xhci->quirks |= XHCI_STOP_TRANSFER_IN_BLOCK;
> +
>   if (device_property_read_bool(>dev, "quirk-broken-port-ped"))
>   xhci->quirks |= XHCI_BROKEN_PORT_PED;
>  
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index 21dd1d98508f..925c8d171c0b 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -1515,13 +1515,25 @@ static int xhci_urb_dequeue(struct usb_hcd *hcd, 
> struct urb *urb, int status)
>