All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peng Fan <b51431@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2 08/14] imx: mx6ul_14x14_evk: support lcdif display
Date: Mon, 26 Oct 2015 11:18:27 +0800	[thread overview]
Message-ID: <20151026031826.GE13617@shlinux2> (raw)
In-Reply-To: <562644A6.10302@denx.de>

Hi Stefano,

On Tue, Oct 20, 2015 at 03:41:58PM +0200, Stefano Babic wrote:
>Hi Peng,
>
>On 20/10/2015 13:39, Peng Fan wrote:
>> Support lcdif display:
>> 1. Add pinmux and pad settings for LCDIF
>> 2. Introduce setup_lcd to do the settings for LCDIF
>> 3. Enable VIDEO related macros in board header files
>> 4. Add a new env videomode which is needed by mxsfb.c. The
>>    settings for videomode in this patch is for TFT43AB.
>> 5. Tested on mx6ul 14x14/9x9 evk.
>> 
>> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
>> Cc: Stefano Babic <sbabic@denx.de>
>> ---
>> 
>> V2:
>>  Rebased to Latest U-Boot, resolve conflicts.
>> 
>>  board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 63 +++++++++++++++++++++++
>>  include/configs/mx6ul_14x14_evk.h                 | 18 +++++++
>>  2 files changed, 81 insertions(+)
>> 
>> diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
>> index 8650f35..287a421 100644
>> --- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
>> +++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
>> @@ -52,6 +52,9 @@ DECLARE_GLOBAL_DATA_PTR;
>>  	PAD_CTL_SPEED_HIGH   |                                  \
>>  	PAD_CTL_DSE_48ohm   | PAD_CTL_SRE_FAST)
>>  
>> +#define LCD_PAD_CTRL    (PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | \
>> +	PAD_CTL_PKE | PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm)
>> +
>>  #define MDIO_PAD_CTRL  (PAD_CTL_PUS_100K_UP | PAD_CTL_PUE |     \
>>  	PAD_CTL_DSE_48ohm   | PAD_CTL_SRE_FAST | PAD_CTL_ODE)
>>  
>> @@ -568,6 +571,62 @@ int board_phy_config(struct phy_device *phydev)
>>  }
>>  #endif
>>  
>> +#ifdef CONFIG_VIDEO_MXS
>> +static iomux_v3_cfg_t const lcd_pads[] = {
>> +	MX6_PAD_LCD_CLK__LCDIF_CLK | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_ENABLE__LCDIF_ENABLE | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_HSYNC__LCDIF_HSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_VSYNC__LCDIF_VSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA00__LCDIF_DATA00 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA01__LCDIF_DATA01 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA02__LCDIF_DATA02 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA03__LCDIF_DATA03 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA04__LCDIF_DATA04 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA05__LCDIF_DATA05 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA06__LCDIF_DATA06 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA07__LCDIF_DATA07 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA08__LCDIF_DATA08 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA09__LCDIF_DATA09 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA10__LCDIF_DATA10 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA11__LCDIF_DATA11 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA12__LCDIF_DATA12 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA13__LCDIF_DATA13 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA14__LCDIF_DATA14 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA15__LCDIF_DATA15 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA16__LCDIF_DATA16 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA17__LCDIF_DATA17 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA18__LCDIF_DATA18 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA19__LCDIF_DATA19 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA20__LCDIF_DATA20 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA21__LCDIF_DATA21 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA22__LCDIF_DATA22 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +	MX6_PAD_LCD_DATA23__LCDIF_DATA23 | MUX_PAD_CTRL(LCD_PAD_CTRL),
>> +
>> +	/* LCD_RST */
>> +	MX6_PAD_SNVS_TAMPER9__GPIO5_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL),
>> +
>> +	/* Use GPIO for Brightness adjustment, duty cycle = period. */
>> +	MX6_PAD_GPIO1_IO08__GPIO1_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
>> +};
>> +
>> +static int setup_lcd(void)
>> +{
>> +	enable_lcdif_clock(0);
>> +
>> +	imx_iomux_v3_setup_multiple_pads(lcd_pads, ARRAY_SIZE(lcd_pads));
>> +
>> +	/* Reset the LCD */
>> +	gpio_direction_output(IMX_GPIO_NR(5, 9) , 0);
>> +	udelay(500);
>> +	gpio_direction_output(IMX_GPIO_NR(5, 9) , 1);
>> +
>
>Just a curiosity: a display reset ? Why is this needed ?

Yeah. Just want to make it stable. When first coding this part, it was added
here. We did not stress test without this reset.

>
>> +	/* Set Brightness to high */
>> +	gpio_direction_output(IMX_GPIO_NR(1, 8) , 1);
>> +
>> +	return 0;
>> +}
>> +#endif
>> +
>>  int board_early_init_f(void)
>>  {
>>  	setup_iomux_uart();
>> @@ -600,6 +659,10 @@ int board_init(void)
>>  	board_qspi_init();
>>  #endif
>>  
>> +#ifdef CONFIG_VIDEO_MXS
>> +	setup_lcd();
>> +#endif
>> +
>>  	return 0;
>>  }
>>  
>> diff --git a/include/configs/mx6ul_14x14_evk.h b/include/configs/mx6ul_14x14_evk.h
>> index d5faae6..5779632 100644
>> --- a/include/configs/mx6ul_14x14_evk.h
>> +++ b/include/configs/mx6ul_14x14_evk.h
>> @@ -77,6 +77,7 @@
>>  	"fdt_addr=0x83000000\0" \
>>  	"boot_fdt=try\0" \
>>  	"ip_dyn=yes\0" \
>> +	"videomode=video=ctfb:x:480,y:272,depth:24,pclk:108695,le:8,ri:4,up:2,lo:4,hs:41,vs:10,sync:0,vmode:0\0" \
>
>Why this ? Setup is in device tree, we should not need it, do we ?

