[v3,2/2] usb: host: xhci-plat: Add support for XHCI_SG_TRB_CACHE_SIZE_QUIRK

Message ID 20240116055816.1169821-3-quic_prashk@quicinc.com
State New
Headers
Series Set XHCI_SG_TRB_CACHE_SIZE_QUIRK for DWC3 devices |

Commit Message

Prashanth K Jan. 16, 2024, 5:58 a.m. UTC
  Upstream commit bac1ec551434 ("usb: xhci: Set quirk for
XHCI_SG_TRB_CACHE_SIZE_QUIRK") introduced a new quirk in XHCI
which fixes XHC timeout, which was seen on synopsys XHCs while
using SG buffers. Currently this quirk can only be set using
xhci private data. But there are some drivers like dwc3/host.c
which adds adds quirks using software node for xhci device.
Hence set this xhci quirk by iterating over device properties.

Cc: <stable@vger.kernel.org> # 5.11
Fixes: bac1ec551434 ("usb: xhci: Set quirk for XHCI_SG_TRB_CACHE_SIZE_QUIRK")
Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
---
 drivers/usb/host/xhci-plat.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Sergey Shtylyov Jan. 16, 2024, 7:53 a.m. UTC | #1
On 1/16/24 8:58 AM, Prashanth K wrote:

> Upstream commit bac1ec551434 ("usb: xhci: Set quirk for
> XHCI_SG_TRB_CACHE_SIZE_QUIRK") introduced a new quirk in XHCI

   It's xHCI. :-)

> which fixes XHC timeout, which was seen on synopsys XHCs while

   xHC.

> using SG buffers. Currently this quirk can only be set using
> xhci private data. But there are some drivers like dwc3/host.c
> which adds adds quirks using software node for xhci device.

   Double "adds".

> Hence set this xhci quirk by iterating over device properties.
> 
> Cc: <stable@vger.kernel.org> # 5.11
> Fixes: bac1ec551434 ("usb: xhci: Set quirk for XHCI_SG_TRB_CACHE_SIZE_QUIRK")
> Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
[...]

MBR, Sergey
  
Greg KH Jan. 16, 2024, 8:02 a.m. UTC | #2
On Tue, Jan 16, 2024 at 10:53:11AM +0300, Sergey Shtylyov wrote:
> On 1/16/24 8:58 AM, Prashanth K wrote:
> 
> > Upstream commit bac1ec551434 ("usb: xhci: Set quirk for
> > XHCI_SG_TRB_CACHE_SIZE_QUIRK") introduced a new quirk in XHCI
> 
>    It's xHCI. :-)
> 
> > which fixes XHC timeout, which was seen on synopsys XHCs while
> 
>    xHC.
> 
> > using SG buffers. Currently this quirk can only be set using
> > xhci private data. But there are some drivers like dwc3/host.c
> > which adds adds quirks using software node for xhci device.
> 
>    Double "adds".

I know I have said this before, but please don't be so pedantic at
times, it's just not helpful at all.  All of these are just fine to
ignore.

thanks,

greg k-h
  

Patch

diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index f04fde19f551..3d071b875308 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -253,6 +253,9 @@  int xhci_plat_probe(struct platform_device *pdev, struct device *sysdev, const s
 		if (device_property_read_bool(tmpdev, "quirk-broken-port-ped"))
 			xhci->quirks |= XHCI_BROKEN_PORT_PED;
 
+		if (device_property_read_bool(tmpdev, "xhci-sg-trb-cache-size-quirk"))
+			xhci->quirks |= XHCI_SG_TRB_CACHE_SIZE_QUIRK;
+
 		device_property_read_u32(tmpdev, "imod-interval-ns",
 					 &xhci->imod_interval);
 	}