aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut@gmail.com>2012-04-19 14:31:02 -0400
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2012-04-21 17:53:12 -0400
commitd313a86d2efb2c5568832389663322e93e291c59 (patch)
tree58a81a04d3775eff55966d84ef46ba2bc3a68c0f /drivers/video
parent2de06df49f71fee795e997dee1eeda74a2b8598b (diff)
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')
-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)
880 return 0; 880 return 0;
881} 881}
882 882
883static void mxsfb_shutdown(struct platform_device *pdev)
884{
885 struct fb_info *fb_info = platform_get_drvdata(pdev);
886 struct mxsfb_info *host = to_imxfb_host(fb_info);
887
888 /*
889 * Force stop the LCD controller as keeping it running during reboot
890 * might interfere with the BootROM's boot mode pads sampling.
891 */
892 writel(CTRL_RUN, host->base + LCDC_CTRL + REG_CLR);
893}
894
883static struct platform_device_id mxsfb_devtype[] = { 895static struct platform_device_id mxsfb_devtype[] = {
884 { 896 {
885 .name = "imx23-fb", 897 .name = "imx23-fb",
@@ -896,6 +908,7 @@ MODULE_DEVICE_TABLE(platform, mxsfb_devtype);
896static struct platform_driver mxsfb_driver = { 908static struct platform_driver mxsfb_driver = {
897 .probe = mxsfb_probe, 909 .probe = mxsfb_probe,
898 .remove = __devexit_p(mxsfb_remove), 910 .remove = __devexit_p(mxsfb_remove),
911 .shutdown = mxsfb_shutdown,
899 .id_table = mxsfb_devtype, 912 .id_table = mxsfb_devtype,
900 .driver = { 913 .driver = {
901 .name = DRIVER_NAME, 914 .name = DRIVER_NAME,