public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Nikolay Dimitrov <picmaster@mail.bg>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/5] mx6cuboxi: Differentiate Cubox-i and Hummingboard
Date: Thu, 23 Apr 2015 17:38:10 +0300	[thread overview]
Message-ID: <553903D2.70003@mail.bg> (raw)
In-Reply-To: <1429761426-26748-4-git-send-email-festevam@gmail.com>

Hi Fabio, guys,

On 04/23/2015 06:57 AM, Fabio Estevam wrote:
> From: Fabio Estevam <fabio.estevam@freescale.com>
>
> Introduce is_hummingboard() function that reads GPIOs that can distinguish
> between Cubox-i and Hummingboard.
>
> Print the board name accordingly.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
>   board/solidrun/mx6cuboxi/mx6cuboxi.c | 41 +++++++++++++++++++++++++++++++++++-
>   1 file changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
> index 1f240ae..83410b2 100644
> --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
> +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
> @@ -71,6 +71,12 @@ static iomux_v3_cfg_t const usdhc2_pads[] = {
>   	IOMUX_PADS(PAD_SD2_DAT3__SD2_DATA3	| MUX_PAD_CTRL(USDHC_PAD_CTRL)),
>   };
>
> +static iomux_v3_cfg_t const hb_cbi_sense[] = {
> +	/* These pins are for sensing if it is a CuBox-i or a HummingBoard */
> +	IOMUX_PADS(PAD_KEY_ROW1__GPIO4_IO09  | MUX_PAD_CTRL(UART_PAD_CTRL)),
> +	IOMUX_PADS(PAD_EIM_DA4__GPIO3_IO04   | MUX_PAD_CTRL(UART_PAD_CTRL)),
> +};
> +
>   static void setup_iomux_uart(void)
>   {
>   	SETUP_IOMUX_PADS(uart1_pads);
> @@ -167,9 +173,42 @@ int board_init(void)
>   	return 0;
>   }
>
> +static bool is_hummingboard(void)
> +{
> +	int val1, val2;
> +
> +	SETUP_IOMUX_PADS(hb_cbi_sense);
> +
> +	gpio_direction_input(IMX_GPIO_NR(4, 9));
> +	gpio_direction_input(IMX_GPIO_NR(3, 4));
> +
> +	val1 = gpio_get_value(IMX_GPIO_NR(4, 9));
> +	val2 = gpio_get_value(IMX_GPIO_NR(3, 4));
> +
> +	/*
> +	 * Machine selection -
> +	 * Machine        val1, val2
> +	 * -------------------------
> +	 * HB rev 3.x     x     0
> +	 * CBi            0     1
> +	 * HB             1     1
> +	 */
> +
> +	if (val2 == 0)
> +		return true;
> +	else if (val1 == 0)
> +		return false;
> +	else
> +		return true;
> +}

As more and more board variants are supported by unified source files,
functions like "is_specificboard()" are not scaling well - there's a
repetitive code for extracting hw-specific info, and then there's the
multiple functions that return true/false for each board variant.

Here's one proposal how this can be simplified a bit:

typedef enum
{
	BOARD_ALPHA,
	BOARD_BRAVO,
	BOARD_CHARLIE,
} model_t;

/* Can be also named is_board_variant() or something like this */
static bool is_board_model(model_t m)
{
	/* ... Extract HW info */

	switch (m)
	{
		case BOARD_ALPHA:
			if (check for this board model)
				return true;
			break;

		/* do same for the other board models */
		/* ... */
	}

	return false;
}

Not sure whether such code can be shared between different boards, but
can be a step towards unifying the handling of board models/variants.

I'm perfectly fine with Fabio's code here, just using the occasion to
share my idea.

> +
>   int checkboard(void)
>   {
> -	puts("Board: MX6 Hummingboard\n");
> +	if (is_hummingboard())
> +		puts("Board: MX6 Hummingboard\n");
> +	else
> +		puts("Board: MX6 Cubox-i\n");
> +
>   	return 0;
>   }
>
>

Kind regards,
Nikolay

  parent reply	other threads:[~2015-04-23 14:38 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-23  3:57 [U-Boot] [PATCH 1/5] mx6cuboxi: Fix the defconfig name Fabio Estevam
2015-04-23  3:57 ` [U-Boot] [PATCH 2/5] mx6cuboxi: Prepare for multi SoC support Fabio Estevam
2015-04-23  6:14   ` Stefano Babic
2015-04-23  3:57 ` [U-Boot] [PATCH 3/5] mx6cuboxi: Introduce multi-SoC support Fabio Estevam
2015-04-23  6:16   ` Stefano Babic
2015-04-23 19:09   ` Tom Rini
2015-04-23  3:57 ` [U-Boot] [PATCH 4/5] mx6cuboxi: Differentiate Cubox-i and Hummingboard Fabio Estevam
2015-04-23  6:16   ` Stefano Babic
2015-04-23 14:38   ` Nikolay Dimitrov [this message]
2015-04-23 15:17     ` Stefano Babic
2015-04-23  3:57 ` [U-Boot] [PATCH 5/5] mx6cuboxi: Load the correct 'fdt_file' variable Fabio Estevam
2015-04-23  6:13   ` Stefano Babic
2015-04-23 17:18     ` Fabio Estevam
2015-04-23 18:26       ` Stefano Babic
2015-04-23 19:10     ` Tom Rini
2015-04-23 18:47   ` [U-Boot] [U-Boot, " Vagrant Cascadian
2015-04-23  6:14 ` [U-Boot] [PATCH 1/5] mx6cuboxi: Fix the defconfig name Stefano Babic

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=553903D2.70003@mail.bg \
    --to=picmaster@mail.bg \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox