imx: Add a common way for detecting NXP boards revision
NXP development boards based on i.MX6/i.MX7 contain the board revision information stored in the fuses. Introduce a common function that can be shared by different boards and convert mx6sabreauto to use this new mechanism. Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
This commit is contained in:
committed by
Stefano Babic
parent
9a7295831e
commit
4555c26142
@@ -109,6 +109,9 @@ void imx_wdog_disable_powerdown(void);
|
||||
|
||||
int board_mmc_get_env_dev(int devno);
|
||||
|
||||
int nxp_board_rev(void);
|
||||
char nxp_board_rev_string(void);
|
||||
|
||||
/*
|
||||
* Initializes on-chip ethernet controllers.
|
||||
* to override, implement board_eth_init()
|
||||
|
||||
@@ -61,3 +61,11 @@ config CMD_HDMIDETECT
|
||||
help
|
||||
This enables the 'hdmidet' command which detects if an HDMI monitor
|
||||
is connected.
|
||||
|
||||
config NXP_BOARD_REVISION
|
||||
bool "Read NXP board revision from fuses"
|
||||
depends on ARCH_MX6 || ARCH_MX7
|
||||
help
|
||||
NXP boards based on i.MX6/7 contain the board revision information
|
||||
stored in the fuses. Select this option if you want to be able to
|
||||
retrieve the board revision information.
|
||||
|
||||
@@ -323,3 +323,28 @@ void set_chipselect_size(int const cs_size)
|
||||
|
||||
writel(reg, &iomuxc_regs->gpr[1]);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NXP_BOARD_REVISION
|
||||
int nxp_board_rev(void)
|
||||
{
|
||||
/*
|
||||
* Get Board ID information from OCOTP_GP1[15:8]
|
||||
* RevA: 0x1
|
||||
* RevB: 0x2
|
||||
* RevC: 0x3
|
||||
*/
|
||||
struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
|
||||
struct fuse_bank *bank = &ocotp->bank[4];
|
||||
struct fuse_bank4_regs *fuse =
|
||||
(struct fuse_bank4_regs *)bank->fuse_regs;
|
||||
|
||||
return (readl(&fuse->gp1) >> 8 & 0x0F);
|
||||
}
|
||||
|
||||
char nxp_board_rev_string(void)
|
||||
{
|
||||
const char *rev = "A";
|
||||
|
||||
return (*rev + nxp_board_rev() - 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user