From: Lukasz Majewski <lukma@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/3] imx: Add a common way for detecting NXP boards revision
Date: Thu, 23 Nov 2017 10:08:42 +0100 [thread overview]
Message-ID: <20171123100842.33633512@jawa> (raw)
In-Reply-To: <1511356528-8005-1-git-send-email-festevam@gmail.com>
On Wed, 22 Nov 2017 11:15:26 -0200
Fabio Estevam <festevam@gmail.com> wrote:
> From: Fabio Estevam <fabio.estevam@nxp.com>
>
> 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>
> ---
> arch/arm/include/asm/mach-imx/sys_proto.h | 3 ++
> arch/arm/mach-imx/Kconfig | 8 +++++
> arch/arm/mach-imx/cpu.c | 27 +++++++++++++++++
> board/freescale/mx6sabreauto/mx6sabreauto.c | 47
> ++---------------------------
> configs/mx6sabreauto_defconfig | 1 + 5 files changed,
> 41 insertions(+), 45 deletions(-)
>
> diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h
> b/arch/arm/include/asm/mach-imx/sys_proto.h index 7036343..d5e3eec
> 100644 --- a/arch/arm/include/asm/mach-imx/sys_proto.h
> +++ b/arch/arm/include/asm/mach-imx/sys_proto.h
> @@ -109,6 +109,9 @@ void imx_set_wdog_powerdown(bool enable);
>
> int board_mmc_get_env_dev(int devno);
>
> +int nxp_board_rev(void);
> +const char *nxp_board_rev_string(void);
> +
> /*
> * Initializes on-chip ethernet controllers.
> * to override, implement board_eth_init()
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index cd8b8d2..81ab125 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -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.
> diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
> index 18205dc..84e829e 100644
> --- a/arch/arm/mach-imx/cpu.c
> +++ b/arch/arm/mach-imx/cpu.c
> @@ -323,3 +323,30 @@ 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);
> +}
> +
> +const char *nxp_board_rev_string(void)
> +{
> + char *rev = "A" - 1;
> +
> + rev += nxp_board_rev();
> +
> + return rev;
> +}
> +#endif
> diff --git a/board/freescale/mx6sabreauto/mx6sabreauto.c
> b/board/freescale/mx6sabreauto/mx6sabreauto.c index bdeb5f7..ced254a
> 100644 --- a/board/freescale/mx6sabreauto/mx6sabreauto.c
> +++ b/board/freescale/mx6sabreauto/mx6sabreauto.c
> @@ -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%s\n",
> nxp_board_rev_string());
> return 0;
> }
> diff --git a/configs/mx6sabreauto_defconfig
> b/configs/mx6sabreauto_defconfig index 418a836..215700b 100644
> --- a/configs/mx6sabreauto_defconfig
> +++ b/configs/mx6sabreauto_defconfig
> @@ -8,6 +8,7 @@ CONFIG_SPL_MMC_SUPPORT=y
> CONFIG_SPL_SERIAL_SUPPORT=y
> CONFIG_SPL_LIBDISK_SUPPORT=y
> CONFIG_SPL_WATCHDOG_SUPPORT=y
> +CONFIG_NXP_BOARD_REVISION=y
> CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
> # CONFIG_CONSOLE_MUX is not set
> CONFIG_SYS_CONSOLE_IS_IN_ENV=y
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171123/def0e992/attachment.sig>
next prev parent reply other threads:[~2017-11-23 9:08 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-22 13:15 [U-Boot] [PATCH 1/3] imx: Add a common way for detecting NXP boards revision Fabio Estevam
2017-11-22 13:15 ` [U-Boot] [PATCH 2/3] mx6sxsabresd: Load the correct dtb for revA board Fabio Estevam
2017-11-22 14:01 ` Stefano Babic
2017-11-23 9:08 ` Lukasz Majewski
2017-11-22 13:15 ` [U-Boot] [PATCH 3/3] mx6sxsabresd: Use PARTUUID to specify the rootfs location Fabio Estevam
2017-11-22 14:01 ` Stefano Babic
2017-11-23 9:08 ` Lukasz Majewski
2017-11-22 14:00 ` [U-Boot] [PATCH 1/3] imx: Add a common way for detecting NXP boards revision Stefano Babic
2017-11-23 9:08 ` Lukasz Majewski [this message]
2017-11-27 9:15 ` Stefano Babic
2017-11-27 10:28 ` Fabio Estevam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171123100842.33633512@jawa \
--to=lukma@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.