diff options
author | Andrew Jeffery <andrew@aj.id.au> | 2018-10-09 00:32:36 -0700 |
---|---|---|
committer | Stewart Smith <stewart@linux.ibm.com> | 2018-10-11 01:26:20 -0500 |
commit | 9a830ee06c66058b1421c017b25a65a22921e9f6 (patch) | |
tree | fad2405598bb7f620b3915599b0de948b614b91a /platforms | |
parent | dd554bacd13c6dea481ea4e1ec9f3c32087295d9 (diff) | |
download | skiboot-9a830ee06c66058b1421c017b25a65a22921e9f6.zip skiboot-9a830ee06c66058b1421c017b25a65a22921e9f6.tar.gz skiboot-9a830ee06c66058b1421c017b25a65a22921e9f6.tar.bz2 |
platform: Restructure bmc_platform type
Segregate the BMC platform configuration into hardware and software
components. This allows population of platform default values for
hardware configuration that may no-longer be accessible by the host.
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
[stewart: fixup pci-quirk unit test]
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Diffstat (limited to 'platforms')
-rw-r--r-- | platforms/astbmc/astbmc.h | 9 | ||||
-rw-r--r-- | platforms/astbmc/common.c | 40 | ||||
-rw-r--r-- | platforms/astbmc/firestone.c | 2 | ||||
-rw-r--r-- | platforms/astbmc/garrison.c | 2 | ||||
-rw-r--r-- | platforms/astbmc/habanero.c | 2 | ||||
-rw-r--r-- | platforms/astbmc/p8dnu.c | 11 | ||||
-rw-r--r-- | platforms/astbmc/p8dtu.c | 12 | ||||
-rw-r--r-- | platforms/astbmc/p9dsu.c | 11 | ||||
-rw-r--r-- | platforms/astbmc/palmetto.c | 2 | ||||
-rw-r--r-- | platforms/astbmc/romulus.c | 2 | ||||
-rw-r--r-- | platforms/astbmc/vesnin.c | 2 | ||||
-rw-r--r-- | platforms/astbmc/witherspoon.c | 2 |
12 files changed, 74 insertions, 23 deletions
diff --git a/platforms/astbmc/astbmc.h b/platforms/astbmc/astbmc.h index 16ffd7d..fe358b7 100644 --- a/platforms/astbmc/astbmc.h +++ b/platforms/astbmc/astbmc.h @@ -18,6 +18,8 @@ #ifndef __ASTBMC_H #define __ASTBMC_H +#include <platform.h> + #define ST_LOC_PHB(chip_id, phb_idx) ((chip_id) << 16 | (phb_idx)) #define ST_LOC_DEVFN(dev, fn) ((dev) << 3 | (fn)) /* @@ -87,8 +89,11 @@ static struct slot_table_entry st_name[] = \ ##__VA_ARGS__ \ } -extern const struct bmc_platform astbmc_ami; -extern const struct bmc_platform astbmc_openbmc; +extern const struct bmc_hw_config bmc_hw_ast2400; +extern const struct bmc_hw_config bmc_hw_ast2500; +extern const struct bmc_platform bmc_plat_ast2400_ami; +extern const struct bmc_platform bmc_plat_ast2500_ami; +extern const struct bmc_platform bmc_plat_ast2500_openbmc; extern void astbmc_early_init(void); extern int64_t astbmc_ipmi_reboot(void); diff --git a/platforms/astbmc/common.c b/platforms/astbmc/common.c index 0cf70e2..10aed3f 100644 --- a/platforms/astbmc/common.c +++ b/platforms/astbmc/common.c @@ -427,14 +427,46 @@ void astbmc_exit(void) ipmi_wdt_final_reset(); } -const struct bmc_platform astbmc_ami = { - .name = "AMI", +const struct bmc_sw_config bmc_sw_ami = { .ipmi_oem_partial_add_esel = IPMI_CODE(0x3a, 0xf0), .ipmi_oem_pnor_access_status = IPMI_CODE(0x3a, 0x07), }; -const struct bmc_platform astbmc_openbmc = { - .name = "OpenBMC", +const struct bmc_sw_config bmc_sw_openbmc = { .ipmi_oem_partial_add_esel = IPMI_CODE(0x3a, 0xf0), .ipmi_oem_hiomap_cmd = IPMI_CODE(0x3a, 0x5a), }; + +/* Extracted from a Palmetto */ +const struct bmc_hw_config bmc_hw_ast2400 = { + .scu_revision_id = 0x2010303, + .mcr_configuration = 0x00000577, + .mcr_scu_mpll = 0x000050c0, + .mcr_scu_strap = 0x00000000, +}; + +/* Extracted from a Witherspoon */ +const struct bmc_hw_config bmc_hw_ast2500 = { + .scu_revision_id = 0x04030303, + .mcr_configuration = 0x11200756, + .mcr_scu_mpll = 0x000071C1, + .mcr_scu_strap = 0x00000000, +}; + +const struct bmc_platform bmc_plat_ast2400_ami = { + .name = "ast2400:ami", + .hw = &bmc_hw_ast2400, + .sw = &bmc_sw_ami, +}; + +const struct bmc_platform bmc_plat_ast2500_ami = { + .name = "ast2500:ami", + .hw = &bmc_hw_ast2500, + .sw = &bmc_sw_ami, +}; + +const struct bmc_platform bmc_plat_ast2500_openbmc = { + .name = "ast2500:openbmc", + .hw = &bmc_hw_ast2500, + .sw = &bmc_sw_openbmc, +}; diff --git a/platforms/astbmc/firestone.c b/platforms/astbmc/firestone.c index fc6575b..28719e3 100644 --- a/platforms/astbmc/firestone.c +++ b/platforms/astbmc/firestone.c @@ -146,7 +146,7 @@ static bool firestone_probe(void) DECLARE_PLATFORM(firestone) = { .name = "Firestone", - .bmc = &astbmc_ami, + .bmc = &bmc_plat_ast2400_ami, .probe = firestone_probe, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, diff --git a/platforms/astbmc/garrison.c b/platforms/astbmc/garrison.c index db886cb..6c914fd 100644 --- a/platforms/astbmc/garrison.c +++ b/platforms/astbmc/garrison.c @@ -293,7 +293,7 @@ static bool garrison_probe(void) DECLARE_PLATFORM(garrison) = { .name = "Garrison", - .bmc = &astbmc_ami, + .bmc = &bmc_plat_ast2400_ami, .probe = garrison_probe, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, diff --git a/platforms/astbmc/habanero.c b/platforms/astbmc/habanero.c index 2856a97..8e11b81 100644 --- a/platforms/astbmc/habanero.c +++ b/platforms/astbmc/habanero.c @@ -136,7 +136,7 @@ static bool habanero_probe(void) DECLARE_PLATFORM(habanero) = { .name = "Habanero", - .bmc = &astbmc_ami, + .bmc = &bmc_plat_ast2400_ami, .probe = habanero_probe, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, diff --git a/platforms/astbmc/p8dnu.c b/platforms/astbmc/p8dnu.c index e4aeed4..d808c69 100644 --- a/platforms/astbmc/p8dnu.c +++ b/platforms/astbmc/p8dnu.c @@ -337,16 +337,21 @@ static bool p8dnu_probe(void) return true; } -static const struct bmc_platform astbmc_smc = { - .name = "SMC", +static const struct bmc_sw_config bmc_sw_smc = { .ipmi_oem_partial_add_esel = IPMI_CODE(0x3a, 0xf0), .ipmi_oem_pnor_access_status = IPMI_CODE(0x3a, 0x07), }; +static const struct bmc_platform bmc_plat_ast2400_smc = { + .name = "SMC", + .hw = &bmc_hw_ast2400, + .sw = &bmc_sw_smc, +}; + DECLARE_PLATFORM(p8dnu) = { .name = "P8DNU", .probe = p8dnu_probe, - .bmc = &astbmc_smc, + .bmc = &bmc_plat_ast2400_smc, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, .cec_power_down = astbmc_ipmi_power_down, diff --git a/platforms/astbmc/p8dtu.c b/platforms/astbmc/p8dtu.c index 63d36fb..b5627d2 100644 --- a/platforms/astbmc/p8dtu.c +++ b/platforms/astbmc/p8dtu.c @@ -227,17 +227,21 @@ static bool p8dtu2u_probe(void) return true; } -static const struct bmc_platform astbmc_smc = { - .name = "SMC", +static const struct bmc_sw_config bmc_sw_smc = { .ipmi_oem_partial_add_esel = IPMI_CODE(0x3a, 0xf0), .ipmi_oem_pnor_access_status = IPMI_CODE(0x3a, 0x07), }; +static const struct bmc_platform bmc_plat_ast2400_smc = { + .name = "SMC", + .hw = &bmc_hw_ast2400, + .sw = &bmc_sw_smc, +}; DECLARE_PLATFORM(p8dtu1u) = { .name = "p8dtu1u", .probe = p8dtu1u_probe, - .bmc = &astbmc_smc, + .bmc = &bmc_plat_ast2400_smc, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, .pci_probe_complete = check_all_slot_table, @@ -254,7 +258,7 @@ DECLARE_PLATFORM(p8dtu1u) = { DECLARE_PLATFORM(p8dtu2u) = { .name = "p8dtu2u", .probe = p8dtu2u_probe, - .bmc = &astbmc_smc, + .bmc = &bmc_plat_ast2400_smc, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, .pci_probe_complete = check_all_slot_table, diff --git a/platforms/astbmc/p9dsu.c b/platforms/astbmc/p9dsu.c index e14b071..234d25c 100644 --- a/platforms/astbmc/p9dsu.c +++ b/platforms/astbmc/p9dsu.c @@ -683,18 +683,23 @@ static void p9dsu_init(void) } } -static const struct bmc_platform astbmc_smc = { - .name = "SMC", +static const struct bmc_sw_config bmc_sw_smc = { .ipmi_oem_partial_add_esel = IPMI_CODE(0x3a, 0xf0), }; +static const struct bmc_platform bmc_plat_ast2500_smc = { + .name = "SMC", + .hw = &bmc_hw_ast2500, + .sw = &bmc_sw_smc, +}; + DECLARE_PLATFORM(p9dsu1u) = { .name = "p9dsu", .probe = p9dsu_probe, .init = p9dsu_init, .start_preload_resource = flash_start_preload_resource, .resource_loaded = flash_resource_loaded, - .bmc = &astbmc_smc, + .bmc = &bmc_plat_ast2500_smc, .pci_get_slot_info = slot_table_get_slot_info, .cec_power_down = astbmc_ipmi_power_down, .cec_reboot = astbmc_ipmi_reboot, diff --git a/platforms/astbmc/palmetto.c b/platforms/astbmc/palmetto.c index 69f111c..29739c0 100644 --- a/platforms/astbmc/palmetto.c +++ b/platforms/astbmc/palmetto.c @@ -121,7 +121,7 @@ static bool palmetto_probe(void) DECLARE_PLATFORM(palmetto) = { .name = "Palmetto", .probe = palmetto_probe, - .bmc = &astbmc_ami, + .bmc = &bmc_plat_ast2400_ami, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, .pci_probe_complete = check_all_slot_table, diff --git a/platforms/astbmc/romulus.c b/platforms/astbmc/romulus.c index 67c5946..7bb07cc 100644 --- a/platforms/astbmc/romulus.c +++ b/platforms/astbmc/romulus.c @@ -74,7 +74,7 @@ DECLARE_PLATFORM(romulus) = { .init = astbmc_init, .start_preload_resource = flash_start_preload_resource, .resource_loaded = flash_resource_loaded, - .bmc = &astbmc_openbmc, + .bmc = &bmc_plat_ast2500_openbmc, .pci_get_slot_info = slot_table_get_slot_info, .pci_probe_complete = check_all_slot_table, .cec_power_down = astbmc_ipmi_power_down, diff --git a/platforms/astbmc/vesnin.c b/platforms/astbmc/vesnin.c index d7df191..62eb340 100644 --- a/platforms/astbmc/vesnin.c +++ b/platforms/astbmc/vesnin.c @@ -247,7 +247,7 @@ static bool vesnin_probe(void) DECLARE_PLATFORM(vesnin) = { .name = "vesnin", - .bmc = &astbmc_ami, + .bmc = &bmc_plat_ast2400_ami, .probe = vesnin_probe, .init = astbmc_init, .pci_get_slot_info = slot_table_get_slot_info, diff --git a/platforms/astbmc/witherspoon.c b/platforms/astbmc/witherspoon.c index 3c9dbc9..f45f739 100644 --- a/platforms/astbmc/witherspoon.c +++ b/platforms/astbmc/witherspoon.c @@ -364,7 +364,7 @@ DECLARE_PLATFORM(witherspoon) = { .pre_pci_fixup = witherspoon_shared_slot_fixup, .start_preload_resource = flash_start_preload_resource, .resource_loaded = flash_resource_loaded, - .bmc = &astbmc_openbmc, + .bmc = &bmc_plat_ast2500_openbmc, .cec_power_down = astbmc_ipmi_power_down, .cec_reboot = astbmc_ipmi_reboot, .elog_commit = ipmi_elog_commit, |