From e4929639cd8fe01ac799823d436034ec248bf03e Mon Sep 17 00:00:00 2001 From: Suhas K <suhas.kunnath@gadgeon.com> Date: Thu, 3 May 2018 11:30:49 +0530 Subject: [PATCH 5/9] Added CPU based board detection logic --- board/rigado/vesta/plugin.S | 25 +++++++++++++++++-------- board/rigado/vesta/vesta.c | 15 ++++++++++----- common/cmd_getboard.c | 18 ++++++++++++------ 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/board/rigado/vesta/plugin.S b/board/rigado/vesta/plugin.S index 4876a37..ea63de5 100644 --- a/board/rigado/vesta/plugin.S +++ b/board/rigado/vesta/plugin.S @@ -23,6 +23,7 @@ #define OCOTP_GP2 0x021bc670 #define ULL_ID_MASK 0x0FFC0000 #define VESTA_300B 0x007c0000 +#define MX6ULL_CPU_ID 0x65 /* DDR script */ @@ -365,32 +366,40 @@ .endm .macro imx6_ddr_setting - ldr r0, =OCOTP_BASE_ADDR + ldr r0, =ANATOP_BASE_ADDR +/*USB_ANALOG_DIGPROG offset 0x260 */ + ldr r1, [r0, #0x260] + mov r1, r1, lsr #0x10 + and r1, r1, #0xFF + ldr r2, =#MX6ULL_CPU_ID + cmp r1, r2 + bne ulcmp + ldr r0, =OCOTP_BASE_ADDR + +/*OCOTP_GP1 offset 0x660 */ ldr r1, [r0, #0x660] ldr r2, =#ULL_ID_MASK and r1, r1, r2 - ldr r2, =#0x0 + ldr r2, =VESTA_300B cmp r1, r2 - bne v300Bcmp + beq v300B +/*OCOTP_GP2 offset 0x670 */ ldr r1, [r0, #0x670] ldr r2, =#ULL_ID_MASK and r1, r1, r2 - ldr r2, =#0x0 - cmp r1, r2 - beq ulcmp - -v300Bcmp: ldr r2, =VESTA_300B cmp r1, r2 beq v300B b end ulcmp: + ldr r0, =OCOTP_BASE_ADDR +/*OCOTP_GP34 offset 0x940 */ ldr r1, [r0, #0x940] ldr r2, =#UL_ID_MASK and r1, r1, r2 diff --git a/board/rigado/vesta/vesta.c b/board/rigado/vesta/vesta.c index 41f4f82..e662df1 100644 --- a/board/rigado/vesta/vesta.c +++ b/board/rigado/vesta/vesta.c @@ -633,11 +633,16 @@ int checkboard(void) { unsigned int board_id; - board_id = (readl(OCOTP_GP1) != 0 )?readl(OCOTP_GP1):readl(OCOTP_GP2); - if ((board_id & ULL_ID_MASK) == VESTA_300B){ - puts("Board: Vesta 300B\n"); + if (is_cpu_type(MXC_CPU_MX6ULL)) { + board_id = (readl(OCOTP_GP1) != 0 )?readl(OCOTP_GP1):readl(OCOTP_GP2); + if ((board_id & ULL_ID_MASK) == VESTA_300B){ + puts("Board: Vesta 300B\n"); + } + else { + printf ("Board id not recognized\n"); + } } - else { + else if (is_cpu_type(MXC_CPU_MX6UL)) { board_id = readl(OCOTP_GP34); switch(board_id & UL_ID_MASK) { case VESTA_100: @@ -665,7 +670,7 @@ int checkboard(void) puts("Board: Vesta 64M Norflash\n"); break; default: - puts("Board: Vesta Unknown\n"); + puts("Board id not recognized\n"); break; } } diff --git a/common/cmd_getboard.c b/common/cmd_getboard.c index 16053b5..fd9c587 100644 --- a/common/cmd_getboard.c +++ b/common/cmd_getboard.c @@ -11,6 +11,7 @@ #include <common.h> #include <command.h> #include <asm/io.h> +#include <asm/imx-common/sys_proto.h> /*UL board id registers */ #define OCOTP_GP34 0x021bc940 @@ -36,12 +37,17 @@ static int do_getboard(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] { unsigned int board_id; - board_id = (readl(OCOTP_GP1) != 0)?readl(OCOTP_GP1):readl(OCOTP_GP2); - if ((board_id & ULL_ID_MASK) == VESTA_300B){ - setenv("board_type", "vesta-300B"); - setenv("fdt_file", "zImage-vesta-300B.dtb"); + if (is_cpu_type(MXC_CPU_MX6ULL)) { + board_id = (readl(OCOTP_GP1) != 0)?readl(OCOTP_GP1):readl(OCOTP_GP2); + if ((board_id & ULL_ID_MASK) == VESTA_300B){ + setenv("board_type", "vesta-300B"); + setenv("fdt_file", "zImage-vesta-300B.dtb"); + } + else { + printf ("Board id not recognized\n"); + } } - else { + else if (is_cpu_type(MXC_CPU_MX6UL)) { board_id = readl(OCOTP_GP34); switch (board_id & UL_ID_MASK) { @@ -64,7 +70,7 @@ static int do_getboard(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] setenv("fdt_file", "zImage-vesta-400.dtb"); break; default: - printf ("Board Name: 0x%x\n", board_id); + printf ("Board id not recognized"); break; }; } -- 2.7.4