Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d313a86d authored by Marek Vasut's avatar Marek Vasut Committed by Florian Tobias Schandinat
Browse files

i.MX28: Shut down the LCD controller to avoid BootROM sampling bug



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: default avatarMarek Vasut <marek.vasut@gmail.com>
Cc: Chen Peter-B29397 <B29397@freescale.com>
Cc: Detlev Zundel <dzu@denx.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Li Frank-B20596 <B20596@freescale.com>
Cc: Lin Tony-B19295 <B19295@freescale.com>
Cc: Linux FBDEV <linux-fbdev@vger.kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Shawn Guo <shawn.guo@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Subodh Nijsure <snijsure@grid-net.com>
Cc: Tony Lin <tony.lin@freescale.com>
Acked-by: default avatarShawn Guo <shawn.guo@linaro.org>
Acked-by: default avatarWolfgang Denk <wd@denx.de>
Acked-by: default avatarWolfram Sang <w.sang@pengutronix.de>
Tested-by: default avatarWolfgang Denk <wd@denx.de>
Signed-off-by: default avatarFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
parent 2de06df4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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,