PCI: endpoint: Add notification for core init completion
authorVidya Sagar <vidyas@nvidia.com>
Mon, 17 Feb 2020 12:10:34 +0000 (17:40 +0530)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tue, 25 Feb 2020 12:02:25 +0000 (12:02 +0000)
Add support to send notifications to EPF from EPC once the core
registers initialization is complete.

Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/pci/endpoint/pci-epc-core.c
include/linux/pci-epc.h
include/linux/pci-epf.h

index dc1c673..0d22a37 100644 (file)
@@ -540,11 +540,28 @@ void pci_epc_linkup(struct pci_epc *epc)
        if (!epc || IS_ERR(epc))
                return;
 
-       atomic_notifier_call_chain(&epc->notifier, 0, NULL);
+       atomic_notifier_call_chain(&epc->notifier, LINK_UP, NULL);
 }
 EXPORT_SYMBOL_GPL(pci_epc_linkup);
 
 /**
+ * pci_epc_init_notify() - Notify the EPF device that EPC device's core
+ *                        initialization is completed.
+ * @epc: the EPC device whose core initialization is completeds
+ *
+ * Invoke to Notify the EPF device that the EPC device's initialization
+ * is completed.
+ */
+void pci_epc_init_notify(struct pci_epc *epc)
+{
+       if (!epc || IS_ERR(epc))
+               return;
+
+       atomic_notifier_call_chain(&epc->notifier, CORE_INIT, NULL);
+}
+EXPORT_SYMBOL_GPL(pci_epc_init_notify);
+
+/**
  * pci_epc_destroy() - destroy the EPC device
  * @epc: the EPC device that has to be destroyed
  *
index 9ffe6bd..0d7e91b 100644 (file)
@@ -165,6 +165,7 @@ void devm_pci_epc_destroy(struct device *dev, struct pci_epc *epc);
 void pci_epc_destroy(struct pci_epc *epc);
 int pci_epc_add_epf(struct pci_epc *epc, struct pci_epf *epf);
 void pci_epc_linkup(struct pci_epc *epc);
+void pci_epc_init_notify(struct pci_epc *epc);
 void pci_epc_remove_epf(struct pci_epc *epc, struct pci_epf *epf);
 int pci_epc_write_header(struct pci_epc *epc, u8 func_no,
                         struct pci_epf_header *hdr);
index bcdf4f0..0c628e3 100644 (file)
 
 struct pci_epf;
 
+enum pci_notify_event {
+       CORE_INIT,
+       LINK_UP,
+};
+
 enum pci_barno {
        BAR_0,
        BAR_1,