Skip to content

Commit

Permalink
astbmc/slot: Add _add_slot_info()
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
  • Loading branch information
oohal authored and stewartsmith committed Sep 13, 2018
1 parent c079587 commit 7a9eb51
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
3 changes: 3 additions & 0 deletions platforms/astbmc/astbmc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
24 changes: 15 additions & 9 deletions platforms/astbmc/slots.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand All @@ -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)
{
Expand Down

0 comments on commit 7a9eb51

Please sign in to comment.