From: Dan Murphy <dmurphy@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] arm: omap4: panda: Add reading of the board revision
Date: Thu, 13 Jun 2013 07:42:58 -0500 [thread overview]
Message-ID: <51B9BE52.3050000@ti.com> (raw)
In-Reply-To: <1371059667-18065-1-git-send-email-dmurphy@ti.com>
On 06/12/2013 12:54 PM, Dan Murphy wrote:
> Detect if we are running on a panda revision A1-A6,
> or an ES panda board. This can be done by reading
> the level of GPIOs and checking the processor revisions.
> This should result in:
> Panda 4430:
> GPIO171, GPIO101, GPIO182: 0 1 1 => A1-A5
> GPIO171, GPIO101, GPIO182: 1 0 1 => A6
> Panda ES:
> GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 0 1 1 => B1/B2
> GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 1 1 1 => B3
>
> Set the board name appropriately for the board revision that
> is detected.
>
> Update the findfdt macro to load the a4 device tree binary.
>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---
> board/ti/panda/panda.c | 71 +++++++++++++++++++++++++++++++++++++---
> include/configs/omap4_common.h | 2 +
> 2 files changed, 68 insertions(+), 5 deletions(-)
>
> diff --git a/board/ti/panda/panda.c b/board/ti/panda/panda.c
> index 2bbe392..65a6e14 100644
> --- a/board/ti/panda/panda.c
> +++ b/board/ti/panda/panda.c
> @@ -37,6 +37,11 @@
> #endif
>
> #define PANDA_ULPI_PHY_TYPE_GPIO 182
> +#define PANDA_BOARD_ID_1_GPIO 101
> +#define PANDA_ES_BOARD_ID_1_GPIO 48
> +#define PANDA_BOARD_ID_2_GPIO 171
> +#define PANDA_ES_BOARD_ID_3_GPIO 3
> +#define PANDA_ES_BOARD_ID_4_GPIO 2
>
> DECLARE_GLOBAL_DATA_PTR;
>
> @@ -66,6 +71,66 @@ int board_eth_init(bd_t *bis)
> return 0;
> }
>
> +/*
> +* Routine: get_board_revision
> +* Description: Detect if we are running on a panda revision A1-A6,
> +* or an ES panda board. This can be done by reading
> +* the level of GPIOs and checking the processor revisions.
> +* This should result in:
> +* Panda 4430:
> +* GPIO171, GPIO101, GPIO182: 0 1 1 => A1-A5
> +* GPIO171, GPIO101, GPIO182: 1 0 1 => A6
> +* Panda ES:
> +* GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 0 1 1 => B1/B2
> +* GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 1 1 1 => B3
> +*/
> +int get_board_revision(void)
> +{
> + int board_id0, board_id1, board_id2;
> + int board_id3, board_id4;
> + int board_id;
> +
> + int processor_rev = omap_revision();
> +
> + /* Setup the mux for the common board ID pins */
> + writew((IEN | M3), CONTROL_PADCONF_CORE + UNIPRO_TX0); /* gpio 171 */
> + writew((IEN | M3), CONTROL_PADCONF_CORE + FREF_CLK2_OUT); /* gpio 182 */
> +
> + board_id0 = gpio_get_value(PANDA_ULPI_PHY_TYPE_GPIO);
> + board_id2 = gpio_get_value(PANDA_BOARD_ID_2_GPIO);
> +
> + if (processor_rev >= OMAP4460_ES1_0 &&
> + processor_rev <= OMAP4460_ES1_1) {
> + /* Setup the mux for the ES specific board ID pins */
> + writew((IEN | M3), CONTROL_PADCONF_CORE + GPMC_A24); /* gpio 101 */
> + writew((IEN | M3), CONTROL_PADCONF_CORE + UNIPRO_RY0); /* gpio 2 */
> + writew((IEN | M3), CONTROL_PADCONF_CORE + UNIPRO_RX1); /* gpio 3 */
> +
> + board_id1 = gpio_get_value(PANDA_ES_BOARD_ID_1_GPIO);
> + board_id3 = gpio_get_value(PANDA_ES_BOARD_ID_3_GPIO);
> + board_id4 = gpio_get_value(PANDA_ES_BOARD_ID_4_GPIO);
> +
> +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
> + setenv("board_name", strcat(CONFIG_SYS_BOARD, "-es"));
> +#endif
> + board_id = ((board_id4 << 4) | (board_id3 << 3) | (board_id2 << 2) |
> + (board_id1 << 1) | (board_id0));
> + } else {
> + /* Setup the mux for the Ax specific board ID pins */
> + writew((IEN | M3), CONTROL_PADCONF_CORE + FREF_CLK2_OUT); /* gpio 101 */
> +
> + board_id1 = gpio_get_value(PANDA_BOARD_ID_1_GPIO);
> + board_id = ((board_id2 << 2) | (board_id1 << 1) | (board_id0));
> +
> +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
> + if ((board_id >= 0x3) && (processor_rev == OMAP4430_ES2_3))
> + setenv("board_name", strcat(CONFIG_SYS_BOARD, "-a4"));
> +#endif
> + }
> +
> + return board_id;
> +}
> +
> /**
> * @brief misc_init_r - Configure Panda board specific configurations
> * such as power configurations, ethernet initialization as phase2 of
> @@ -82,11 +147,7 @@ int misc_init_r(void)
> if (omap_revision() == OMAP4430_ES1_0)
> return 0;
>
> -#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
> - if (omap_revision() >= OMAP4460_ES1_0 ||
> - omap_revision() <= OMAP4460_ES1_1)
> - setenv("board_name", strcat(CONFIG_SYS_BOARD, "-es"));
> -#endif
> + get_board_revision();
>
> gpio_direction_input(PANDA_ULPI_PHY_TYPE_GPIO);
> phy_type = gpio_get_value(PANDA_ULPI_PHY_TYPE_GPIO);
> diff --git a/include/configs/omap4_common.h b/include/configs/omap4_common.h
> index d6448b0..cf41d9c 100644
> --- a/include/configs/omap4_common.h
> +++ b/include/configs/omap4_common.h
> @@ -181,6 +181,8 @@
> "setenv fdtfile omap4-sdp.dtb; fi; " \
> "if test $board_name = panda; then " \
> "setenv fdtfile omap4-panda.dtb; fi;" \
> + "if test $board_name = panda-a4; then " \
> + "setenv fdtfile omap4-panda-a4.dtb; fi;" \
> "if test $board_name = panda-es; then " \
> "setenv fdtfile omap4-panda-es.dtb; fi; \0" \
> "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
Tested on A3, A6 and ES B2.
Dan
--
------------------
Dan Murphy
next prev parent reply other threads:[~2013-06-13 12:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-12 17:54 [U-Boot] [PATCH] arm: omap4: panda: Add reading of the board revision Dan Murphy
2013-06-13 12:42 ` Dan Murphy [this message]
2013-06-13 12:47 ` Tom Rini
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=51B9BE52.3050000@ti.com \
--to=dmurphy@ti.com \
--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.