diff mbox series

[3/4] astbmc/slot: Add _add_slot_info()

Message ID 20180821043752.16679-3-oohall@gmail.com
State Accepted
Headers show
Series [1/4] zaius: Add a slot table | expand

Checks

Context Check Description
snowpatch_ozlabs/apply_patch success master/apply_patch Successfully applied

Commit Message

Oliver O'Halloran Aug. 21, 2018, 4:37 a.m. UTC
Currently slot_table_get_slot_info() scans the platform defined slot
table looking for a slot table entry that matches the device and adds
the relevant information to the struct pci_device. This patch splits
the searching and adding of the slot information into separate
functions so that we can allow the platform code to use a different
searching critera.

Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
---
 platforms/astbmc/astbmc.h |  3 +++
 platforms/astbmc/slots.c  | 24 +++++++++++++++---------
 2 files changed, 18 insertions(+), 9 deletions(-)
diff mbox series

Patch

diff --git a/platforms/astbmc/astbmc.h b/platforms/astbmc/astbmc.h
index f8548c57cccd..16ffd7dff785 100644
--- a/platforms/astbmc/astbmc.h
+++ b/platforms/astbmc/astbmc.h
@@ -101,6 +101,9 @@  extern void astbmc_exit(void);
 
 extern void slot_table_init(const struct slot_table_entry *top_table);
 extern void slot_table_get_slot_info(struct phb *phb, struct pci_device * pd);
+void slot_table_add_slot_info(struct pci_device *pd,
+		const struct slot_table_entry *ent);
+
 void dt_slot_get_slot_info(struct phb *phb, struct pci_device *pd);
 
 #endif /* __ASTBMC_H */
diff --git a/platforms/astbmc/slots.c b/platforms/astbmc/slots.c
index 5c0effd1689c..0bd840308855 100644
--- a/platforms/astbmc/slots.c
+++ b/platforms/astbmc/slots.c
@@ -96,18 +96,13 @@  static void slot_table_add_properties(struct pci_slot *slot,
 		pci_slot_add_loc(slot, np, NULL);
 }
 
-void slot_table_get_slot_info(struct phb *phb, struct pci_device *pd)
+void slot_table_add_slot_info(struct pci_device *pd,
+		const struct slot_table_entry *ent)
 {
-	const struct slot_table_entry *ent;
 	struct pci_slot *slot;
 
-	if (!pd || pd->slot)
-		return;
-
-	ent = match_slot_dev_entry(phb, pd);
-
 	if (!ent || !ent->name) {
-		slot = pcie_slot_create_dynamic(phb, pd);
+		slot = pcie_slot_create_dynamic(pd->phb, pd);
 		if (slot) {
 			slot->ops.add_properties = slot_table_add_properties;
 			slot->pluggable = true;
@@ -116,7 +111,7 @@  void slot_table_get_slot_info(struct phb *phb, struct pci_device *pd)
 		return;
 	}
 
-	slot = pcie_slot_create(phb, pd);
+	slot = pcie_slot_create(pd->phb, pd);
 	assert(slot);
 
 	slot->pluggable = !!(ent->etype == st_pluggable_slot);
@@ -125,6 +120,17 @@  void slot_table_get_slot_info(struct phb *phb, struct pci_device *pd)
 	slot->data = (void *)ent;
 }
 
+void slot_table_get_slot_info(struct phb *phb, struct pci_device *pd)
+{
+	const struct slot_table_entry *ent;
+
+	if (!pd || pd->slot)
+		return;
+
+	ent = match_slot_dev_entry(phb, pd);
+	slot_table_add_slot_info(pd, ent);
+}
+
 static void dt_slot_add_properties(struct pci_slot *slot,
 				struct dt_node *np)
 {