Author: mw
Date: Sat Sep  9 11:06:58 2017
New Revision: 323357
URL: https://svnweb.freebsd.org/changeset/base/323357

Log:
  Add support for Armada 3700 EHCI
  
  This patch reuses ehci_mv driver by adding a support for the new
  compatible string and adding ehci_mv.c to list of available options
  for arm64 platforms.
  
  Submitted by: Patryk Duda <p...@semihalf.com>
  Obtained from: Semihalf
  Sponsored by: Semihalf
  Differential Revision: https://reviews.freebsd.org/D12255

Modified:
  head/sys/conf/files.arm64
  head/sys/dev/usb/controller/ehci_mv.c

Modified: head/sys/conf/files.arm64
==============================================================================
--- head/sys/conf/files.arm64   Sat Sep  9 11:01:44 2017        (r323356)
+++ head/sys/conf/files.arm64   Sat Sep  9 11:06:58 2017        (r323357)
@@ -176,6 +176,7 @@ dev/psci/psci_arm64.S               optional        psci
 dev/uart/uart_cpu_arm64.c      optional        uart
 dev/uart/uart_dev_pl011.c      optional        uart pl011
 dev/usb/controller/dwc_otg_hisi.c optional     dwcotg fdt soc_hisi_hi6220
+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

Modified: head/sys/dev/usb/controller/ehci_mv.c
==============================================================================
--- head/sys/dev/usb/controller/ehci_mv.c       Sat Sep  9 11:01:44 2017        
(r323356)
+++ head/sys/dev/usb/controller/ehci_mv.c       Sat Sep  9 11:06:58 2017        
(r323357)
@@ -73,7 +73,9 @@ __FBSDID("$FreeBSD$");
 #include <dev/usb/controller/ehci.h>
 #include <dev/usb/controller/ehcireg.h>
 
+#if !defined(__aarch64__)
 #include <arm/mv/mvreg.h>
+#endif
 #include <arm/mv/mvvar.h>
 
 #define        EHCI_VENDORID_MRVL      0x1286
@@ -100,9 +102,10 @@ static void *ih_err;
 #define        MV_USB_DEVICE_UNDERFLOW (1 << 3)
 
 static struct ofw_compat_data compat_data[] = {
-       {"mrvl,usb-ehci",       true},
-       {"marvell,orion-ehci",  true},
-       {NULL,                  false}
+       {"mrvl,usb-ehci",               true},
+       {"marvell,orion-ehci",          true},
+       {"marvell,armada-3700-ehci",    true},
+       {NULL,                          false}
 };
 
 static void
@@ -174,7 +177,8 @@ mv_ehci_attach(device_t self)
                    device_get_name(self));
 
        rid = 0;
-       if (!ofw_bus_is_compatible(self, "marvell,orion-ehci")) {
+       if (!(ofw_bus_is_compatible(self, "marvell,orion-ehci") ||
+           ofw_bus_is_compatible(self, "marvell,armada-3700-ehci"))) {
                irq_err = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid,
                    RF_SHAREABLE | RF_ACTIVE);
                if (irq_err == NULL) {
@@ -207,7 +211,8 @@ mv_ehci_attach(device_t self)
 
        sprintf(sc->sc_vendor, "Marvell");
 
-       if (!ofw_bus_is_compatible(self, "marvell,orion-ehci")) {
+       if (!(ofw_bus_is_compatible(self, "marvell,orion-ehci") ||
+           ofw_bus_is_compatible(self, "marvell,armada-3700-ehci"))) {
                err = bus_setup_intr(self, irq_err, INTR_TYPE_BIO,
                    err_intr, NULL, sc, &ih_err);
                if (err) {
@@ -365,5 +370,5 @@ static driver_t ehci_driver = {
 
 static devclass_t ehci_devclass;
 
-DRIVER_MODULE(ehci, simplebus, ehci_driver, ehci_devclass, 0, 0);
-MODULE_DEPEND(ehci, usb, 1, 1, 1);
+DRIVER_MODULE(ehci_mv, simplebus, ehci_driver, ehci_devclass, 0, 0);
+MODULE_DEPEND(ehci_mv, usb, 1, 1, 1);
_______________________________________________
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