|
@@ -5,6 +5,7 @@
|
|
|
#include <linux/of_device.h>
|
|
|
#include <linux/of_pci.h>
|
|
|
#include <linux/slab.h>
|
|
|
+#include <asm-generic/pci-bridge.h>
|
|
|
|
|
|
static inline int __of_pci_pci_compare(struct device_node *node,
|
|
|
unsigned int data)
|
|
@@ -117,6 +118,31 @@ int of_get_pci_domain_nr(struct device_node *node)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(of_get_pci_domain_nr);
|
|
|
|
|
|
+/**
|
|
|
+ * of_pci_check_probe_only - Setup probe only mode if linux,pci-probe-only
|
|
|
+ * is present and valid
|
|
|
+ */
|
|
|
+void of_pci_check_probe_only(void)
|
|
|
+{
|
|
|
+ u32 val;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = of_property_read_u32(of_chosen, "linux,pci-probe-only", &val);
|
|
|
+ if (ret) {
|
|
|
+ if (ret == -ENODATA || ret == -EOVERFLOW)
|
|
|
+ pr_warn("linux,pci-probe-only without valid value, ignoring\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (val)
|
|
|
+ pci_add_flags(PCI_PROBE_ONLY);
|
|
|
+ else
|
|
|
+ pci_clear_flags(PCI_PROBE_ONLY);
|
|
|
+
|
|
|
+ pr_info("PCI: PROBE_ONLY %sabled\n", val ? "en" : "dis");
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(of_pci_check_probe_only);
|
|
|
+
|
|
|
/**
|
|
|
* of_pci_dma_configure - Setup DMA configuration
|
|
|
* @dev: ptr to pci_dev struct of the PCI device
|