From patchwork Mon Nov 5 21:31:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Cooper X-Patchwork-Id: 10669229 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 708BE13BF for ; Mon, 5 Nov 2018 21:33:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6A7A529349 for ; Mon, 5 Nov 2018 21:33:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5E4A929A0D; Mon, 5 Nov 2018 21:33:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E8E28293B5 for ; Mon, 5 Nov 2018 21:33:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388083AbeKFGyl (ORCPT ); Tue, 6 Nov 2018 01:54:41 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:37237 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387899AbeKFGyl (ORCPT ); Tue, 6 Nov 2018 01:54:41 -0500 Received: by mail-pg1-f196.google.com with SMTP id c10-v6so4811832pgq.4; Mon, 05 Nov 2018 13:32:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Q13zyxjtLMGSvq8CStH7nEQVSyTKekwyvItSN2Yi5X8=; b=YGi6CIUMI6nQDd9SzO84BU3STG67c97WvKaRwzV27Ak5c8gVKNszcv+1BycYyx6tZT +WB1Xp2t6iUsoJF0MWxVEoTQomQiTKuijCRy7jHEXY4TAKIk3z2BJfafUq/mmeit4Bpn OA80/jzMvDVg3jsqMADUTg//v0u+9E64isAjv5IxFPWBsCnbTveLLOCz8K7GOlbMJbdD f9DfkJjlMyrpBQHRNuHJDUS9tuC96lDCDF0CzeW31cknfuw3Pm74HHIPEo17XLEmwvy1 LwXLWOYye51ISK1w7U4Y5VzjlfbPLlKr2Hhip8761afjN/Og72mL60c5rTCsPyehEybw AaqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Q13zyxjtLMGSvq8CStH7nEQVSyTKekwyvItSN2Yi5X8=; b=kAcVmPKhIQSHHVzMWAbKtM5j/r+akO++CkvCF7+2bDgYjhqQ2TNElJUjNo1Wd4L/uS V6nNA8je6d7Bk354WvW/3E2PiIOfkshl2a2L0x9XPHvlDkBkbOY8Bak7CRPNFkkUx8b5 /5FKXpLINtB1OSdVT177KpRRrYIQgUuz61Nyd7NYOebpeOmkPAG56UZ1YVKJsnIIQf+R n01IBgXO2qNSJE2Tm5vP5byHXKfHA9R1Q78X5tO3AveqrYeNtlvTnQ4aAWT2eBUzK7nu igSi0Q2X0O1Zm8OuSC0Taw2yzptUFIxd/baoDilyi+rjyWy6wmrFGRMHGOU2NynsP5w4 407g== X-Gm-Message-State: AGRZ1gKSXXE4GMLlJqREtJfaasd+/NXQjfaOINhsH30WjWHCl/hUv+Yi kdspmApDhplPgnLixEmzlKpegOg88mg= X-Google-Smtp-Source: AJdET5dcNJL23rAjmQVHU50TFh5pokem6sgzPkkYRlhB+ZV7d6XMtWFGkWwECeqJBjfh8YyuPTNFPw== X-Received: by 2002:a62:b24e:: with SMTP id x75-v6mr24189204pfe.148.1541453578986; Mon, 05 Nov 2018 13:32:58 -0800 (PST) Received: from stbsrv-and-3.and.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id m129-v6sm14328440pfm.78.2018.11.05.13.32.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Nov 2018 13:32:58 -0800 (PST) From: Al Cooper To: linux-kernel@vger.kernel.org Cc: Al Cooper , Alan Stern , Alban Bedel , Alex Elder , Andrew Morton , Arnd Bergmann , Avi Fishman , bcm-kernel-feedback-list@broadcom.com, Bjorn Andersson , Chunfeng Yun , "David S. Miller" , devicetree@vger.kernel.org, Dmitry Osipenko , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Hans de Goede , James Hogan , Jianguo Sun , Johan Hovold , Kees Cook , linux-usb@vger.kernel.org, Lu Baolu , Mark Rutland , Martin Blumenstingl , Mathias Nyman , Mathias Nyman , Mauro Carvalho Chehab , Rishabh Bhatnagar , Rob Herring , Roger Quadros Subject: [PATCH V3 1/6] dt-bindings: Add Broadcom STB OHCI, EHCI and XHCI binding document Date: Mon, 5 Nov 2018 16:31:28 -0500 Message-Id: <1541453493-34981-2-git-send-email-alcooperx@gmail.com> X-Mailer: git-send-email 1.9.0.138.g2de3478 In-Reply-To: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> References: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add DT bindings document for Broadcom STB USB OHCI, EHCI and XHCI drivers. Signed-off-by: Al Cooper --- .../devicetree/bindings/usb/brcm,bcm7445-ehci.txt | 22 +++++++++++++++++++++ .../devicetree/bindings/usb/brcm,bcm7445-ohci.txt | 22 +++++++++++++++++++++ .../devicetree/bindings/usb/brcm,bcm7445-xhci.txt | 23 ++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.txt create mode 100644 Documentation/devicetree/bindings/usb/brcm,bcm7445-ohci.txt create mode 100644 Documentation/devicetree/bindings/usb/brcm,bcm7445-xhci.txt diff --git a/Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.txt b/Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.txt new file mode 100644 index 000000000000..824f4bf5d07c --- /dev/null +++ b/Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.txt @@ -0,0 +1,22 @@ +Broadcom STB USB EHCI controller + +Required properties: +- compatible: should be "brcm,bcm7445-ehci" +- reg: should contain one register range i.e. start and length +- interrupts: description of the interrupt line +- phys: phandle + phy specifier pair + The specifier should be 0 for the OHCI/EHCI PHY + +Optional properties: +- clocks: A phandle for the EHCI clock + +Example: + +ehci@f0b00300 { + compatible = "brcm,bcm7445-ehci"; + reg = <0xf0b00300 0xa8>; + interrupts = <0x0 0x5a 0x0>; + interrupt-names = "usb0_ehci_0"; + phys = <&usbphy_0 0x0>; + clocks = <&usb20> +}; diff --git a/Documentation/devicetree/bindings/usb/brcm,bcm7445-ohci.txt b/Documentation/devicetree/bindings/usb/brcm,bcm7445-ohci.txt new file mode 100644 index 000000000000..de5a22b3d138 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/brcm,bcm7445-ohci.txt @@ -0,0 +1,22 @@ +Broadcom STB USB OHCI controller + +Required properties: +- compatible: should be "brcm,bcm7445-ohci" +- reg: should contain one register range i.e. start and length +- interrupts: description of the interrupt line +- phys: phandle + phy specifier pair + The specifier should be 0 for the OHCI/EHCI PHY + +Optional properties: +- clocks: A phandle for the OHCI clock + +Example: + +ohci@f0b00400 { + compatible = "brcm,bcm7445-ohci"; + reg = <0xf0b00400 0x58>; + interrupts = <0x0 0x5b 0x0>; + interrupt-names = "usb0_ohci_0"; + phys = <&usbphy_0 0x0>; + clocks = <&usb20>; +}; diff --git a/Documentation/devicetree/bindings/usb/brcm,bcm7445-xhci.txt b/Documentation/devicetree/bindings/usb/brcm,bcm7445-xhci.txt new file mode 100644 index 000000000000..c41f3f8d836d --- /dev/null +++ b/Documentation/devicetree/bindings/usb/brcm,bcm7445-xhci.txt @@ -0,0 +1,23 @@ +Broadcom STB USB XHCI controller + +Required properties: +- compatible: should be "brcm,bcm7445-xhci" +- reg: should contain one register range i.e. start and length +- interrupts: description of the interrupt line +- phys: phandle + phy specifier pair + The specifier should be 1 for the XHCI PHY + +Optional properties: +- clocks: A phandle for the XHCI clock +- usb3-lpm-capable: determines if platform is USB3 LPM capable + +Example: + +xhci_0_0: xhci@f0b01000 { + compatible = "brcm,bcm7445-xhci"; + reg = <0xf0b01000 0x1000>; + interrupts = <0x0 0x5c 0x0>; + interrupt-names = "usb0_xhci_0"; + phys = <&usbphy_0 0x1>; + clocks = <&usb30>; +}; From patchwork Mon Nov 5 21:31:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Cooper X-Patchwork-Id: 10669227 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5575414BD for ; Mon, 5 Nov 2018 21:33:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4E5BF293B5 for ; Mon, 5 Nov 2018 21:33:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 41ABF29D7D; Mon, 5 Nov 2018 21:33:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 94AE9293B5 for ; Mon, 5 Nov 2018 21:33:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388103AbeKFGyp (ORCPT ); Tue, 6 Nov 2018 01:54:45 -0500 Received: from mail-pf1-f193.google.com ([209.85.210.193]:46560 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387628AbeKFGyp (ORCPT ); Tue, 6 Nov 2018 01:54:45 -0500 Received: by mail-pf1-f193.google.com with SMTP id r64-v6so5032080pfb.13; Mon, 05 Nov 2018 13:33:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XHS8gkOFUvy4AC3AC6pIxVYKXEuWaPsDgcn2703bFBQ=; b=DC0QAZM/2Jdtxp2zcyXnvv9+42P0RU902rz3nU5/ClWbpRwMwydX/m5ma4YdgLtZi7 oOcg/F8kLkN9ql1GHB98UbirWYVoPfkwPED9PwnTab3FWEcaDl/wC6eZ9GVGSxZSTIdA ipT6FUTScNbhu3E2U+keUbWkX6VYXRKGoRFnbADSvYdWrViQ5PLVaAcPOPE4gFpQUtXq iPGQnl/qYjp8AT0FmX5kb9QE4n8nTMUBkUsgvcxgeNA2iBbkDcRaT10+BjR7CPyst8Aa BCbIdO1X+tSpHX8oSWwOrPlasxksbNbHUOGra9EyyKfsXZS6JTaKjGsGM9O5RXO5iArM Egcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=XHS8gkOFUvy4AC3AC6pIxVYKXEuWaPsDgcn2703bFBQ=; b=iQSEnR8cmPQKKvKQ3hZ5U6lBmRhLDIqg6xveTwPlv2ssYFtyC9ODt1z3a6sbJkUaRm RKGbk7FHtCYglruIVa83UzvoL5QXq7l8uMYXwO9p4U5aPRBaOzAwKyzgCqnXjEA8F390 pgKW+1w63Cq2p33mr4uq58u6UOt58I3imqHPKsuY06Fs1l13r4ecPscNakHGGo3LaA8p b1Naq7VeXasWNjSvd9n0Py8Wd52JValgtFAMWyT2rJe9oTQcpKEBucUVmK58ZoGVJgRm INGkkfmj1wv7RtfCsPEKF03Be48OUmIBLssDDOO3WvOSqrANM2/jyGbmWais+bRbfbKC 0lVQ== X-Gm-Message-State: AGRZ1gKlo6IB+O3I71UnSSIGIinkC4WBqZsPMyit4bigvVUgdTKmmcvu 8wGTm38/KMXCCCtxk7wMQyh/Usix9jc= X-Google-Smtp-Source: AJdET5enw5kTkw2w/oWlBrr32UcYqcbdDxChR4Yu1FtUwaLpbANaXE0ZIxqCOWOd/zi4M+KsiYkXmQ== X-Received: by 2002:a63:151f:: with SMTP id v31mr10637738pgl.34.1541453582643; Mon, 05 Nov 2018 13:33:02 -0800 (PST) Received: from stbsrv-and-3.and.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id m129-v6sm14328440pfm.78.2018.11.05.13.32.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Nov 2018 13:33:02 -0800 (PST) From: Al Cooper To: linux-kernel@vger.kernel.org Cc: Al Cooper , Alan Stern , Alban Bedel , Alex Elder , Andrew Morton , Arnd Bergmann , Avi Fishman , bcm-kernel-feedback-list@broadcom.com, Bjorn Andersson , Chunfeng Yun , "David S. Miller" , devicetree@vger.kernel.org, Dmitry Osipenko , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Hans de Goede , James Hogan , Jianguo Sun , Johan Hovold , Kees Cook , linux-usb@vger.kernel.org, Lu Baolu , Mark Rutland , Martin Blumenstingl , Mathias Nyman , Mathias Nyman , Mauro Carvalho Chehab , Rishabh Bhatnagar , Rob Herring , Roger Quadros Subject: [PATCH V3 2/6] usb: core: Add ability to skip phy exit on suspend and init on resume Date: Mon, 5 Nov 2018 16:31:29 -0500 Message-Id: <1541453493-34981-3-git-send-email-alcooperx@gmail.com> X-Mailer: git-send-email 1.9.0.138.g2de3478 In-Reply-To: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> References: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add the ability to skip calling the PHY's exit routine on suspend and the PHY's init routine on resume. This is to handle a USB PHY that should have it's power_off function called on suspend but cannot have it's exit function called because on exit it will disable the PHY to the point where register accesses to the Host Controllers using the PHY will be disabled and the host drivers will crash. This is enabled with the HCD flag "suspend_without_phy_exit" which can be set from any HCD driver. Signed-off-by: Al Cooper --- drivers/usb/core/hcd.c | 8 ++++---- drivers/usb/core/phy.c | 18 ++++++++++++------ drivers/usb/core/phy.h | 9 ++++++--- include/linux/usb/hcd.h | 3 +++ 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 487025d31d44..5ebc82a69403 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -2249,7 +2249,7 @@ int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg) hcd->state = HC_STATE_SUSPENDED; if (!PMSG_IS_AUTO(msg)) - usb_phy_roothub_suspend(hcd->self.sysdev, + usb_phy_roothub_suspend(hcd, hcd->phy_roothub); /* Did we race with a root-hub wakeup event? */ @@ -2290,7 +2290,7 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg) } if (!PMSG_IS_AUTO(msg)) { - status = usb_phy_roothub_resume(hcd->self.sysdev, + status = usb_phy_roothub_resume(hcd, hcd->phy_roothub); if (status) return status; @@ -2333,7 +2333,7 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg) } } else { hcd->state = old_state; - usb_phy_roothub_suspend(hcd->self.sysdev, hcd->phy_roothub); + usb_phy_roothub_suspend(hcd, hcd->phy_roothub); dev_dbg(&rhdev->dev, "bus %s fail, err %d\n", "resume", status); if (status != -ESHUTDOWN) @@ -2730,7 +2730,7 @@ int usb_add_hcd(struct usb_hcd *hcd, struct usb_device *rhdev; if (!hcd->skip_phy_initialization && usb_hcd_is_primary_hcd(hcd)) { - hcd->phy_roothub = usb_phy_roothub_alloc(hcd->self.sysdev); + hcd->phy_roothub = usb_phy_roothub_alloc(hcd); if (IS_ERR(hcd->phy_roothub)) return PTR_ERR(hcd->phy_roothub); diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c index 38b2c776c4b4..308d716304da 100644 --- a/drivers/usb/core/phy.c +++ b/drivers/usb/core/phy.c @@ -46,10 +46,11 @@ static int usb_phy_roothub_add_phy(struct device *dev, int index, return 0; } -struct usb_phy_roothub *usb_phy_roothub_alloc(struct device *dev) +struct usb_phy_roothub *usb_phy_roothub_alloc(struct usb_hcd *hcd) { struct usb_phy_roothub *phy_roothub; int i, num_phys, err; + struct device *dev = hcd->self.sysdev; if (!IS_ENABLED(CONFIG_GENERIC_PHY)) return NULL; @@ -162,26 +163,30 @@ void usb_phy_roothub_power_off(struct usb_phy_roothub *phy_roothub) } EXPORT_SYMBOL_GPL(usb_phy_roothub_power_off); -int usb_phy_roothub_suspend(struct device *controller_dev, +int usb_phy_roothub_suspend(struct usb_hcd *hcd, struct usb_phy_roothub *phy_roothub) { + struct device *controller_dev = hcd->self.sysdev; + usb_phy_roothub_power_off(phy_roothub); /* keep the PHYs initialized so the device can wake up the system */ - if (device_may_wakeup(controller_dev)) + if (device_may_wakeup(controller_dev) || hcd->suspend_without_phy_exit) return 0; return usb_phy_roothub_exit(phy_roothub); } EXPORT_SYMBOL_GPL(usb_phy_roothub_suspend); -int usb_phy_roothub_resume(struct device *controller_dev, +int usb_phy_roothub_resume(struct usb_hcd *hcd, struct usb_phy_roothub *phy_roothub) { + struct device *controller_dev = hcd->self.sysdev; int err; /* if the device can't wake up the system _exit was called */ - if (!device_may_wakeup(controller_dev)) { + if (!device_may_wakeup(controller_dev) && + !hcd->suspend_without_phy_exit) { err = usb_phy_roothub_init(phy_roothub); if (err) return err; @@ -190,7 +195,8 @@ int usb_phy_roothub_resume(struct device *controller_dev, err = usb_phy_roothub_power_on(phy_roothub); /* undo _init if _power_on failed */ - if (err && !device_may_wakeup(controller_dev)) + if (err && !device_may_wakeup(controller_dev) + && !hcd->suspend_without_phy_exit) usb_phy_roothub_exit(phy_roothub); return err; diff --git a/drivers/usb/core/phy.h b/drivers/usb/core/phy.h index 88a3c037e9df..34293e11a917 100644 --- a/drivers/usb/core/phy.h +++ b/drivers/usb/core/phy.h @@ -5,13 +5,16 @@ * Copyright (C) 2018 Martin Blumenstingl */ +#include +#include + #ifndef __USB_CORE_PHY_H_ #define __USB_CORE_PHY_H_ struct device; struct usb_phy_roothub; -struct usb_phy_roothub *usb_phy_roothub_alloc(struct device *dev); +struct usb_phy_roothub *usb_phy_roothub_alloc(struct usb_hcd *hcd); int usb_phy_roothub_init(struct usb_phy_roothub *phy_roothub); int usb_phy_roothub_exit(struct usb_phy_roothub *phy_roothub); @@ -19,9 +22,9 @@ int usb_phy_roothub_power_on(struct usb_phy_roothub *phy_roothub); void usb_phy_roothub_power_off(struct usb_phy_roothub *phy_roothub); -int usb_phy_roothub_suspend(struct device *controller_dev, +int usb_phy_roothub_suspend(struct usb_hcd *hcd, struct usb_phy_roothub *phy_roothub); -int usb_phy_roothub_resume(struct device *controller_dev, +int usb_phy_roothub_resume(struct usb_hcd *hcd, struct usb_phy_roothub *phy_roothub); #endif /* __USB_CORE_PHY_H_ */ diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 97e2ddec18b1..87a104055b5e 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -157,6 +157,9 @@ struct usb_hcd { */ unsigned skip_phy_initialization:1; + /* Some phys don't want the phy's exit/init called on suspend/resume */ + unsigned suspend_without_phy_exit:1; + /* The next flag is a stopgap, to be removed when all the HCDs * support the new root-hub polling mechanism. */ unsigned uses_new_polling:1; From patchwork Mon Nov 5 21:31:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Cooper X-Patchwork-Id: 10669225 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6D94114BD for ; Mon, 5 Nov 2018 21:33:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6709929349 for ; Mon, 5 Nov 2018 21:33:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5A5E029A0D; Mon, 5 Nov 2018 21:33:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2611629349 for ; Mon, 5 Nov 2018 21:33:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388121AbeKFGyt (ORCPT ); Tue, 6 Nov 2018 01:54:49 -0500 Received: from mail-pl1-f196.google.com ([209.85.214.196]:46763 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387598AbeKFGys (ORCPT ); Tue, 6 Nov 2018 01:54:48 -0500 Received: by mail-pl1-f196.google.com with SMTP id c13-v6so5065668plz.13; Mon, 05 Nov 2018 13:33:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=oXPFAGO9CBh1PNvDRHgtigu8kPEG9MMwio1UV3mOaN8=; b=F/GVD1GoFRY+47VtWmBY5PMNbpPc81MoeiMfFCs9D6dHB7eFaXV3vb+GAYcdFySkFQ 59Y20NgCTcpfr14ImyHUSwO/K33KONj9VvhI9GCwQYz0DGFDpbaaKSQ3HEeKEd5I3eN1 UoYjb8twlt0w2fRkm6r7FdMAe8GPmrYnNRoOkvxwtEp2x2mULCV07brx1lnEV9aXnXqz qocVERjpXnRkLnj09jLgBb4+tde98inSZ8shWjwbwvRk76lUkh8U4eHyln+H/InEawZB B5cTRo2DdLWlF6VoG9GizLLrEXuM+drFfszrGmHHszkHLI+7OV5FFgQFWKY0aNuH9iNb pJog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=oXPFAGO9CBh1PNvDRHgtigu8kPEG9MMwio1UV3mOaN8=; b=FUxaJFYeM6vPoPup/jay32eywvZLe9+UB7Anp18oCc/ymt9d8F4d8aDJZQH7BR3mEB Arqo4jerPn6jV8ErKuykq2ilIAeXsc6JnM/cZB4xDFOv2MSJgX44mbxifvubGQ593Yy0 kSlVlY9g0L4G3V7TLCdDH8yilj8DE54jUj7IAOYRH51hbqz03b7765AdHviAHON9+uB5 2/F+v5IGe4QoORbc7hrgGPAKm+AbFJD6bYhk5bC6xdzsLCUZI7Pw3wLEjLzY+hEH9WpH LJNSSozX7ct43bmbGtHMIUy6p/Y6Wv73+kKUFaYJ9yyr/yWBL3yAlC197hrxAk7OWVEK 0jQQ== X-Gm-Message-State: AGRZ1gKMdLLzMqQEs0h6p7nn04wkEtb+cuZCnGD059RLqPQdvyJ9fNKZ 0BeHwk9siZ2ZHqDRpOIml9cpCBbKybw= X-Google-Smtp-Source: AJdET5dCpLjXo1H39p6UpTy/x4b3rXTKd6o2rcWIDMjKtMvMJZxPUrwl1CYuysig397M9pCWExE5/w== X-Received: by 2002:a17:902:7c0b:: with SMTP id x11-v6mr23371532pll.60.1541453586279; Mon, 05 Nov 2018 13:33:06 -0800 (PST) Received: from stbsrv-and-3.and.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id m129-v6sm14328440pfm.78.2018.11.05.13.33.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Nov 2018 13:33:05 -0800 (PST) From: Al Cooper To: linux-kernel@vger.kernel.org Cc: Al Cooper , Alan Stern , Alban Bedel , Alex Elder , Andrew Morton , Arnd Bergmann , Avi Fishman , bcm-kernel-feedback-list@broadcom.com, Bjorn Andersson , Chunfeng Yun , "David S. Miller" , devicetree@vger.kernel.org, Dmitry Osipenko , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Hans de Goede , James Hogan , Jianguo Sun , Johan Hovold , Kees Cook , linux-usb@vger.kernel.org, Lu Baolu , Mark Rutland , Martin Blumenstingl , Mathias Nyman , Mathias Nyman , Mauro Carvalho Chehab , Rishabh Bhatnagar , Rob Herring , Roger Quadros Subject: [PATCH V3 3/6] usb: xhci: xhci-plat: Add support for Broadcom STB SoC's Date: Mon, 5 Nov 2018 16:31:30 -0500 Message-Id: <1541453493-34981-4-git-send-email-alcooperx@gmail.com> X-Mailer: git-send-email 1.9.0.138.g2de3478 In-Reply-To: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> References: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add support for Broadcom STB SoC's to the xhci platform driver Signed-off-by: Al Cooper --- drivers/usb/host/xhci-brcm.c | 17 +++++++++++++++++ drivers/usb/host/xhci-brcm.h | 16 ++++++++++++++++ drivers/usb/host/xhci-plat.c | 8 ++++++++ 3 files changed, 41 insertions(+) create mode 100644 drivers/usb/host/xhci-brcm.c create mode 100644 drivers/usb/host/xhci-brcm.h diff --git a/drivers/usb/host/xhci-brcm.c b/drivers/usb/host/xhci-brcm.c new file mode 100644 index 000000000000..a7220126f6af --- /dev/null +++ b/drivers/usb/host/xhci-brcm.c @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2018, Broadcom */ + +#include +#include + +#include "xhci.h" + +int xhci_plat_brcm_init_quirk(struct usb_hcd *hcd) +{ + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + + xhci->quirks |= XHCI_RESET_ON_RESUME; + hcd->suspend_without_phy_exit = 1; + return 0; +} + diff --git a/drivers/usb/host/xhci-brcm.h b/drivers/usb/host/xhci-brcm.h new file mode 100644 index 000000000000..e64800fae4d5 --- /dev/null +++ b/drivers/usb/host/xhci-brcm.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (c) 2018, Broadcom */ + +#ifndef _XHCI_BRCM_H +#define _XHCI_BRCM_H + +#if IS_ENABLED(CONFIG_USB_XHCI_BRCM) +int xhci_plat_brcm_init_quirk(struct usb_hcd *hcd); +#else +static inline int xhci_plat_brcm_init_quirk(struct usb_hcd *hcd) +{ + return 0; +} +#endif +#endif /* _XHCI_BRCM_H */ + diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 32b5574ad5c5..5372d4040be6 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -24,6 +24,7 @@ #include "xhci-plat.h" #include "xhci-mvebu.h" #include "xhci-rcar.h" +#include "xhci-brcm.h" static struct hc_driver __read_mostly xhci_plat_hc_driver; @@ -112,6 +113,10 @@ static int xhci_plat_start(struct usb_hcd *hcd) .resume_quirk = xhci_rcar_resume_quirk, }; +static const struct xhci_plat_priv xhci_plat_brcm = { + .init_quirk = xhci_plat_brcm_init_quirk +}; + static const struct of_device_id usb_xhci_of_match[] = { { .compatible = "generic-xhci", @@ -144,6 +149,9 @@ static int xhci_plat_start(struct usb_hcd *hcd) }, { .compatible = "renesas,rcar-gen3-xhci", .data = &xhci_plat_renesas_rcar_gen3, + }, { + .compatible = "brcm,bcm7445-xhci", + .data = &xhci_plat_brcm, }, {}, }; From patchwork Mon Nov 5 21:31:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Cooper X-Patchwork-Id: 10669219 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5C0E214BD for ; Mon, 5 Nov 2018 21:33:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 540A529D7C for ; Mon, 5 Nov 2018 21:33:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4756E29D7E; Mon, 5 Nov 2018 21:33:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CB6CA29D7C for ; Mon, 5 Nov 2018 21:33:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388139AbeKFGyw (ORCPT ); Tue, 6 Nov 2018 01:54:52 -0500 Received: from mail-pg1-f193.google.com ([209.85.215.193]:41300 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388065AbeKFGyw (ORCPT ); Tue, 6 Nov 2018 01:54:52 -0500 Received: by mail-pg1-f193.google.com with SMTP id k13so4805917pga.8; Mon, 05 Nov 2018 13:33:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ngQKXqCKv/9kmuh/X+ZGBLfcht+OoCCEYDevLC20Jmo=; b=LNTELrLw6WDDt03v3ckiKHBZbTHajvVKFoIbuYf3f0ZGEe/EfzdA38irFVnbNRpTsd PVVrGZNZlRM6I1laYeZXW1DOEmSeQfezOTsg47F5w9dq3EklP0Blp/yoSd8uq2ZG9sJV dVPfhTayTTA3ZiL6epWzr3Y7YEhXOAeEhGr9fKWRtCDhHYfClErl4cvj1Ufax0FSjT1K s1IiagsbpGF+TlXmniontFC4wMQqfu9Qg7XRs13lHxkZ687BeMwZIJ56Hw9f1J8XLPR7 nY3oiWb+I3wT8Qv/MEaGmxCkTlYS8AbgZ4CT7WF7PfNZcIxNgQ2kHeoHSH9AZSp0GrfJ uARw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ngQKXqCKv/9kmuh/X+ZGBLfcht+OoCCEYDevLC20Jmo=; b=LnJFSji0zbFD5uX97Ht8XXOLkwBrnzZNeNP30+TfXr8PExDFz3BkXBYPvo0eoxPUGN xbsGXjgoKxrItdG7+Et+LlFqHjXYUDo93//mhdEN9nCY39x7XeaMKzmH9t/TYBZ/YzCy f7jxVVo5zJXlCUbB8xuGd/efkNMTFN119R+vwzQ3iKdJw2ojQB1THsBiEV3Jr2v6kwNW kmodQLYv/iBNHanKtIqQzaA6f/t9UWCW1ILe5n9YbkA4bRWpNtP/5+QFefiXCnaYloBW siN/tnTT9jYkJXy2zbgT86FlhA5DYccX71dFiPtwaTrNCE/hHzc4V0NNc2QfkUZwY/BT HYIw== X-Gm-Message-State: AGRZ1gKxeRwqTd7KBIETLl/G/mwj/L3b6IEf8xXCSkxuhDykHQuTCbHT oAS6yzCzEjtlptRTzeqZVIh3E0uhCLg= X-Google-Smtp-Source: AJdET5e0UFugRIKAfjsvOFfjIM7qrU1DMaY9uI0lwr5d7Mv1oNvkHccoRjRTIjjyEg/BL6HEuDlvdA== X-Received: by 2002:a63:a441:: with SMTP id c1-v6mr21712527pgp.49.1541453589982; Mon, 05 Nov 2018 13:33:09 -0800 (PST) Received: from stbsrv-and-3.and.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id m129-v6sm14328440pfm.78.2018.11.05.13.33.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Nov 2018 13:33:09 -0800 (PST) From: Al Cooper To: linux-kernel@vger.kernel.org Cc: Al Cooper , Alan Stern , Alban Bedel , Alex Elder , Andrew Morton , Arnd Bergmann , Avi Fishman , bcm-kernel-feedback-list@broadcom.com, Bjorn Andersson , Chunfeng Yun , "David S. Miller" , devicetree@vger.kernel.org, Dmitry Osipenko , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Hans de Goede , James Hogan , Jianguo Sun , Johan Hovold , Kees Cook , linux-usb@vger.kernel.org, Lu Baolu , Mark Rutland , Martin Blumenstingl , Mathias Nyman , Mathias Nyman , Mauro Carvalho Chehab , Rishabh Bhatnagar , Rob Herring , Roger Quadros Subject: [PATCH V3 4/6] usb: ohci-platform: Add support for Broadcom STB SoC's Date: Mon, 5 Nov 2018 16:31:31 -0500 Message-Id: <1541453493-34981-5-git-send-email-alcooperx@gmail.com> X-Mailer: git-send-email 1.9.0.138.g2de3478 In-Reply-To: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> References: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add support for Broadcom STB SoC's to the ohci platform driver. Signed-off-by: Al Cooper Signed-off-by: Al Cooper --- drivers/usb/host/ohci-platform.c | 34 ++++++++++++++++++++++++++++------ include/linux/usb/ohci_pdriver.h | 1 + 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c index 65a1c3fdc88c..f425168238e6 100644 --- a/drivers/usb/host/ohci-platform.c +++ b/drivers/usb/host/ohci-platform.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -99,12 +100,23 @@ static int ohci_platform_probe(struct platform_device *dev) if (usb_disabled()) return -ENODEV; - /* - * Use reasonable defaults so platforms don't have to provide these - * with DT probing on ARM. - */ - if (!pdata) - pdata = &ohci_platform_defaults; + if (!pdata) { + const struct usb_ohci_pdata *match_pdata; + + match_pdata = of_device_get_match_data(&dev->dev); + if (match_pdata) { + pdata = devm_kmemdup(&dev->dev, match_pdata, + sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return -ENOMEM; + } else { + /* + * Use reasonable defaults so platforms don't have + * to provide these with DT probing on ARM. + */ + pdata = &ohci_platform_defaults; + } + } err = dma_coerce_mask_and_coherent(&dev->dev, DMA_BIT_MASK(32)); if (err) @@ -177,6 +189,8 @@ static int ohci_platform_probe(struct platform_device *dev) ohci->flags |= OHCI_QUIRK_FRAME_NO; if (pdata->num_ports) ohci->num_ports = pdata->num_ports; + if (pdata->suspend_without_phy_exit) + hcd->suspend_without_phy_exit = 1; #ifndef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO if (ohci->flags & OHCI_QUIRK_BE_MMIO) { @@ -305,10 +319,18 @@ static int ohci_platform_resume(struct device *dev) } #endif /* CONFIG_PM_SLEEP */ +static const struct usb_ohci_pdata ohci_plat_brcm_bcm7445_ohci = { + .power_on = ohci_platform_power_on, + .power_suspend = ohci_platform_power_off, + .power_off = ohci_platform_power_off, + .suspend_without_phy_exit = 1, +}; + static const struct of_device_id ohci_platform_ids[] = { { .compatible = "generic-ohci", }, { .compatible = "cavium,octeon-6335-ohci", }, { .compatible = "ti,ohci-omap3", }, + { .compatible = "brcm,bcm7445-ohci", &ohci_plat_brcm_bcm7445_ohci}, { } }; MODULE_DEVICE_TABLE(of, ohci_platform_ids); diff --git a/include/linux/usb/ohci_pdriver.h b/include/linux/usb/ohci_pdriver.h index 7eb16cf587ee..16b24ea1e3bb 100644 --- a/include/linux/usb/ohci_pdriver.h +++ b/include/linux/usb/ohci_pdriver.h @@ -35,6 +35,7 @@ struct usb_ohci_pdata { unsigned big_endian_desc:1; unsigned big_endian_mmio:1; unsigned no_big_frame_no:1; + unsigned suspend_without_phy_exit:1; unsigned int num_ports; /* Turn on all power and clocks */ From patchwork Mon Nov 5 21:31:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Cooper X-Patchwork-Id: 10669223 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 88EBD13BF for ; Mon, 5 Nov 2018 21:33:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7D40B29349 for ; Mon, 5 Nov 2018 21:33:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6E22C29A0D; Mon, 5 Nov 2018 21:33:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9206F29349 for ; Mon, 5 Nov 2018 21:33:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387973AbeKFGy4 (ORCPT ); Tue, 6 Nov 2018 01:54:56 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:46571 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388065AbeKFGyz (ORCPT ); Tue, 6 Nov 2018 01:54:55 -0500 Received: by mail-pf1-f194.google.com with SMTP id r64-v6so5032300pfb.13; Mon, 05 Nov 2018 13:33:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=74FmHITOWFSyLR/kjqZMnZTf7v6j4tt6nFEAL8fjtlM=; b=U/150Byct1h37TmZfjHyxzlAvSGHU2zJ+p2ixNPeaIrR34QdFP33AoXznVzuFjnvyK mwDpDpeHhWfKVvpT5cxRD9SlAuuWimmDxvrN4UZApFea8+t8xxx0h5TF6LyMS2oFY370 8UuYifefZks6sxkWdPm0weEKMP0adMGswWYzj9cbyxYYxUF13/zrx+vGQMurUN0lpij3 IYVt8s//ivbq0LYtGMvlkjPm7dTsP82glZiHhNs2Oo46sFgTUVrxojmGbMVXorg+ETQf uNanEa/+lvYSC3r5PGK8DUopdL2jxHLFMeTm5kbi2jW4Ar97ZczeWZStMbXPmIN619ot 3yvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=74FmHITOWFSyLR/kjqZMnZTf7v6j4tt6nFEAL8fjtlM=; b=NHYdnrZkDw3mAplB7QQsO0edDfAEDskGF4bkAFWAdge1FzchFxbLjrZoPwn+qGM9aN 2L5aRpF2ja+B4yY79+/8JSptwxKSyWLR/tykQ4qxHiWoTE5/IJjbQkyd0f+pchRCsLZ9 eu9k/DH0kyW2kr5WD0LxnFzaop25+lxLlcvuQ0kfb3NTeG08Ues05NglHPR4atA5FXJr Iy7I0m5FGrPh8L5+L+bog5SQAAQSODoI6JrBjhULo5k3O/JOZeoSrr0XNq5L+XeppotQ bHn88QzMMzGOYEXJBYS9fcCti5Q1sgglGauDbLfX0hiz25ZoEWSIbN7q2IjW+BZQkS3J KyUw== X-Gm-Message-State: AGRZ1gLnzpMIqr3640y4Uwx+z4bF+0mpqv8xHrfrhnD5kP5xO0T4i6J2 hpWCyIICCUmELFqrfZSix/6K/qNzSi8= X-Google-Smtp-Source: AJdET5flpVZMPyDJgdC0QDddCKcZgWKYKbQ1bgTw2QaT7omu3kCjRXcG+p75XFd78CX4Gp+Y7z96OA== X-Received: by 2002:a62:29c4:: with SMTP id p187-v6mr14030498pfp.62.1541453593666; Mon, 05 Nov 2018 13:33:13 -0800 (PST) Received: from stbsrv-and-3.and.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id m129-v6sm14328440pfm.78.2018.11.05.13.33.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Nov 2018 13:33:13 -0800 (PST) From: Al Cooper To: linux-kernel@vger.kernel.org Cc: Al Cooper , Alan Stern , Alban Bedel , Alex Elder , Andrew Morton , Arnd Bergmann , Avi Fishman , bcm-kernel-feedback-list@broadcom.com, Bjorn Andersson , Chunfeng Yun , "David S. Miller" , devicetree@vger.kernel.org, Dmitry Osipenko , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Hans de Goede , James Hogan , Jianguo Sun , Johan Hovold , Kees Cook , linux-usb@vger.kernel.org, Lu Baolu , Mark Rutland , Martin Blumenstingl , Mathias Nyman , Mathias Nyman , Mauro Carvalho Chehab , Rishabh Bhatnagar , Rob Herring , Roger Quadros Subject: [PATCH V3 5/6] usb: ehci: Add new EHCI driver for Broadcom STB SoC's Date: Mon, 5 Nov 2018 16:31:32 -0500 Message-Id: <1541453493-34981-6-git-send-email-alcooperx@gmail.com> X-Mailer: git-send-email 1.9.0.138.g2de3478 In-Reply-To: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> References: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add a new EHCI driver for Broadcom STB SoC's. A new EHCI driver was created instead of adding support to the existing ehci platform driver because of the code required to workaround bugs in the EHCI controller. Signed-off-by: Al Cooper --- drivers/usb/host/ehci-brcm.c | 287 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 drivers/usb/host/ehci-brcm.c diff --git a/drivers/usb/host/ehci-brcm.c b/drivers/usb/host/ehci-brcm.c new file mode 100644 index 000000000000..f36ce240538b --- /dev/null +++ b/drivers/usb/host/ehci-brcm.c @@ -0,0 +1,287 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2018, Broadcom */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ehci.h" + +#define BRCM_DRIVER_DESC "EHCI Broadcom STB driver" + +#define hcd_to_ehci_priv(h) ((struct brcm_priv *)hcd_to_ehci(h)->priv) + +struct brcm_priv { + struct clk *clk; +}; + +static const char brcm_hcd_name[] = "ehci-brcm"; + +static int (*org_hub_control)(struct usb_hcd *hcd, + u16 typeReq, u16 wValue, u16 wIndex, + char *buf, u16 wLength); + +/* ehci_brcm_wait_for_sof + * Wait for start of next microframe, then wait extra delay microseconds + */ +static inline void ehci_brcm_wait_for_sof(struct ehci_hcd *ehci, u32 delay) +{ + int frame_idx = ehci_readl(ehci, &ehci->regs->frame_index); + + while (frame_idx == ehci_readl(ehci, &ehci->regs->frame_index)) + ; + udelay(delay); +} + +/* + * ehci_brcm_hub_control + * Intercept echi-hcd request to complete RESUME and align it to the start + * of the next microframe. + * If RESUME is complete too late in the microframe, host controller + * detects babble on suspended port and resets the port afterwards. + * This s/w workaround allows to avoid this problem. + * See SWLINUX-1909 for more details + */ +static int ehci_brcm_hub_control( + struct usb_hcd *hcd, + u16 typeReq, + u16 wValue, + u16 wIndex, + char *buf, + u16 wLength) +{ + struct ehci_hcd *ehci = hcd_to_ehci(hcd); + int ports = HCS_N_PORTS(ehci->hcs_params); + u32 __iomem *status_reg = &ehci->regs->port_status[ + (wIndex & 0xff) - 1]; + unsigned long flags; + int retval, irq_disabled = 0; + + /* + * RESUME is cleared when GetPortStatus() is called 20ms after start + * of RESUME + */ + if ((typeReq == GetPortStatus) && + (wIndex && wIndex <= ports) && + ehci->reset_done[wIndex-1] && + time_after_eq(jiffies, ehci->reset_done[wIndex-1]) && + (ehci_readl(ehci, status_reg) & PORT_RESUME)) { + + /* + * to make sure we are not interrupted until RESUME bit + * is cleared, disable interrupts on current CPU + */ + ehci_dbg(ehci, "SOF alignment workaround\n"); + irq_disabled = 1; + local_irq_save(flags); + ehci_brcm_wait_for_sof(ehci, 5); + } + retval = (*org_hub_control)(hcd, typeReq, wValue, wIndex, buf, wLength); + if (irq_disabled) + local_irq_restore(flags); + return retval; +} + +static int ehci_brcm_reset(struct usb_hcd *hcd) +{ + struct ehci_hcd *ehci = hcd_to_ehci(hcd); + + ehci->big_endian_mmio = 1; + hcd->suspend_without_phy_exit = 1; + + ehci->caps = (struct ehci_caps *) hcd->regs; + ehci->regs = (struct ehci_regs *) (hcd->regs + + HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase))); + + /* This fixes the lockup during reboot due to prior interrupts */ + ehci_writel(ehci, CMD_RESET, &ehci->regs->command); + mdelay(10); + + /* + * SWLINUX-1705: Avoid OUT packet underflows during high memory + * bus usage + * port_status[0x0f] = Broadcom-proprietary USB_EHCI_INSNREG00 @ 0x90 + */ + ehci_writel(ehci, 0x00800040, &ehci->regs->port_status[0x10]); + ehci_writel(ehci, 0x00000001, &ehci->regs->port_status[0x12]); + + return ehci_setup(hcd); +} + +static struct hc_driver __read_mostly ehci_brcm_hc_driver; + +static const struct ehci_driver_overrides brcm_overrides __initconst = { + + .reset = ehci_brcm_reset, + .extra_priv_size = sizeof(struct brcm_priv), +}; + +static int ehci_brcm_probe(struct platform_device *pdev) +{ + struct usb_hcd *hcd; + struct resource *res_mem; + struct brcm_priv *priv; + int irq; + int err; + + if (usb_disabled()) + return -ENODEV; + + err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); + if (err) + return err; + + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + dev_err(&pdev->dev, "no irq provided"); + return irq; + } + + /* Hook the hub control routine to work around a bug */ + if (org_hub_control == NULL) + org_hub_control = ehci_brcm_hc_driver.hub_control; + ehci_brcm_hc_driver.hub_control = ehci_brcm_hub_control; + + /* initialize hcd */ + hcd = usb_create_hcd(&ehci_brcm_hc_driver, + &pdev->dev, dev_name(&pdev->dev)); + if (!hcd) + return -ENOMEM; + + platform_set_drvdata(pdev, hcd); + priv = hcd_to_ehci_priv(hcd); + + priv->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(priv->clk)) { + dev_err(&pdev->dev, "Clock not found in Device Tree\n"); + priv->clk = NULL; + } + err = clk_prepare_enable(priv->clk); + if (err) + goto err_hcd; + + res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + hcd->regs = devm_ioremap_resource(&pdev->dev, res_mem); + if (IS_ERR(hcd->regs)) { + err = PTR_ERR(hcd->regs); + goto err_clk; + } + hcd->rsrc_start = res_mem->start; + hcd->rsrc_len = resource_size(res_mem); + err = usb_add_hcd(hcd, irq, IRQF_SHARED); + if (err) + goto err_clk; + + device_wakeup_enable(hcd->self.controller); + device_enable_async_suspend(hcd->self.controller); + platform_set_drvdata(pdev, hcd); + + return err; + +err_clk: + clk_disable_unprepare(priv->clk); +err_hcd: + usb_put_hcd(hcd); + + return err; +} + +static int ehci_brcm_remove(struct platform_device *dev) +{ + struct usb_hcd *hcd = platform_get_drvdata(dev); + struct brcm_priv *priv = hcd_to_ehci_priv(hcd); + + usb_remove_hcd(hcd); + clk_disable_unprepare(priv->clk); + usb_put_hcd(hcd); + return 0; +} + +#ifdef CONFIG_PM_SLEEP + +static int ehci_brcm_suspend(struct device *dev) +{ + int ret; + struct usb_hcd *hcd = dev_get_drvdata(dev); + struct brcm_priv *priv = hcd_to_ehci_priv(hcd); + bool do_wakeup = device_may_wakeup(dev); + + ret = ehci_suspend(hcd, do_wakeup); + clk_disable_unprepare(priv->clk); + return ret; +} + +static int ehci_brcm_resume(struct device *dev) +{ + struct usb_hcd *hcd = dev_get_drvdata(dev); + struct ehci_hcd *ehci = hcd_to_ehci(hcd); + struct brcm_priv *priv = hcd_to_ehci_priv(hcd); + int err; + + err = clk_prepare_enable(priv->clk); + if (err) + return err; + /* + * SWLINUX-1705: Avoid OUT packet underflows during high memory + * bus usage + * port_status[0x0f] = Broadcom-proprietary USB_EHCI_INSNREG00 + * @ 0x90 + */ + ehci_writel(ehci, 0x00800040, &ehci->regs->port_status[0x10]); + ehci_writel(ehci, 0x00000001, &ehci->regs->port_status[0x12]); + + ehci_resume(hcd, false); + return 0; +} +#endif /* CONFIG_PM_SLEEP */ + +static SIMPLE_DEV_PM_OPS(ehci_brcm_pm_ops, ehci_brcm_suspend, + ehci_brcm_resume); + +static const struct of_device_id brcm_ehci_of_match[] = { + { .compatible = "brcm,bcm7445-ehci", }, + {} +}; + +static struct platform_driver ehci_brcm_driver = { + .probe = ehci_brcm_probe, + .remove = ehci_brcm_remove, + .shutdown = usb_hcd_platform_shutdown, + .driver = { + .owner = THIS_MODULE, + .name = "ehci-brcm", + .pm = &ehci_brcm_pm_ops, + .of_match_table = brcm_ehci_of_match, + } +}; + +static int __init ehci_brcm_init(void) +{ + if (usb_disabled()) + return -ENODEV; + + pr_info("%s: " BRCM_DRIVER_DESC "\n", brcm_hcd_name); + + ehci_init_driver(&ehci_brcm_hc_driver, &brcm_overrides); + return platform_driver_register(&ehci_brcm_driver); +} +module_init(ehci_brcm_init); + +static void __exit ehci_brcm_exit(void) +{ + platform_driver_unregister(&ehci_brcm_driver); +} +module_exit(ehci_brcm_exit); + +MODULE_ALIAS("platform:ehci-brcm"); +MODULE_DESCRIPTION(BRCM_DRIVER_DESC); +MODULE_AUTHOR("Al Cooper"); +MODULE_LICENSE("GPL"); From patchwork Mon Nov 5 21:31:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Cooper X-Patchwork-Id: 10669221 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D5DBE14BD for ; Mon, 5 Nov 2018 21:33:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CF57129D7C for ; Mon, 5 Nov 2018 21:33:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BFB7429D7E; Mon, 5 Nov 2018 21:33:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7FCEA29D7C for ; Mon, 5 Nov 2018 21:33:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388162AbeKFGzA (ORCPT ); Tue, 6 Nov 2018 01:55:00 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:40789 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388060AbeKFGy7 (ORCPT ); Tue, 6 Nov 2018 01:54:59 -0500 Received: by mail-pf1-f195.google.com with SMTP id x2-v6so962495pfm.7; Mon, 05 Nov 2018 13:33:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RwGQ3tpCHIWv3vI72V0rDL1gcbAOiKR+A7U2ZnntJHU=; b=gwhl328GnRl0xmDyXk51yXgBZQoXSCApvkfI7dvcfVkEuE1qtNP1Tp6i69zuxqaiFl 1KNBpV4q9gRuiKgZVSZzX0RcqNwRTrnC/y9uhrUaqFYsoclKJd6ohQDvGofUIc07A1L1 RzV8yk9/36NxosryMxnXwHC7v/O0gBdU+8dk1k3KJk+0AEuMAeEo5EWxHv2TVwmmaUr7 EI7wMdjKEKwgnxWSzVHjmCO9QdC7mBBtPwHj6oa96fffWnYvPwNBHZ6dD2aavJaU6yI4 A7dQv8hJEPH4UU+2ayjkRrF7Z13fuq50SubOPBq7cu8M8jRZicPM5c1qHM5gDca3Ndeh KguA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=RwGQ3tpCHIWv3vI72V0rDL1gcbAOiKR+A7U2ZnntJHU=; b=sqHUon4mGWYyV/g4QyMX7hJjaJxj3mbhqmz99hVyEuhRR24oGEDUMo7F9wPeFTVIL+ u697IwEuoO6LuahuFwSiLM06Bo7YVhThPe8BCU/wjEp3J3NnZnEhstT3TK6Xyydn+bHy RZ85sU7EqPIhW9LDqUXenQ386V7cZ9qw6Gkk9a3r7I99V89Xw0U5boTckuvA0T+f7X3W Vo56rIPKFDWMLZK3BatqtF7ruACBtP8f/7NKVFP5rUW0Is+W0/qbJ0AjOPlsxs61p0Oq Y4wxQeyOjmb5GNKIktXo+Ecbr+U+R0hIQY42Hog0/DCfOlfigxA84CeysgflPGz8a4NP oDJw== X-Gm-Message-State: AGRZ1gIAIDdahp0JSIUVcpBxvAN48j6delZklzaqkJM+vNw6Ix95ReUi UBCRFLnBE2bwcOMZ8KLLMlch/xvppnk= X-Google-Smtp-Source: AJdET5cQ3FvlLx9h8bnPKCnStS8CiF0LS+BdY14tbFquuTGM3T10NaOPpij8Svbt5OiaPYU2FAOGjA== X-Received: by 2002:a63:f547:: with SMTP id e7mr22005852pgk.182.1541453597320; Mon, 05 Nov 2018 13:33:17 -0800 (PST) Received: from stbsrv-and-3.and.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id m129-v6sm14328440pfm.78.2018.11.05.13.33.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Nov 2018 13:33:16 -0800 (PST) From: Al Cooper To: linux-kernel@vger.kernel.org Cc: Al Cooper , Alan Stern , Alban Bedel , Alex Elder , Andrew Morton , Arnd Bergmann , Avi Fishman , bcm-kernel-feedback-list@broadcom.com, Bjorn Andersson , Chunfeng Yun , "David S. Miller" , devicetree@vger.kernel.org, Dmitry Osipenko , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Hans de Goede , James Hogan , Jianguo Sun , Johan Hovold , Kees Cook , linux-usb@vger.kernel.org, Lu Baolu , Mark Rutland , Martin Blumenstingl , Mathias Nyman , Mathias Nyman , Mauro Carvalho Chehab , Rishabh Bhatnagar , Rob Herring , Roger Quadros Subject: [PATCH V3 6/6] usb: host: Add ability to build new Broadcom STB USB drivers Date: Mon, 5 Nov 2018 16:31:33 -0500 Message-Id: <1541453493-34981-7-git-send-email-alcooperx@gmail.com> X-Mailer: git-send-email 1.9.0.138.g2de3478 In-Reply-To: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> References: <1541453493-34981-1-git-send-email-alcooperx@gmail.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add the build system changes needed to get the Broadcom STB XHCI, EHCI and OHCI functionality working. The link order for XHCI was changed in the Makefile because of the way STB XHCI, EHCI and OHCI controllers share a port which requires that the XHCI driver be initialized first. Also update MAINTAINERS. Signed-off-by: Al Cooper --- MAINTAINERS | 9 +++++++++ drivers/usb/host/Kconfig | 29 +++++++++++++++++++++++++++++ drivers/usb/host/Makefile | 18 ++++++++++++------ 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index e8e1d86bd505..c4e7bcb7f992 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2991,6 +2991,15 @@ S: Supported F: drivers/i2c/busses/i2c-brcmstb.c F: Documentation/devicetree/bindings/i2c/i2c-brcmstb.txt +BROADCOM BRCMSTB USB XHCI, EHCI and OHCI DRIVERS +M: Al Cooper +L: linux-usb@vger.kernel.org +L: bcm-kernel-feedback-list@broadcom.com +S: Maintained +F: drivers/usb/host/xhci-brcm.* +F: drivers/usb/host/ohci-brcm.c +F: Documentation/devicetree/bindings/usb/brcm,bcm7445-*.txt + BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER M: Al Cooper L: linux-kernel@vger.kernel.org diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig index 16758b12a5e9..ec6b4582ab12 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig @@ -94,6 +94,35 @@ config USB_XHCI_TEGRA Say 'Y' to enable the support for the xHCI host controller found in NVIDIA Tegra124 and later SoCs. +config USB_OHCI_BRCM + tristate + +config USB_EHCI_BRCM + tristate + +config USB_XHCI_BRCM + tristate + +config BRCM_USB_PHY + tristate + +config USB_BRCM + tristate "Broadcom STB USB support" + depends on ARCH_BRCMSTB + select USB_OHCI_HCD_PLATFORM if USB_OHCI_HCD + select USB_EHCI_BRCM if USB_EHCI_HCD + select USB_XHCI_BRCM if USB_XHCI_HCD + select USB_XHCI_PLATFORM if USB_XHCI_HCD + select BRCM_USB_PHY if USB_OHCI_HCD || USB_EHCI_HCD || USB_XHCI_HCD + select GENERIC_PHY if BRCM_USB_PHY + default ARCH_BRCMSTB + help + Say Y to enable support for XHCI, EHCI and OHCI host controllers + found in Broadcom STB SoC's. + + Disabling this will keep the controllers and corresponding + PHYs powered down. + endif # USB_XHCI_HCD config USB_EHCI_HCD diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile index 84514f71ae44..9bdd64b710ee 100644 --- a/drivers/usb/host/Makefile +++ b/drivers/usb/host/Makefile @@ -31,6 +31,10 @@ ifneq ($(CONFIG_USB_XHCI_RCAR), ) xhci-plat-hcd-y += xhci-rcar.o endif +ifneq ($(CONFIG_USB_XHCI_BRCM), ) + xhci-plat-hcd-y += xhci-brcm.o +endif + ifneq ($(CONFIG_DEBUG_FS),) xhci-hcd-y += xhci-debugfs.o endif @@ -39,6 +43,13 @@ obj-$(CONFIG_USB_WHCI_HCD) += whci/ obj-$(CONFIG_USB_PCI) += pci-quirks.o +obj-$(CONFIG_USB_XHCI_HCD) += xhci-hcd.o +obj-$(CONFIG_USB_XHCI_PCI) += xhci-pci.o +obj-$(CONFIG_USB_XHCI_PLATFORM) += xhci-plat-hcd.o +obj-$(CONFIG_USB_XHCI_HISTB) += xhci-histb.o +obj-$(CONFIG_USB_XHCI_MTK) += xhci-mtk.o +obj-$(CONFIG_USB_XHCI_TEGRA) += xhci-tegra.o + obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o obj-$(CONFIG_USB_EHCI_HCD_PLATFORM) += ehci-platform.o @@ -52,6 +63,7 @@ obj-$(CONFIG_USB_EHCI_EXYNOS) += ehci-exynos.o obj-$(CONFIG_USB_EHCI_HCD_AT91) += ehci-atmel.o obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o obj-$(CONFIG_USB_W90X900_EHCI) += ehci-w90x900.o +obj-$(CONFIG_USB_EHCI_BRCM) += ehci-brcm.o obj-$(CONFIG_USB_OXU210HP_HCD) += oxu210hp-hcd.o obj-$(CONFIG_USB_ISP116X_HCD) += isp116x-hcd.o @@ -72,12 +84,6 @@ obj-$(CONFIG_USB_OHCI_HCD_DAVINCI) += ohci-da8xx.o obj-$(CONFIG_USB_UHCI_HCD) += uhci-hcd.o obj-$(CONFIG_USB_FHCI_HCD) += fhci.o -obj-$(CONFIG_USB_XHCI_HCD) += xhci-hcd.o -obj-$(CONFIG_USB_XHCI_PCI) += xhci-pci.o -obj-$(CONFIG_USB_XHCI_PLATFORM) += xhci-plat-hcd.o -obj-$(CONFIG_USB_XHCI_HISTB) += xhci-histb.o -obj-$(CONFIG_USB_XHCI_MTK) += xhci-mtk.o -obj-$(CONFIG_USB_XHCI_TEGRA) += xhci-tegra.o obj-$(CONFIG_USB_SL811_HCD) += sl811-hcd.o obj-$(CONFIG_USB_SL811_CS) += sl811_cs.o obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o