We do not support device tree for i.MX uboot for now. driver/video/mxsfb.c will
use the env to init the lcdif, if without the videomode env, the driver do not
know the parameters to init the lcdif controller.

Regards,
Peng.

>
>>  	"mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
>>  	"mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
>>  	"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
>> @@ -242,4 +243,21 @@
>>  
>>  #define CONFIG_IMX_THERMAL
>>  
>> +#define CONFIG_VIDEO
>> +#ifdef CONFIG_VIDEO
>> +#define CONFIG_CFB_CONSOLE
>> +#define CONFIG_VIDEO_MXS
>> +#define CONFIG_VIDEO_LOGO
>> +#define CONFIG_VIDEO_SW_CURSOR
>> +#define CONFIG_VGA_AS_SINGLE_DEVICE
>> +#define CONFIG_SYS_CONSOLE_IS_IN_ENV
>> +#define CONFIG_SPLASH_SCREEN
>> +#define CONFIG_SPLASH_SCREEN_ALIGN
>> +#define CONFIG_CMD_BMP
>> +#define CONFIG_BMP_16BPP
>> +#define CONFIG_VIDEO_BMP_RLE8
>> +#define CONFIG_VIDEO_BMP_LOGO
>> +#define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
>> +#endif
>> +
>>  #endif
>> 
>
>Best regards,
>Stefano Babic
>
>-- 
>=====================================================================
>DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
>HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
>=====================================================================

-- 

  reply	other threads:[~2015-10-26  3:18 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-20 11:39 [U-Boot] [PATCH V2 00/14] imx: mx6/7: support lcdif Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 01/14] mxs: add parameter base_addr for mxs_set_lcdclk Peng Fan
2015-10-20 13:05   ` Stefano Babic
2015-10-26  2:57     ` Peng Fan
2015-10-26 15:52       ` Stefano Babic
2015-10-27  5:28         ` Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 02/14] sandisk: sfp: correct function name Peng Fan
2015-10-20 13:09   ` Stefano Babic
2015-10-20 11:39 ` [U-Boot] [PATCH V2 03/14] xfi3: " Peng Fan
2015-10-20 13:10   ` Stefano Babic
2015-10-26  3:00     ` Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 04/14] imx: imx-common: move lcdif structure and macro definition to imx-common Peng Fan
2015-10-20 13:15   ` Stefano Babic
2015-10-26  3:06     ` Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 05/14] imx: mx6: fix register address Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 06/14] imx: mx6: crm_reg: add LCDIF related macros Peng Fan
2015-10-20 13:19   ` Stefano Babic
2015-10-20 11:39 ` [U-Boot] [PATCH V2 07/14] imx: mx6: add clock api for lcdif Peng Fan
2015-10-20 13:39   ` Stefano Babic
2015-10-26  3:13     ` Peng Fan
2015-10-27  7:36     ` Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 08/14] imx: mx6ul_14x14_evk: support lcdif display Peng Fan
2015-10-20 13:41   ` Stefano Babic
2015-10-26  3:18     ` Peng Fan [this message]
2015-10-20 11:39 ` [U-Boot] [PATCH V2 09/14] video: mxsfb: introduce lcdif_power_down Peng Fan
2015-10-20 13:59   ` Stefano Babic
2015-10-26  3:24     ` Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 10/14] imx: mx6: implement reset_misc Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 11/14] imx: imx-common: power down lcdif before boot os Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 12/14] imx: mx7: compile misc.c for mx7 Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 13/14] imx: mx7 use the common lcdif register structure Peng Fan
2015-10-20 11:39 ` [U-Boot] [PATCH V2 14/14] imx: mx7dsabresd: support lcdif Peng Fan

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=20151026031826.GE13617@shlinux2 \
    --to=b51431@freescale.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.