A function is created to detrmine if the boot mode is secure or non-secure for differnt SoC's. Signed-off-by: Aneesh Bansal <aneesh.bansal@nxp.com> Acked-by: Ruchika Gupta <ruchika.gupta@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>master
parent
bdc22074c5
commit
0a6b2714ad
@ -0,0 +1,53 @@ |
||||
/*
|
||||
* Copyright 2015 Freescale Semiconductor, Inc. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <fsl_validate.h> |
||||
#include <fsl_sfp.h> |
||||
|
||||
#ifdef CONFIG_LS102XA |
||||
#include <asm/arch/immap_ls102xa.h> |
||||
#endif |
||||
|
||||
#if defined(CONFIG_MPC85xx) |
||||
#define CONFIG_DCFG_ADDR CONFIG_SYS_MPC85xx_GUTS_ADDR |
||||
#else |
||||
#define CONFIG_DCFG_ADDR CONFIG_SYS_FSL_GUTS_ADDR |
||||
#endif |
||||
|
||||
#ifdef CONFIG_SYS_FSL_CCSR_GUR_LE |
||||
#define gur_in32(a) in_le32(a) |
||||
#else |
||||
#define gur_in32(a) in_be32(a) |
||||
#endif |
||||
|
||||
/* Check the Boot Mode. If Secure, return 1 else return 0 */ |
||||
int fsl_check_boot_mode_secure(void) |
||||
{ |
||||
uint32_t val; |
||||
struct ccsr_sfp_regs *sfp_regs = (void *)(CONFIG_SYS_SFP_ADDR); |
||||
struct ccsr_gur __iomem *gur = (void *)(CONFIG_DCFG_ADDR); |
||||
|
||||
val = sfp_in32(&sfp_regs->ospr) & ITS_MASK; |
||||
if (val == ITS_MASK) |
||||
return 1; |
||||
|
||||
#if defined(CONFIG_FSL_CORENET) || !defined(CONFIG_MPC85xx) |
||||
/* For PBL based platforms check the SB_EN bit in RCWSR */ |
||||
val = gur_in32(&gur->rcwsr[RCW_SB_EN_REG_INDEX - 1]) & RCW_SB_EN_MASK; |
||||
if (val == RCW_SB_EN_MASK) |
||||
return 1; |
||||
#endif |
||||
|
||||
#if defined(CONFIG_MPC85xx) && !defined(CONFIG_FSL_CORENET) |
||||
/* For Non-PBL Platforms, check the Device Status register 2*/ |
||||
val = gur_in32(&gur->pordevsr2) & MPC85xx_PORDEVSR2_SBC_MASK; |
||||
if (val != MPC85xx_PORDEVSR2_SBC_MASK) |
||||
return 1; |
||||
|
||||
#endif |
||||
return 0; |
||||
} |
Loading…
Reference in new issue