diff options
author | Andrew Jeffery <andrew@aj.id.au> | 2018-10-09 00:32:33 -0700 |
---|---|---|
committer | Stewart Smith <stewart@linux.ibm.com> | 2018-10-31 16:49:21 +1100 |
commit | dacc40af25fb8a44dbe82269438ebbb3d605afbd (patch) | |
tree | 1835ce78105d1037fc4a555378a1508e9f779ea4 | |
parent | ae947a88fec95fb42816fbbbbb13784bbdd67cff (diff) | |
download | skiboot-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.c | 50 | ||||
-rw-r--r-- | include/ast.h | 2 | ||||
-rw-r--r-- | platforms/astbmc/common.c | 47 |
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(); } |