|
@@ -2,6 +2,7 @@
|
|
|
#include <linux/export.h>
|
|
|
#include <linux/of.h>
|
|
|
#include <linux/of_address.h>
|
|
|
+#include <linux/of_device.h>
|
|
|
#include <linux/of_pci.h>
|
|
|
#include <linux/slab.h>
|
|
|
|
|
@@ -116,6 +117,26 @@ int of_get_pci_domain_nr(struct device_node *node)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(of_get_pci_domain_nr);
|
|
|
|
|
|
+/**
|
|
|
+ * of_pci_dma_configure - Setup DMA configuration
|
|
|
+ * @dev: ptr to pci_dev struct of the PCI device
|
|
|
+ *
|
|
|
+ * Function to update PCI devices's DMA configuration using the same
|
|
|
+ * info from the OF node of host bridge's parent (if any).
|
|
|
+ */
|
|
|
+void of_pci_dma_configure(struct pci_dev *pci_dev)
|
|
|
+{
|
|
|
+ struct device *dev = &pci_dev->dev;
|
|
|
+ struct device *bridge = pci_get_host_bridge_device(pci_dev);
|
|
|
+
|
|
|
+ if (!bridge->parent)
|
|
|
+ return;
|
|
|
+
|
|
|
+ of_dma_configure(dev, bridge->parent->of_node);
|
|
|
+ pci_put_host_bridge_device(bridge);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(of_pci_dma_configure);
|
|
|
+
|
|
|
#if defined(CONFIG_OF_ADDRESS)
|
|
|
/**
|
|
|
* of_pci_get_host_bridge_resources - Parse PCI host bridge resources from DT
|