diff --git a/sys/arm64/conf/GENERIC b/sys/arm64/conf/GENERIC index 2c9e202ab1e..d9bee621210 100644 --- a/sys/arm64/conf/GENERIC +++ b/sys/arm64/conf/GENERIC @@ -196,7 +196,6 @@ device ohci # OHCI USB interface device ehci # EHCI USB interface (USB 2.0) device ehci_mv # Marvell EHCI USB interface device xhci # XHCI PCI->USB interface (USB 3.0) -device xhci_mv # Marvell XHCI USB interface device usb # USB Bus (required) device ukbd # Keyboard device umass # Disks/Mass storage - Requires scbus and da diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index 24e7ceb2f0c..32649774bff 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -233,8 +233,8 @@ dev/usb/controller/ehci_mv.c optional ehci_mv fdt dev/usb/controller/generic_ehci.c optional ehci acpi dev/usb/controller/generic_ohci.c optional ohci fdt dev/usb/controller/generic_usb_if.m optional ohci fdt -dev/usb/controller/xhci_mv.c optional xhci_mv fdt dev/usb/controller/usb_nop_xceiv.c optional fdt ext_resources +dev/usb/controller/generic_xhci.c optional xhci fdt dev/vnic/mrml_bridge.c optional vnic fdt dev/vnic/nic_main.c optional vnic pci dev/vnic/nicvf_main.c optional vnic pci pci_iov diff --git a/sys/dev/usb/controller/xhci_mv.c b/sys/dev/usb/controller/generic_xhci.c similarity index 94% rename from sys/dev/usb/controller/xhci_mv.c rename to sys/dev/usb/controller/generic_xhci.c index 154b158f255..7b51dccda12 100644 --- a/sys/dev/usb/controller/xhci_mv.c +++ b/sys/dev/usb/controller/generic_xhci.c @@ -64,6 +64,10 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef EXT_RESOURCES +#include +#endif + #define XHCI_HC_DEVSTR "Marvell Integrated USB 3.0 controller" #define XHCI_HC_VENDOR "Marvell" @@ -76,6 +80,7 @@ static struct ofw_compat_data compat_data[] = { {"marvell,armada-380-xhci", true}, {"marvell,armada3700-xhci", true}, {"marvell,armada-8k-xhci", true}, + {"generic-xhci", true}, {NULL, false} }; @@ -99,6 +104,10 @@ xhci_attach(device_t dev) { struct xhci_softc *sc = device_get_softc(dev); int err = 0, rid = 0; +#ifdef EXT_RESOURCES + phandle_t node; + phy_t phy; +#endif sc->sc_bus.parent = dev; sc->sc_bus.devices = sc->sc_devices; @@ -124,6 +133,13 @@ xhci_attach(device_t dev) return (ENXIO); } +#ifdef EXT_RESOURCES + node = ofw_bus_get_node(dev); + if (phy_get_by_ofw_property(dev, node, "usb-phy", &phy) == 0) + if (phy_enable(phy) != 0) + device_printf(dev, "Cannot enable phy\n"); +#endif + sc->sc_bus.bdev = device_add_child(dev, "usbus", -1); if (sc->sc_bus.bdev == NULL) { device_printf(dev, "Failed to add USB device\n");