Page MenuHomeFreeBSD

D41429.id125881.diff
No OneTemporary

D41429.id125881.diff

diff --git a/sys/dev/usb/controller/generic_xhci.c b/sys/dev/usb/controller/generic_xhci.c
--- a/sys/dev/usb/controller/generic_xhci.c
+++ b/sys/dev/usb/controller/generic_xhci.c
@@ -116,7 +116,7 @@
return (err);
}
- err = xhci_init(sc, dev, IS_DMA_32B);
+ err = xhci_init(sc, dev, (sc->sc_quirks & XHCI_QUIRK_DMA_64B) == 0);
if (err != 0) {
device_printf(dev, "Failed to init XHCI, with error %d\n", err);
generic_xhci_detach(dev);
diff --git a/sys/dev/usb/controller/generic_xhci_fdt.c b/sys/dev/usb/controller/generic_xhci_fdt.c
--- a/sys/dev/usb/controller/generic_xhci_fdt.c
+++ b/sys/dev/usb/controller/generic_xhci_fdt.c
@@ -57,12 +57,16 @@
#include "generic_xhci.h"
+#define XHCI_FDT_MATCH 0x01
+#define XHCI_FDT_64BIT_DMA 0x02
+
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}
+ {"marvell,armada-380-xhci", XHCI_FDT_MATCH},
+ {"marvell,armada3700-xhci", XHCI_FDT_MATCH},
+ {"marvell,armada-8k-xhci", XHCI_FDT_MATCH},
+ {"brcm,generic-xchi", XHCI_FDT_MATCH | XHCI_FDT_64BIT_DMA},
+ {"generic-xhci", XHCI_FDT_MATCH},
+ {NULL, 0}
};
static int
@@ -83,14 +87,20 @@
static int
generic_xhci_fdt_attach(device_t dev)
{
+ struct xhci_softc *sc = device_get_softc(dev);
phandle_t node;
phy_t phy;
+ int flags;
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");
+ flags = ofw_bus_search_compatible(dev, compat_data)->ocd_data;
+ if ((flags & XHCI_FDT_64BIT_DMA) != 0)
+ sc->sc_quirks |= XHCI_QUIRK_DMA_64B;
+
return (generic_xhci_attach(dev));
}
diff --git a/sys/dev/usb/controller/xhci.h b/sys/dev/usb/controller/xhci.h
--- a/sys/dev/usb/controller/xhci.h
+++ b/sys/dev/usb/controller/xhci.h
@@ -489,6 +489,7 @@
enum xhci_quirks {
XHCI_QUIRK_DISABLE_PORT_PED = 0x00000001,
+ XHCI_QUIRK_DMA_64B = 0x00000002,
};
struct xhci_softc {

File Metadata

Mime Type
text/plain
Expires
Wed, Nov 20, 4:01 PM (19 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14742065
Default Alt Text
D41429.id125881.diff (2 KB)

Event Timeline