summaryrefslogtreecommitdiffstats
path: root/drivers/video/mxsfb.c
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut@gmail.com>2012-04-19 20:31:02 +0200
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2012-04-21 21:53:12 +0000
commitd313a86d2efb2c5568832389663322e93e291c59 (patch)
tree58a81a04d3775eff55966d84ef46ba2bc3a68c0f /drivers/video/mxsfb.c
parent2de06df49f71fee795e997dee1eeda74a2b8598b (diff)
downloadlinux-d313a86d2efb2c5568832389663322e93e291c59.tar.gz
linux-d313a86d2efb2c5568832389663322e93e291c59.tar.bz2
linux-d313a86d2efb2c5568832389663322e93e291c59.zip
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: Marek 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: Shawn Guo <shawn.guo@linaro.org> Acked-by: Wolfgang Denk <wd@denx.de> Acked-by: Wolfram Sang <w.sang@pengutronix.de> Tested-by: Wolfgang Denk <wd@denx.de> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Diffstat (limited to 'drivers/video/mxsfb.c')
-rw-r--r--drivers/video/mxsfb.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
index 4a89f889852d..dcf29bf91939 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,