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
@@ -397,39 +397,9 @@ int board_eth_init(bd_t *bis)
|
||||
return cpu_eth_init(bis);
|
||||
}
|
||||
|
||||
#define BOARD_REV_B 0x200
|
||||
#define BOARD_REV_A 0x100
|
||||
|
||||
static int mx6sabre_rev(void)
|
||||
{
|
||||
/*
|
||||
* Get Board ID information from OCOTP_GP1[15:8]
|
||||
* i.MX6Q ARD RevA: 0x01
|
||||
* i.MX6Q ARD RevB: 0x02
|
||||
*/
|
||||
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;
|
||||
int reg = readl(&fuse->gp1);
|
||||
int ret;
|
||||
|
||||
switch (reg >> 8 & 0x0F) {
|
||||
case 0x02:
|
||||
ret = BOARD_REV_B;
|
||||
break;
|
||||
case 0x01:
|
||||
default:
|
||||
ret = BOARD_REV_A;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
u32 get_board_rev(void)
|
||||
{
|
||||
int rev = mx6sabre_rev();
|
||||
int rev = nxp_board_rev();
|
||||
|
||||
return (get_cpu_rev() & ~(0xF << 8)) | rev;
|
||||
}
|
||||
@@ -703,20 +673,7 @@ int board_late_init(void)
|
||||
|
||||
int checkboard(void)
|
||||
{
|
||||
int rev = mx6sabre_rev();
|
||||
char *revname;
|
||||
|
||||
switch (rev) {
|
||||
case BOARD_REV_B:
|
||||
revname = "B";
|
||||
break;
|
||||
case BOARD_REV_A:
|
||||
default:
|
||||
revname = "A";
|
||||
break;
|
||||
}
|
||||
|
||||
printf("Board: MX6Q-Sabreauto rev%s\n", revname);
|
||||
printf("Board: MX6Q-Sabreauto rev%c\n", nxp_board_rev_string());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user