[U-Boot] [PATCH] tt01: add MMC and video support

board_mmc_init() initializes the pins of SDHC1 and turns on V_MMC1 of the PMIC. The video setup for the Epson display is provided along with some fancy extra info to be displayed next to the HALE logo.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at --- V1: Note this requires http://patchwork.ozlabs.org/patch/122114/
board/hale/tt01/tt01.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++- include/configs/tt01.h | 41 ++++++++++++++++++++++++++++++++++++- tools/Makefile | 3 ++ tools/logos/hale.bmp | Bin 0 -> 27238 bytes 4 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 tools/logos/hale.bmp
diff --git a/board/hale/tt01/tt01.c b/board/hale/tt01/tt01.c index 2995c8f..2ab9df1 100644 --- a/board/hale/tt01/tt01.c +++ b/board/hale/tt01/tt01.c @@ -175,8 +175,6 @@ int board_init(void)
int board_late_init(void) { - pmic_init(); - #ifdef CONFIG_HW_WATCHDOG mxc_hw_watchdog_enable(); #endif @@ -190,6 +188,36 @@ int checkboard(void) return 0; }
+#ifdef CONFIG_MXC_MMC +int board_mmc_init(bd_t *bis) +{ + u32 val; + struct pmic *p; + + /* + * this is the first driver to use the pmic, so call + * pmic_init() here. board_late_init() is too late for + * the MMC driver. + */ + pmic_init(); + p = get_pmic(); + + /* configure pins for SDHC1 only */ + mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_CLK, MUX_CTL_FUNC)); + mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_CMD, MUX_CTL_FUNC)); + mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA0, MUX_CTL_FUNC)); + mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA1, MUX_CTL_FUNC)); + mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA2, MUX_CTL_FUNC)); + mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA3, MUX_CTL_FUNC)); + + /* turn on power V_MMC1, bit 18 is the VMMC1 enable */ + if (pmic_reg_read(p, 33, &val) < 0) + pmic_reg_write(p, 33, val | 0x040000); + + return mxc_mmc_init(bis); +} +#endif + int board_eth_init(bd_t *bis) { int rc = 0; @@ -198,3 +226,24 @@ int board_eth_init(bd_t *bis) #endif return rc; } + +#ifdef CONFIG_CONSOLE_EXTRA_INFO +void video_get_info_str(int line_number, char *info) +{ + u32 srev = get_cpu_rev(); + + switch (line_number) { + case 2: + sprintf(info, " CPU : Freescale i.MX31 rev %d.%d%s at %d MHz", + (srev & 0xF0) >> 4, (srev & 0x0F), + ((srev & 0x8000) ? " unknown" : ""), + mxc_get_clock(MXC_ARM_CLK) / 1000000); + break; + case 3: + strcpy(info, " " BOARD_STRING); + break; + default: + info[0] = 0; + } +} +#endif diff --git a/include/configs/tt01.h b/include/configs/tt01.h index 4d7c7f4..243a597 100644 --- a/include/configs/tt01.h +++ b/include/configs/tt01.h @@ -180,6 +180,28 @@ #define CONFIG_SMC911X_BASE (CS4_BASE+0x200000) #define CONFIG_SMC911X_16_BIT
+/* mmc driver */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_MXC_MMC +#define CONFIG_MXC_MCI_REGS_BASE SDHC1_BASE_ADDR + +/* video support */ +#define CONFIG_VIDEO +#define CONFIG_VIDEO_MX3 +#define CONFIG_CFB_CONSOLE +#define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_BMP_LOGO +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_CONSOLE_EXTRA_INFO /* display additional board info */ +#define CONFIG_VGA_AS_SINGLE_DEVICE /* display is an output only device */ + /* allow stdin, stdout and stderr variables to redirect output */ +#define CONFIG_SYS_CONSOLE_IS_IN_ENV + +/* allow decompressing max. 4MB */ +#define CONFIG_VIDEO_BMP_GZIP +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (4*1024*1024) + /* * Command definition */ @@ -196,6 +218,7 @@ * the NAND_CMD_LOCK_STATUS command, however the NFC of i.MX31 supports * a software locking scheme. */ +#define CONFIG_CMD_BMP 1
#define CONFIG_BOOTDELAY 3
@@ -203,9 +226,18 @@ * currently a default setting for booting via script is implemented * set user to login name and serverip to tftp host, define your * boot behaviour in bootscript.loginname + * + * TT-01 board specific TFT setup (used by drivers/video/mx3fb.c) + * + * This set-up is for the L5F30947T04 by Epson, which is + * 800x480, 33MHz pixel clock, 60Hz vsync, 31.6kHz hsync + * sync must be set to: DI_D3_DRDY_SHARP_POL | DI_D3_CLK_POL */ #define CONFIG_EXTRA_ENV_SETTINGS \ - "bootcmd=dhcp bootscript.$(user); source\0" +"videomode=epson\0" \ +"epson=video=ctfb:x:800,y:480,depth:16,mode:0,pclk:30076," \ + "le:215,ri:1,up:32,lo:13,hs:7,vs:10,sync:100663296,vmode:0\0" \ +"bootcmd=dhcp bootscript.$(user); source\0"
#define CONFIG_BOOTP_SERVERIP /* tftp serverip not overruled by dhcp server */ #define CONFIG_BOOTP_SEND_HOSTNAME /* if env-var 'hostname' is set, send it */ @@ -229,6 +261,13 @@
#define CONFIG_CMDLINE_EDITING
+/* MMC boot support */ +#define CONFIG_CMD_MMC +#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT + #define CONFIG_NAND_MXC #define CONFIG_SYS_MAX_NAND_DEVICE 1 #define CONFIG_SYS_NAND_MAX_CHIPS 1 diff --git a/tools/Makefile b/tools/Makefile index fc741d3..a11f6ce 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -134,6 +134,9 @@ endif ifeq ($(VENDOR),intercontrol) LOGO_BMP= logos/intercontrol.bmp endif +ifeq ($(VENDOR),hale) +LOGO_BMP=logos/hale.bmp +endif
# now $(obj) is defined HOSTSRCS += $(addprefix $(SRCTREE)/,$(EXT_OBJ_FILES-y:.o=.c)) diff --git a/tools/logos/hale.bmp b/tools/logos/hale.bmp new file mode 100644 index 0000000000000000000000000000000000000000..efdbb4d097abb7ba7ac69e6960030ecb7e19e3cc GIT binary patch literal 27238 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
literal 0 HcmV?d00001

On 10/27/2011 06:11 PM, Helmut Raiger wrote:
board_mmc_init() initializes the pins of SDHC1 and turns on V_MMC1 of the PMIC. The video setup for the Epson display is provided along with some fancy extra info to be displayed next to the HALE logo.
Signed-off-by: Helmut Raigerhelmut.raiger@hale.at
V1: Note this requires http://patchwork.ozlabs.org/patch/122114/
board/hale/tt01/tt01.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++- include/configs/tt01.h | 41 ++++++++++++++++++++++++++++++++++++- tools/Makefile | 3 ++ tools/logos/hale.bmp | Bin 0 -> 27238 bytes 4 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 tools/logos/hale.bmp
Oops that was a bit early, the mmc patch http://patchwork.ozlabs.org/patch/122139/ is still under review. Helmut (pushing too hard)
-- Scanned by MailScanner.

On 10/27/2011 06:11 PM, Helmut Raiger wrote:
board_mmc_init() initializes the pins of SDHC1 and turns on V_MMC1 of the PMIC. The video setup for the Epson display is provided along with some fancy extra info to be displayed next to the HALE logo.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at
Hi Helmut,
- /* configure pins for SDHC1 only */
- mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_CLK, MUX_CTL_FUNC));
- mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_CMD, MUX_CTL_FUNC));
- mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA0, MUX_CTL_FUNC));
- mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA1, MUX_CTL_FUNC));
- mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA2, MUX_CTL_FUNC));
- mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA3, MUX_CTL_FUNC));
- /* turn on power V_MMC1, bit 18 is the VMMC1 enable */
- if (pmic_reg_read(p, 33, &val) < 0)
pmic_reg_write(p, 33, val | 0x040000);
- return mxc_mmc_init(bis);
+} +#endif
I have no issue regarding MMC support....
index 0000000000000000000000000000000000000000..efdbb4d097abb7ba7ac69e6960030ecb7e19e3cc GIT binary patch literal 27238 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
...but I am asking myself if it makes sense to add all these blobs to U-Boot.
I know there are other examples in U_Boot, it is not bad they are only a few. I do not know if this should be competence for the video maintainer or generally for the project, so I added both custodians. By the way, should it not possible to get what you want with CONFIG_CMD_BMP (you have already set it) and CONFIG_PREBOOT to load your image from the media you prefer (and you could also exchange it without recompiling U-Boot) instead of adding it to the U-Boot image ?
Best regards, Stefano Babic

