diff options
Diffstat (limited to 'platforms')
-rw-r--r-- | platforms/astbmc/witherspoon.c | 356 |
1 files changed, 0 insertions, 356 deletions
diff --git a/platforms/astbmc/witherspoon.c b/platforms/astbmc/witherspoon.c index b9ed277..9460b6d 100644 --- a/platforms/astbmc/witherspoon.c +++ b/platforms/astbmc/witherspoon.c @@ -30,317 +30,10 @@ #include "astbmc.h" -static const struct slot_table_entry witherspoon_slot1[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0,0), - .name = "SLOT0" - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_slot2_shared[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0,0), - .name = "SLOT1" - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_slot3[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0,0), - .name = "SLOT2" - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_slot4[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0,0), - .name = "SLOT3" - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_gpu0[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0x80,0), - .name = "GPU0", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_gpu1[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0xa0,0), - .name = "GPU1", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_gpu2[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0xc0,0), - .name = "GPU2", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_gpu3[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0x60,0), - .name = "GPU3", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_gpu4[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0x80,0), - .name = "GPU4", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_gpu5[] = { - { - .etype = st_pluggable_slot, - .location = ST_LOC_DEVFN(0xa0,0), - .name = "GPU5", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_plx0_down[] = { - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x4a,0), - .children = witherspoon_gpu0, - .name = "GPU0 down", - }, - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x4b,0), - .children = witherspoon_gpu1, - .name = "GPU1 down", - }, - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x4c,0), - .children = witherspoon_gpu2, - .name = "GPU2 down", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_plx1_down[] = { - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x44,0), - .children = witherspoon_gpu3, - .name = "GPU3 down", - }, - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x45,0), - .children = witherspoon_gpu4, - .name = "GPU4 down", - }, - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x4d,0), - .children = witherspoon_gpu5, - .name = "GPU5 down", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_plx0_up[] = { - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x20,0), - .children = witherspoon_plx0_down, - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_plx1_up[] = { - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0x20,0), - .children = witherspoon_plx1_down, - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_plx0_phb[] = { - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0,0), - .children = witherspoon_plx0_up, - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_plx1_phb[] = { - { - .etype = st_builtin_dev, - .location = ST_LOC_DEVFN(0,0), - .children = witherspoon_plx1_up, - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_npu0_slots[] = { - { - .etype = st_npu_slot, - .location = ST_LOC_NPU_GROUP(0), - .name = "GPU0", - }, - { - .etype = st_npu_slot, - .location = ST_LOC_NPU_GROUP(1), - .name = "GPU1", - }, - { - .etype = st_npu_slot, - .location = ST_LOC_NPU_GROUP(2), - .name = "GPU2", - }, - { .etype = st_end }, -}; - -static const struct slot_table_entry witherspoon_npu8_slots[] = { - { - .etype = st_npu_slot, - .location = ST_LOC_NPU_GROUP(0), - .name = "GPU3", - }, - { - .etype = st_npu_slot, - .location = ST_LOC_NPU_GROUP(1), - .name = "GPU4", - }, - { - .etype = st_npu_slot, - .location = ST_LOC_NPU_GROUP(2), - .name = "GPU5", - }, - { .etype = st_end }, -}; - -/* - * Slot numbering: - * - * slot 1 - x4 slot - * slot 2 - shared slot, 8x to each chip's PHB3 - * slot 3 - 16x \w CAPI, second chip - * slot 4 - 16x \w CAPI, first chip - */ - -static const struct slot_table_entry witherspoon_phb_table[] = { - ST_PHB_ENTRY(0, 0, witherspoon_slot4), - ST_PHB_ENTRY(0, 3, witherspoon_slot2_shared), - ST_PHB_ENTRY(0, 4, witherspoon_plx0_phb), - ST_PHB_ENTRY(0, 7, witherspoon_npu0_slots), - - ST_PHB_ENTRY(8, 0, witherspoon_slot3), - ST_PHB_ENTRY(8, 3, witherspoon_slot2_shared), - ST_PHB_ENTRY(8, 4, witherspoon_slot1), - ST_PHB_ENTRY(8, 5, witherspoon_plx1_phb), - ST_PHB_ENTRY(8, 8, witherspoon_npu8_slots), - - { .etype = st_end }, -}; - -#define NPU_BASE 0x5011000 -#define NPU_SIZE 0x2c -#define NPU_INDIRECT0 0x8000000009010c3f -#define NPU_INDIRECT1 0x800000000c010c3f - -static void create_link(struct dt_node *npu, int group, int index) -{ - struct dt_node *link; - uint32_t lane_mask; - uint64_t phy; - char namebuf[32]; - - snprintf(namebuf, sizeof(namebuf), "link@%x", index); - link = dt_new(npu, namebuf); - - dt_add_property_string(link, "compatible", "ibm,npu-link"); - dt_add_property_cells(link, "ibm,npu-link-index", index); - - if (!(index / 3)) - phy = NPU_INDIRECT0; - else - phy = NPU_INDIRECT1; - - switch (index % 3) { - case 0: - lane_mask = 0xf1e000; - break; - - case 1: - lane_mask = 0x0e1870; - break; - - case 2: - lane_mask = 0x00078f; - break; - - default: - assert(0); - } - - dt_add_property_u64s(link, "ibm,npu-phy", phy); - dt_add_property_cells(link, "ibm,npu-lane-mask", lane_mask); - dt_add_property_cells(link, "ibm,npu-group-id", group); -} - -static void dt_create_npu2(void) -{ - struct dt_node *xscom, *npu; - char namebuf[32]; - int phb_index = 7; - int npu_index = 0; - - dt_for_each_compatible(dt_root, xscom, "ibm,xscom") { - snprintf(namebuf, sizeof(namebuf), "npu@%x", NPU_BASE); - npu = dt_new(xscom, namebuf); - dt_add_property_cells(npu, "reg", NPU_BASE, NPU_SIZE); - dt_add_property_strings(npu, "compatible", "ibm,power9-npu"); - - dt_add_property_cells(npu, "ibm,phb-index", phb_index++); - dt_add_property_cells(npu, "ibm,npu-index", npu_index++); - dt_add_property_cells(npu, "ibm,npu-links", 6); - - create_link(npu, 0, 0); - create_link(npu, 0, 1); - create_link(npu, 1, 2); - create_link(npu, 1, 3); - create_link(npu, 2, 4); - create_link(npu, 2, 5); - } -} - static bool witherspoon_probe(void) { if (!dt_node_is_compatible(dt_root, "ibm,witherspoon")) return false; - if (!dt_find_by_name(dt_root, "ibm,pcie-slots")) - return false; - if (!dt_find_compatible_node(dt_root, NULL, "ibm,power9-npu")) - return false; /* Lot of common early inits here */ astbmc_early_init(); @@ -351,37 +44,6 @@ static bool witherspoon_probe(void) return true; } -static bool old_witherspoon_probe(void) -{ - struct dt_node *slots, *npu; - - if (!dt_node_is_compatible(dt_root, "ibm,witherspoon")) - return false; - - slots = dt_find_by_name(dt_root, "ibm,pcie-slots"); - npu = dt_find_compatible_node(dt_root, NULL, "ibm,power9-npu"); - - if (slots && npu) - return false; - - /* Lot of common early inits here */ - astbmc_early_init(); - - /* Setup UART for use by OPAL (Linux hvc) */ - uart_set_console_policy(UART_CONSOLE_OPAL); - - - /* Add NPU2 bindings */ - if (!npu) - dt_create_npu2(); - - slot_table_init(witherspoon_phb_table); - - prerror("!!! Old witherspoon firmware detected. Update hostboot and fix the Planar VPD !!!\n"); - - return true; -} - static void phb4_activate_shared_slot_witherspoon(struct proc_chip *chip) { uint64_t val; @@ -488,21 +150,3 @@ DECLARE_PLATFORM(witherspoon) = { .pci_get_slot_info = dt_slot_get_slot_info, }; - -DECLARE_PLATFORM(old_witherspoon) = { - .name = "Witherspoon (old)", - .probe = old_witherspoon_probe, - .init = astbmc_init, - .pre_pci_fixup = witherspoon_pre_pci_fixup, - .start_preload_resource = flash_start_preload_resource, - .resource_loaded = flash_resource_loaded, - .bmc = &astbmc_openbmc, - .cec_power_down = astbmc_ipmi_power_down, - .cec_reboot = astbmc_ipmi_reboot, - .elog_commit = ipmi_elog_commit, - .exit = ipmi_wdt_final_reset, - .terminate = ipmi_terminate, - - .pci_get_slot_info = slot_table_get_slot_info, - .pci_probe_complete = check_all_slot_table, -}; |