Author: manu
Date: Wed Feb 27 21:04:40 2019
New Revision: 344634
URL: https://svnweb.freebsd.org/changeset/base/344634

Log:
  xhci_mv: Move the driver to generic_xhci
  
  Marvell XHCI is in fact generic-xhci, so move the driver and
  add the compatible string.
  While here, get and enable the phy if the dtb provide one.
  The xhci bindings state that phys should be in a 'phys' property but
  Marvell DTS uses 'usb-phy', only add support for 'usb-phy' for now.
  
  Sponsored-by:      Rubicon Communications, LCC ("Netgate")

Added:
  head/sys/dev/usb/controller/generic_xhci.c
     - copied, changed from r344633, head/sys/dev/usb/controller/xhci_mv.c
Deleted:
  head/sys/dev/usb/controller/xhci_mv.c
Modified:
  head/sys/arm64/conf/GENERIC
  head/sys/conf/files.arm64

Modified: head/sys/arm64/conf/GENERIC
==============================================================================
--- head/sys/arm64/conf/GENERIC Wed Feb 27 20:52:35 2019        (r344633)
+++ head/sys/arm64/conf/GENERIC Wed Feb 27 21:04:40 2019        (r344634)
@@ -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

Modified: head/sys/conf/files.arm64
==============================================================================
--- head/sys/conf/files.arm64   Wed Feb 27 20:52:35 2019        (r344633)
+++ head/sys/conf/files.arm64   Wed Feb 27 21:04:40 2019        (r344634)
@@ -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

Copied and modified: head/sys/dev/usb/controller/generic_xhci.c (from r344633, 
head/sys/dev/usb/controller/xhci_mv.c)
==============================================================================
--- head/sys/dev/usb/controller/xhci_mv.c       Wed Feb 27 20:52:35 2019        
(r344633, copy source)
+++ head/sys/dev/usb/controller/generic_xhci.c  Wed Feb 27 21:04:40 2019        
(r344634)
@@ -64,6 +64,10 @@ __FBSDID("$FreeBSD$");
 #include <dev/usb/controller/xhci.h>
 #include <dev/usb/controller/xhcireg.h>
 
+#ifdef EXT_RESOURCES
+#include <dev/extres/phy/phy.h>
+#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;
@@ -123,6 +132,13 @@ xhci_attach(device_t dev)
                xhci_detach(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) {
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to