On 11/14/2011 12:21 PM, Stefano Babic wrote:
index 0000000000000000000000000000000000000000..efdbb4d097abb7ba7ac69e6960030ecb7e19e3cc GIT binary patch literal 27238 zcmeHOy^Acz5ua&>WoLJ0Zuj<P@0PdgP#8He4unIaT(SOx7YM9CSOO=;nM0*c491zk znZd!sT%Z>S<3tk12n3Q7gFf&_Vg~|0{Hv<&>h9UuW8R_dxre6UW@oymKYsPAuCDH$ zd-b))Z)7a56j}CN-2EGWKgM64%{l%1kF)IQLjE`bmuJtOW&ir@qwL9>FX8Xy?0?U` z&b~(4`@eWCyT$V@(!c!hN%r(-KgyoG^-}h?KmIEF1JeHc&(E{lw||g*{M(;r|M}um ....
...but I am asking myself if it makes sense to add all these blobs to U-Boot.
I know there are other examples in U_Boot, it is not bad they are only a few. I do not know if this should be competence for the video maintainer or generally for the project, so I added both custodians. By the way, should it not possible to get what you want with CONFIG_CMD_BMP (you have already set it) and CONFIG_PREBOOT to load your image from the media you prefer (and you could also exchange it without recompiling U-Boot) instead of adding it to the U-Boot image ?
Best regards, Stefano Babi
Hi,
I tried to walk the preboot path, but it seems I can't get what I want. CONFIG_VIDEO_LOGO leaves some space on the top left area of the display for the logo AND the scrolling of the text (console redirected to VGA) avoids this area. Using CONFIG_CONSOLE_EXTRA_INFO places the data on the right side of the logo (which again is not scrolled).
The only way I can think of to avoid blobs like our logo is to patch cfb_console.c to allow something like:
#define CONFIG_VIDEO_NO_LOGO(w) (w == 0 ? 100 : 200)
#ifdef CONFIG_VIDEO_NO_LOGO #define VIDEO_LOGO_WIDTH CONFIG_VIDEO_NO_LOGO(0) #define VIDEO_LOGO_HEIGHT CONFIG_VIDEO_NO_LOGO(1) #else ... other cases
(or use 3 macros), then use preboot to display the logo where it is supposed to be. Still the extra info can't be put to the area right to the logo (to prevent it to be scrolled away).
Any suggestions? Helmut
-- Scanned by MailScanner.

