[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1477088705-202225-1-git-send-email-babu.moger@oracle.com>
Date: Fri, 21 Oct 2016 15:25:05 -0700
From: Babu Moger <babu.moger@...cle.com>
To: mathias.nyman@...el.com, gregkh@...uxfoundation.org
Cc: linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org,
babu.moger@...cle.com
Subject: [PATCH v2 RESEND] drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
Never seen XHCI auto handoff working on TI and RENESAS cards.
Eventually, we force handoff. This code forces the handoff
unconditionally. It saves 5 seconds boot time for each card.
Signed-off-by: Babu Moger <babu.moger@...cle.com>
---
v2:
Made changes per comments from Greg KH.
Extra space removal in assignment
Added both vendor and device id checks.
Resending the patch. Original discussion here.
https://marc.info/?t=145221162000007&r=1&w=4
drivers/usb/host/pci-quirks.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 35af362..31c9502 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -996,6 +996,14 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
}
val = readl(base + ext_cap_offset);
+ /* Auto handoff never worked for these devices. Force it and continue */
+ if ((pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) ||
+ (pdev->vendor == PCI_VENDOR_ID_RENESAS
+ && pdev->device == 0x0014)) {
+ val = (val | XHCI_HC_OS_OWNED) & ~XHCI_HC_BIOS_OWNED;
+ writel(val, base + ext_cap_offset);
+ }
+
/* If the BIOS owns the HC, signal that the OS wants it, and wait */
if (val & XHCI_HC_BIOS_OWNED) {
writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset);
--
1.7.1
Powered by blists - more mailing lists