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:
parent
bd56e41d19
commit
286117d937
|
@ -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 */
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue