[U-Boot] [PATCH 1/1] OMAP3: add boot status GPIO LED for IGEP boards

Igor Grinberg grinberg at compulab.co.il
Sun Dec 23 08:59:32 CET 2012


On 12/22/12 03:49, Javier Martinez Canillas wrote:
> This patch adds an GPIO LED boot status for IGEP boards.
> 
> The GPIO LED used is the red LED0 while the Linux kernel
> uses the green LED0 as the boot status.
> 
> By using different GPIO LEDs, the user can know in which
> step of the boot process the board currently is.
> 
> Signed-off-by: Javier Martinez Canillas <javier.martinez at collabora.co.uk>
> ---
>  board/isee/igep0020/Makefile   |    4 ++-
>  board/isee/igep0020/igep0020.c |    9 +++++
>  board/isee/igep0030/Makefile   |    4 ++-
>  board/isee/igep0030/igep0030.c |    9 +++++
>  board/isee/led.c               |   74 ++++++++++++++++++++++++++++++++++++++++
>  include/configs/igep00x0.h     |   11 ++++++
>  6 files changed, 109 insertions(+), 2 deletions(-)
>  create mode 100644 board/isee/led.c

[...]

> diff --git a/board/isee/igep0020/igep0020.c b/board/isee/igep0020/igep0020.c
> index a8257a3..7930f4e 100644
> --- a/board/isee/igep0020/igep0020.c
> +++ b/board/isee/igep0020/igep0020.c

[...]

> @@ -52,9 +55,15 @@ static const u32 gpmc_lan_config[] = {
>  int board_init(void)
>  {
>  	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
> +	/* machine type for kernel */
> +	gd->bd->bi_arch_number = MACH_TYPE_IGEP0020;

Please, use CONFIG_MACH_TYPE instead.

[...]

> diff --git a/board/isee/igep0030/igep0030.c b/board/isee/igep0030/igep0030.c
> index 107cb7f..394a6cf 100644
> --- a/board/isee/igep0030/igep0030.c
> +++ b/board/isee/igep0030/igep0030.c

[...]

> @@ -39,9 +42,15 @@ DECLARE_GLOBAL_DATA_PTR;
>  int board_init(void)
>  {
>  	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
> +	/* machine type for kernel */
> +	gd->bd->bi_arch_number = MACH_TYPE_IGEP0030;

same here

[...]

> diff --git a/board/isee/led.c b/board/isee/led.c
> new file mode 100644
> index 0000000..b7a9a02
> --- /dev/null
> +++ b/board/isee/led.c

[...]

> +
> +/* GPIO pins for the LED */
> +#define IGEP0020_GPIO_LED    27
> +#define IGEP0030_GPIO_LED    16
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +static int __get_gpio()
> +{
> +	if (gd->bd->bi_arch_number == MACH_TYPE_IGEP0020)
> +		return IGEP0020_GPIO_LED;
> +	else
> +		return IGEP0030_GPIO_LED;
> +}

Once you define the CONFIG_MACH_TYPE in your board config file,
you can then just do something like:

#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020)
#define IGEP_GPIO_LED	27
#else /* MACH_TYPE_IGEP0030 */
#define IGEP_GPIO_LED	16
#endif

remove the above function completely and just use IGEP_GPIO_LED define.
This will also probably simplify the below code.
What do you think?

> +
> +void __led_init(led_id_t mask, int state)
> +{
> +	__led_set(mask, state);
> +}
> +
> +void __led_toggle(led_id_t mask)
> +{
> +	int state, toggle_gpio = 0;
> +
> +	toggle_gpio = __get_gpio();
> +
> +	if (!gpio_request(toggle_gpio, "")) {
> +		gpio_direction_output(toggle_gpio, 0);
> +		state = gpio_get_value(toggle_gpio);
> +		gpio_set_value(toggle_gpio, !state);
> +	}
> +}
> +
> +void __led_set(led_id_t mask, int state)
> +{
> +	int gpio = __get_gpio();
> +
> +	if (!gpio_request(gpio, "")) {
> +		gpio_direction_output(gpio, 0);
> +		gpio_set_value(gpio, state);
> +	}
> +}
> diff --git a/include/configs/igep00x0.h b/include/configs/igep00x0.h
> index be7937d..a583be2 100644
> --- a/include/configs/igep00x0.h
> +++ b/include/configs/igep00x0.h
> @@ -82,6 +82,17 @@
>  #define CONFIG_OMAP_HSMMC		1
>  #define CONFIG_DOS_PARTITION		1
>  
> +/* Status LED */
> +#define CONFIG_STATUS_LED               1
> +#define CONFIG_BOARD_SPECIFIC_LED       1
> +#define STATUS_LED_BIT                  0x01
> +#define STATUS_LED_STATE                STATUS_LED_ON
> +#define STATUS_LED_PERIOD               (CONFIG_SYS_HZ / 2)
> +#define STATUS_LED_BIT1                 0x02
> +#define STATUS_LED_STATE1               STATUS_LED_ON
> +#define STATUS_LED_PERIOD1              (CONFIG_SYS_HZ / 2)
> +#define STATUS_LED_BOOT                 STATUS_LED_BIT
> +
>  /* USB */
>  #define CONFIG_MUSB_UDC			1
>  #define CONFIG_USB_OMAP3		1

-- 
Regards,
Igor.


More information about the U-Boot mailing list