9
0
Fork 0

fb i.MX23/28: Add the reset control of LCD

Video controller of STM allow to control the reset bit of an external
LCD controller. When reset_lcd is set, CTRL1_RESET bit is used to
enable and disable LCD.
Handle USE_LCD_RESET as a flag in imx_fb_platformdata.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Gregory CLEMENT 2011-01-21 12:37:51 +01:00 committed by Sascha Hauer
parent bd56e41d19
commit 286117d937
2 changed files with 14 additions and 0 deletions

View File

@ -31,6 +31,8 @@
/** swap RGB to BGR */
#define FB_SYNC_SWAP_RGB (1 << 31)
#define USE_LCD_RESET 1
struct imx_fb_platformdata {
struct fb_videomode *mode_list;
unsigned mode_cnt;
@ -42,6 +44,7 @@ struct imx_fb_platformdata {
void *fixed_screen; /**< if != NULL use this as framebuffer memory */
unsigned fixed_screen_size; /**< framebuffer memory size for fixed_screen */
unsigned flags;
void (*enable)(int enable); /**< hook to enable backlight */
};

View File

@ -48,6 +48,7 @@
# define CTRL1_FIFO_CLEAR (1 << 21)
# define SET_BYTE_PACKAGING(x) (((x) & 0xf) << 16)
# define GET_BYTE_PACKAGING(x) (((x) >> 16) & 0xf)
# define CTRL1_RESET (1 << 0)
#ifdef CONFIG_ARCH_IMX28
# define HW_LCDIF_CTRL2 0x20
@ -253,6 +254,11 @@ static void stmfb_enable_controller(struct fb_info *fb_info)
/* stop FIFO reset */
writel(CTRL1_FIFO_CLEAR, fbi->base + HW_LCDIF_CTRL1 + BIT_CLR);
/* enable LCD using LCD_RESET signal*/
if (fbi->pdata->flags & USE_LCD_RESET)
writel(CTRL1_RESET, fbi->base + HW_LCDIF_CTRL1 + BIT_SET);
/* start the engine right now */
writel(CTRL_RUN, fbi->base + HW_LCDIF_CTRL + BIT_SET);
@ -266,6 +272,11 @@ static void stmfb_disable_controller(struct fb_info *fb_info)
unsigned loop;
uint32_t reg;
/* disable LCD using LCD_RESET signal*/
if (fbi->pdata->flags & USE_LCD_RESET)
writel(CTRL1_RESET, fbi->base + HW_LCDIF_CTRL1 + BIT_CLR);
if (fbi->pdata->enable)
fbi->pdata->enable(0);