usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers
The R-Car H2 and M2 SoCs come with an xHCI controller that requires some specific initializations related to the firmware downloading and some specific registers. This patch adds the support for this special configuration as an xHCI quirk executed during probe and start. Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Cc: "mathias.nyman@intel.com" <mathias.nyman@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
fd666348c5
commit
4ac8918f3a
@@ -21,6 +21,7 @@
|
||||
|
||||
#include "xhci.h"
|
||||
#include "xhci-mvebu.h"
|
||||
#include "xhci-rcar.h"
|
||||
|
||||
static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
|
||||
{
|
||||
@@ -35,11 +36,27 @@ static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
|
||||
/* called during probe() after chip reset completes */
|
||||
static int xhci_plat_setup(struct usb_hcd *hcd)
|
||||
{
|
||||
struct device_node *of_node = hcd->self.controller->of_node;
|
||||
int ret;
|
||||
|
||||
if (of_device_is_compatible(of_node, "renesas,xhci-r8a7790") ||
|
||||
of_device_is_compatible(of_node, "renesas,xhci-r8a7791")) {
|
||||
ret = xhci_rcar_init_quirk(hcd);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return xhci_gen_setup(hcd, xhci_plat_quirks);
|
||||
}
|
||||
|
||||
static int xhci_plat_start(struct usb_hcd *hcd)
|
||||
{
|
||||
struct device_node *of_node = hcd->self.controller->of_node;
|
||||
|
||||
if (of_device_is_compatible(of_node, "renesas,xhci-r8a7790") ||
|
||||
of_device_is_compatible(of_node, "renesas,xhci-r8a7791"))
|
||||
xhci_rcar_start(hcd);
|
||||
|
||||
return xhci_run(hcd);
|
||||
}
|
||||
|
||||
@@ -263,6 +280,8 @@ static const struct of_device_id usb_xhci_of_match[] = {
|
||||
{ .compatible = "xhci-platform" },
|
||||
{ .compatible = "marvell,armada-375-xhci"},
|
||||
{ .compatible = "marvell,armada-380-xhci"},
|
||||
{ .compatible = "renesas,xhci-r8a7790"},
|
||||
{ .compatible = "renesas,xhci-r8a7791"},
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, usb_xhci_of_match);
|
||||
|
Reference in New Issue
Block a user