This enables the display on tt-01 along with some minor setup changes (and fixes) for the release. I removed the HALE logo again, using preboot we can use a splash image like approach, but left in the console extra info as it provides useful information even if the screen is used as stdout.
[PATCH 1/3] tt01: fix environment size [PATCH 2/3] tt01: add video support [PATCH 3/3] tt01: fix hush parser config, add release config
-- Scanned by MailScanner.

size of environment must match erasable block size in the flash.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at --- include/configs/tt01.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/include/configs/tt01.h b/include/configs/tt01.h index 6846816..8dd657c 100644 --- a/include/configs/tt01.h +++ b/include/configs/tt01.h @@ -131,7 +131,7 @@
#define CONFIG_ENV_IS_IN_FLASH #define CONFIG_ENV_SECT_SIZE (128 * 1024) -#define CONFIG_ENV_SIZE (8 * 1024) /* smaller for faster access */ +#define CONFIG_ENV_SIZE (128 * 1024)
/* Address and size of Redundant Environment Sector */ #define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)

On 30/01/2012 15:21, Helmut Raiger wrote:
size of environment must match erasable block size in the flash.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at
Applied to u-boot-imx, thanks.
Best regards, Stefano Babic

The video setup for the Epson display is provided. Addtionally some extra info is displayed next to the Linux logo.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at --- board/hale/tt01/tt01.c | 21 +++++++++++++++++++++ include/configs/tt01.h | 29 ++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletions(-)
diff --git a/board/hale/tt01/tt01.c b/board/hale/tt01/tt01.c index ed3fa6e..02e75ed 100644 --- a/board/hale/tt01/tt01.c +++ b/board/hale/tt01/tt01.c @@ -228,3 +228,24 @@ int board_eth_init(bd_t *bis) #endif return rc; } + +#ifdef CONFIG_CONSOLE_EXTRA_INFO +void video_get_info_str(int line_number, char *info) +{ + u32 srev = get_cpu_rev(); + + switch (line_number) { + case 2: + sprintf(info, " CPU : Freescale i.MX31 rev %d.%d%s at %d MHz", + (srev & 0xF0) >> 4, (srev & 0x0F), + ((srev & 0x8000) ? " unknown" : ""), + mxc_get_clock(MXC_ARM_CLK) / 1000000); + break; + case 3: + strcpy(info, " " BOARD_STRING); + break; + default: + info[0] = 0; + } +} +#endif diff --git a/include/configs/tt01.h b/include/configs/tt01.h index 8dd657c..a3b90d5 100644 --- a/include/configs/tt01.h +++ b/include/configs/tt01.h @@ -185,6 +185,23 @@ #define CONFIG_GENERIC_MMC #define CONFIG_MXC_MMC #define CONFIG_MXC_MCI_REGS_BASE SDHC1_BASE_ADDR + +/* video support */ +#define CONFIG_VIDEO +#define CONFIG_VIDEO_MX3 +#define CONFIG_CFB_CONSOLE +#define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_CONSOLE_EXTRA_INFO /* display additional board info */ +#define CONFIG_VGA_AS_SINGLE_DEVICE /* display is an output only device */ +/* allow stdin, stdout and stderr variables to redirect output */ +#define CONFIG_SYS_CONSOLE_IS_IN_ENV + +/* allow decompressing max. 4MB */ +#define CONFIG_VIDEO_BMP_GZIP +/* this is not only used by cfb_console.c for the logo, but also in cmd_bmp.c */ +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (4*1024*1024) + /* * Command definition */ @@ -201,6 +218,7 @@ * the NAND_CMD_LOCK_STATUS command, however the NFC of i.MX31 supports * a software locking scheme. */ +#define CONFIG_CMD_BMP
#define CONFIG_BOOTDELAY 3
@@ -208,9 +226,18 @@ * currently a default setting for booting via script is implemented * set user to login name and serverip to tftp host, define your * boot behaviour in bootscript.loginname + * + * TT-01 board specific TFT setup (used by drivers/video/mx3fb.c) + * + * This set-up is for the L5F30947T04 by Epson, which is + * 800x480, 33MHz pixel clock, 60Hz vsync, 31.6kHz hsync + * sync must be set to: DI_D3_DRDY_SHARP_POL | DI_D3_CLK_POL */ #define CONFIG_EXTRA_ENV_SETTINGS \ - "bootcmd=dhcp bootscript.$(user); source\0" +"videomode=epson\0" \ +"epson=video=ctfb:x:800,y:480,depth:16,mode:0,pclk:30076," \ + "le:215,ri:1,up:32,lo:13,hs:7,vs:10,sync:100663296,vmode:0\0" \ +"bootcmd=dhcp bootscript.$(user); source\0"
#define CONFIG_BOOTP_SERVERIP /* tftp serverip not overruled by dhcp server */ #define CONFIG_BOOTP_SEND_HOSTNAME /* if env-var 'hostname' is set, send it */

