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

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@collabora.co.uk ---
Changes since v1: - Don't set gd->bd->bi_arch_number since is done in arch/arm/lib/board.c - Use CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020 instead of check bi_arch_number as suggested by Igor Grinberg.
board/isee/igep0020/Makefile | 4 ++- board/isee/igep0020/igep0020.c | 7 +++++ board/isee/igep0030/Makefile | 4 ++- board/isee/igep0030/igep0030.c | 7 +++++ board/isee/led.c | 58 ++++++++++++++++++++++++++++++++++++++++ include/configs/igep00x0.h | 11 +++++++ 6 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 board/isee/led.c
diff --git a/board/isee/igep0020/Makefile b/board/isee/igep0020/Makefile index 00463e1..5ead151 100644 --- a/board/isee/igep0020/Makefile +++ b/board/isee/igep0020/Makefile @@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).o
-COBJS := igep0020.o +COBJS-y := igep0020.o +COBJS-$(CONFIG_STATUS_LED) += ../led.o
+COBJS := $(sort $(COBJS-y)) SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))
diff --git a/board/isee/igep0020/igep0020.c b/board/isee/igep0020/igep0020.c index a8257a3..c4fe138 100644 --- a/board/isee/igep0020/igep0020.c +++ b/board/isee/igep0020/igep0020.c @@ -21,6 +21,9 @@ * MA 02111-1307 USA */ #include <common.h> +#ifdef CONFIG_STATUS_LED +#include <status_led.h> +#endif #include <netdev.h> #include <twl4030.h> #include <asm/io.h> @@ -55,6 +58,10 @@ int board_init(void) /* boot param addr */ gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
+#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT) + status_led_set(STATUS_LED_BOOT, STATUS_LED_ON); +#endif + return 0; }
diff --git a/board/isee/igep0030/Makefile b/board/isee/igep0030/Makefile index cbc03d4..1ca011d 100644 --- a/board/isee/igep0030/Makefile +++ b/board/isee/igep0030/Makefile @@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).o
-COBJS := igep0030.o +COBJS-y := igep0030.o +COBJS-$(CONFIG_STATUS_LED) += ../led.o
+COBJS := $(sort $(COBJS-y)) SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))
diff --git a/board/isee/igep0030/igep0030.c b/board/isee/igep0030/igep0030.c index 107cb7f..60dabcd 100644 --- a/board/isee/igep0030/igep0030.c +++ b/board/isee/igep0030/igep0030.c @@ -21,6 +21,9 @@ * MA 02111-1307 USA */ #include <common.h> +#ifdef CONFIG_STATUS_LED +#include <status_led.h> +#endif #include <twl4030.h> #include <asm/io.h> #include <asm/arch/mem.h> @@ -42,6 +45,10 @@ int board_init(void) /* boot param addr */ gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
+#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT) + status_led_set(STATUS_LED_BOOT, STATUS_LED_ON); +#endif + return 0; }
diff --git a/board/isee/led.c b/board/isee/led.c new file mode 100644 index 0000000..023ad67 --- /dev/null +++ b/board/isee/led.c @@ -0,0 +1,58 @@ +/* + * IGEP boards GPIO LED support + * + * Author: Javier Martinez Canillas javier@collabora.co.uk + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <status_led.h> +#include <asm/arch/cpu.h> +#include <asm/io.h> +#include <asm/arch/sys_proto.h> +#include <asm/gpio.h> + +/* GPIO pin for the LED */ +#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) +#define IGEP_GPIO_LED 27 +#else /* MACH_TYPE_IGEP0030 */ +#define IGEP_GPIO_LED 16 +#endif + +void __led_init(led_id_t mask, int state) +{ + __led_set(mask, state); +} + +void __led_toggle(led_id_t mask) +{ + int state; + + if (!gpio_request(IGEP_GPIO_LED, "")) { + gpio_direction_output(IGEP_GPIO_LED, 0); + state = gpio_get_value(IGEP_GPIO_LED); + gpio_set_value(IGEP_GPIO_LED, !state); + } +} + +void __led_set(led_id_t mask, int state) +{ + if (!gpio_request(IGEP_GPIO_LED, "")) { + gpio_direction_output(IGEP_GPIO_LED, 0); + gpio_set_value(IGEP_GPIO_LED, 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

On 12/23/12 14:31, 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@collabora.co.uk
Acked-by: Igor Grinberg grinberg@compulab.co.il

Dear Javier Martinez Canillas,
In message 1356265899-18669-1-git-send-email-javier.martinez@collabora.co.uk you 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@collabora.co.uk
Do we really need yet another implementation of boot status signalling? I think no.
Please implement this a board specific version of the show_boot_progress() feature (see CONFIG_SHOW_BOOT_PROGRESS).
Thanks - and sorry, but NAK for this implementation.
Best regards,
Wolfgang Denk

On 12/24/12 02:39, Wolfgang Denk wrote:
Dear Javier Martinez Canillas,
In message 1356265899-18669-1-git-send-email-javier.martinez@collabora.co.uk you 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@collabora.co.uk
Do we really need yet another implementation of boot status signalling? I think no.
Please implement this a board specific version of the show_boot_progress() feature (see CONFIG_SHOW_BOOT_PROGRESS).
That sounds reasonable. Although, I don't know if there are appropriate check points implemented, but certainly, that is the way to go.

On Mon, Dec 24, 2012 at 1:39 AM, Wolfgang Denk wd@denx.de wrote:
Dear Javier Martinez Canillas,
Hello Wolfgang,
Thanks a lot for your feedback.
In message 1356265899-18669-1-git-send-email-javier.martinez@collabora.co.uk you 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@collabora.co.uk
Do we really need yet another implementation of boot status signalling? I think no.
Please implement this a board specific version of the show_boot_progress() feature (see CONFIG_SHOW_BOOT_PROGRESS).
ok, I wasn't aware of the CONFIG_SHOW_BOOT_PROGRESS infrastructure and thought that CONFIG_STATUS_LED was the way to go.
Thanks - and sorry, but NAK for this implementation.
ok, I'll send a v3 using show_boot_progress().
Best regards,
Wolfgang Denk
Thanks a lot and merry christmas! Javier
participants (3)
-
Igor Grinberg
-
Javier Martinez Canillas
-
Wolfgang Denk