[PATCH V2] i.MX28: Shut down the LCD controller to avoid BootROM sampling bug

Florian Tobias Schandinat FlorianSchandinat at gmx.de
Mon Apr 23 02:20:42 EDT 2012


On 04/19/2012 06:31 PM, Marek Vasut wrote:
> From: Marek Vasut <marek.vasut at gmail.com>
> 
> If there's some traffic on the LCD controller pads, the BootROM has trouble with
> sampling the bootmode from these pads. The BootROM usually ends in a loop.
> 
> Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
> Cc: Chen Peter-B29397 <B29397 at freescale.com>
> Cc: Detlev Zundel <dzu at denx.de>
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: Florian Tobias Schandinat <FlorianSchandinat at gmx.de>
> Cc: Li Frank-B20596 <B20596 at freescale.com>
> Cc: Lin Tony-B19295 <B19295 at freescale.com>
> Cc: Linux FBDEV <linux-fbdev at vger.kernel.org>
> Cc: Sascha Hauer <s.hauer at pengutronix.de>
> Cc: Shawn Guo <shawn.guo at freescale.com>
> Cc: Shawn Guo <shawn.guo at linaro.org>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Subodh Nijsure <snijsure at grid-net.com>
> Cc: Tony Lin <tony.lin at freescale.com>
> Cc: Wolfgang Denk <wd at denx.de>
> Acked-by: Shawn Guo <shawn.guo at linaro.org>
> Acked-by: Wolfgang Denk <wd at denx.de>
> Acked-by: Wolfram Sang <w.sang at pengutronix.de>
> Tested-by: Wolfgang Denk <wd at denx.de>

Applied.


Thanks,

Florian Tobias Schandinat

> ---
>  drivers/video/mxsfb.c |   13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> V2: Make shutdown() call static
> 
> diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
> index 4a89f88..dcf29bf 100644
> --- a/drivers/video/mxsfb.c
> +++ b/drivers/video/mxsfb.c
> @@ -880,6 +880,18 @@ static int __devexit mxsfb_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> +static void mxsfb_shutdown(struct platform_device *pdev)
> +{
> +	struct fb_info *fb_info = platform_get_drvdata(pdev);
> +	struct mxsfb_info *host = to_imxfb_host(fb_info);
> +
> +	/*
> +	 * Force stop the LCD controller as keeping it running during reboot
> +	 * might interfere with the BootROM's boot mode pads sampling.
> +	 */
> +	writel(CTRL_RUN, host->base + LCDC_CTRL + REG_CLR);
> +}
> +
>  static struct platform_device_id mxsfb_devtype[] = {
>  	{
>  		.name = "imx23-fb",
> @@ -896,6 +908,7 @@ MODULE_DEVICE_TABLE(platform, mxsfb_devtype);
>  static struct platform_driver mxsfb_driver = {
>  	.probe = mxsfb_probe,
>  	.remove = __devexit_p(mxsfb_remove),
> +	.shutdown = mxsfb_shutdown,
>  	.id_table = mxsfb_devtype,
>  	.driver = {
>  		   .name = DRIVER_NAME,




More information about the linux-arm-kernel mailing list