aboutsummaryrefslogtreecommitdiff
path: root/platforms
diff options
context:
space:
mode:
authorAndrew Jeffery <andrew@aj.id.au>2018-10-09 00:32:36 -0700
committerStewart Smith <stewart@linux.ibm.com>2018-10-11 01:26:20 -0500
commit9a830ee06c66058b1421c017b25a65a22921e9f6 (patch)
treefad2405598bb7f620b3915599b0de948b614b91a /platforms
parentdd554bacd13c6dea481ea4e1ec9f3c32087295d9 (diff)
downloadskiboot-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.h9
-rw-r--r--platforms/astbmc/common.c40
-rw-r--r--platforms/astbmc/firestone.c2
-rw-r--r--platforms/astbmc/garrison.c2
-rw-r--r--platforms/astbmc/habanero.c2
-rw-r--r--platforms/astbmc/p8dnu.c11
-rw-r--r--platforms/astbmc/p8dtu.c12
-rw-r--r--platforms/astbmc/p9dsu.c11
-rw-r--r--platforms/astbmc/palmetto.c2
-rw-r--r--platforms/astbmc/romulus.c2
-rw-r--r--platforms/astbmc/vesnin.c2
-rw-r--r--platforms/astbmc/witherspoon.c2
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,