aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Jeffery <andrew@aj.id.au>2018-10-09 00:32:33 -0700
committerStewart Smith <stewart@linux.ibm.com>2018-10-31 16:49:21 +1100
commitdacc40af25fb8a44dbe82269438ebbb3d605afbd (patch)
tree1835ce78105d1037fc4a555378a1508e9f779ea4
parentae947a88fec95fb42816fbbbbb13784bbdd67cff (diff)
downloadskiboot-dacc40af25fb8a44dbe82269438ebbb3d605afbd.zip
skiboot-dacc40af25fb8a44dbe82269438ebbb3d605afbd.tar.gz
skiboot-dacc40af25fb8a44dbe82269438ebbb3d605afbd.tar.bz2
astbmc: Remove coordinated isolation support
[ Upstream commit 1a1ff0ab2c78f9257bb77301191df38242d11f0d ] Signed-off-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
-rw-r--r--hw/ast-bmc/ast-io.c50
-rw-r--r--include/ast.h2
-rw-r--r--platforms/astbmc/common.c47
3 files changed, 6 insertions, 93 deletions
diff --git a/hw/ast-bmc/ast-io.c b/hw/ast-bmc/ast-io.c
index 10ba56c..7f8c2da 100644
--- a/hw/ast-bmc/ast-io.c
+++ b/hw/ast-bmc/ast-io.c
@@ -360,56 +360,6 @@ bool ast_sio_init(void)
return enabled;
}
-bool ast_sio_disable(void)
-{
- uint32_t hw_strapping;
- uint32_t silicon_rev;
- uint8_t family;
-
- /* Determine the necessary strapping value */
- silicon_rev = ast_ahb_readl(SCU_REVISION_ID);
- family = SCU_REVISION_SOC_FAMILY(silicon_rev);
-
- if (family == SCU_REVISION_SOC_FAMILY_2400) {
- /* Strapping is read-modify-write on SCU70 */
- hw_strapping = SCU_STRAP_SIO_DECODE_DISABLE;
- hw_strapping |= ast_ahb_readl(SCU_HW_STRAPPING);
- } else if (family == SCU_REVISION_SOC_FAMILY_2500) {
- /*
- * Strapping is W1S on SCU70, W1C on SCU7C. We're setting a bit
- * so read-modify-write *should* work, but in reality it breaks
- * the AXI/AHB divider, so don't do that.
- */
- hw_strapping = SCU_STRAP_SIO_DECODE_DISABLE;
- } else {
- prerror("PLAT: Unrecognised BMC silicon revision 0x%x\n",
- silicon_rev);
- return false;
- }
-
- /* Apply the strapping value */
- bmc_sio_get(BMC_SIO_DEV_LPC2AHB);
-
- bmc_sio_ahb_prep(SCU_HW_STRAPPING, 2);
-
- bmc_sio_outb(hw_strapping >> 24, 0xf4);
- bmc_sio_outb(hw_strapping >> 16, 0xf5);
- bmc_sio_outb(hw_strapping >> 8, 0xf6);
- bmc_sio_outb(hw_strapping , 0xf7);
-
- lpc_irq_err_mask_sync_no_response();
- bmc_sio_outb(0xcf, 0xfe);
-
- bmc_sio_put(true);
-
- return true;
-}
-
-bool ast_can_isolate_sp(void)
-{
- return bmc_sio_inb(BMC_SIO_PLAT_FLAGS) & BMC_SIO_PLAT_ISOLATE_SP;
-}
-
bool ast_io_is_rw(void)
{
return !(ast_ahb_readl(LPC_HICRB) & LPC_HICRB_ILPC_DISABLE);
diff --git a/include/ast.h b/include/ast.h
index 4c8fd81..c3e1718 100644
--- a/include/ast.h
+++ b/include/ast.h
@@ -82,8 +82,6 @@ void ast_ahb_writel(uint32_t val, uint32_t reg);
uint32_t ast_ahb_readl(uint32_t reg);
bool ast_sio_init(void);
-bool ast_can_isolate_sp(void);
-bool ast_sio_disable(void);
bool ast_io_init(void);
bool ast_io_is_rw(void);
bool ast_lpc_fw_maps_flash(void);
diff --git a/platforms/astbmc/common.c b/platforms/astbmc/common.c
index 836b05c..b0f0830 100644
--- a/platforms/astbmc/common.c
+++ b/platforms/astbmc/common.c
@@ -414,23 +414,15 @@ void astbmc_early_init(void)
psi_set_external_irq_policy(EXTERNAL_IRQ_POLICY_SKIBOOT);
if (ast_sio_init()) {
- if (!ast_can_isolate_sp()) {
- /*
- * BMCs claiming support for isolation must have
- * correctly configured the UART and BT for host
- * firmware. If not, let's apply some fixups for broken
- * BMC firmwares.
- */
- if (ast_io_init()) {
- astbmc_fixup_uart();
- ast_setup_ibt(BT_IO_BASE, BT_LPC_IRQ);
- } else
- prerror("PLAT: AST IO initialisation failed!\n");
- }
+ if (ast_io_init()) {
+ astbmc_fixup_uart();
+ ast_setup_ibt(BT_IO_BASE, BT_LPC_IRQ);
+ } else
+ prerror("PLAT: AST IO initialisation failed!\n");
ast_setup_sio_mbox(MBOX_IO_BASE, MBOX_LPC_IRQ);
} else
- prerror("PLAT: AST SIO initialisation failed!\n");
+ prlog(PR_WARNING, "PLAT: AST SIO unavailable!\n");
/* Setup UART and use it as console */
uart_init();
@@ -438,35 +430,8 @@ void astbmc_early_init(void)
prd_init();
}
-static bool astbmc_isolate_via_io(void)
-{
- return ast_sio_disable();
-}
-
-static bool astbmc_isolate_via_ipmi(void)
-{
- return false;
-}
-
-static void astbmc_isolate(void)
-{
- bool isolated;
-
- isolated = ast_io_is_rw() ? astbmc_isolate_via_io()
- : astbmc_isolate_via_ipmi();
-
- if (!isolated) {
- prlog(PR_EMERG, "PLAT: BMC isolation failed\n");
- abort();
- }
-
- prlog(PR_INFO, "PLAT: Isolated BMC\n");
-}
-
void astbmc_exit(void)
{
- if (ast_can_isolate_sp())
- astbmc_isolate();
ipmi_wdt_final_reset();
}