|
@@ -285,51 +285,6 @@ parse_failed:
|
|
EXPORT_SYMBOL_GPL(of_pci_get_host_bridge_resources);
|
|
EXPORT_SYMBOL_GPL(of_pci_get_host_bridge_resources);
|
|
#endif /* CONFIG_OF_ADDRESS */
|
|
#endif /* CONFIG_OF_ADDRESS */
|
|
|
|
|
|
-#ifdef CONFIG_PCI_MSI
|
|
|
|
-
|
|
|
|
-static LIST_HEAD(of_pci_msi_chip_list);
|
|
|
|
-static DEFINE_MUTEX(of_pci_msi_chip_mutex);
|
|
|
|
-
|
|
|
|
-int of_pci_msi_chip_add(struct msi_controller *chip)
|
|
|
|
-{
|
|
|
|
- if (!of_property_read_bool(chip->of_node, "msi-controller"))
|
|
|
|
- return -EINVAL;
|
|
|
|
-
|
|
|
|
- mutex_lock(&of_pci_msi_chip_mutex);
|
|
|
|
- list_add(&chip->list, &of_pci_msi_chip_list);
|
|
|
|
- mutex_unlock(&of_pci_msi_chip_mutex);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-EXPORT_SYMBOL_GPL(of_pci_msi_chip_add);
|
|
|
|
-
|
|
|
|
-void of_pci_msi_chip_remove(struct msi_controller *chip)
|
|
|
|
-{
|
|
|
|
- mutex_lock(&of_pci_msi_chip_mutex);
|
|
|
|
- list_del(&chip->list);
|
|
|
|
- mutex_unlock(&of_pci_msi_chip_mutex);
|
|
|
|
-}
|
|
|
|
-EXPORT_SYMBOL_GPL(of_pci_msi_chip_remove);
|
|
|
|
-
|
|
|
|
-struct msi_controller *of_pci_find_msi_chip_by_node(struct device_node *of_node)
|
|
|
|
-{
|
|
|
|
- struct msi_controller *c;
|
|
|
|
-
|
|
|
|
- mutex_lock(&of_pci_msi_chip_mutex);
|
|
|
|
- list_for_each_entry(c, &of_pci_msi_chip_list, list) {
|
|
|
|
- if (c->of_node == of_node) {
|
|
|
|
- mutex_unlock(&of_pci_msi_chip_mutex);
|
|
|
|
- return c;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- mutex_unlock(&of_pci_msi_chip_mutex);
|
|
|
|
-
|
|
|
|
- return NULL;
|
|
|
|
-}
|
|
|
|
-EXPORT_SYMBOL_GPL(of_pci_find_msi_chip_by_node);
|
|
|
|
-
|
|
|
|
-#endif /* CONFIG_PCI_MSI */
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* of_pci_map_rid - Translate a requester ID through a downstream mapping.
|
|
* of_pci_map_rid - Translate a requester ID through a downstream mapping.
|
|
* @np: root complex device node.
|
|
* @np: root complex device node.
|