X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fvideo%2Fmxsfb.c;h=02fde0590829a098d8af87b1af886f7b2e6787a9;hb=5e0a7341cdda182f310624d5c336fb48be04a703;hp=03b0f88acfaa26cf930bbe8d6390b1b731de32b8;hpb=e20cc2ca15b5b0644f51b6e58d530d70acd2bc00;p=u-boot diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c index 03b0f88acf..02fde05908 100644 --- a/drivers/video/mxsfb.c +++ b/drivers/video/mxsfb.c @@ -1,9 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Freescale i.MX23/i.MX28 LCDIF driver * * Copyright (C) 2011-2013 Marek Vasut - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include @@ -12,10 +11,10 @@ #include #include #include -#include +#include #include -#include +#include #include "videomodes.h" @@ -36,7 +35,7 @@ __weak void mxsfb_system_setup(void) } /* - * DENX M28EVK: + * ARIES M28EVK: * setenv videomode * video=ctfb:x:800,y:480,depth:18,mode:0,pclk:30066, * le:0,ri:256,up:0,lo:45,hs:1,vs:1,sync:100663296,vmode:0 @@ -55,7 +54,7 @@ static void mxs_lcd_init(GraphicDevice *panel, uint8_t valid_data = 0; /* Kick in the LCDIF clock */ - mxs_set_lcdclk(PS2KHZ(mode->pixclock)); + mxs_set_lcdclk(MXS_LCDIF_BASE, PS2KHZ(mode->pixclock)); /* Restart the LCDIF block */ mxs_reset_block(®s->hw_lcdif_ctrl_reg); @@ -131,6 +130,26 @@ static void mxs_lcd_init(GraphicDevice *panel, writel(LCDIF_CTRL_RUN, ®s->hw_lcdif_ctrl_set); } +void lcdif_power_down(void) +{ + struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE; + int timeout = 1000000; + + if (!panel.frameAdrs) + return; + + writel(panel.frameAdrs, ®s->hw_lcdif_cur_buf_reg); + writel(panel.frameAdrs, ®s->hw_lcdif_next_buf_reg); + writel(LCDIF_CTRL1_VSYNC_EDGE_IRQ, ®s->hw_lcdif_ctrl1_clr); + while (--timeout) { + if (readl(®s->hw_lcdif_ctrl1_reg) & + LCDIF_CTRL1_VSYNC_EDGE_IRQ) + break; + udelay(1); + } + mxs_reset_block((struct mxs_register_32 *)®s->hw_lcdif_ctrl_reg); +} + void *video_hw_init(void) { int bpp = -1; @@ -141,7 +160,7 @@ void *video_hw_init(void) puts("Video: "); /* Suck display configuration from "videomode" variable */ - penv = getenv("videomode"); + penv = env_get("videomode"); if (!penv) { puts("MXSFB: 'videomode' variable not set!\n"); return NULL;