Enable trust tx length quirk for Fresco FL11 USB controller
Subsystems (2)
PATCH 1/1 Enable trust tx length quirk for Fresco FL11 USB controller
Tested on SD5200T TB3 dock which has Fresco Logic FL1100 USB 3.0 Host Controller.
Before this patch streaming video from USB cam made mouse and keyboard connected to the same USB bus unusable. Also video was jerky. With this patch streaming video doesn't have any effect on other periferals and video is smooth.
--- drivers/usb/host/xhci-pci.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/usb/host/xhci-pci.c +2 -0
@@ -30,6 +30,7 @@#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1009 0x1009 +#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 0x1100#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 0x1400#define PCI_VENDOR_ID_ETRON 0x1b6f
@@ -113,6 +114,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)/* Look for vendor-specific quirks */ if (pdev->vendor ==PCI_VENDOR_ID_FRESCO_LOGIC && (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK || + pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 || pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 )) {if (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK && pdev->revision ==0x0 ) {
Signature · 1 line
2.30.2
Quoted 26 lines · Nikolay Martynov
Tested on SD5200T TB3 dock which has Fresco Logic FL1100 USB 3.0 Host Controller.
Before this patch streaming video from USB cam made mouse and keyboard connected to the same USB bus unusable. Also video was jerky. With this patch streaming video doesn't have any effect on other periferals and video is smooth.Signed-off-by Nikolay Martynov <[email protected]>--- drivers/usb/host/xhci-pci.c | 2 ++ 1 file changed, 2 insertions(+)drivers/usb/host/xhci-pci.c +1
-0@@ -30,6 +30,7 @@#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1009 0x1009 +#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 0x1100#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 0x1400#define PCI_VENDOR_ID_ETRON 0x1b6f
drivers/usb/host/xhci-pci.c static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) · line 120
Quoted 7 lines
drivers/usb/host/xhci-pci.c +1
-0@@ -113,6 +114,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)/* Look for vendor-specific quirks */ if (pdev->vendor ==PCI_VENDOR_ID_FRESCO_LOGIC && (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK || + pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 || pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 )) {if (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK && pdev->revision ==0x0 ) {
Thanks, adding to queue, and and adding "xhci:" to changelog header
-Mathias
Quoted 25 lines · Nikolay Martynov
Tested on SD5200T TB3 dock which has Fresco Logic FL1100 USB 3.0 Host Controller.
Before this patch streaming video from USB cam made mouse and keyboard connected to the same USB bus unusable. Also video was jerky. With this patch streaming video doesn't have any effect on other periferals and video is smooth.Signed-off-by Nikolay Martynov <[email protected]>--- drivers/usb/host/xhci-pci.c | 2 ++ 1 file changed, 2 insertions(+)drivers/usb/host/xhci-pci.c +1
-0@@ -30,6 +30,7 @@#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1009 0x1009 +#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 0x1100#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 0x1400#define PCI_VENDOR_ID_ETRON 0x1b6f
drivers/usb/host/xhci-pci.c static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) · line 120
Quoted 7 lines
drivers/usb/host/xhci-pci.c +1
-0@@ -113,6 +114,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)/* Look for vendor-specific quirks */ if (pdev->vendor ==PCI_VENDOR_ID_FRESCO_LOGIC && (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK || + pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 || pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 )) {if (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK && pdev->revision ==0x0 )
I'm getting reports that this patch causes issues detecting usb drives connected to a dock with this Fresco FL1100 xHC.
This patch adds both XHCI_TRUST_TX_LENGTH and XHCI_BROKEN_MSI quirks, which was probably not intended. Removing the BROKEN_MSI quirk solved the issue.
Does you setup work normally with just TRUST_TX_LENGTH quirk?
-Mathias
PATCH 1/1 xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set.
The Fresco Logic FL1100 controller needs the TRUST_TX_LENGTH quirk like other Fresco controllers, but should not have the BROKEN_MSI quirks set.
BROKEN_MSI caused issues detecting usb drives connected to docks with this FL1100 controller.
--- drivers/usb/host/xhci-pci.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/usb/host/xhci-pci.c +4 -1
@@ -121,7 +121,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)/* Look for vendor-specific quirks */ if (pdev->vendor ==PCI_VENDOR_ID_FRESCO_LOGIC && (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK || - pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 || pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 )) {if (pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_PDK && pdev->revision ==0x0 ) {
@@ -156,6 +155,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_FL1009) xhci->quirks |= XHCI_BROKEN_STREAMS; +if (pdev->vendor ==PCI_VENDOR_ID_FRESCO_LOGIC && + pdev->device ==PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 ) + xhci->quirks |=XHCI_TRUST_TX_LENGTH ; +if (pdev->vendor ==PCI_VENDOR_ID_NEC ) xhci->quirks |=XHCI_NEC_HOST ;
Signature · 1 line
2.25.1