aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTycho Nightingale <tychon@FreeBSD.org>2019-04-01 19:08:05 +0000
committerTycho Nightingale <tychon@FreeBSD.org>2019-04-01 19:08:05 +0000
commitb2bbb7448928f165f1baa4f8e7fdbdfd6d76048c (patch)
tree7c99c7b33bf55d781defaa3a0ff0516873f6f870
parent1a22fb3f5e5fe585a6f14f67cd3e999907a1aede (diff)
Notes
-rw-r--r--sys/dev/pci/pci.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index 3e74436e5e50..4415f9e64ad5 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -31,6 +31,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include "opt_acpi.h"
#include "opt_bus.h"
#include <sys/param.h>
@@ -5693,6 +5694,26 @@ pci_get_resource_list (device_t dev, device_t child)
return (&dinfo->resources);
}
+#ifdef ACPI_DMAR
+bus_dma_tag_t dmar_get_dma_tag(device_t dev, device_t child);
+bus_dma_tag_t
+pci_get_dma_tag(device_t bus, device_t dev)
+{
+ bus_dma_tag_t tag;
+ struct pci_softc *sc;
+
+ if (device_get_parent(dev) == bus) {
+ /* try dmar and return if it works */
+ tag = dmar_get_dma_tag(bus, dev);
+ } else
+ tag = NULL;
+ if (tag == NULL) {
+ sc = device_get_softc(bus);
+ tag = sc->sc_dma_tag;
+ }
+ return (tag);
+}
+#else
bus_dma_tag_t
pci_get_dma_tag(device_t bus, device_t dev)
{
@@ -5700,6 +5721,7 @@ pci_get_dma_tag(device_t bus, device_t dev)
return (sc->sc_dma_tag);
}
+#endif
uint32_t
pci_read_config_method(device_t dev, device_t child, int reg, int width)