On 30/01/2012 15:21, Helmut Raiger wrote:
The video setup for the Epson display is provided. Addtionally some extra info is displayed next to the Linux logo.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at
Hi Helmut,
+#ifdef CONFIG_CONSOLE_EXTRA_INFO +void video_get_info_str(int line_number, char *info) +{
- u32 srev = get_cpu_rev();
I get a warning here :
tt01.c:235:2: warning: implicit declaration of function 'get_cpu_rev' [-Wimplicit-function-declaration]
The prototype must be added to ./arch/arm/include/asm/arch-mx31/sys_proto.h.
Can you fix and resubmit ?
Thanks, Stefano

The video setup for the Epson display is provided. Addtionally some extra info is displayed next to the Linux logo. Make get_cpu_rev() publicly available (added to sys_proto.h).
Signed-off-by: Helmut Raiger helmut.raiger@hale.at --- V2: added prototype for get_cpu_rev().
arch/arm/include/asm/arch-mx31/sys_proto.h | 1 + board/hale/tt01/tt01.c | 21 ++++++++++++++++++++ include/configs/tt01.h | 29 +++++++++++++++++++++++++++- 3 files changed, 50 insertions(+), 1 deletions(-)
diff --git a/arch/arm/include/asm/arch-mx31/sys_proto.h b/arch/arm/include/asm/arch-mx31/sys_proto.h index ded481c..f3fa04d 100644 --- a/arch/arm/include/asm/arch-mx31/sys_proto.h +++ b/arch/arm/include/asm/arch-mx31/sys_proto.h @@ -32,4 +32,5 @@ struct mxc_weimcs {
void mxc_setup_weimcs(int cs, const struct mxc_weimcs *weimcs); int mxc_mmc_init(bd_t *bis); +u32 get_cpu_rev(void); #endif diff --git a/board/hale/tt01/tt01.c b/board/hale/tt01/tt01.c index ed3fa6e..02e75ed 100644 --- a/board/hale/tt01/tt01.c +++ b/board/hale/tt01/tt01.c @@ -228,3 +228,24 @@ int board_eth_init(bd_t *bis) #endif return rc; } + +#ifdef CONFIG_CONSOLE_EXTRA_INFO +void video_get_info_str(int line_number, char *info) +{ + u32 srev = get_cpu_rev(); + + switch (line_number) { + case 2: + sprintf(info, " CPU : Freescale i.MX31 rev %d.%d%s at %d MHz", + (srev & 0xF0) >> 4, (srev & 0x0F), + ((srev & 0x8000) ? " unknown" : ""), + mxc_get_clock(MXC_ARM_CLK) / 1000000); + break; + case 3: + strcpy(info, " " BOARD_STRING); + break; + default: + info[0] = 0; + } +} +#endif diff --git a/include/configs/tt01.h b/include/configs/tt01.h index fda5d6c..2e83cb2 100644 --- a/include/configs/tt01.h +++ b/include/configs/tt01.h @@ -185,6 +185,23 @@ #define CONFIG_GENERIC_MMC #define CONFIG_MXC_MMC #define CONFIG_MXC_MCI_REGS_BASE SDHC1_BASE_ADDR + +/* video support */ +#define CONFIG_VIDEO +#define CONFIG_VIDEO_MX3 +#define CONFIG_CFB_CONSOLE +#define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_CONSOLE_EXTRA_INFO /* display additional board info */ +#define CONFIG_VGA_AS_SINGLE_DEVICE /* display is an output only device */ +/* allow stdin, stdout and stderr variables to redirect output */ +#define CONFIG_SYS_CONSOLE_IS_IN_ENV + +/* allow decompressing max. 4MB */ +#define CONFIG_VIDEO_BMP_GZIP +/* this is not only used by cfb_console.c for the logo, but also in cmd_bmp.c */ +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (4*1024*1024) + /* * Command definition */ @@ -201,6 +218,7 @@ * the NAND_CMD_LOCK_STATUS command, however the NFC of i.MX31 supports * a software locking scheme. */ +#define CONFIG_CMD_BMP
#define CONFIG_BOOTDELAY 3
@@ -208,9 +226,18 @@ * currently a default setting for booting via script is implemented * set user to login name and serverip to tftp host, define your * boot behaviour in bootscript.loginname + * + * TT-01 board specific TFT setup (used by drivers/video/mx3fb.c) + * + * This set-up is for the L5F30947T04 by Epson, which is + * 800x480, 33MHz pixel clock, 60Hz vsync, 31.6kHz hsync + * sync must be set to: DI_D3_DRDY_SHARP_POL | DI_D3_CLK_POL */ #define CONFIG_EXTRA_ENV_SETTINGS \ - "bootcmd=dhcp bootscript.$(user); source\0" +"videomode=epson\0" \ +"epson=video=ctfb:x:800,y:480,depth:16,mode:0,pclk:30076," \ + "le:215,ri:1,up:32,lo:13,hs:7,vs:10,sync:100663296,vmode:0\0" \ +"bootcmd=dhcp bootscript.$(user); source\0"
#define CONFIG_BOOTP_SERVERIP /* tftp serverip not overruled by dhcp server */ #define CONFIG_BOOTP_SEND_HOSTNAME /* if env-var 'hostname' is set, send it */

On 16/02/2012 09:40, Helmut Raiger wrote:
The video setup for the Epson display is provided. Addtionally some extra info is displayed next to the Linux logo. Make get_cpu_rev() publicly available (added to sys_proto.h).
Signed-off-by: Helmut Raiger helmut.raiger@hale.at
Applied to u-boot-imx, thanks.
Best regards, Stefano Babic

Add PREBOOT, SILENT_CONSOLE and DEVICE_NULLDEV for release build. Fixed bug in CONFIG_SYS_HUSH_PARSER define.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at --- include/configs/tt01.h | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/include/configs/tt01.h b/include/configs/tt01.h index a3b90d5..c5bfe5f 100644 --- a/include/configs/tt01.h +++ b/include/configs/tt01.h @@ -191,11 +191,16 @@ #define CONFIG_VIDEO_MX3 #define CONFIG_CFB_CONSOLE #define CONFIG_VIDEO_LOGO +/* splash image won't work with NAND boot, use preboot script */ #define CONFIG_VIDEO_SW_CURSOR #define CONFIG_CONSOLE_EXTRA_INFO /* display additional board info */ #define CONFIG_VGA_AS_SINGLE_DEVICE /* display is an output only device */ + /* allow stdin, stdout and stderr variables to redirect output */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV +#define CONFIG_SILENT_CONSOLE /* UARTs used externally (release) */ +#define CONFIG_SYS_DEVICE_NULLDEV /* allow console to be turned off */ +#define CONFIG_PREBOOT
/* allow decompressing max. 4MB */ #define CONFIG_VIDEO_BMP_GZIP @@ -237,14 +242,14 @@ "videomode=epson\0" \ "epson=video=ctfb:x:800,y:480,depth:16,mode:0,pclk:30076," \ "le:215,ri:1,up:32,lo:13,hs:7,vs:10,sync:100663296,vmode:0\0" \ -"bootcmd=dhcp bootscript.$(user); source\0" +"bootcmd=dhcp bootscript.${user}; source\0"
#define CONFIG_BOOTP_SERVERIP /* tftp serverip not overruled by dhcp server */ #define CONFIG_BOOTP_SEND_HOSTNAME /* if env-var 'hostname' is set, send it */
/* Miscellaneous configurable options */ -#define CONFIG_HUSH_PARSER -#define CONFIG_PROMPT_HUSH_PS2 "> " +#define CONFIG_SYS_HUSH_PARSER +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
#define CONFIG_SYS_LONGHELP /* undef to save memory */ #define CONFIG_SYS_PROMPT "TT01> "

On 01/30/2012 03:21 PM, Helmut Raiger wrote:
Add PREBOOT, SILENT_CONSOLE and DEVICE_NULLDEV for release build. Fixed bug in CONFIG_SYS_HUSH_PARSER define.
Signed-off-by: Helmut Raiger<helmut.raiger@hale.at
Stefano, please comment, it's only board specific.
Helmut
-- Scanned by MailScanner.

On 15/02/2012 15:36, Helmut Raiger wrote:
On 01/30/2012 03:21 PM, Helmut Raiger wrote:
Add PREBOOT, SILENT_CONSOLE and DEVICE_NULLDEV for release build. Fixed bug in CONFIG_SYS_HUSH_PARSER define.
Signed-off-by: Helmut Raiger<helmut.raiger@hale.at
Stefano, please comment, it's only board specific.
Hi Helmut,
I think patches are ok - I will merge them into u-boot-imx.
Best regards, Stefano Babic

On 30/01/2012 15:21, Helmut Raiger wrote:
Add PREBOOT, SILENT_CONSOLE and DEVICE_NULLDEV for release build. Fixed bug in CONFIG_SYS_HUSH_PARSER define.
Signed-off-by: Helmut Raiger helmut.raiger@hale.at
Applied to u-boot-imx, thanks.
Best regards, Stefano Babic
participants (2)
-
Helmut Raiger
-
Stefano Babic