diff options
-rw-r--r-- | platforms/astbmc/firestone.c | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/platforms/astbmc/firestone.c b/platforms/astbmc/firestone.c index 445a28b..4eed429 100644 --- a/platforms/astbmc/firestone.c +++ b/platforms/astbmc/firestone.c @@ -23,6 +23,114 @@ #include "astbmc.h" +static const struct slot_table_entry firestone_phb0_0_slot[] = { + { + .etype = st_pluggable_slot, + .location = ST_LOC_DEVFN(0,0), + .name = "Slot5", + }, + { .etype = st_end }, +}; + +static const struct slot_table_entry firestone_phb0_1_slot[] = { + { + .etype = st_pluggable_slot, + .location = ST_LOC_DEVFN(0,0), + .name = "Slot4", + }, + { .etype = st_end }, +}; + +static const struct slot_table_entry firestone_phb8_0_slot[] = { + { + .etype = st_pluggable_slot, + .location = ST_LOC_DEVFN(0,0), + .name = "Slot2", + }, + { .etype = st_end }, +}; + +static const struct slot_table_entry firestone_plx_slots[] = { + { + .etype = st_pluggable_slot, + .location = ST_LOC_DEVFN(1,0), + .name = "Slot 3", + }, + { + .etype = st_builtin_dev, + .location = ST_LOC_DEVFN(9,0), + .name = "Backplane USB", + }, + { + .etype = st_builtin_dev, + .location = ST_LOC_DEVFN(0xa,0), + .name = "Backplane SATA", + }, + { + .etype = st_builtin_dev, + .location = ST_LOC_DEVFN(0xb,0), + .name = "Backplane BMC", + }, + { .etype = st_end }, +}; + +static const struct slot_table_entry firestone_plx_up[] = { + { + .etype = st_builtin_dev, + .location = ST_LOC_DEVFN(0,0), + .children = firestone_plx_slots, + }, + { .etype = st_end }, +}; + +static const struct slot_table_entry firestone_phb8_1_slot[] = { + { + .etype = st_builtin_dev, + .location = ST_LOC_DEVFN(0,0), + .name = "Backplane PLX", + .children = firestone_plx_up, + }, + { .etype = st_end }, +}; + +static const struct slot_table_entry firestone_phb8_2_slot[] = { + { + .etype = st_pluggable_slot, + .location = ST_LOC_DEVFN(0,0), + .name = "Slot1", + }, + { .etype = st_end }, +}; + +static const struct slot_table_entry firestone_phb_table[] = { + { + .etype = st_phb, + .location = ST_LOC_PHB(0,0), + .children = firestone_phb0_0_slot, + }, + { + .etype = st_phb, + .location = ST_LOC_PHB(0,1), + .children = firestone_phb0_1_slot, + }, + { + .etype = st_phb, + .location = ST_LOC_PHB(8,0), + .children = firestone_phb8_0_slot, + }, + { + .etype = st_phb, + .location = ST_LOC_PHB(8,1), + .children = firestone_phb8_1_slot, + }, + { + .etype = st_phb, + .location = ST_LOC_PHB(8,2), + .children = firestone_phb8_2_slot, + }, + { .etype = st_end }, +}; + static bool firestone_probe(void) { if (!dt_node_is_compatible(dt_root, "ibm,firestone")) @@ -31,6 +139,7 @@ static bool firestone_probe(void) /* Lot of common early inits here */ astbmc_early_init(); prd_init(); + slot_table_init(firestone_phb_table); return true; } @@ -40,6 +149,7 @@ DECLARE_PLATFORM(firestone) = { .name = "Firestone", .probe = firestone_probe, .init = astbmc_init, + .pci_get_slot_info = slot_table_get_slot_info, .external_irq = astbmc_ext_irq_serirq_cpld, .cec_power_down = astbmc_ipmi_power_down, .cec_reboot = astbmc_ipmi_reboot, |