aboutsummaryrefslogtreecommitdiff
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
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>
-rw-r--r--core/pci-quirk.c21
-rw-r--r--core/test/run-pci-quirk.c8
-rw-r--r--hw/ast-bmc/ast-io.c2
-rw-r--r--hw/ipmi/ipmi-sel.c8
-rw-r--r--include/ast.h1
-rw-r--r--include/platform.h16
-rw-r--r--libflash/ipmi-hiomap.c31
-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
19 files changed, 135 insertions, 49 deletions
diff --git a/core/pci-quirk.c b/core/pci-quirk.c
index 7ed6b79..3a85836 100644
--- a/core/pci-quirk.c
+++ b/core/pci-quirk.c
@@ -14,9 +14,12 @@
* limitations under the License.
*/
+#define pr_fmt(fmt) "PCI-QUIRK: " fmt
+
#include <skiboot.h>
#include <pci.h>
#include <pci-quirk.h>
+#include <platform.h>
#include <ast.h>
static void quirk_astbmc_vga(struct phb *phb __unused,
@@ -25,10 +28,20 @@ static void quirk_astbmc_vga(struct phb *phb __unused,
struct dt_node *np = pd->dn;
uint32_t revision, mcr_configuration, mcr_scu_mpll, mcr_scu_strap;
- revision = ast_ahb_readl(SCU_REVISION_ID);
- mcr_configuration = ast_ahb_readl(MCR_CONFIGURATION);
- mcr_scu_mpll = ast_ahb_readl(MCR_SCU_MPLL);
- mcr_scu_strap = ast_ahb_readl(MCR_SCU_STRAP);
+ if (ast_sio_is_enabled()) {
+ revision = ast_ahb_readl(SCU_REVISION_ID);
+ mcr_configuration = ast_ahb_readl(MCR_CONFIGURATION);
+ mcr_scu_mpll = ast_ahb_readl(MCR_SCU_MPLL);
+ mcr_scu_strap = ast_ahb_readl(MCR_SCU_STRAP);
+ } else {
+ prlog(PR_WARNING, "Assumed platform default parameters for %s\n",
+ __func__);
+ revision = bmc_platform->hw->scu_revision_id;
+ mcr_configuration = bmc_platform->hw->mcr_configuration;
+ mcr_scu_mpll = bmc_platform->hw->mcr_scu_mpll;
+ mcr_scu_strap = bmc_platform->hw->mcr_scu_strap;
+ }
+
dt_add_property_cells(np, "aspeed,scu-revision-id", revision);
dt_add_property_cells(np, "aspeed,mcr-configuration", mcr_configuration);
dt_add_property_cells(np, "aspeed,mcr-scu-mpll", mcr_scu_mpll);
diff --git a/core/test/run-pci-quirk.c b/core/test/run-pci-quirk.c
index b9db680..2f71302 100644
--- a/core/test/run-pci-quirk.c
+++ b/core/test/run-pci-quirk.c
@@ -7,6 +7,14 @@
struct dt_property;
struct dt_node;
+static struct bmc_platform fake_bmc;
+const struct bmc_platform *bmc_platform = &fake_bmc;
+
+static int ast_sio_is_enabled(void)
+{
+ return 0;
+}
+
static uint32_t ast_ahb_readl(uint32_t reg)
{
return reg;
diff --git a/hw/ast-bmc/ast-io.c b/hw/ast-bmc/ast-io.c
index e053484..38ca86c 100644
--- a/hw/ast-bmc/ast-io.c
+++ b/hw/ast-bmc/ast-io.c
@@ -321,7 +321,7 @@ static void ast_setup_sio_irq_polarity(void)
bmc_sio_put(true);
}
-static bool ast_sio_is_enabled(void)
+bool ast_sio_is_enabled(void)
{
int64_t rc;
diff --git a/hw/ipmi/ipmi-sel.c b/hw/ipmi/ipmi-sel.c
index cfcd1d4..0996275 100644
--- a/hw/ipmi/ipmi-sel.c
+++ b/hw/ipmi/ipmi-sel.c
@@ -334,7 +334,7 @@ static void ipmi_elog_poll(struct ipmi_msg *msg)
struct errorlog *elog_buf = (struct errorlog *) msg->user_data;
size_t req_size;
- if (bmc_platform->ipmi_oem_partial_add_esel == 0) {
+ if (bmc_platform->sw->ipmi_oem_partial_add_esel == 0) {
prlog(PR_WARNING, "Dropped eSEL: BMC code is buggy/missing\n");
return;
}
@@ -392,7 +392,7 @@ static void ipmi_elog_poll(struct ipmi_msg *msg)
}
ipmi_init_msg(msg, IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_partial_add_esel,
+ bmc_platform->sw->ipmi_oem_partial_add_esel,
ipmi_elog_poll, elog_buf, req_size, 2);
msg->data[0] = reservation_id & 0xff;
@@ -464,7 +464,7 @@ static void sel_pnor(uint8_t access, void *context __unused)
switch (access) {
case REQUEST_PNOR:
prlog(PR_NOTICE, "PNOR access requested\n");
- if (bmc_platform->ipmi_oem_pnor_access_status == 0) {
+ if (bmc_platform->sw->ipmi_oem_pnor_access_status == 0) {
/**
* @fwts-label PNORAccessYeahButNoBut
* @fwts-advice OPAL doesn't know that the BMC supports
@@ -479,7 +479,7 @@ static void sel_pnor(uint8_t access, void *context __unused)
if (granted)
occ_pnor_set_owner(PNOR_OWNER_EXTERNAL);
/* Ack the request */
- msg = ipmi_mkmsg_simple(bmc_platform->ipmi_oem_pnor_access_status, &granted, 1);
+ msg = ipmi_mkmsg_simple(bmc_platform->sw->ipmi_oem_pnor_access_status, &granted, 1);
ipmi_queue_msg(msg);
break;
case RELEASE_PNOR:
diff --git a/include/ast.h b/include/ast.h
index c3e1718..c6684fc 100644
--- a/include/ast.h
+++ b/include/ast.h
@@ -81,6 +81,7 @@
void ast_ahb_writel(uint32_t val, uint32_t reg);
uint32_t ast_ahb_readl(uint32_t reg);
+bool ast_sio_is_enabled(void);
bool ast_sio_init(void);
bool ast_io_init(void);
bool ast_io_is_rw(void);
diff --git a/include/platform.h b/include/platform.h
index 294e06c..56f9f3d 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -34,9 +34,15 @@ enum resource_id {
#define RESOURCE_SUBID_NONE 0
#define RESOURCE_SUBID_SUPPORTED 1
-struct bmc_platform {
- const char *name;
+struct bmc_hw_config {
+ uint32_t scu_revision_id;
+ uint32_t mcr_configuration;
+ uint32_t mcr_scu_mpll;
+ uint32_t mcr_scu_strap;
+};
+
+struct bmc_sw_config {
/*
* Map IPMI_OEM_X to vendor commands for this BMC
* 0 = unimplimented
@@ -46,6 +52,12 @@ struct bmc_platform {
uint32_t ipmi_oem_hiomap_cmd;
};
+struct bmc_platform {
+ const char *name;
+ const struct bmc_hw_config *hw;
+ const struct bmc_sw_config *sw;
+};
+
/* OpenCAPI platform-specific I2C information */
struct platform_ocapi {
uint8_t i2c_engine; /* I2C engine number */
diff --git a/libflash/ipmi-hiomap.c b/libflash/ipmi-hiomap.c
index 03f6bd8..d36c5f1 100644
--- a/libflash/ipmi-hiomap.c
+++ b/libflash/ipmi-hiomap.c
@@ -226,8 +226,8 @@ static bool hiomap_get_info(struct ipmi_hiomap *ctx)
req[2] = HIOMAP_V2;
msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_hiomap_cmd, ipmi_hiomap_cmd_cb,
- &res, req, sizeof(req), 6);
+ bmc_platform->sw->ipmi_oem_hiomap_cmd,
+ ipmi_hiomap_cmd_cb, &res, req, sizeof(req), 6);
ipmi_queue_msg_sync(msg);
if (res.cc != IPMI_CC_NO_ERROR) {
@@ -251,8 +251,8 @@ static bool hiomap_get_flash_info(struct ipmi_hiomap *ctx)
req[0] = HIOMAP_C_GET_FLASH_INFO;
req[1] = ++ctx->seq;
msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_hiomap_cmd, ipmi_hiomap_cmd_cb,
- &res, req, sizeof(req), 2 + 2 + 2);
+ bmc_platform->sw->ipmi_oem_hiomap_cmd,
+ ipmi_hiomap_cmd_cb, &res, req, sizeof(req), 2 + 2 + 2);
ipmi_queue_msg_sync(msg);
if (res.cc != IPMI_CC_NO_ERROR) {
@@ -294,8 +294,9 @@ static bool hiomap_window_move(struct ipmi_hiomap *ctx, uint8_t command,
unlock(&ctx->lock);
msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_hiomap_cmd, ipmi_hiomap_cmd_cb,
- &res, req, sizeof(req), 2 + 2 + 2 + 2);
+ bmc_platform->sw->ipmi_oem_hiomap_cmd,
+ ipmi_hiomap_cmd_cb, &res, req, sizeof(req),
+ 2 + 2 + 2 + 2);
ipmi_queue_msg_sync(msg);
if (res.cc != IPMI_CC_NO_ERROR) {
@@ -348,8 +349,8 @@ static bool hiomap_mark_dirty(struct ipmi_hiomap *ctx, uint64_t offset,
range->size = cpu_to_le16(bytes_to_blocks(ctx, size));
msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_hiomap_cmd, ipmi_hiomap_cmd_cb,
- &res, req, sizeof(req), 2);
+ bmc_platform->sw->ipmi_oem_hiomap_cmd,
+ ipmi_hiomap_cmd_cb, &res, req, sizeof(req), 2);
ipmi_queue_msg_sync(msg);
if (res.cc != IPMI_CC_NO_ERROR) {
@@ -381,8 +382,8 @@ static bool hiomap_flush(struct ipmi_hiomap *ctx)
req[1] = ++ctx->seq;
msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_hiomap_cmd, ipmi_hiomap_cmd_cb,
- &res, req, sizeof(req), 2);
+ bmc_platform->sw->ipmi_oem_hiomap_cmd,
+ ipmi_hiomap_cmd_cb, &res, req, sizeof(req), 2);
ipmi_queue_msg_sync(msg);
if (res.cc != IPMI_CC_NO_ERROR) {
@@ -406,8 +407,8 @@ static bool hiomap_ack(struct ipmi_hiomap *ctx, uint8_t ack)
req[2] = ack;
msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_hiomap_cmd, ipmi_hiomap_cmd_cb,
- &res, req, sizeof(req), 2);
+ bmc_platform->sw->ipmi_oem_hiomap_cmd,
+ ipmi_hiomap_cmd_cb, &res, req, sizeof(req), 2);
ipmi_queue_msg_sync(msg);
if (res.cc != IPMI_CC_NO_ERROR) {
@@ -446,8 +447,8 @@ static bool hiomap_erase(struct ipmi_hiomap *ctx, uint64_t offset,
range->size = cpu_to_le16(bytes_to_blocks(ctx, size));
msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE,
- bmc_platform->ipmi_oem_hiomap_cmd, ipmi_hiomap_cmd_cb,
- &res, req, sizeof(req), 2);
+ bmc_platform->sw->ipmi_oem_hiomap_cmd,
+ ipmi_hiomap_cmd_cb, &res, req, sizeof(req), 2);
ipmi_queue_msg_sync(msg);
if (res.cc != IPMI_CC_NO_ERROR) {
@@ -787,7 +788,7 @@ int ipmi_hiomap_init(struct blocklevel_device **bl)
struct ipmi_hiomap *ctx;
int rc;
- if (!bmc_platform->ipmi_oem_hiomap_cmd)
+ if (!bmc_platform->sw->ipmi_oem_hiomap_cmd)
/* FIXME: Find a better error code */
return FLASH_ERR_DEVICE_GONE;
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,