diff options
Diffstat (limited to 'drivers/video/mxsfb.c')
-rw-r--r-- | drivers/video/mxsfb.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c index e9978c2..571b6f0 100644 --- a/drivers/video/mxsfb.c +++ b/drivers/video/mxsfb.c @@ -21,7 +21,11 @@ #include <linux/string.h> #include <linux/list.h> #include <linux/fb.h> +#include <mxsfb.h> +#ifdef CONFIG_VIDEO_GIS +#include <gis.h> +#endif #define PS2KHZ(ps) (1000000000UL / (ps)) @@ -55,6 +59,15 @@ int mxs_lcd_panel_setup(struct fb_videomode mode, int bpp, return 0; } +void mxs_lcd_get_panel(struct display_panel *dispanel) +{ + dispanel->width = fbmode.xres; + dispanel->height = fbmode.yres; + dispanel->reg_base = panel.isaBase; + dispanel->gdfindex = panel.gdfIndex; + dispanel->gdfbytespp = panel.gdfBytesPP; +} + /* * DENX M28EVK: * setenv videomode @@ -151,6 +164,19 @@ static void mxs_lcd_init(GraphicDevice *panel, writel(LCDIF_CTRL_RUN, ®s->hw_lcdif_ctrl_set); } +void lcdif_power_down() +{ + u32 val; + struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)(panel.isaBase); + + writel(panel.frameAdrs, ®s->hw_lcdif_cur_buf); + writel(panel.frameAdrs, ®s->hw_lcdif_next_buf); + + /* Stop lcdif */ + val = LCDIF_CTRL_SFTRST | LCDIF_CTRL_CLKGATE; + writel(val, ®s->hw_lcdif_ctrl); +} + void *video_hw_init(void) { int bpp = -1; @@ -259,5 +285,10 @@ void *video_hw_init(void) mxs_dma_circ_start(MXS_DMA_CHANNEL_AHB_APBH_LCDIF, &desc); #endif +#ifdef CONFIG_VIDEO_GIS + /* Entry for GIS */ + mxc_enable_gis(); +#endif + return (void *)&panel; } |