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

login
register
mail settings
Submitter Helmut Raiger
Date Oct. 27, 2011, 4:11 p.m.
Message ID <1319731903-17127-1-git-send-email-helmut.raiger@hale.at>
Download mbox | patch
Permalink /patch/122176/
State Superseded
Delegated to: Stefano Babic
Headers show

Comments

Helmut Raiger - Oct. 27, 2011, 4:11 p.m.
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/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
Helmut Raiger - Oct. 27, 2011, 4:16 p.m.
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>
> ---
>   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.
Stefano Babic - Nov. 14, 2011, 11:21 a.m.
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
Helmut Raiger - Jan. 19, 2012, 12:08 p.m.
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.
Helmut Raiger - Jan. 30, 2012, 2:21 p.m.
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.

Patch

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))